The Vish Visualization Shell 0.3
Vish
Public Member Functions | List of all members
MemCore::AlzheimerCreator< Object, MyCreatorBase > Class Template Reference

A Creator object which forgets its data when memory is going low. More...

#include <elementary/memcore/AlzheimerCreator.hpp>

Inheritance diagram for MemCore::AlzheimerCreator< Object, MyCreatorBase >:
MemCore::Creator< RefType, MyCreatorBase > MemCore::CreatorBase< Domain > MemCore::Creature MemCore::ReferenceBase< Creature > MemCore::Intercube MemCore::Ageable

Public Member Functions

 AlzheimerCreator (const RefPtr< Object > &D, const WeakPtr< Cache > &cache)
 Construct a creator with optional data object.
 
Creature::ReasonForReleasal release () override
 Release operation, forget the data.
 
- Public Member Functions inherited from MemCore::Creator< RefType, MyCreatorBase >
 Creator (const RefPtr< RefType > &D, const WCachePtr &MyCache)
 Construct a creator with a data object.
 
RefPtr< RefType > get () const override
 A passive function to return the current Data object if it exists.
 
CacheablePtr getCacheable () const override
 A passive function to return the current Data object if it exists.
 
const type_info & getType () override
 It is assumed that the Data object provides a getType() function retrieving the actual operational value type id.
 
bool hasData () const override
 Tell whether data exist here.
 
Creature::ReasonForReleasal release () override
 Release operation, nothing can be done here.
 
bool supersede (const RefPtr< Domain > &NewData, bool CreateAsOld=false)
 Replace the data stored here (if any) by another data set.
 
RefPtr< RefType > take () override
 An active function to take the strong pointer out of here.
 
- Public Member Functions inherited from MemCore::CreatorBase< Domain >
RefPtr< Domain > create (bool CreateAsOld=false)
 Actually create the object, using an existing one if existent via the get() function, otherwise calling the virtual produce() function.
 
RefPtr< Domain > createAsOld ()
 Get and possibly create data here without touching it, which is useful if the data is required only temporary.
 
 CreatorBase (const WCachePtr &theCache)
 Construct with Cache object given.
 
RefPtr< Domain > get_or_request (const result &R=nullptr)
 Asynchronous data access: Get the data if available, otherwise request them if possible and return nullptr.
 
std::string hasProducer () const override
 Query some more info about the kind of re-production facility associated with this creature.
 
bool isReproducible () const override
 Query whether this Creature can be reproduced (i.e., be created again ) after release().
 
bool isUnderCreation () const override
 return true while a request issued by the producer is still ongoing
 
const WCachePtrmyCache () const
 Return the associated Cache object.
 
virtual bool request (const result &R=nullptr)
 Asynchron mode: Request data to be created.
 
- Public Member Functions inherited from MemCore::Creature
std::string addrstr () const
 make a string containing hex numbers from the object's adress.
 
string & appendProvenance (const RefPtr< Provenance > &P)
 Append a Provenance object.
 
string & appendProvenance (const string &s)
 Append a provenance information string.
 
 Creature (const WCachePtr &myCache)
 Constructor, keeps track of the cache, but does NOT insert this object into the Cache.
 
virtual bool discardCreation ()
 Asynchron mode: aha.
 
void enableCaching (bool CreateAsOld=false) const
 Insert the available Cacheable object, as retrieved by the getCacheable() function to the Cache associated with this Creator.
 
RefPtr< ProvenancegetFirstCreationSource () const
 Retrieve the first creation source if there are any defined.
 
const WCachePtrmyCache () const
 Return the associated Cache object.
 
template<class RefType >
ReasonForReleasal releasePtr (RefPtr< RefType > &Data) const
 Template helper function to release a data pointer in a derived class.
 
void resetStatistics ()
 Reset statistic info, creation times and number of creations.
 
string & setProvenance (const RefPtr< Provenance > &P)
 Append provenance information.
 
string & setProvenance (const string &s)
 Overwrite latest provenance information.
 
- Public Member Functions inherited from MemCore::ReferenceBase< Creature >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< Creature, Creature > &PossibleSelf) const noexcept
 Check if this object is identical to the one used by the given pointer.
 
