FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
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< MDIMS > Fiber::TypedArray< Eagle::point3 > Fiber::MemArrayBase< N > Fiber::TypedArray< T > Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, T::SIZE > Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, MDIMS > Fiber::DirectProductMemArrayBase< T, Category, MDIMS > Fiber::ReferencingMemArray< N, T > Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, T::SIZE > Fiber::DirectProductMemArray< Eagle::point3, LinearCoordinateAxisArray, T::SIZE > Fiber::DirectProductMemArray< T, Category, MDIMS > Fiber::ReferencingMemArray< N, 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. See class DynPtr for more info.
 
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 voidgetPtr ()=0
 Special Array Storage.
 
virtual RefPtr< MemCore::ChunkBasegetChunk () const =0
 Get chunk to underlying data, if this is a contiguous array.
 
virtual const voidOriginPtr () const =0
 Get pointer to origin of linearly procedural array, if it is linear.
 
virtual const voidDeltaPtr () 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

◆ 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< T >::applyFunction(), Fiber::TypedArray< T >::applyFunction(), Fiber::TypedArray< T >::applyFunction(), Fiber::TypedArray< T >::applyFunction(), Fiber::TypedArray< T >::applyFunction(), create(), and create().

◆ createEquallySizedMemArray()

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

◆ createSubArray()

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

◆ DeferredConstructor()

void Fiber::MemBase::DeferredConstructor ( )
overridepure virtual

Virtual deferred reference pointer construction pointer Don't overload if you don't know exactly what this function is supposed to do. See class DynPtr for more info.

Reimplemented from MemCore::Cacheable.

Implemented in Fiber::DirectProductMemArrayBase< T, Category, MDIMS >, Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, MDIMS >, Fiber::DirectProductMemArrayBase< T::FixedArray_t, LinearCoordinateAxisArray, T::SIZE >, and Fiber::ReferencingMemArray< N, T >.

◆ DeltaPtr()

virtual const void * Fiber::MemBase::DeltaPtr ( ) const
pure virtual

◆ getChunk()

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

Get chunk to underlying data, if this is a contiguous array.

Implemented in Fiber::TypedArray< T >, and Fiber::TypedArray< Eagle::point3 >.

◆ getPtr()

virtual void * Fiber::MemBase::getPtr ( )
pure virtual

◆ getSize()

virtual DynamicSize Fiber::MemBase::getSize ( ) const
pure virtual

◆ getType()

virtual const type_info & Fiber::MemBase::getType ( ) const
pure virtual

◆ 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::MemArray< N, T >, Fiber::DirectProductMemArray< T, Category, MDIMS >, Fiber::DirectProductMemArray< Eagle::point3, LinearCoordinateAxisArray, T::SIZE >, and Fiber::DirectProductMemArray< T, LinearCoordinateAxisArray, T::SIZE >.

◆ 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 >.

◆ nElements()

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

return the number of elements in this array

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

◆ OriginPtr()

virtual const void * Fiber::MemBase::OriginPtr ( ) const
pure virtual

◆ rank()

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

Return the number of dimensions.

Implemented in Fiber::MemArrayBase< N >, and Fiber::MemArrayBase< MDIMS >.