Fish - FiberLib for VISH 0.3
Fish - The Fiber Bundle API for the Vish Visualization Shell
Fiber::MemBase Class Referenceabstract

Base class for multidimensional arrays with MemCore memory management. More...

#include <MemBase.hpp>

Inheritance diagram for Fiber::MemBase:
MemCore::Cacheable MemCore::Intercube MemCore::ReferenceBase< Cacheable > Fiber::MemArrayBase< 3 > Fiber::MemArrayBase< VertexDims > Fiber::MemArrayBase< MDIMS > Fiber::TypedArray< Eagle::PhysicalSpace::point > Fiber::TypedArray< RefPtr< FragmentID > > Fiber::TypedArray< FragmentMapping_t > Fiber::MemArrayBase< N > Fiber::TypedArray< T >

Classes

class  Allocator
 Same as above but using a unsinged int vector. More...

Public Types

typedef WeakPtrCreativeArrayBase_t Creator_t
Public Types inherited from MemCore::Cacheable
typedef unsigned long cachecounter_t
Public Types inherited from MemCore::ReferenceBase< Cacheable >
typedef Object reference_domain_t
typedef WeakPtr< Object, Object > SelfPtr_t

Public Member Functions

 MemBase (const FiberTypeIndex &theFiberTypeIndex, const Creator_t &theCreator)
 Empty default constructor.
 ~MemBase ()
 Destructor.
 MemBase (const MemBase &)=delete
MemCore::WeakPtr< MemBasemembase () const
virtual void DeferredConstructor () override=0
 Virtual deferred reference pointer construction pointer Don't overload if you don't know exactly what this function is supposed to do.
virtual Fiber::Dims_t rank () const =0
 Return the number of dimensions.
virtual DynamicSize getSize () const =0
 Return the size of this dataset.
virtual index_t nElements () const
 return the number of elements in this array
auto NumberOfElements () const
auto getNumberOfElements () const
virtual const type_infogetType () const =0
 Return the element type of the certain array.
virtual HyperslabParametersgetHyperslabParameters ()=0
virtual std::string getElementAsString (size_t index) const =0
MemCore::WeakPtr< FiberTypeBasegetFiberType () const
MemCore::memsize_t element_memsize () const
virtual RefPtr< MemBasemakeMemArray (const MemBase::Creator_t &C) const =0
 Provide a MemArray, even though the actual data is a procedural array.
virtual RefPtr< MemBasegetComponentArray (int member, const MemBase::Creator_t &C)=0
virtual RefPtr< MemBasecreateSubArray (const DynamicSize &Offset, const DynamicSize &CopySize, const MemBase::Creator_t &C) const =0
virtual RefPtr< MemBasecreateEquallySizedMemArray (const RefPtr< MemCore::ChunkBase > &Storage, const MemBase::Creator_t &C) const =0
 Create a memory array of the same dimensions as the current array, but with data as provided by the Storage.
virtual bool copyFrom (const RefPtr< MemCore::ChunkBase > &theChunk)=0
bool copyFrom (const RefPtr< MemBase > &Mb)
 Copy all data values from the given MemBase.
virtual RefPtr< MemBasecopy (const MemBase::Creator_t &C=nullptr) const =0
 Create a copy of the current array, duplicating all data and allocating new memory for it.
RefPtr< MemBasecreate (const RefPtr< FiberTypeBase > &FT, const type_info &layout=typeid(void)) const
 Create a new mem array of the same dimensions but different type.
template<class T>
RefPtr< MemBasecreate (const type_info &layout=typeid(void)) const
 Create a new mem array of the same dimensions but different type.
RefPtr< MemBasecreate (const DynamicSize &DS, const type_info &layout=typeid(void)) const
 Create a new mem array of the same type but different dimensions.
RefPtr< MemBasecreate (const type_info &layout=typeid(void)) const
 Create a new mem array of the same type and dimensions, but default values.
virtual void * getPtr ()=0
 Special Array Storage.
virtual RefPtr< MemCore::ChunkBasegetChunk () const =0
 Get chunk to underlying data, if this is a contiguous array.
virtual const void * OriginPtr () const =0
 Get pointer to origin of linearly procedural array, if it is linear.
virtual const void * DeltaPtr () const =0
 Get pointer to delta of linearly procedural array, if it is linear.
MemCore::memsize_t memsize () const override
 How much memory is occupied here at all in case it's stored in a chunk?