void mkAutoDestructive ()
 Marks this object as being automatically destructed, e.g.
 
refcount_t refcount () const noexcept
 The strong reference count.
 
 ReferenceBase (Creature *that) noexcept
 Constructor, initializes reference counter to zero.
 
const auto & self () const
 Return weak pointer to the object self.
 
refcount_t wrefcount () const noexcept
 The weak reference count.
 
- Public Member Functions inherited from MemCore::Intercube
void addInterface (const RefPtr< InterfaceBase > &I) const
 Add an interface class object.
 
template<class Data >
void addInterfaceData (const Data &D)
 Add data via an interface class object.
 
template<class Data , typename TypeSelector >
void addInterfaceData (const Data &D)
 Add data via an interface class object.
 
void clearInterfaces ()
 Remove all interfaces.
 
bool const_iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP) const
 Constant iterator.
 
virtual RefPtr< InterfaceBasecreateInterface (const type_info &) const
 Virtual function which allows derived objects to create Interface objects on demand.
 
RefPtr< InterfaceBasefindInterface (const type_info &t) const
 Find a certain interface of specified type.
 
RefPtr< InterfaceBasegetInterface (const type_info &t)
 Retrieve an interface object from a certain type.
 
std::string getInterfaceNames (const char delim=';') const
 Debug function retrieving all interfaces as human-readable string.
 
template<class Data >
bool gotNewInterfaceData (const Data &D)
 Check whether data on the given interface have changed, and if so, set new data as interface.
 
template<class Data >
bool gotNewInterfaceData (mutex &M, const Data &D)
 Check whether interface data have changed, if so, then set new interface data and return true.
 
template<class Data , typename Selector >
bool gotNewInterfaceData (mutex &M, const Data &D)
 Check whether interface data have changed, if so, then set new interface data and return true.
 
template<class Data , typename Selector >
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector &S)
 Check whether interface data have changed, if so, then set new interface data and return true.
 
template<class Data , typename Selector >
bool gotNewInterfaceData (mutex &M, const Data &D, const Selector *S)
 Check whether interface data have changed, if so, then set new interface data and return true.
 
template<class Data >
bool hasChangedInterfaceData (const Data &D) const
 Check whether interface data have changed.
 
template<class Data , typename Selector >
bool hasChangedInterfaceData (const Data &D) const
 Check whether interface data have changed.
 
template<class Data , typename Selector >
bool hasChangedInterfaceData (const Data &D, const Selector &) const
 Check whether interface data have changed.
 
template<class Data , typename Selector >
bool hasChangedInterfaceData (const Data &D, const Selector *) const
 Check whether interface data have changed.
 
bool hasInterface (const type_info &t) const
 Check if some Interface might exist.
 
 Intercube ()
 Constructor.
 
bool iterateInterfaces (const RefPtr< InterfaceIterationParameter > &IIP)
 Modifyable iterator.
 
void printInterfaces () const
 Debug function that prints the names of all interfaces.
 
void registerInterface (const type_info &t)
 Register an interface type; when the interface is actually required, the virtual createInterface() function will be called.
 
template<class InterfaceType >
void removeInterface ()
 Remove an interface.
 
void removeInterfaceBase (const type_info &InterfaceBaseID)
 Remove an interface.
 
virtual ~Intercube ()
 Destructor.
 
- Public Member Functions inherited from MemCore::Ageable
 Ageable () noexcept
 Constructor; remembers birth time from current time counter.
 
constexpr Ageable (age_t t) noexcept
 Constructor with explicit time value.
 
constexpr Ageable (const Ageable &A) noexcept
 Copy constructor.
 
 Ageable (const volatile Ageable &A) noexcept
 Copy constructor.
 
constexpr const AgeablegetAge () const
 Return reference to this age, useful for derived classes.
 
bool isNewerThan (const Ageable &a) const noexcept
 Comparison operator.
 
bool isOlderThan (const Ageable &a) const noexcept
 Comparison operator.
 
bool isYoungerThan (const Ageable &a) const noexcept
 Comparison operator (alias to isNewerThan() )
 
