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

Base class for multidimensional arrays that employ deferred storage, i.e. More...

#include <CreativeArrayBase.hpp>

Inheritance diagram for Fiber::CreativeArrayBase:
MemCore::CreatorBase< MemBase > Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase > Fiber::SaveableAttributes Fiber::OwnerBase MemCore::Attributes Fiber::OnDemandCreator< SliceExtractor< Converter, InputTypes > > Fiber::OnDemandCreator< ComputeVertexNormals > Fiber::OnDemandCreator< Computer, Rank, result_value_type >

Public Types

enum class  CreationFailure {
  None , OutOfMemory , CannotOpen , CannotRead ,
  CannotSave , Timeout , Unknown
}
Public Types inherited from Fiber::OwnerBase
template<class ItemType>
using Item = MemCore::InterfaceData<ItemType>
 An optional convenience class that allows to easily add arbitrary types to Intercubes .

Public Member Functions

 CreativeArrayBase (const MemCore::WCachePtr &theCache)
Ageabletouch () throw ()
const AgeabletouchAttributes () const
const AgeableupdateAttributeAge (const Ageable &A) const
void extremeUnction ()
bool needsSaving () const
 Check if the data here need to be saved, i.e.
void hasBeenSaved () const
 Indicate that this dataset has been saved and does not need to be saved again.
void addDataMetaInfo (const MemCore::RefPtr< MemBase > &D)
 Set the type and size interfaces according to the given data.
const FiberTypeIndexgetFiberTypeIndex () const
auto value_type_size () const
 How many bytes this object occupies in memory.
RefPtr< FiberTypeBasegetFiberType () const
void setFiberType (const RefPtr< FiberTypeBase > &FTB)
template<class ... T>
bool isType () const
void addMetaInfo (const DynamicSize &theSize, const RefPtr< FiberTypeBase > &theDataType)
void addMetaInfo (int nDimensions, const RefPtr< FiberTypeBase > &theDataType)
RefPtr< BinderBasegetBinder () const
 Get the Binder from the Bundle where this Creator is contained, processing via Bundle::processOwnership(), which may be relatively slow.
void save (const MemCore::RefPtr< MemBase > &D) const
 Passes the data object backwards through the ownership hierarchy, ultimately calling Bundle::processOwnership() which in turn calls Binder::save().
Public Member Functions inherited from MemCore::CreatorBase< MemBase >
RefPtr< Domain > create (bool CreateAsOld=false)
RefPtr< Domain > createAsOld ()
 CreatorBase (const WCachePtr &theCache)
virtual RefPtr< Domain > get () const =0
RefPtr< Domain > get_or_request (const result &R=nullptr)
virtual const type_info & getType ()=0
bool isUnderCreation () const override
virtual bool request (const result &R=nullptr)
virtual RefPtr< Domain > take ()
Public Member Functions inherited from Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase >
void x_updateOwnershipAge (const MemCore::Ageable &theNewAge) override
 Forward some age to all Owners.
void insertOwner (const Container &theOwner)
 Add some owner.
void addOwner (const Container &theOwner, const MemCore::Ageable &theNewAge)
 Add some owner and broadcast a new age to all Ownerrs.
 Ownable ()
 Default constructor, empty Ownership list.
Ownableoperator= (const Ownable &)
 Assignment, does NOT copy any ownership information, the assigned Ownable will retain all its ownership information.
MemCore::WeakPtr< Container > getPrimaryOwner () const
 Get the first valid owner.
size_t getNumberOfValidOwners () const
 Get the first valid owner.
bool processOwnership (MemCore::Intercube &Output, const MemCore::Intercube &Input) const override
 Process some ownership action.
Public Member Functions inherited from Fiber::OwnerBase
bool processOwnership (MemCore::Intercube &OutputAndInput) const
 Process ownership where the input information is shared with the output information in the same Intercube.