Public Member Functions inherited from MemCore::Cacheable
 Cacheable (const WeakPtr< Creature > &C)
bool isCached () const
bool isUncached () const
bool markAsUsed ()
WeakPtr< CacheBasemyCache () const
const WeakPtr< Creature > & myCreator () const
int NumberOfListEntries () const
void PreDestructor ()
void push_back (CacheQueue &Q)
void push_front (CacheQueue &Q)
void setCreator (const WeakPtr< Creature > &C)
Public Member Functions inherited from MemCore::ReferenceBase< Cacheable >
auto getObjectCountID () const noexcept
bool isIdentical (const WeakPtr< Object, Object > &PossibleSelf) const noexcept
void mkAutoDestructive ()
refcount_t refcount () const noexcept
 ReferenceBase (Object *that) noexcept
const auto & self () const
refcount_t wrefcount () const noexcept
Public Member Functions inherited from MemCore::Intercube
void addInterface (const RefPtr< InterfaceBase > &I) const
void addInterfaceData (const Data &D)
void addInterfaceData (const Data &D)
void clearInterfaces ()
bool const_iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP) const
virtual RefPtr< InterfaceBasecreateInterface (const type_info &) const
RefPtr< InterfaceBasefindInterface (const type_info &t) const
RefPtr< InterfaceBasegetInterface (const type_info &t)
std::string getInterfaceNames (const char delim=';') const
bool gotNewInterfaceData (const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D)
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector &S)
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector *S)
bool hasChangedInterfaceData (const Data &D) const
bool hasChangedInterfaceData (const Data &D) const
bool hasChangedInterfaceData (const Data &D, const Selector &) const
bool hasChangedInterfaceData (const Data &D, const Selector *) const
bool hasInterface (const type_info &t) const
bool iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP)
void printInterfaces () const
void registerInterface (const type_info &t)
void removeInterface ()
void removeInterfaceBase (const type_info &InterfaceBaseID)

Static Public Member Functions

static RefPtr< MemBasecreate (const RefPtr< FiberTypeBase > &FT, const DynamicSize &DS, const type_info &layout=typeid(void))
 Given a description of a certain data type for each element on array, allocate a multidimensional array of the given type.
static bool registerCreator (const RefPtr< Allocator > &A, const RefPtr< FiberTypeBase > &FT)

Static Public Attributes

static int RegisteredTypes = 0

Additional Inherited Members

Protected Member Functions inherited from MemCore::Cacheable
void adjustCacheableSize (memsize_t memDiff)
Protected Member Functions inherited from MemCore::ReferenceBase< Cacheable >
virtual void extremeUnction ()
ReferenceBaseoperator= (const ReferenceBase &R)
void suicide ()

Detailed Description

Base class for multidimensional arrays with MemCore memory management.

Member Function Documentation

◆ copy()

virtual RefPtr< MemBase > Fiber::MemBase::copy ( const MemBase::Creator_t & C = nullptr) const
pure virtual

Create a copy of the current array, duplicating all data and allocating new memory for it.