bool operator!= (const Ageable &a) const noexcept
 Comparison operator.
 
bool operator< (const Ageable &a) const noexcept
 Comparison operator.
 
bool operator<= (const Ageable &a) const noexcept
 Comparision operator.
 
bool operator<= (const volatile Ageable &a) const volatile noexcept
 Comparision operator.
 
bool operator== (const Ageable &a) const noexcept
 Comparison operator.
 
bool operator> (const Ageable &a) const noexcept
 Comparison operator.
 
bool operator> (const volatile Ageable &a) const volatile throw ()
 Comparision operator.
 
bool operator>= (const Ageable &a) const noexcept
 Comparision operator.
 
bool operator>= (const volatile Ageable &a) const volatile noexcept
 Comparison operator.
 
constexpr void resetAge () noexcept
 Set time value to InfinitelyOld().
 
void setInfinitelyNew () noexcept
 Set time value to InfinitelyOld().
 
age_t time_value () const noexcept
 Return an object's current age.
 
age_t time_value () const volatile noexcept
 Return an object's current age.
 
Ageabletouch () noexcept
 Mark the current object as being modified "now".
 
age_t update (age_t age) noexcept
 Set the age of the current object to a specific age if that is newer than the current one.
 
age_t update (const Ageable &Other) noexcept
 Set the age of the current object to the age of another object if that other one is newer than the current one.
 
age_t update (const volatile Ageable &Other) volatile noexcept
 Set the age of the current object to the age of another object if that other one is newer than the current one.
 
 ~Ageable () noexcept
 Destructor.
 

Additional Inherited Members

- Public Types inherited from MemCore::ReferenceBase< Creature >
using reference_domain_t = Creature
 The type of the base class.
 
using SelfPtr_t = WeakPtr< Creature, Creature >
 Type for a pointer to this object itself.
 
- Static Public Member Functions inherited from MemCore::Ageable
static const AgeableInfinitelyNew () noexcept
 Return a time that is infinitely in the future (well, sort of).
 
static constexpr const AgeableInfinitelyOld () noexcept
 Return a time that is infinitely in the past (well, sort of).
 
static age_t now () noexcept
 Return the current global time.
 
- Public Attributes inherited from MemCore::Creature
std::string creationError
 Indicator of possible creation errors.
 
double LastCreationTime = 0.0
 Seconds, last call.
 
std::list< RefPtr< Provenance > > myCreationSources
 Optional information about this Creator, how it was born and to which data origin it may refer to.
 
double TotalCreationTime = 0.0
 Seconds, total.
 
- Protected Member Functions inherited from MemCore::Creator< RefType, MyCreatorBase >
 Creator (const WCachePtr &MyCache)
 Constructor for no data yet.
 
RefPtr< RefType > produce () override
 Object creation function (just returns the object which was specified during construction).
 
- Protected Member Functions inherited from MemCore::Creature
virtual ~Creature ()=0
 Destructor (virtual)
 
- Protected Member Functions inherited from MemCore::ReferenceBase< Creature >
virtual void extremeUnction ()
 A virtual function that will be called just before the object is destroyed.
 
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called).
 
void suicide ()
 Delete this.
 
virtual ~ReferenceBase ()
 Virtual destructor.
 

Detailed Description

template<class Object, class MyCreatorBase = CreatorBase<Object>>
class MemCore::AlzheimerCreator< Object, MyCreatorBase >

A Creator object which forgets its data when memory is going low.

Constructor & Destructor Documentation

◆ AlzheimerCreator()

template<class Object , class MyCreatorBase = CreatorBase<Object>>
MemCore::AlzheimerCreator< Object, MyCreatorBase >::AlzheimerCreator ( const RefPtr< Object > &  D,
const WeakPtr< Cache > &  cache 
)
inline

Construct a creator with optional data object.

Note
The constructor does not yet activate memory management for the data object. The activateCaching() needs to be called explicitely AFTER there exists at least one strong reference pointer to the data object and to the Creator object (‘this’ object). This cannot be done at the constructor, because there is not yet any strong reference pointer that keeps the Creator object alive!