ML Reference
|
Field to encapsulate a pointer to an ML base object. More...
#include <mlFields.h>
Public Member Functions | |
BaseField () | |
Implements the runtime type system interface for this class. | |
BaseField (const std::string &name) | |
Constructor, creates a field with a name to manage a base pointer. | |
~BaseField () override | |
Destructor. | |
void | setStringValue (const std::string &stringValue) override |
Sets pointer value from string stringValue . If string cannot be parsed successfully, a NULL pointer is set. | |
void | setBaseValue (Base *basePointerValue) |
Sets the value of the field to basePointerValue . | |
void | setBaseValue (const RefCountedBasePtr &value) |
Sets the value from intrusive pointer. | |
std::string | getStringValue () const override |
Returns the value of the field as a string value. | |
Base * | getBaseValue () const |
Returns current field value. | |
virtual void | touchSourceFields (void) |
Touches the source fields. | |
void | addAllowedType (const RuntimeType *allowedType) |
Add type to list of allowed types. | |
template<typename T > | |
void | addAllowedType () |
Same as above, with template parameter where the Base type can be specified directly. | |
template<typename T > | |
void | setBaseValueAndAddAllowedType (T *value) |
convenience routine for setting the base value and its type at the same time. | |
template<typename T > | |
void | setBaseValueAndAddAllowedType (const ::boost::intrusive_ptr< T > &value) |
convenience routine for setting the base value and its type at the same time using an intrusive pointer. | |
std::vector< const RuntimeType * > | getAllowedTypes () const |
Get list of allowed Base types for this field. | |
bool | hasUnallowedType () const |
return true if the last call of setBaseValue had an unallowed type as argument, getBaseValue will return NULL then | |
void | setValue (Base *basePointerValue) |
Same as setBaseValue(Base*). | |
void | setValue (const RefCountedBasePtr &value) |
Same as setBaseValue(const RefCountedBasePtr&). | |
Base * | getValue () const |
Same as getBaseValue(). | |
template<class Type > | |
Type | getTypedValue () const |
Get typed value if the contained base object is derived from the given Type. | |
template<class Type > | |
Type | getTypedBaseValue () const |
Get typed value if the contained base object is derived from the given Type. | |
Public Member Functions inherited from ml::Field | |
Field (const std::string &name=std::string()) | |
Constructor: Creates a field with name . | |
virtual | ~Field () |
Destructor: Destroy field and remove all connection to fields an sensors. | |
FieldContainer * | getFieldContainer () const |
Get the field container of the field (which may be NULL). | |
const std::string & | getName () const |
Returns name of field. | |
void | setName (const std::string &name) |
Sets the name of field. Should be called only once after or while construction. | |
std::string | getFullName () const |
Returns "fieldContainerType(instanceName).fieldName" (if field container is available, otherwise only field name is returned). | |
bool | isOutputOnly () const |
Returns if this field is marked as pure output field. | |
void | setOutputOnly (bool outputOnly=true) |
Mark field as a pure output field that is never read by its module. | |
virtual MLint | isValidValue () |
Returns true (=1) if the field's value is valid; otherwise false (=0) is returned. | |
void | copyCStringValue (char *valueBuffer, MLint bufferSize) |
Copies the value of the field (as character string) into the specified buffer valueBuffer . | |
MLint | getCStringValueSize () |
Returns the length of the character string of the string value of the field. | |
void | attachFieldSensor (FieldSensor *sensor) |
Attaches a field sensor sensor of this class instance in both directions. | |
void | detachFieldSensor (FieldSensor *sensor) |
Detaches the field sensor sensor of this class instance in both directions. | |
void | detachFieldSensors () |
Detaches all field sensors of this class instance in both directions. | |
void | attachField (OutputConnectorField *targetField) |
This calls attachField(targetField, false). | |
void | attachField (BaseField *targetField) |
void | attachField (SoNodeField *targetField) |
void | attachField (NotifyField *targetField) |
void | attachField (Field *targetField, bool propagateValueOnConnect) |
Connects this class instance with the target field targetField . | |
void | detachField (Field *targetField) |
Disconnects connections between target field targetField and this instance. | |
void | detachSourceFields () |
Disconnects all source fields of this instance in both directions. | |
void | detachDestinationFields () |
Disconnects all target fields of this instance in both directions. | |
void | detachAllFields () |
Disconnects all source and target fields of this instance in both directions. | |
size_t | getNumDestinationFields () |
Returns the number of destination fields which could receive notifications or value sets. | |
Field * | getDestinationField (size_t index) |
Returns destination field at index . Returns NULL if index is out of range. | |
size_t | getNumSourceFields () |
Returns the number of source fields which could send notifications or value sets. | |
Field * | getSourceField (size_t index) |
Returns the source field at index . Returns NULL if index is out of range. | |
virtual void | touch (FieldSensor::Strength strength=FieldSensor::CHANGED) |
Notifies all connected fields and field sensors. | |
void | enableNotifications (bool flag) |
Enables or disables notification of attached fields and field sensors when the field value is set or notified (by notifyAttachments() or set*Value() -methods), depending on the parameter flag . | |
bool | areNotificationsEnabled () |
Returns whether the notification mechanism for this field (e.g., when field values are set) is enabled (see enableNotifications(bool) ). | |
Protected Member Functions | |
void | setValueFromField (const Field &field) override |
Reimplementation from Field which copies the field value more efficiently. | |
Protected Member Functions inherited from ml::Field | |
void | attachSourceField (Field *field) |
Inserts a field as source field in this instance, i.e., from now on *this might receive values and/or notifications from that field. | |
void | detachSourceField (Field *field) |
Removes a source field from this instance. If not found then this call does nothing. | |
void | detachFieldInternal (Field *field) |
Only remove the given field from the destination list. | |
Additional Inherited Members | |
Static Public Member Functions inherited from ml::Field | |
static void | enableNotificationsGlobally (bool flag) |
Enables or disables globally the notification mechanism for all fields and field sensors when field values are set or notified (by notifyAttachments() or set*Value() methods), depending on the parameter flag . | |
static bool | areNotificationsEnabledGlobally () |
Returns whether the notification mechanism for all fields (e.g., when field values are set) is enabled (see enableNotificationsGlobally(bool) ) Usually it is false(=0) within all calls of Module::calc* methods to avoid that field changes within these methods recursively start the calculation process of the ML. | |
static MLint & | enableNotificationsCounterState () |
Provides read/write access to the current counter state (see enableNotificationsGlobally(bool) ). | |
Protected Attributes inherited from ml::Field | |
std::string | _name |
The name of this field. | |
std::vector< FieldSensor * > | _sensors |
List of field sensors. | |
std::vector< Field * > | _destinationFields |
List of (target) fields which shall be set to the value of this field or which shall be notified only if this field is changed or notified. | |
std::vector< Field * > | _sourceFields |
List of (source) fields, which will notify this field or which will copy their value to this field. | |
FieldContainer * | _fieldContainer |
The owning field container. | |
Flags | _flags |
Static Protected Attributes inherited from ml::Field | |
static MLint | _enableNotifications |
Flag which disables the notification process of field (sensors) globally. | |
Field to encapsulate a pointer to an ML base object.
Definition at line 796 of file mlFields.h.
ml::BaseField::BaseField | ( | ) |
Implements the runtime type system interface for this class.
Default constructor, do not use it.
ml::BaseField::BaseField | ( | const std::string & | name | ) |
Constructor, creates a field with a name
to manage a base pointer.
Default value is NULL.
|
override |
Destructor.
|
inline |
Same as above, with template parameter where the Base type can be specified directly.
Definition at line 842 of file mlFields.h.
References addAllowedType().
Referenced by addAllowedType().
void ml::BaseField::addAllowedType | ( | const RuntimeType * | allowedType | ) |
Add type to list of allowed types.
This will set the Base value to NULL if it isn't NULL already and should only be called when creating the BaseField. Calls to setBaseValue (or setStringValue) will only succeed if the given Base object is of one of the allowed types or NULL, or if the list is empty, otherwise NULL will be set instead.
|
inline |
Get list of allowed Base types for this field.
Definition at line 856 of file mlFields.h.
Base * ml::BaseField::getBaseValue | ( | ) | const |
Returns current field value.
|
overridevirtual |
Returns the value of the field as a string value.
setStringValue must be able to reinterpret this returned string correctly.
Implements ml::Field.
|
inline |
Get typed value if the contained base object is derived from the given Type.
Definition at line 877 of file mlFields.h.
|
inline |
Get typed value if the contained base object is derived from the given Type.
Definition at line 873 of file mlFields.h.
|
inline |
Same as getBaseValue().
Definition at line 869 of file mlFields.h.
|
inline |
return true if the last call of setBaseValue had an unallowed type as argument, getBaseValue will return NULL then
Definition at line 860 of file mlFields.h.
void ml::BaseField::setBaseValue | ( | Base * | basePointerValue | ) |
Sets the value of the field to basePointerValue
.
void ml::BaseField::setBaseValue | ( | const RefCountedBasePtr & | value | ) |
Sets the value from intrusive pointer.
|
inline |
convenience routine for setting the base value and its type at the same time using an intrusive pointer.
See above methods for details.
Definition at line 853 of file mlFields.h.
References setBaseValueAndAddAllowedType().
Referenced by setBaseValueAndAddAllowedType().
|
inline |
convenience routine for setting the base value and its type at the same time.
The type is evaluated at compile-time, so even NULL works if it is cast to the right pointer type! (Or you might specify the type as template argument for NULL arguments!)
Definition at line 848 of file mlFields.h.
Referenced by ml::FieldContainer::addBaseWithAllowedType().
|
overridevirtual |
Sets pointer value from string stringValue
. If string cannot be parsed successfully, a NULL pointer is set.
Implements ml::Field.
|
inline |
Same as setBaseValue(Base*).
Definition at line 863 of file mlFields.h.
|
inline |
Same as setBaseValue(const RefCountedBasePtr&).
Definition at line 866 of file mlFields.h.
|
overrideprotectedvirtual |
|
virtual |
Touches the source fields.