Implemented in Fiber::DirectProductMemArray< T, Category, MDIMS >, Fiber::DirectProductMemArray< Eagle::point3 >, Fiber::DirectProductMemArray< Eagle::point3, ExplicitCoordinateAxisArray >, Fiber::DirectProductMemArray< point >, Fiber::DirectProductMemArray< point_type >, Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, MDIMS >, Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, T::SIZE >, Fiber::MemArray< N, T >, Fiber::MemArray< 1, BoundingBox >, Fiber::MemArray< 1, CellIndices_t >, Fiber::MemArray< 1, Coordinates >, Fiber::MemArray< 1, Dihedral_t >, Fiber::MemArray< 1, double >, Fiber::MemArray< 1, Eagle::bivector3 >, Fiber::MemArray< 1, Eagle::metric33 >, Fiber::MemArray< 1, Eagle::PhysicalSpace::bivector >, Fiber::MemArray< 1, Eagle::PhysicalSpace::point >, Fiber::MemArray< 1, Eagle::point3 >, Fiber::MemArray< 1, Eagle::tvector3 >, Fiber::MemArray< 1, edge >, Fiber::MemArray< 1, EdgeCell >, Fiber::MemArray< 1, EdgeCell_t >, Fiber::MemArray< 1, EdgesPerVertex_t >, Fiber::MemArray< 1, FEMDirections_t >, Fiber::MemArray< 1, FEMIndices_t >, Fiber::MemArray< 1, FieldType >, Fiber::MemArray< 1, float >, Fiber::MemArray< 1, LineIndices_t >, Fiber::MemArray< 1, point >, Fiber::MemArray< 1, point3 >, Fiber::MemArray< 1, RefPtr< BoundingBox > >, Fiber::MemArray< 1, RefPtr< Eagle::BoundingBox > >, Fiber::MemArray< 1, RefPtr< FragmentID > >, Fiber::MemArray< 1, RefPtr< MemArray< 1, index_t > > >, Fiber::MemArray< 1, std::string >, Fiber::MemArray< 1, std::vector< index_t > >, Fiber::MemArray< 1, std::vector< source > >, Fiber::MemArray< 1, std::vector< target > >, Fiber::MemArray< 1, std::vector< unsigned int > >, Fiber::MemArray< 1, T >, Fiber::MemArray< 1, TetrahedronCell >, Fiber::MemArray< 1, TriangleCell >, Fiber::MemArray< 1, TriangleCell_t >, Fiber::MemArray< 1, tvector >, Fiber::MemArray< 1, tvector3 >, Fiber::MemArray< 1, Type >, Fiber::MemArray< 2, Eagle::PhysicalSpace::tvector >, Fiber::MemArray< 2, FEMIndex_t >, Fiber::MemArray< 2, T >, Fiber::MemArray< 3, color >, Fiber::MemArray< 3, double >, Fiber::MemArray< 3, Eagle::PhysicalSpace::point >, Fiber::MemArray< 3, Eagle::point3 >, Fiber::MemArray< 3, Eagle::tvector3 >, Fiber::MemArray< 3, float >, Fiber::MemArray< 3, IBO_t >, Fiber::MemArray< 3, IndexList_t >, Fiber::MemArray< 3, output_type >, Fiber::MemArray< 3, point >, Fiber::MemArray< 3, rgb >, Fiber::MemArray< 3, rgb16 >, Fiber::MemArray< 3, tvector >, Fiber::MemArray< DataDims, OutputType >, Fiber::MemArray< Dims, RefPtr< FragmentID > >, Fiber::MemArray< Dims, result_type >, Fiber::MemArray< FieldDims, value_type >, Fiber::MemArray< MDIMS, T >, Fiber::MemArray< N, component_t >, Fiber::MemArray< N, element_t >, Fiber::MemArray< N, value_base_type >, Fiber::MemArray< N, ValueBase_t >, Fiber::MemArray< VertexDims, RefPtr< FragmentID > >, and Fiber::UniformCartesianArray.

References getSize().

◆ copyFrom()

bool Fiber::MemBase::copyFrom ( const RefPtr< MemBase > & Mb)
inline

Copy all data values from the given MemBase.

No new data allocation will be performed here.

◆ create()

RefPtr< MemBase > Fiber::MemBase::create ( const RefPtr< FiberTypeBase > & FT,
const DynamicSize & DS,
const type_info & layout = typeid(void) )
static

Given a description of a certain data type for each element on array, allocate a multidimensional array of the given type.

The creation will be forwarded to certain Allocators of this specific type, which have been registered through registerCreator();

Referenced by Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyFunction(), Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyFunction(), Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyFunction(), Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyFunction(), Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyFunction(), create(), create(), and create().

◆ createEquallySizedMemArray()

virtual RefPtr< MemBase > Fiber::MemBase::createEquallySizedMemArray ( const RefPtr< MemCore::ChunkBase > & Storage,
const MemBase::Creator_t & C ) const
pure virtual

Create a memory array of the same dimensions as the current array, but with data as provided by the Storage.

Will return NullPtr if the size and types don't match. Calls MemArray::createMemArray() .

