The Vish Visualization Shell 0.3
Vish
Public Member Functions | List of all members
Wizt::VAbstractValue< Type > Class Template Reference

Implementation of a VISH type via procedural referencing instead of instantiation. More...

#include <ocean/plankton/VAbstractValue.hpp>

Inheritance diagram for Wizt::VAbstractValue< Type >:
Wizt::VTypedValueBase< Type > MemCore::Ageable Wizt::VValueBase MemCore::ReferenceBase< VValueBase >

Public Member Functions

const Ageableage () const override
 Return the age of this value, constant version.
 
Ageableage () override
 Return the age of this value.
 
RefPtr< VValueBasecopy () const override
 Create a copy of the respective value.
 
const type_info & getType () const override
 Implement the virtual function to query the type ID of this value.
 
bool getValue (Type &Variable) const override
 Implement the virtual function to get the current value.
 
WeakPtr< VValueCreatorgetValueCreator () const override
 Return the associated value creator.
 
bool setValue (const Type &Variable) override
 Implement the assignment of the current value.
 
bool setValueFromText (const string &s) override
 Generic interface to set a value from a text.
 
RefPtr< VManagedObjectsource () override
 In case this object is memory-managed, return its container.
 
string Text () const override
 Convert the value into some text, which is interpretable via setValueFromText().
 
 VAbstractValue (const VAbstractValue &V)
 Copy constructor.
 
- Public Member Functions inherited from Wizt::VTypedValueBase< Type >
RefPtr< ChunkBasegetChunk (size_t N) const override
 Create an array of type instances filled with values of the given count.
 
const type_info & getType () const override
 Implement the type information function.
 
bool isDifferentFrom (const WeakPtr< VValueBase, VValueBase > &V) const override
 Implement the comparison function from the VValueBase class utilizing the VValueCompareTrait type trait class.
 
 VTypedValueBase ()
 Default Constructor.
 
 VTypedValueBase (const Ageable &A, const VTypedValueBase &V)
 Copy constructor, takes care of exported members.
 
- Public Member Functions inherited from Wizt::VValueBase
VValueBasePtr_t component (const string &name) const
 Retrieve a certain component from a compound value.
 
int copyComponents (const VValueBase &ValueSource)
 Copy the components from another VValueBase.
 
virtual WeakPtr< InterfaceBasegetInterface () const
 In case this value refers to the interface of some VObject, then this function may return such.
 
virtual bool getValueFrom (const WeakVValueBasePtr_t &V)=0
 Copy or cast a value from a possibly compatible type.
 
int iterate (ComponentIterator &CI) const
 Find out which components are contained in the certain compound type.
 
size_t nComponents () const
 How many components are available here?
 
bool operator!= (const VValueBase &V) const
 Test for inequality.
 
bool operator!= (const WeakPtr< VValueBase, VValueBase > &V) const
 Compare for equality with a value.
 
bool operator== (const VValueBase &V) const
 Test for equality.
 
virtual bool setSource (const WeakPtr< VManagedObject > &Owner)
 For special values which refer to the interface of another object, this function may allow to set another source for referencing such an interface.
 
 VValueBase ()
 Default Constructor.
 
 VValueBase (const VValueBase &)
 Copy Constructor.
 
 ~VValueBase ()
 Destructor.
 
- Public Member Functions inherited from MemCore::ReferenceBase< VValueBase >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< VValueBase, VValueBase > &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 (VValueBase *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::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< VValueBase >
using reference_domain_t = VValueBase
 The type of the base class.
 
using SelfPtr_t = WeakPtr< VValueBase, VValueBase >
 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.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< VValueBase >
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 Type>
class Wizt::VAbstractValue< Type >

Implementation of a VISH type via procedural referencing instead of instantiation.

All object interactions in VISH are performed via types. As such, a type is used to query for implementations of some functionality. Sometimes the type itself as data storage object is not of relevance at all, but just the functionality it provides. For such cases there might just be a single instance of this type in the entire application. Still, each VObject requiring this functionality will query for this type. What the VObject then will get is a reference to this certain type that allows to call its member functions.

In other words, when Type is such an abstract object, then VValue<Type> is just a pointer to an instance of this Type.

Member Function Documentation

◆ getType()

template<class Type >
const type_info & Wizt::VAbstractValue< Type >::getType ( ) const
inlineoverridevirtual

Implement the virtual function to query the type ID of this value.

For this value, the type is fixed throughout its lifetime and corresponds to the type of the template argument.

Implements Wizt::VValueBase.

◆ getValue()

template<class Type >
bool Wizt::VAbstractValue< Type >::getValue ( Type &  Variable) const
inlineoverridevirtual

Implement the virtual function to get the current value.

Returns
True on successfull retrieval, which is always the case in the default implementation of a stored value. However, derived values which implement a procedural value might return false here as well.
Parameters
VariableThe external storage space where to assign this value.

Implements Wizt::VTypedValueBase< Type >.

◆ getValueCreator()

template<class Type >
WeakPtr< VValueCreator > Wizt::VAbstractValue< Type >::getValueCreator ( ) const
inlineoverridevirtual

Return the associated value creator.

Mostly used to enforce creation of static class members in the derived class, because implementations of virtual functions must not be optimized away by the compiler.

Implements Wizt::VValueBase.

◆ setValue()

template<class Type >
bool Wizt::VAbstractValue< Type >::setValue ( const Type &  Variable)
inlineoverridevirtual

Implement the assignment of the current value.

Parameters
VariableThe external storage space from where to assign this value.

Implements Wizt::VTypedValueBase< Type >.