The Vish Visualization Shell  0.3
Vish
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
Wizt::VObject Class Reference

Generic base class for all VObjects. More...

#include <ocean/plankton/VObject.hpp>

Inheritance diagram for Wizt::VObject:
Wizt::VTraceRequestID Wizt::VInputClassRecognition Wizt::VScriptable Wizt::VManagedDomainObject< VObject > Wizt::VSaveable Wizt::VStateCreatorBase Wizt::VConnectable Wizt::VManagedObjectBase Absolute BreakingEdge Cal3DMeshVObject ComputeStreamLines CreateStepField CreateStepFieldUShort DataFilter DataFilter DataFilter DataSink DataSink DataSink DataSink DataSource DataSource DataSource FloatsToPoint2D FloatsToTVector GaussField MultiplyInt Saint_Venant SpaceNav TangVish TangVish TangVish Wizt::CatchStatus Wizt::Coral Wizt::HTTPServer Wizt::MetaViewer Wizt::MovieRecorder Wizt::RemoteVish Wizt::RenderAble Wizt::VChartSelector Wizt::Viewer Wizt::VProxyObject Wizt::VScene Wizt::VStreamObject

Classes

struct  ExecutionStatus
 Exception class that might be thrown by update() and is handled in the data flow traversal. More...
 
struct  OutputObjectIterator
 Iterator callback object for searching and finding output objects. More...
 

Public Types

typedef void AcceptableInputTypes
 Each VObject may define a set of possible input types, which are types that are provided by some other objects to be used as inputs of this object. More...
 
template<int I>
using Empty = VConnectable::Empty< I >
 Shortcut typedef to be used in construction of empty slots.
 
enum  HelpType {
  PlainText, HelpURL, HTMLText, ShortText,
  ShortHTMLText
}
 Parameter types for the help() function which may provide information about the current object. More...
 
- Public Types inherited from MemCore::ReferenceBase< VManagedObjectBase >
using reference_domain_t = VManagedObjectBase
 The type of the base class.
 
using SelfPtr_t = WeakPtrImpl< VManagedObjectBase, VManagedObjectBase >
 Type for a pointer to this object itself.
 
- Public Types inherited from Wizt::VSlotContainer<>
enum  { AllLevels = INT_MAX }
 
typedef void AcceptableInputTypes
 Each VObject may define a set of possible input types, which are types that are provided by some other objects to be used as inputs of this object. More...
 
typedef VSlotSet CreationSlots_t
 A set of slots.
 
template<int I>
using Empty = VSlot::Empty< I >
 Shortcut typedef to be used in construction of empty slots.
 
enum  AttachErrorCode { , DestParameterNotFound = -4 , InvalidDestParameter = -2 }
 
- Public Types inherited from Wizt::VManagedDomainObject< VObject >
typedef VObject Domain_t
 The domain type of this managed object.
 

Public Member Functions

CreateConnectionResult_t connectAsChild (const VObjectPtr &ChildObject, const VAcception &VA)
 Note: Calls the setup() functions.
 
CreateConnectionResult_t connectChild (const VObjectPtr &ChildObject, const RefPtr< VAcceptInfo > &VA)
 Connect an existing object as a child to the current object. More...
 
CreateConnectionResult_t createChild (const VAcception &VA, const Intercube &CreationContext)
 Based on the accept information provided by some Object creator, create a VObject that accepts the current object as an input object. More...
 
VObjectPtr createInput (const WeakPtrVCreatorBase &VCrec, const RefPtr< VSlot > &what, const string &name, Intercube &CreationContext)
 Given a certain VCreatorBase that is supposed to fit to a given slot, create an object that serves as input to this one. More...
 
const RefPtr
< VCreationPreferences > & 
CreationPreferences () const
 Return the creation preferences.
 
string CreatorName () const
 Retrieve the name of the object's creator.
 
VObjectPtr extractSlot (const RefPtr< VSlot > &theSlot, const string &theNewName=string()) const
 Given a slot of this VObject create a new VObject from it that provides just this slot and serves as input to the current VObject.
 
const WeakPtrVCreatorBasegetCreator () const
 Get the Creator of this object.
 
virtual const GimpIcongimp_icon () const
 If this object provides an icon in GIMP C source format, return it here. More...
 
virtual string help (HelpType=HTMLText) const
 Return a string, containing HTML or Richtext formatting suitable to be displayed in QT.
 
virtual void InputCreation (const RefPtr< VParameter > &CurrentObjectsInput, const VObjectPtr &NewlyCreatedObject, const RefPtr< VParameter > &TheNewObjectsOutputParameter)
 Virtual callback function, as invoked from createInput() .
 
void remove ()
 remove this object from the object database
 
double requestTime () const
 Last computation time in seconds.
 
bool setObjectAsChild (const VObjectPtr &childVObject, const string &DependencySlotName)
 Set a certain object as being a child of the current one. More...
 
 VObject (const string &name, int p, const RefPtr< VCreationPreferences > &VP)
 Create a Vish Object. More...
 
virtual const char *const * xpm_icon () const
 If this object provides an icon in XPM source format, return it here.
 
virtual ~VObject ()
 Destructor.
 
- Public Member Functions inherited from Wizt::VManagedObjectBase
 VManagedObjectBase ()
 Constructor.
 
 ~VManagedObjectBase ()
 Destructor.
 