Implemented in Fiber::DirectProductMemArrayBase< T, Category, MDIMS >, Fiber::DirectProductMemArrayBase< Eagle::FixedArray< double, 3 >, LinearCoordinateAxisArray, 3 >, Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, MDIMS >, Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, T::SIZE >, Fiber::DirectProductMemArrayBase< typename T::FixedArray_t, Category, MDIMS >, Fiber::MemArray< N, T >, Fiber::MemArray< 1, BoundingBox >, Fiber::MemArray< 1, CellIndices_t >, Fiber::MemArray< 1, Coordinates >, Fiber::MemArray< 1, Dihedral_t >, Fiber::MemArray< 1, double >, Fiber::MemArray< 1, Eagle::bivector3 >, Fiber::MemArray< 1, Eagle::metric33 >, Fiber::MemArray< 1, Eagle::PhysicalSpace::bivector >, Fiber::MemArray< 1, Eagle::PhysicalSpace::point >, Fiber::MemArray< 1, Eagle::point3 >, Fiber::MemArray< 1, Eagle::tvector3 >, Fiber::MemArray< 1, edge >, Fiber::MemArray< 1, EdgeCell >, Fiber::MemArray< 1, EdgeCell_t >, Fiber::MemArray< 1, EdgesPerVertex_t >, Fiber::MemArray< 1, FEMDirections_t >, Fiber::MemArray< 1, FEMIndices_t >, Fiber::MemArray< 1, FieldType >, Fiber::MemArray< 1, float >, Fiber::MemArray< 1, LineIndices_t >, Fiber::MemArray< 1, point >, Fiber::MemArray< 1, point3 >, Fiber::MemArray< 1, RefPtr< BoundingBox > >, Fiber::MemArray< 1, RefPtr< Eagle::BoundingBox > >, Fiber::MemArray< 1, RefPtr< FragmentID > >, Fiber::MemArray< 1, RefPtr< MemArray< 1, index_t > > >, Fiber::MemArray< 1, std::string >, Fiber::MemArray< 1, std::vector< index_t > >, Fiber::MemArray< 1, std::vector< source > >, Fiber::MemArray< 1, std::vector< target > >, Fiber::MemArray< 1, std::vector< unsigned int > >, Fiber::MemArray< 1, T >, Fiber::MemArray< 1, TetrahedronCell >, Fiber::MemArray< 1, TriangleCell >, Fiber::MemArray< 1, TriangleCell_t >, Fiber::MemArray< 1, tvector >, Fiber::MemArray< 1, tvector3 >, Fiber::MemArray< 1, Type >, Fiber::MemArray< 2, Eagle::PhysicalSpace::tvector >, Fiber::MemArray< 2, FEMIndex_t >, Fiber::MemArray< 2, T >, Fiber::MemArray< 3, color >, Fiber::MemArray< 3, double >, Fiber::MemArray< 3, Eagle::PhysicalSpace::point >, Fiber::MemArray< 3, Eagle::point3 >, Fiber::MemArray< 3, Eagle::tvector3 >, Fiber::MemArray< 3, float >, Fiber::MemArray< 3, IBO_t >, Fiber::MemArray< 3, IndexList_t >, Fiber::MemArray< 3, output_type >, Fiber::MemArray< 3, point >, Fiber::MemArray< 3, rgb >, Fiber::MemArray< 3, rgb16 >, Fiber::MemArray< 3, tvector >, Fiber::MemArray< DataDims, OutputType >, Fiber::MemArray< Dims, RefPtr< FragmentID > >, Fiber::MemArray< Dims, result_type >, Fiber::MemArray< FieldDims, value_type >, Fiber::MemArray< MDIMS, T >, Fiber::MemArray< N, component_t >, Fiber::MemArray< N, element_t >, Fiber::MemArray< N, value_base_type >, Fiber::MemArray< N, ValueBase_t >, and Fiber::MemArray< VertexDims, RefPtr< FragmentID > >.

Referenced by Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyOperator(), and Fiber::TypedArray< Eagle::PhysicalSpace::point >::applyOperator().

◆ createSubArray()

virtual RefPtr< MemBase > Fiber::MemBase::createSubArray ( const DynamicSize & Offset,
const DynamicSize & CopySize,
const MemBase::Creator_t & C ) const
pure virtual

◆ DeferredConstructor()

◆ DeltaPtr()

◆ getChunk()

virtual RefPtr< MemCore::ChunkBase > Fiber::MemBase::getChunk ( ) const
pure virtual

◆ getPtr()

◆ getSize()

◆ getType()

◆ makeMemArray()

virtual RefPtr< MemBase > Fiber::MemBase::makeMemArray ( const MemBase::Creator_t & C) const
pure virtual

Provide a MemArray, even though the actual data is a procedural array.

This is useful when some code explicitely needs to deal with data pointer, even though it is inefficient in terms of memory.

