The Vish Visualization Shell 0.3
Vish
Public Member Functions | List of all members
A< Object > Class Template Reference
Inheritance diagram for A< Object >:
MemCore::ReferenceCount MemCore::ReferenceBase< A > MemCore::Intercube MemCore::ReferenceBase< A > MemCore::ReferenceBase< A > MemCore::ReferenceBase< A > MemCore::Interface< A > MemCore::ReferenceBase< A > MemCore::ReferenceBase< A > MemCore::ReferenceBase< A > MemCore::Intercube

Public Member Functions

 A (Object *SomeObject)
 Construct referer object from newly created objects, sets reference counts to zero.
 
void extremeUnction () override
 A virtual function that will be called just before the object is destroyed.
 
void extremeUnction () override
 A virtual function that will be called just before the object is destroyed.
 
void extremeUnction () override
 A virtual function that will be called just before the object is destroyed.
 
void extremeUnction () override
 A virtual function that will be called just before the object is destroyed.
 
- 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::ReferenceBase< A >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< A, A > &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 (A *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::Interface< A >
const type_info & getInterfaceDomain () const
 Run-time information about the type used for InterCube registration.
 
- Public Member Functions inherited from MemCore::InterfaceBase
virtual bool apply (Intercube &I, const RefPtr< InterfaceIterationParameter > &)
 modifyable callback function
 
virtual bool apply_const (const Intercube &I, const RefPtr< InterfaceIterationParameter > &)
 constant callback function
 
 InterfaceBase () throw ()
 Constructor.
 
- Public Member Functions inherited from MemCore::ReferenceBase< InterfaceBase >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< InterfaceBase, InterfaceBase > &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 (InterfaceBase *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.
 

Additional Inherited Members

- Public Types inherited from MemCore::ReferenceBase< A >
using reference_domain_t = A
 The type of the base class.
 
using SelfPtr_t = WeakPtr< A, A >
 Type for a pointer to this object itself.
 
- Public Types inherited from MemCore::Interface< A >
using InterfaceDomain_t = A
 Compile-time information about the type used for InterCube registration.
 
- Public Types inherited from MemCore::ReferenceBase< InterfaceBase >
using reference_domain_t = InterfaceBase
 The type of the base class.
 
using SelfPtr_t = WeakPtr< InterfaceBase, InterfaceBase >
 Type for a pointer to this object itself.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< A >
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called).
 
void suicide ()
 Delete this.
 
virtual ~ReferenceBase ()
 Virtual destructor.
 
- Protected Member Functions inherited from MemCore::InterfaceBase
 ~InterfaceBase ()
 Destructor.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< InterfaceBase >
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called).
 
void suicide ()
 Delete this.
 
virtual ~ReferenceBase ()
 Virtual destructor.
 
- Protected Member Functions inherited from MemCore::ReferenceCount
 ReferenceCount () noexcept
 Initialize reference counts to zero.
 
bool canIncrementStrongRefsEvenMore () const noexcept
 The "extreme unction" state is when a pointer is determined to die sure, and this state is set by the suicide() function.
 
refcount_t get_pointers () const noexcept
 Return the weak reference count, i.e.
 
refcount_t get_refs () const noexcept
 Return the strong reference count, i.e.
 
refcount_t weak_refcount () const noexcept
 Return the weak reference count, i.e.
 
- Protected Attributes inherited from MemCore::ReferenceCount
interlocked_t strong_refs
 Strong references.
 
interlocked_t weak_refs
 Weak references.
 
- Static Protected Attributes inherited from MemCore::ReferenceCount
static constexpr refcount_t dead_object_refcount = -111L
 Some unrealistically large value that is used during premature destruction of objects to indicate that they are still alive even though they will be killed soon after.
 
static constexpr refcount_t max_object_refcount = 0x39000000L
 Maximum value that a reference count can reach before it overflows.
 
static constexpr refcount_t null_referencer = -222L
 Magic number to indicate that a reference refers to a non-existent reference, i.e.
 

Member Function Documentation

◆ extremeUnction() [1/4]

template<class Object >
void A< Object >::extremeUnction ( )
inlineoverridevirtual

A virtual function that will be called just before the object is destroyed.

It will be called while the reference count is just zero, thus reference pointers are still (barely!) valid to this object. An implementation of this function is like a virtual destructor with yet intact reference pointers, whereas in a virtual destructor all reference pointers have already been invalidated. Consequently, the object itself is still valid when this function is called, but it will no longer be considered valid once the destructor is called.

Reimplemented from MemCore::ReferenceBase< A >.

References MemCore::ReferenceBase< A >::self().

◆ extremeUnction() [2/4]

template<class Object >
void A< Object >::extremeUnction ( )
inlineoverridevirtual

A virtual function that will be called just before the object is destroyed.

It will be called while the reference count is just zero, thus reference pointers are still (barely!) valid to this object. An implementation of this function is like a virtual destructor with yet intact reference pointers, whereas in a virtual destructor all reference pointers have already been invalidated. Consequently, the object itself is still valid when this function is called, but it will no longer be considered valid once the destructor is called.

Reimplemented from MemCore::ReferenceBase< A >.

References MemCore::ReferenceBase< Object >::self().

◆ extremeUnction() [3/4]

template<class Object >
void A< Object >::extremeUnction ( )
inlineoverridevirtual

A virtual function that will be called just before the object is destroyed.

It will be called while the reference count is just zero, thus reference pointers are still (barely!) valid to this object. An implementation of this function is like a virtual destructor with yet intact reference pointers, whereas in a virtual destructor all reference pointers have already been invalidated. Consequently, the object itself is still valid when this function is called, but it will no longer be considered valid once the destructor is called.

Reimplemented from MemCore::ReferenceBase< A >.

References MemCore::ReferenceBase< Object >::self().

◆ extremeUnction() [4/4]

template<class Object >
void A< Object >::extremeUnction ( )
inlineoverridevirtual

A virtual function that will be called just before the object is destroyed.

It will be called while the reference count is just zero, thus reference pointers are still (barely!) valid to this object. An implementation of this function is like a virtual destructor with yet intact reference pointers, whereas in a virtual destructor all reference pointers have already been invalidated. Consequently, the object itself is still valid when this function is called, but it will no longer be considered valid once the destructor is called.

Reimplemented from MemCore::ReferenceBase< A >.

References MemCore::ReferenceBase< Object >::self().