The Vish Visualization Shell 0.3
Vish
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Wizt::VCreatorBase Class Referenceabstract

Base class for objects that serve to create VObject's. More...

#include <ocean/plankton/VCreatorBase.hpp>

Inheritance diagram for Wizt::VCreatorBase:
Wizt::VInputCreatorBase Wizt::VCreatorProperties Wizt::VManagedDomainObject< VInputCreatorBase > Wizt::VCreatorProperty< UINT_MAX > Wizt::VManagedObject Wizt::VCreatorPropertyBase Wizt::VManagedObjectBase MemCore::Intercube MemCore::MutableName Wizt::VCreatorPropertyElements MemCore::ReferenceBase< VManagedObjectBase > Wizt::ScriptletCreator Wizt::VCreator< DerivedVObject, AcceptedTypes >

Classes

struct  ApplicationIterator
 
struct  ApplicationProperties
 Application properties. More...
 
struct  CreationInfo
 
struct  IdentifierIterator
 

Public Member Functions

virtual VAcceptInfoList_t accept (const RefPtr< VObject > &) const =0
 Virtual query function to check whether this creator may provide an VObject that uses the given object as input.
 
virtual RefPtr< VObjectcreate (const CreationInfo &name, const Intercube &CreationContext, const RefPtr< VCreationPreferences > &AdditionalPreferences=nullptr) const =0
 The virtual object creation function, it is implemented by VCreator<>.
 
RefPtr< VObjectcreate (const string &name={}, const RefPtr< VCreationPreferences > &AdditionalPreferences=nullptr) const
 Convenience function to create objects using default parameters.
 
virtual string createChildname (const string &parent_name) const
 Virtual callback function that is called when a new child object is to be created from a parent object's name.
 
const VCreatorPropertiesgetProperties () const
 Get the properties (various textual descriptions) for this creator.
 
- Public Member Functions inherited from Wizt::VInputCreatorBase
RefPtr< VCreationPreferencesCreationPreferences (const RefPtr< VCreationPreferences > &AdditionalPreferences=nullptr) const
 Associated creation preferences.
 
 VInputCreatorBase (const string &name, int prior, const RefPtr< VCreationPreferences > &prop, const char *vish_creator_release_identifier)
 Constructor.
 
- Public Member Functions inherited from Wizt::VManagedDomainObject< VInputCreatorBase >
const type_info & getDomainType () const override
 Get the associated domain type.
 
void remove ()
 Remove the current object from the pool of objects.
 
 VManagedDomainObject (const string &name, int priority=DEFAULT_PRIORITY)
 Constructor, inserts the new object into the object pool of the respective domain under the given name with the assigned priority.
 
- Public Member Functions inherited from Wizt::VManagedObject
string getLoadModule () const
 Get the name of the module that was active when loading/creating this object.
 
void insert (const string &s, int priority=DEFAULT_PRIORITY)
 Insert new objects into the object data base.
 
void remove ()
 Remove this object from the database.
 
void setPriority (int priority)
 Set the priority level in the database list.
 
 VManagedObject (const string &name, int priority=DEFAULT_PRIORITY)
 Constructor.
 
virtual ~VManagedObject ()
 Virtual destructor.
 
- Public Member Functions inherited from Wizt::VManagedObjectBase
 VManagedObjectBase ()
 Constructor.
 
 ~VManagedObjectBase ()
 Destructor.
 
- Public Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
auto getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain.
 