- Public Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
long getObjectCountID () const noexcept
 Get a unique ID for this object in the given domain. More...
 
bool isIdentical (const WeakPtrImpl< 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. More...
 
int refcount () const noexcept
 The strong reference count.
 
 ReferenceBase (VManagedObjectBase *that) noexcept
 Constructor, initializes reference counter to zero.
 
const WeakPtrImpl
< VManagedObjectBase,
VManagedObjectBase > & 
self () const
 Return weak pointer to the object self. More...
 
void speak (const char *s, const char *prefix="") const noexcept
 Print a debug message with the class name preceded.
 
int wrefcount () const noexcept
 The weak reference count.
 
- Public Member Functions inherited from Wizt::VConnectable
virtual void adjustConnections (const RefPtr< VSlot > &ChangedSlot, const RefPtr< VParameter > &par)
 Callback function that is called when a Connect() has been issued.
 
VSlotContainer::AttachErrorCode attach (const ParameterID &whichone, VSlotContainer &sourceObject, const ParameterID &sourceName)
 Share a parameter with another one. More...
 
AttachErrorCode attachUniqueObject (const RefPtr< VParameter > &param, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
 Try to find an existing object that matches its type with the specified parameter. More...
 
AttachErrorCode attachUniqueObject (const RefPtr< VSlot > &slot, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
 Try to find an existing object that matches its type with the specified parameter. More...
 
RefPtr< VSlotConnect (const RefPtr< VParameter > &SourceParam)
 Given a certain parameter, overload a parameter of the same type in the current object with this one. More...
 
RefPtr< VSlotConnectInterface (const RefPtr< VSlotContainer > &Provider, const RefPtr< InterfaceBase > &IB)
 
virtual bool CreatedFilteredConnection (const RefPtr< VParameter > &SourceParam)
 We wish to connect the current object to the given parameter, but it provides an output type that cannot be used by this current object as input type. More...
 
- Public Member Functions inherited from Wizt::VSlotContainer<>
Ageableage (const RefPtr< ValuePool > &VP)
 Return the age of this object, which may be modified.
 
const Ageableage (const RefPtr< ValuePool > &VP) const
 Return the age of this object in read-only form.
 
const AgeableConnectionAge () const
 Return the age when connections had last been modified. More...
 
bool ConnectionsHaveChanged (const RefPtr< ValuePool > &VP) const
 Check whether the connections have changed on this object.
 
int getNumberOfInputs () const
 Get the number of input parameters, ie. on how many parameters does this object depend on?
 
int getNumberOfOutputs () const
 Get the number of output parameters, ie. how many parameters does this object provide?
 
bool hasChangedSlots (const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context) const
 Check if the given Intercube hosts any VSlots that have been changed relative to the given Context.
 
bool HasYoungerInput (const RefPtr< ValuePool > &Context, int RecursionLevel=0) const
 
template<typename... SlotList>
auto include_self (const std::tuple< SlotList...> &t) const -> decltype(std::tuple_cat(std::make_tuple(this), t))
 Given a tuple of values, create a new tuple that includes the object itself.
 
Ageable YoungestInput (const RefPtr< ValuePool > &Context) const
 Return the age of the youngest input.
 
Ageable YoungestOutput (const RefPtr< ValuePool > &Context) const
 Determine the age of the youngest output object.
 
Ageable YoungestUncachedInput (const RefPtr< ValuePool > &Context) const
 Return the age of the youngest input slot that is not cached. More...
 
virtual ~VSlotContainer ()
 Destructor.
 
virtual bool implements (const type_info &what) const
 Check whether this VObject implements a certain type.
 
virtual RefPtr< VParametergetImplementation (const type_info &what, const string &name="", const string &member="") const
 By querying a type and an optional finer textual description, retrieve an Parameter that is implemented by this VObject. More...
 
RefPtr< VSlotgetImplementationSlot (const type_info &what, const string &Name="", const string &Member="") const
 Query an output slot for the given type. More...
 
VAcceptInfoList_t getAcceptInfoList (const std::type_info &request_type) const
 Get a list of possible output implementations for the given request type.
 
bool provides (const RefPtr< VSlot > &OutputSlot) const
 Verifies that the specified slot is provided by the current VObject.
 
RefPtr< VSlotfindOutputSlot (const RefPtr< VParameter > &Who) const
 Find an output slot that refers to the given parameter, i.e. More...
 
bool isYounger (const RefPtr< VParameter > &OutputParam, const RefPtr< ValuePool > &VP) const
 Check if an output parameter is of younger age, which might be the case if it has been recently connected or modified through external means. More...
 
bool isNewlyConnected (const RefPtr< VParameter > &Who, const RefPtr< ValuePool > &VP) const
 Check if an output parameter has been recently connected or modified through external means. More...
 
bool hasNewlyConnectedOutputs (const RefPtr< ValuePool > &VP) const
 Check if there are new connections.
 
void findNewlyConnectedOutputs (const RefPtr< ValuePool > &VP, VSlotSet &WhichOnes) const
 Find all output parameters that have been recently connected since the last update() call. More...
 
RefPtr< VSlotgetOutput (const string &Name) const
 Get the output slot for a given name.
 
RefPtr< MemCore::StringListgetOutputs (const type_info &what=typeid(void)) const
 Get a list of all output names that are provided by this object.
 
virtual int iterateOutputs (VOutputIterator &VOut, const type_info &just_these=typeid(void)) const
 Iterate over all the Outputs of this VObject, i.e. More...
 
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName="")
 Register a certain parameter as being output by this VObject under the given name (optionally). More...
 
bool registerOutput (const RefPtr< VParameter > &P, const string &AsName, const type_info &MemberType, const string &UseMember)
 Register a member of a parameter, that is output by this VObject, as being available to external VObjects.
 
bool registerOutput (const RefPtr< VParameter > &P, const type_info &MemberType, const string &UseMember)
 Register a component of a parameter, using the default name of the parameter.
 
bool registerOutput (const RefPtr< VSlot > &P)
 
RefPtr< VSlotaddParameter (const ParameterID &name, int EL, const RefPtr< VParameter > &param, bool overwriteExistingSlot)
 Specify a parameter (type) as input for this VObject. More...
 
RefPtr< VSlotaddSlot (const RefPtr< VSlot > &S, int expertLevel, bool overwriteExistingSlot)
 
virtual bool allowParameterReplacement (const RefPtr< VParameter > &NewParam, const RefPtr< VParameter > &OldParam, const string &localName, int ExpertLevel)
 Virtual callback function invoked by replaceParameter() when the implementation of a parameter is changed by another one. More...
 
virtual int connectSlots (const VSlotContainerPtr &vobj)
 Tries to connect all slots found in the given VObject with those of the current one.
 
bool removeParameter (const ParameterID &s)
 Remove a parameter from the list of input objects.
 
RefPtr< VParametergetParameter (const ParameterID &s) const
 Return the local input parameter slot for a certain parameter name. More...
 
RefPtr< VSlotgetSlot (const ParameterID &s, int &EL) const
 A more verbose version of getParameter() which also provides information about which member of a certain parameter is used here; note that the type of the full parameter will be different from the type of a member of the parameter. More...
 
RefPtr< VSlotgetSlot (const ParameterID &s) const
 
template<class Type >
RefPtr< VValue< Type > > getSlotValue (const ParameterID &s, const RefPtr< ValuePool > &Context, const Type &DefaultValue) const
 
RefPtr< VSlotfindSlot (const RefPtr< VParameter > &param) const
 Given a parameter, find a slot that refers to this one.
 
RefPtr< VSlotfindReplaceableSlot (const RefPtr< VParameter > &par)
 
string getSlotName (const RefPtr< VParameter > &param) const
 Check whether this object contains the given parameter, and if so, under which slot's name. More...
 
bool AddAction (const ParameterID &s, const RefPtr< ValueActionBase > &VAB)
 Associate the change of a certain parameter of this object with a certain action.
 
template<class DerivedObject >
bool AddAction (const RefPtr< VSlot > &ActionSlot, bool(DerivedObject::*Action)(const RefPtr< VValueBase > &value))
 Connect the change of a parameter with the invocation of an object's member function. More...
 
RefPtr< VParametermkUniqueParameterInput (const ParameterID &s, const string &ContainerName)
 Calls VParameter::copy();.
 
RefPtr< VParametermkUniqueParameterInput (const RefPtr< VParameter > &P, const string &ContainerName)
 
int getExpertLevel (const ParameterID &s) const
 Get the expert level of a parameter.
 
int setExpertLevel (const ParameterID &s, int EL)
 Set the expert level of a parameter.
 
int getExpertLevel (const RefPtr< VParameter > &) const
 Get the expert level of a parameter via pointer.
 
int getExpertLevel (const RefPtr< VSlot > &S) const
 Get the expert level of a parameter via pointer.
 
int setExpertLevel (const RefPtr< VSlot > &S, int EL)
 Set the expert level of a parameter via pointer.
 
int setExpertLevel (const RefPtr< VParameter > &s, int EL)
 Set the expert level of a parameter via pointer.
 
bool hasChanged (const ParameterID &s, const RefPtr< ValuePool > &Context) const
 Check whether a certain input parameter has changed. More...
 
bool hasChanged (const RefPtr< VSlot > &, const RefPtr< ValuePool > &Context) const
 Check whether a certain input slot has changed.
 
bool hasChanged (const RefPtr< ValuePool > &Context, int n,...) const
 Check a set of input parameters whether one has changed. More...
 
bool hasChanged (RefPtr< ValuePool > Context,...) const
 Check a set of input parameters whether one has changed. More...
 
virtual bool ignoreInput (const RefPtr< VSlot > &theSlot) const
 Allow ignoring certain slots on update().
 
template<class Type >
bool getParameterValue (Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP) const
 Get a value for a certain parameter. More...
 
template<class Type >
bool getParameterValue (Type &Variable, const ParameterID &s, const VContext &C) const
 Get a value for a certain parameter.
 
template<class Type >
bool getParameterValue (Type &Variable, const ParameterID &s, const VRequest &R) const
 Get a value for a certain parameter.
 
template<class Type >
bool setParameterValue (const Type &Variable, const ParameterID &s, const RefPtr< ValuePool > &VP, bool autoCreateLocalValue) const
 Set a value for a parameter, given a ValuePool. More...
 
template<class Type >
bool setParameterValue (const Type &Variable, const ParameterID &s, VContext &C, bool autoCreateLocalValue) const
 Set a value for a parameter, given a context. More...
 
template<class Type >
bool setParameterValue (const Type &Variable, const ParameterID &s, VRequest &R, bool autoCreateLocalValue=false) const
 Set a value for a parameter, given a context. More...
 
template<class Type >
RefPtr< VSlotaddParam (const ParameterID &name, const Type &init, const RefPtr< VCreationPreferences > &VP=NullPtr(), int expertLevel=0, bool overwriteExistingSlot=true)
 Add an input parameter to the VObject. More...
 
bool setParameterProperty (const ParameterID &param, const string &Properties, const RefPtr< VValueBase > &Value=NullPtr())
 Set a property of an input parameter, such as the minimum or maximum of a bounded numerical value. More...
 
RefPtr< VSlotaddFloatParam (double init, const ParameterID &param, double min, double max, const RefPtr< VCreationPreferences > &IP=NullPtr(), int expertLevel=0)
 Shortcut function to add a floating point parameter. More...
 
AttachErrorCode attach (const RefPtr< VParameter > &OldParam, const RefPtr< VParameter > &NewParam, const string &Member="")
 Replace a given parameter of the current object with another parameter. More...
 
int iterateParameters (int expertLevel, VSlotIterator &VIIt) const
 Iterate over all VInput objects that have an expert level lower or equal to the expertLevel parameter. More...
 
int iterateInputSlots (int expertLevel, VSlotIterator &VIIt) const
 Same as iterateParameters().
 
int iterateInputs (VSlotIterator &VIIt, int expertLevel=0)
 Iterate all inputs with expert level smaller than zero (default), or as specified. More...
 
int iterate_inputs (const std::function< bool(const RefPtr< VSlot > &what, int ExpertLevel)>) const
 
int iterate_inputs (const std::function< bool(VSlot &what, int ExpertLevel)>) const
 Iterate over all VInput objects that have an expert level lower or equal to the expertLevel parameter. More...
 
RefPtr< VSlotgetUniqueInputSlot (const type_info &what)
 Find an input slot that queries a specific type.
 
int getNumberOfParameters (int expertLevel) const
 Get the number of parameters up to a certain expert level. More...
 
- Public Member Functions inherited from Wizt::VStateCreatorBase
RefPtr< State > & getState (const WeakPtr< ValuePool > &VP) const
 Retrieve a pointer to a state object for the given context.
 
RefPtr< InterfaceBasehasLocalInterface (const type_info &InterfaceType) const
 Check whether any of the local object states has an interface of the given type. More...
 
RefPtr< StatemyState (const WeakPtr< ValuePool > &Context) const
 Retrieve a state for the current context, possibly creating one.
 
virtual RefPtr< StatenewState () const
 create a new state object. Child classes might deliver child states.
 
void setState (const WeakPtr< ValuePool > &, const RefPtr< State > &st) const
 Set a state object for a given context.
 
- Public Member Functions inherited from Wizt::VSaveable
void addSaver (const string &, const RefPtr< VishSaver > &)
 Add a save object that is associated with the certain text.
 
template<class AppClass >
void addSavers (AppClass &A)
 To add external savers a derived class call. More...
 
bool autosave () const
 Save object using the last used saver.
 
RefPtr< VishSavergetMostRecentSaver () const
 Get the last saver that had been used for this object. More...
 
size_t getNumberOfSavers () const
 Get the number of savers.
 
RefPtr< VishSavergetSaver (const string &) const
 Retrieve a saver functor that is associated to the certain text.
 
RefPtr< VishSavergetSaverByExt (const string &ext) const
 Retrieve a saver functor for the given file extension.
 
int iterateSavers (SaveIterator &It)
 Iterate over all savers associated with this object.
 
 VSaveable ()
 Constructor, does nothing.
 
 ~VSaveable ()
 Destructor, does nothing but automatic cleanup.
 
- Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
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. More...
 
void remove ()
 Remove this object from the database. More...
 
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 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. More...
 
RefPtr< InterfaceBasegetInterface (const type_info &t)
 Retrieve an interface object from a certain type. More...
 
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 (const 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 (const 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 (const 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 (const 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. More...
 
 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.
 
void removeInterface (const type_info &t)
 Remove an interface.
 
virtual ~Intercube ()
 Destructor.
 
- Public Member Functions inherited from MemCore::MutableName
void addNameChangeNotifier (const WeakPtrImpl< 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::VScriptable
RefPtr< VScriptFunctorfindFunctor (const string &name) const
 Find a functor.
 
RefPtr< VScriptFunctorinsertFunctor (const string &name, const RefPtr< VScriptFunctor > &)
 Insert a function call, eventually replaces a former call. More...
 
bool iterate (iterator &it)
 Iterate over all functors.
 
int nFunctors () const
 How many functors are available?
 
void removeFunctor (const string &name)
 Remove a functor.
 
- Public Member Functions inherited from Wizt::VTraceRequestID
bool addRequest (const VRequest &request)
 Returns false if there is already a request attached.
 
virtual bool hasRequest (const VRequest &request) const
 Check whether a request is just beeing handled.
 

Static Public Member Functions

static VAcceptInfoList_t accept (const VObjectPtr &vobj)
 A static function used by the associated creator to determine whether an object of this type may use an given object as input parameter. More...
 
static string createChildname (const string &parent_name)
 A static function that is used to create an object's name of this type, when it is created from some parent object. More...
 
static bool remove (const string &s)
 remove an object of the given name from the object database
 
- Static Public Member Functions inherited from Wizt::VConnectable
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VParameter > &ProvidedParam, const string &Member="")
 Attach a given parameter to a slot of the current object. More...
 
static bool attachSlot (const WeakPtr< VSlot > &DestSlot, const RefPtr< VSlot > &SourceSlot, const string &Member="")
 Attach the source slot's parameter to the destination slot's parameter, overwriting the destination slot's par.
 
static bool detachSlot (const RefPtr< VSlot > &SourceSlot)
 Detach the source slot's parameter by assigning a copy of the parameter to itself. More...
 
- Static Public Member Functions inherited from Wizt::VSlotContainer<>
static const char * AttachErrorCodeMessage (AttachErrorCode)
 Given an error code from one of the attach() functions, return some textual description. More...
 
static bool attachParameter (const RefPtr< VParameter > &theProvidedParam, const WeakPtr< VSlot > &theDestSlot, const string &theMember)
 Need to verify whether the Member parameter is necessary... More...
 
- Static Public Member Functions inherited from Wizt::ValueCacheable
static ValueCacheconsider (MemCore::Intercube &IC, const WeakPtr< VSlot > &VS, const RefPtr< ValuePool > &Context)
 Make a note that the given Intercube will depend on the given slots' value and uses the value as retrieved from the given context. More...
 
static ValueCachegetValueCache (MemCore::Intercube &IC)
 Get, and possibly create, a ValueCache that will be stored at the given Intercube.
 
static bool hasChangedSlots (const WeakPtrToVSlotContainer &theSlotOwner, const MemCore::Intercube &IC, const RefPtr< ValuePool > &Context)
 Check if the given Intercube hosts any VSlots that have been changed relative to the given Context.
 
- Static Public Member Functions inherited from Wizt::VSaveable
static VSaveableGlobalState ()
 A global saveable object that is supposed to take care of the entire VISH state. More...
 
- Static Public Member Functions inherited from Wizt::VManagedDomainObject< VObject >
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. More...
 
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 More...
 

Public Attributes

string UserInfo
 An arbitrary text that can be used to store any kind of context information about this object which may be helpful for instance in a graphical user interface. More...
 

Static Public Attributes

static constexpr char NameSeparator = C0::RS
 The control character used to separate entities of VObject when constructing object names from existing objects.
 
static constexpr char SlotNameSeparator = C0::US
 The control character used to separate entities of VObject from slot names.
 
- 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. More...
 

Procedures related to Event model and context-dependent

execution

enum  status
 
typedef bool(* UpdateFunction )(VObject *, VRequest &, double precision)
 Update function pointers which may be used to ensure being called base classes also when a derived class fully overloads the update() function itself. More...
 
MemCore::Counter UpdateCounter
 A counter telling if this object is currently being updated. More...
 
MemCore::Counter RequestCounter
 A counter telling if this object is currently being under a request. More...
 
virtual bool request (VRequest &, double precision, const WeakVObjectPtr &ImmediateRequestor, const WeakVObjectPtr &RootRequestor)
 Request an action, to be performed with a certain precision. More...
 
bool init_request (VRequest &, double precision=1.0)
 
bool schedule (double precision, const RefPtr< ValuePool > &Context=NullPtr())
 Schedule a request for this object for later processing. More...
 
void enableRequestProcessing ()
 Enable processing of requests. More...
 
void disableRequestProcessing ()
 Disable the processing of requests.
 
bool acceptsRequests () const
 Check whether this object may process requests.
 
const MemCore::CounterUpdateCount () const
 A read-only counter telling if this object is currently being updated. More...
 
const MemCore::CounterRequestCount () const
 A read-only counter telling if this object is currently being under a request. More...
 
void insertUpdateFunction (const UpdateFunction UF)
 
virtual bool update (VRequest &, double precision=1.0)
 Virtual update function that implements some heavy action on the object. More...
 
virtual bool must_update (const VRequest &, double precision) const
 
virtual bool unsychronized_update (VRequest &VR, double precision)
 Virtual function that is called without synchronization of the object mutex. More...
 

Functions related to input parameters

virtual std::string type_key () const
 Return a unique string representing the type represented by this VObject. More...
 
void iterateParents (VObjectIterator &VOI, int EL=0) const
 Iterate over all the parent objects that drive this VObject. More...
 

Functions related to provided parameter functionality,

i.e.

output objects.

 An VObject may serve as input parameter of another VObject;
 if so,     the VObject serves as a VParameter of certain type.
 Even more, a VObject may incorporate multiple types, and
 even many types of the same kind which are distinguished
 by a textual description name.

 Use function iterateOutputs() to query information on which types
 are supported under which names. Function implements() is a simpler,
 limited but equivalent shortcut function. A certain parameter can
 be retrieved via the getImplementation() function.
using ChildIterator = OutputObjectIterator
 
virtual string CreateParameterName (const ParameterID &name) const
 Creation of global parameter names. More...
 
RefPtr< VParametermkUniqueParameterInput (const ParameterID &s)
 
RefPtr< VParametermkUniqueParameterInput (const RefPtr< VParameter > &s)
 
int iterateChildren (ChildIterator &) const
 Find all children connected from the current object.
 
template<class Lambda >
int findChildren (const Lambda &theLambda) const
 Find all children of the current object and its connections via a lambda function (or functor). More...
 
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const Intercube &CreationContext, const RefPtr< VCreationPreferences > &VCP=NullPtr())
 Create a new object with the type of the specified slot, whatever that is, but using the creation preferences. More...
 
AttachErrorCode attachNewObject (const RefPtr< VSlot > &slot, const string &name, const RefPtr< VCreationPreferences > &VCP=NullPtr())
 Create a new object with the type of the specified slot, whatever that is, but using the creation preferences. More...
 
static int findOutputObjects (const type_info &Type, OutputObjectIterator &GOutputs)
 Find all objects that implement a certain output type.
 
static RefPtr< VParameterfindUniqueOutputObject (const type_info &Type, const RefPtr< VCreationPreferences > &VCP=NullPtr(), bool ReallyUnique=true)
 Find an existing VObject that implements the specified type, returning exactly that parameter which implements this type. More...
 

Additional Inherited Members

- Protected Member Functions inherited from MemCore::ReferenceBase< VManagedObjectBase >
virtual void extremeUnction ()
 A virtual function that will be called just before the object is destroyed. More...
 
ReferenceBaseoperator= (const ReferenceBase &R)
 Protected assignment operator (should not be called). More...
 
virtual ~ReferenceBase ()
 Virtual destructor.
 
- Protected Member Functions inherited from Wizt::VSlotContainer<>
virtual void setup (const CreationSlots_t &CreationSlots)
 When a VObject is created as a child of an existing VObject, this variant of the setup function is called, telling which slot is the one connected to the object that triggered creation of this one. More...
 

Detailed Description

Generic base class for all VObjects.

The relationships among VObjects, VRenderObjects and VInputs are as follows:

Use VObject::iterateInputs(VCreatorIterator&) to iterate through all VObject's.

Input parameters are ordered in a hierarchy of two levels. These two levels are parameterized by an integer (called the "expert level") and a textual description.

Examples:
abcexample.cpp, ComputeGridStreamLines.cpp, ComputeMultiStreamLines.cpp, exocoetida.cpp, InteractivePoint.cpp, MultiplyInt.cpp, PDFdemo.cpp, and stockvish.cpp.

Member Typedef Documentation

Each VObject may define a set of possible input types, which are types that are provided by some other objects to be used as inputs of this object.

The default is void, meaning this object will not require any input types, thus being a data source.

Multiple types may be defined by creating a type list via META::LIST, for instance:

using namespace META;

This input type will allow to use int's and float's .

typedef bool(* Wizt::VObject::UpdateFunction)(VObject *, VRequest &, double precision)
protected

Update function pointers which may be used to ensure being called base classes also when a derived class fully overloads the update() function itself.

If any of these functions returns false then the entire update process will be terminated.

Member Enumeration Documentation

Parameter types for the help() function which may provide information about the current object.

Enumerator
PlainText 

Only show ASCII Text, verbose.

HelpURL 

Just display an URL.

HTMLText 

Return a string, containing HTML or Richtext formatting suitable to be displayed in QT.

ShortText 

Return a SHORT string as quick description about this object.

ShortHTMLText 

Return a SHORT string, containing HTML or Richtext formatting suitable to be displayed as tooltip in QT.

Constructor & Destructor Documentation

Wizt::VObject::VObject ( const string &  name,
int  p,
const RefPtr< VCreationPreferences > &  VP 
)

Create a Vish Object.

After creation, the initialize() function is called if deferred initialization of the Object is requested.

Parameters
nameThe intended name of this object; note that the assigned name might differ.

References Wizt::VScriptable::insertFunctor().

Member Function Documentation

VAcceptInfoList_t Wizt::VObject::accept ( const VObjectPtr vobj)
static

A static function used by the associated creator to determine whether an object of this type may use an given object as input parameter.

Parameters
vobjAn already existing object that implements some type which might possible be used by an instance of the current VObject as input.
VObject::AttachErrorCode Wizt::VObject::attachNewObject ( const RefPtr< VSlot > &  slot,
const string &  name,
const Intercube CreationContext,
const RefPtr< VCreationPreferences > &  VCP = NullPtr() 
)

Create a new object with the type of the specified slot, whatever that is, but using the creation preferences.

Parameters
CreationContextcontext information for this call.

References Wizt::VConnectable::attach(), Wizt::VSlotContainer<>::DestParameterNotFound, Wizt::findBestVInputCreator(), MemCore::DynPtr< Object, ObjectBase >::getType(), and Wizt::VSlotContainer<>::InvalidDestParameter.

Referenced by Wizt::MovieRecorder::MovieRecorder(), and Wizt::Viewer::Viewer().

AttachErrorCode Wizt::VObject::attachNewObject ( const RefPtr< VSlot > &  slot,
const string &  name,
const RefPtr< VCreationPreferences > &  VCP = NullPtr() 
)
inline

Create a new object with the type of the specified slot, whatever that is, but using the creation preferences.

The CreationContext implicitly is this object itself.

VObject::CreateConnectionResult_t Wizt::VObject::connectChild ( const VObjectPtr ChildObject,
const RefPtr< VAcceptInfo > &  VA 
)

Connect an existing object as a child to the current object.

The current object will become its parent, and changes in this parent objects will trigger an update in the child object. The parent object is the source of the data flow, the child object the destination of the data.

Note: Calls the setup() functions.

This object is seeking a connection to an interface Thus, need to find an input slot in the new object that is suitable to accept such an interface.

References Wizt::VSlotContainer<>::getImplementation(), MemCore::DynPtr< Object, ObjectBase >::getType(), Wizt::VSlotSet::insertSlot(), MemCore::MutableName::Name(), setObjectAsChild(), MemCore::Typename(), and Wizt::VActionNotifier::Warning().

Referenced by connectAsChild().

VObject::CreateConnectionResult_t Wizt::VObject::createChild ( const VAcception VA,
const Intercube CreationContext 
)

Based on the accept information provided by some Object creator, create a VObject that accepts the current object as an input object.

Parameters
CreationContextsome information of the circumstance of this creation.

Note: Calls the setup() functions.

References connectAsChild(), Wizt::VAcception::myCreator, MemCore::MutableName::Name(), and MemCore::Typename().

string Wizt::VObject::createChildname ( const string &  parent_name)
static

A static function that is used to create an object's name of this type, when it is created from some parent object.

This function may be redefined in some child class. A VCreator instantiated over this child class will then call the derived function. By default, the name of a new child is the name of its VCreator, unrelated to the parent's name.

RefPtr< VObject > Wizt::VObject::createInput ( const WeakPtrVCreatorBase VCrec,
const RefPtr< VSlot > &  what,
const string &  name,
Intercube CreationContext 
)

Given a certain VCreatorBase that is supposed to fit to a given slot, create an object that serves as input to this one.

The virtual function InputCreation() is called to adjust any possible connections.

Parameters
CreationContextAn Intercube that allows specifying additional parameters for the circumstances of creation. It is passed to the VActionNotifier::VObjectCreation() call.

References MemCore::Intercube::addInterface(), Wizt::VConnectable::attach(), MemCore::DynPtr< Object, ObjectBase >::getType(), InputCreation(), and MemCore::MutableName::Name().

string Wizt::VObject::CreateParameterName ( const ParameterID name) const
virtual

Creation of global parameter names.

By default the new parameter identifier will be the concatenation of this object's name, a dot, and the given parameter name. This follows the convention of class members in most programming languages. However, this is not mandatory at all.

References MemCore::MutableName::Name().

void Wizt::VObject::enableRequestProcessing ( )

Enable processing of requests.

Call if once the object has been fully constructed. The VCreator<> template does this automatically.

template<class Lambda >
int Wizt::VObject::findChildren ( const Lambda &  theLambda) const
inline

Find all children of the current object and its connections via a lambda function (or functor).

Use code such as the following:

myObject->findChildren( [](const RefPtr<VObject>&Child,
const type_info&Type, const RefPtr<VSlot>&ConnectedInputSlot)
{
if (!Child) return true;
... function code ...
return true;
}
const GimpIcon * Wizt::VObject::gimp_icon ( ) const
virtual

If this object provides an icon in GIMP C source format, return it here.

If none found, then xpm_icon is tried.

bool Wizt::VObject::request ( VRequest request,
double  precision,
const WeakVObjectPtr ImmediateRequestor,
const WeakVObjectPtr RootRequestor 
)
virtual

Request an action, to be performed with a certain precision.

Its main purpose is to iterate all parameters and forward the request to them. If this all parameters have fullfilled their request(), then the virtual update() function is called.

In rare case, an object might want to overload this function, for instance when request shall be forwarded to input objects only under certain circumstances (e.g. an Viewer object that is not visible at the moment).

Returns
true if the object was changed
Exceptions
VRequest::Incompletemight occur if a synchroneous request is issued but some operations are still in asynchroneous construction. This is the case when a synchroneous request is issued after an asynchroneous one that has not yet been completed. In such a case, the caller may just repeat the same request. The caller may and should do something else in the meantime, as the async request may still take a while to finish.
Note
Requests are only processed if enableRequestProcessing() has been called for this object. By default, processing of requests is disabled to avoid requests() to be processed when an object is yet incomplete during construction which may happen in a multithreading environment. This flag must be set after an object is completely constructed.

Check the age of the local state

Some parameter has changed, so call object's update().

Reimplemented in Wizt::RemoteVish, and CViewer.

Examples:
DemoSphere.cpp, and Gear.cpp.

References Wizt::VTraceRequestID::addRequest(), Wizt::VSlotContainer<>::age(), Wizt::VSlotContainer<>::CheckIfThereExistNewerOutputs(), Wizt::VSlotContainer<>::ConnectionAge(), Wizt::VSlotContainer<>::getNumberOfOutputs(), Wizt::VSlotContainer<>::getNumberOfParameters(), MemCore::ReferenceBase< VManagedObjectBase >::getObjectCountID(), Wizt::VStateCreatorBase::getState(), Wizt::VRequest::GhostValues, Wizt::VTraceRequestID::hasRequest(), MemCore::Ageable::isNewerThan(), Wizt::VSlotContainer<>::iterateParameters(), MemCore::MutableName::Name(), RequestCounter, MemCore::Ageable::time_value(), MemCore::Typename(), MemCore::Ageable::update(), update(), and UpdateCounter.

Referenced by Wizt::RemoteVish::request().

const MemCore::Counter& Wizt::VObject::RequestCount ( ) const
inline

A read-only counter telling if this object is currently being under a request.

This might be the case in a reentrant or multithreading situation.

bool Wizt::VObject::schedule ( double  precision,
const RefPtr< ValuePool > &  Context = NullPtr() 
)

Schedule a request for this object for later processing.

The actual request may be issued at a later time, and possibly in another thread.

Parameters
precisionIndicate what effort shall be undertaken for processing this requestion. A value of 1.0 tells that we want full quality, may it be as slow as whatever it takes. A value of 0.0 means just do the absolute minimum, but return as quickly as possible. Values outside the range 0.0 to 1.0 are undefined.
ContextGive an optional context relative to which the request shall be executed. This will most likely always be the case.

References Wizt::VScheduler::schedule().

bool Wizt::VObject::setObjectAsChild ( const VObjectPtr childVObject,
const string &  DependencySlotName 
)

Set a certain object as being a child of the current one.

This creates a new internal parameter that is exported by the current object as output, and used as input by the child object. This functionality allows to set up a dependency relationship among those objects. It is called by createChild(), but would not necessarily exist automatically because createChild() connects existing parameters. If the parent object shares a parameter with another objects, then the child object would have a relationship to that one, not to the parent object. This one would then be bypassed in the execution pipeline. To fix this, this function explicitely creates such a relation.

At the moment, such an explicit parent dependency is unique. Adding more explicit ones may be considered, as well as means to change and break an existing parent/child relationship (which can be done already via explicit access to the object slots).

Parameters
DependencySlotNameThe name under which the dependency slot shall occur

References Wizt::VSlotContainer<>::addParameter(), MemCore::MutableName::Name(), and Wizt::VSlotContainer<>::registerOutput().

Referenced by connectChild().

std::string Wizt::VObject::type_key ( ) const
virtual

Return a unique string representing the type represented by this VObject.

By default, this will be the type of this object itself, but a derived class can implement a different method for objects that are merely containers to other types.

References MemCore::Typename().

bool Wizt::VObject::unsychronized_update ( VRequest VR,
double  precision 
)
protectedvirtual

Virtual function that is called without synchronization of the object mutex.

This function must perform all synchronization itself if required:

synchronized(*this)
{
... critical code storing data ...
}

which is required for all writing operation. As such, this function may get a bunch of data, process it, and only perform the synchronization once the data is ready to be stored.

bool Wizt::VObject::update ( VRequest ,
double  precision = 1.0 
)
protectedvirtual

Virtual update function that implements some heavy action on the object.

Update function.

It is called only if any input object is newer than the current object. It must return true on successful completion. However, the object may touch() itself in the update() routine. Then, it will get a newer time than all input objects, which will trigger all dependent objects as well.

Returns
Must return true to indicate that the object was successfully updated and may now get the age of the most recent parameter.

Reimplemented in TangVish, ComputeGridStreamLines, ComputeMultiStreamLines, ComputeStreamSurfaces, TangVish, Spheres, DataSink, LineEmitter, Wizt::CatchStatus, ComputeStreamLines, DataFilter, GaussField, DataSink, TangVish, Wizt::RemoteVish, SpaceNav, Wizt::VCameraBase, DataFilter, DataSource, Wizt::RemoteViewer, DataSink, Wizt::VChartSelector, DataFilter, DataSource, LineRenderer, GLGrid, DataSource, CViewer, ShadowGround, RenderExample, CreateStepField, CreateStepFieldUShort, DataSink, BreakingEdge, Wizt::DeferredRenderObject, ProtIntersect, Wizt::VScene, Saint_Venant, Wizt::CrossSectionCam, FloatsToPoint2D, Wizt::MSDeferredObjectDisplay, Wizt::VCameraLens, MultiplyInt, Cal3DMeshRenderer, FloatsToTVector, Absolute, Wizt::VProxyObject, and WebFileRenderer.

Referenced by request().

const MemCore::Counter& Wizt::VObject::UpdateCount ( ) const
inline

A read-only counter telling if this object is currently being updated.

This might be the case in a reentrant or multithreading situation.

Friends And Related Function Documentation

RefPtr< VParameter > Wizt::VObject::findUniqueOutputObject ( const type_info &  Type,
const RefPtr< VCreationPreferences > &  VCP = NullPtr(),
bool  ReallyUnique = true 
)
related

Find an existing VObject that implements the specified type, returning exactly that parameter which implements this type.

A result is only given if the query is unique. If there are more implementations of the same type, an invalid pointer is returned.

Examples:
WebVish.cpp.

References findOutputObjects().

Referenced by Wizt::VConnectable::attachUniqueObject().

void Wizt::VObject::iterateParents ( VObjectIterator VOI,
int  EL = 0 
) const
related

Iterate over all the parent objects that drive this VObject.

Note that any inputs, which are not associated with a VObject, are invisibile here! ()

References Wizt::VObjectIterator::apply(), MemCore::DynPtr< Object, ObjectBase >::getType(), and Wizt::VSlotContainer<>::iterateParameters().

Referenced by Wizt::VScene::update().

Member Data Documentation

MemCore::Counter Wizt::VObject::RequestCounter
protected

A counter telling if this object is currently being under a request.

This might be the case in a reentrant or multithreading situation.

Referenced by request().

MemCore::Counter Wizt::VObject::UpdateCounter
protected

A counter telling if this object is currently being updated.

This might be the case in a reentrant or multithreading situation.

Referenced by request().

string Wizt::VObject::UserInfo

An arbitrary text that can be used to store any kind of context information about this object which may be helpful for instance in a graphical user interface.

This text may change in each application domain, so it is not object-specific, but will depend on the context where and how this object is used.