Implemented in Fiber::DirectProductMemArray< T, Category, MDIMS >, Fiber::DirectProductMemArray< Eagle::point3 >, Fiber::DirectProductMemArray< Eagle::point3, ExplicitCoordinateAxisArray >, Fiber::DirectProductMemArray< point >, Fiber::DirectProductMemArray< point_type >, Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, MDIMS >, Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, T::SIZE >, Fiber::MemArray< N, T >, Fiber::MemArray< 1, BoundingBox >, Fiber::MemArray< 1, CellIndices_t >, Fiber::MemArray< 1, Coordinates >, Fiber::MemArray< 1, Dihedral_t >, Fiber::MemArray< 1, double >, Fiber::MemArray< 1, Eagle::bivector3 >, Fiber::MemArray< 1, Eagle::metric33 >, Fiber::MemArray< 1, Eagle::PhysicalSpace::bivector >, Fiber::MemArray< 1, Eagle::PhysicalSpace::point >, Fiber::MemArray< 1, Eagle::point3 >, Fiber::MemArray< 1, Eagle::tvector3 >, Fiber::MemArray< 1, edge >, Fiber::MemArray< 1, EdgeCell >, Fiber::MemArray< 1, EdgeCell_t >, Fiber::MemArray< 1, EdgesPerVertex_t >, Fiber::MemArray< 1, FEMDirections_t >, Fiber::MemArray< 1, FEMIndices_t >, Fiber::MemArray< 1, FieldType >, Fiber::MemArray< 1, float >, Fiber::MemArray< 1, LineIndices_t >, Fiber::MemArray< 1, point >, Fiber::MemArray< 1, point3 >, Fiber::MemArray< 1, RefPtr< BoundingBox > >, Fiber::MemArray< 1, RefPtr< Eagle::BoundingBox > >, Fiber::MemArray< 1, RefPtr< FragmentID > >, Fiber::MemArray< 1, RefPtr< MemArray< 1, index_t > > >, Fiber::MemArray< 1, std::string >, Fiber::MemArray< 1, std::vector< index_t > >, Fiber::MemArray< 1, std::vector< source > >, Fiber::MemArray< 1, std::vector< target > >, Fiber::MemArray< 1, std::vector< unsigned int > >, Fiber::MemArray< 1, T >, Fiber::MemArray< 1, TetrahedronCell >, Fiber::MemArray< 1, TriangleCell >, Fiber::MemArray< 1, TriangleCell_t >, Fiber::MemArray< 1, tvector >, Fiber::MemArray< 1, tvector3 >, Fiber::MemArray< 1, Type >, Fiber::MemArray< 2, Eagle::PhysicalSpace::tvector >, Fiber::MemArray< 2, FEMIndex_t >, Fiber::MemArray< 2, T >, Fiber::MemArray< 3, color >, Fiber::MemArray< 3, double >, Fiber::MemArray< 3, Eagle::PhysicalSpace::point >, Fiber::MemArray< 3, Eagle::point3 >, Fiber::MemArray< 3, Eagle::tvector3 >, Fiber::MemArray< 3, float >, Fiber::MemArray< 3, IBO_t >, Fiber::MemArray< 3, IndexList_t >, Fiber::MemArray< 3, output_type >, Fiber::MemArray< 3, point >, Fiber::MemArray< 3, rgb >, Fiber::MemArray< 3, rgb16 >, Fiber::MemArray< 3, tvector >, Fiber::MemArray< DataDims, OutputType >, Fiber::MemArray< Dims, RefPtr< FragmentID > >, Fiber::MemArray< Dims, result_type >, Fiber::MemArray< FieldDims, value_type >, Fiber::MemArray< MDIMS, T >, Fiber::MemArray< N, component_t >, Fiber::MemArray< N, element_t >, Fiber::MemArray< N, value_base_type >, Fiber::MemArray< N, ValueBase_t >, and Fiber::MemArray< VertexDims, RefPtr< FragmentID > >.

◆ memsize()

MemCore::memsize_t Fiber::MemBase::memsize ( ) const
inlineoverridevirtual

How much memory is occupied here at all in case it's stored in a chunk?

Implements MemCore::Cacheable.

Reimplemented in Fiber::ReferencingMemArray< N, T >.

References getChunk().

◆ nElements()

virtual index_t Fiber::MemBase::nElements ( ) const
inlinevirtual

return the number of elements in this array

Reimplemented in Fiber::ReferencingMemArray< N, T >.

References getSize().

◆ OriginPtr()

◆ rank()

virtual Fiber::Dims_t Fiber::MemBase::rank ( ) const
pure virtual