bool isIdentical (const WeakPtr< VManagedObjectBase, VManagedObjectBase > &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 (VManagedObjectBase *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::MutableName
void addNameChangeNotifier (const WeakPtr< Notifier > &)
 Add a new listener.
 
std::string BaseName (const char Separator) const
 return the name of this item cropped anything after the Separator
 
const std::string & getName () const
 The name of the object.
 
 MutableName (const std::string &theName)
 Construct from text.
 
const std::string & Name () const
 The name of the object.
 
void rename (const std::string &newName)
 rename, same as setName()
 
void setName (const std::string &newName)
 Set a new name.
 
- Public Member Functions inherited from Wizt::VCreatorProperties
 VCreatorProperties (const string &keyname, const string &Description="", const string &Operatorname="")
 Creator with key, description and operator (deprecated)
 
template<unsigned ID>
 VCreatorProperties (const VCreatorProperty< ID > &VP)
 Creator with arbitrary set of properties (prefrable!)
 
 ~VCreatorProperties ()
 destructor
 
- Public Member Functions inherited from Wizt::VCreatorProperty< UINT_MAX >
 VCreatorProperty ()
 Empty constructor.
 
 VCreatorProperty (const string &name)
 Construct from a single string and assign to ID entry.
 
 VCreatorProperty (const VCreatorProperty< ID1 > &l, const VCreatorProperty< ID2 > &r)
 Merge two property sets.
 
 VCreatorProperty (const VCreatorProperty< ID1 > &vp)
 Construct from another indexed set.
 
- Public Member Functions inherited from Wizt::VCreatorPropertyBase
string & Application ()
 Application domain.
 
const string & Application () const
 Application domain.
 
string & Arguments ()
 Textual description of acceptable arguments, see POLYMORPHY.
 
const string & Arguments () const
 Textual description of acceptable arguments, see POLYMORPHY.
 
void assign (const VCreatorPropertyBase &l)
 Assignment - copy only those strings that are non-empty, otherwise status quo is kept.
 
string Author () const
 authorship information, looked up from authors.txt
 
string & AuthorKey ()
 authorship information
 
const string & AuthorKey () const
 author key
 
string & Category ()
 Group of creators.
 
const string & Category () const
 Group of creators.
 
string & Description ()
 Descriptive name, UTF8 characters allowed.
 
const string & Description () const
 Descriptive name, UTF8 characters allowed.
 
string & helpurl ()
 relative URL for integrated help for this creator
 
const string & helpurl () const
 relative URL for integrated help for this creator
 
string & Identifier ()
 Identifier within this group.
 
const string & Identifier () const
 Identifier within this group.
 
string keyname (const char separator[]="/") const
 globally unique name
 
std::string & operator() (unsigned i)
 Retrieve property i, writeable.
 
const string & operator() (unsigned i) const
 Retrieve property i, readonly.
 
string & OperatorName ()
 Ideally a single UTF8 character, for operators.
 
const string & OperatorName () const
 Ideally a single UTF8 character, for operators.
 
string & shorthelp ()
 short help string, for tooltip descriptions
 
const string & shorthelp () const
 short help string, for tooltip descriptions
 
string & SourceFile ()
 Source code file.
 
const string & SourceFile () const
 Source code file.
 
string & url ()
 Weburl for further info about this object.
 
const string & url () const
 Weburl for further info about this object.
 

Static Public Member Functions

static int iterateIdentifiers (const string &Identifier, IdentifierIterator &It)
 Iterate over all identifiers across multiple categories.
 
- Static Public Member Functions inherited from Wizt::VManagedDomainObject< VInputCreatorBase >
static RefPtr< VManagedObjectfind (const string &s)
 Find an object with a certain name.
 
static int iterate (VManagedObjectIterator_t VIt, int p_start=INT_MIN, int p_end=INT_MAX)
 Iterate through all objects within a given priority range.
 
static bool remove (const std::string &s)
 Remove an compatible object given its name.
 
static int size ()
 Tell us how many object of this domain exist.
 
static int traverse (VManagedObjectIterator &VIt, int p_start=INT_MIN, int p_end=INT_MAX)
 Iterate through all objects within a given priority range.
 
- Static Public Member Functions inherited from Wizt::VManagedObject
static int count ()
 How many objects reside in the domain database at all?
 
static VManagedObjectPtr find (const type_info &, const std::string &s)
 Find a certain managed object by its name.
 
static bool InitDomain (const type_info &)
 An initialization function.
 
static int iterateModules (ModuleIterator &VIM)
 Iterate over all modules which have put objects into the object database so far.
 
static int size (const type_info &)
 How many objects reside in the domain database for a certain type?
 
static int traverse (const type_info &, VManagedObjectIterator &VIt, int p_start, int p_end)
 Iterate through a domain for certain levels.
 
static void UnloadVModule (const string &what, VRemoveItem &RI)
 Unload a certain module.
 
- Static Public Member Functions inherited from MemCore::MutableName
static std::string BaseName (const std::string &theName, const char Separator)
 return the name of this item cropped anything after the Separator
 

Protected Member Functions

void deleteAllInstances (const type_info &DerivedType) const
 To be called by the derived destructor.
 
 VCreatorBase (const string &CreatorKeyName, int priority, const RefPtr< VCreationPreferences > &prop, bool isStatic, const char *const vish_creator_release_identifier)
 Constructor a VCreator from a key name.
 
 VCreatorBase (const VCreatorProperties &CreatorProperties, int priority, const RefPtr< VCreationPreferences > &prop, bool isStatic, const char *const vish_creator_release_identifier)
 Construct a VCreator from given creation properties.
 
 ~VCreatorBase ()
 Destructor.
 
- Protected Member Functions inherited from Wizt::VInputCreatorBase
 ~VInputCreatorBase ()
 Destructor.
 
- Protected Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
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.
 

Additional Inherited Members

- Public Types inherited from Wizt::VManagedDomainObject< VInputCreatorBase >
typedef VInputCreatorBase Domain_t
 The domain type of this managed object.
 
- Public Types inherited from MemCore::ReferenceBase< VManagedObjectBase >
using reference_domain_t = VManagedObjectBase
 The type of the base class.
 
using SelfPtr_t = WeakPtr< VManagedObjectBase, VManagedObjectBase >
 Type for a pointer to this object itself.
 
- Public Types inherited from Wizt::VCreatorPropertyElements
enum  {
  CATEGORY , TEXTIDENTIFIER , POLYMORPHY , DESCRIPTION ,
  OPERATORNAME , OPERATORFONT , SHORTHELP , AUTHOR ,
  HELPURL , URL , APPLICATION , APPLICATION_DOMAIN = APPLICATION ,
  SOURCE_FILE , COMPILATION_DATE , RESERVED_1 , RESERVED_2 ,
  RESERVED_3 , RESERVED_4 , MAX_PROPERTY , APPLICATION_SEPARATOR = ';'
}
 
- Static Public Attributes inherited from Wizt::VManagedObject
static string CurrentLoadModule
 The name of the current shared library/DLL/plugin which provides the code of the currently loaded objects.
 
- Protected Types inherited from Wizt::VCreatorPropertyBase
enum  { NumberOfProperties = VCreatorPropertyElements::MAX_PROPERTY }
 
- Protected Attributes inherited from Wizt::VCreatorPropertyBase
std::string txt [NumberOfProperties]
 A textual description for each property.
 

Detailed Description

Base class for objects that serve to create VObject's.

In general, such creator objects will be statically defined in a plugin library.

All such creator objects are registered in the object pool for the domain ‘VCreatorBase’. Iteration over the VCreatorBase pool provides all possible creator objects.

If they are created dynamically instead (there is hardly any reason for this, but who know's), then the isStatic constructor argument shall be set to false.

Note
Currently, VCreator object's are in the same pool as VInputCreatorBase, but not all VInputCreatorBase objects are VCreator's as well, since not every VInput is an VObject.

In contrast to VInputCreators, VCreators possess a virtual create method that only requires a name.


Class Documentation

◆ Wizt::VCreatorBase::CreationInfo

struct Wizt::VCreatorBase::CreationInfo

Constructor & Destructor Documentation

◆ VCreatorBase()

Wizt::VCreatorBase::VCreatorBase ( const string &  CreatorKeyName,
int  priority,
const RefPtr< VCreationPreferences > &  prop,
bool  isStatic,
const char *const  vish_creator_release_identifier 
)
protected

Constructor a VCreator from a key name.

This is not recommended (see base class VCreatorProperties), as it requires parsing the given string based on interpretation of special characters.

References Wizt::VCreatorCategory::addCreator(), Wizt::VManagedObject::CurrentLoadModule, MemCore::ReferenceBase< VManagedObjectBase >::mkAutoDestructive(), MemCore::ReferenceBase< VManagedObjectBase >::self(), and Wizt::Vprintf().

Member Function Documentation

◆ create() [1/2]

virtual RefPtr< VObject > Wizt::VCreatorBase::create ( const CreationInfo name,
const Intercube CreationContext,
const RefPtr< VCreationPreferences > &  AdditionalPreferences = nullptr 
) const
pure virtual

The virtual object creation function, it is implemented by VCreator<>.

Parameters
nameAn optional name, if none is given then the new object will be named like the creator itself, possibly with an enumeration number appended.
CreationContextAn Intercube that allows specifying additional parameters for the circumstances of creation. It is passed to the VActionNotifier::VObjectCreation() call. If omitted, then the Creator object itself will be used as CreationContext. This is not recommended, however. A CreationContext should rather provide explicit information about the circumstances of the creation.
Returns
A pointer to the newly created object.

Implemented in Wizt::ScriptletCreator, and Wizt::VCreator< DerivedVObject, AcceptedTypes >.

◆ create() [2/2]

RefPtr< VObject > Wizt::VCreatorBase::create ( const string &  name = {},
const RefPtr< VCreationPreferences > &  AdditionalPreferences = nullptr 
) const
inline

Convenience function to create objects using default parameters.

The actual function called is the virtual create(name,CreationContext) function. The CreationContext will be the Creator object itself, by default.

Parameters
nameAn optional name, if none is given then the new object will be named like the creator itself, possibly with an enumeration number appended.

◆ deleteAllInstances()

void Wizt::VCreatorBase::deleteAllInstances ( const type_info &  DerivedType) const
protected

To be called by the derived destructor.

This call will scan all ManagedObjects of the derived type and force deletion of them.

References Wizt::VManagedObject::getLoadModule(), MemCore::MutableName::Name(), and Wizt::VManagedObject::traverse().