Public Member Functions inherited from Fiber::SaveableAttributes
void attributesHaveBeenSaved () const
bool attributesNeedSaving () const
Public Member Functions inherited from MemCore::Attributes
MemCore::RefPtr< MemCore::ChunkBasegetAttribute (const std::string &name) const
const AgeablegetAttributeAge () const
std::pair< bool, T > getAttributeValue (const string &AttributeName, size_t ElementNumber=0) const
attributes_t & getAttributeValues ()
const attributes_t & getAttributeValues () const
size_t getNumberOfAttributes () const
bool hasAttribute (const std::string &name) const
int Iterate (const Functor &L) const
int iterate (Iterator &it) const
int iterate_attributes (const Functor &L) const
size_t NumberOfAttributes () const
void setAttribute (const std::string &name, const MemCore::RefPtr< MemCore::ChunkBase > &AttribData)
ResizableChunk< T > & setAttributeValue (const std::string &name, const T &AttribData)
ResizableChunk< T > & setAttributeValues (const std::string &name, const std::initializer_list< T > &AttribData)
const T & setValue (const T &AttribData, const std::string &name)
const T & setValue (const T &AttribData, const std::string &name, const std::string &Comment, const std::string &CommentPrefix="Comment")
string toString () const
const AgeabletouchAttributes () const
const AgeableupdateAttributeAge (const Ageable &A) const

Static Public Member Functions

static bool retryCreation (CreativeArrayBase &)

Public Attributes

AgeRelativeToBinder LastSavedTimes
enum Fiber::CreativeArrayBase::CreationFailure Error = CreationFailure::None
Public Attributes inherited from Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase >
std::unordered_set< MemCore::WeakPtr< Container > > Owners
 The (internal) list of owners.
Public Attributes inherited from Fiber::SaveableAttributes
MemCore::Ageable LastSavedAttributes

Protected Attributes

FiberTypeIndex myFiberTypeIndex
MemCore::WeakPtr< FiberTypeBasemyFiberTypeBase

(Note that these are not member symbols.)

Ageable LastSaved
 The age when the data contained here had been saved last.

Detailed Description

Base class for multidimensional arrays that employ deferred storage, i.e.

they do not reside in memory all time, but are created on demand. Child classes must implement the virtual functions

Member Function Documentation

◆ getBinder()

RefPtr< BinderBase > Fiber::CreativeArrayBase::getBinder ( ) const

Get the Binder from the Bundle where this Creator is contained, processing via Bundle::processOwnership(), which may be relatively slow.

Use this function to determine whether a Creator needs to be saved at all. This information is not available from the Creator itself because it may change depending on the containing bundle and whether that one is bound to a file or not. If a Creator is contained in multiple bundles, then this information is no longer unique and depends on what processOwnership() yields.

References MemCore::Intercube::addInterface(), getBinder(), and Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase >::processOwnership().

Referenced by getBinder().

◆ hasBeenSaved()

void Fiber::CreativeArrayBase::hasBeenSaved ( ) const
inline

Indicate that this dataset has been saved and does not need to be saved again.

The LastSaved date is updated to the same age as the Creator's age.

References LastSaved.

◆ needsSaving()

bool Fiber::CreativeArrayBase::needsSaving ( ) const
inline

Check if the data here need to be saved, i.e.

the modification date of this creator is younger than the last save date.

References LastSaved, and needsSaving().

Referenced by needsSaving().

◆ save()

void Fiber::CreativeArrayBase::save ( const MemCore::RefPtr< MemBase > & D) const

Passes the data object backwards through the ownership hierarchy, ultimately calling Bundle::processOwnership() which in turn calls Binder::save().

The intercubes as provided to the processOwnership() call will be equipped with two interfaces:

An interface object to signal a processOwner() function that some data item should be saved.
Definition SaveItem.hpp:21

which allow to extract the saving information in the Binder::save() implementation.

References MemCore::Intercube::addInterface(), Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase >::getPrimaryOwner(), LastSaved, Fiber::Ownable< CreativeArrayBase, CreativeArrayBaseContainerBase >::processOwnership(), and save().

Referenced by save().

◆ value_type_size()

auto Fiber::CreativeArrayBase::value_type_size ( ) const
inline

How many bytes this object occupies in memory.

Alias for mem_size(), for compatiblity with Chunk::value_type_size().

◆ LastSaved

Ageable LastSaved
related

The age when the data contained here had been saved last.

(), CreatorConstructionContext

Referenced by hasBeenSaved(), needsSaving(), and save().