template<class T = void*>
class sofa::core::objectmodel::Data< T >
Container that holds a variable for a component.
This is a fundamental class template in Sofa. Data are used to encapsulated member variables of Sofa components (i.e. classes that somehow inherit from Base) in order to access them dynamically and generically: briefly, Data can be retrieved at run-time by their name, and they can be assigned a value from a string, or be printed as a string.
More concretely, from the perspective of XML scene files, each Data declared in a component corresponds to an attribute of this component.
Example
If a component Foo
has a boolean parameter bar
, it does not simply declares it as bool m_bar
, but rather like this:
template class SOFA_CORE_API Data< bool >
Definition: Data.cpp:59
Then, this Data must be initialized to provide its name and default value. This is typically done in the initialization list of each constructor of the component, using the helper function Base::initData():
Foo::Foo(): d_bar(initData(&d_bar, true, "bar", "Here is a little description of this Data.")) {
}
And this Data can be assigned a value in XML scene files like so:
|
const sofa::defaulttype::AbstractTypeInfo * | getValueTypeInfo () const override |
| Get info about the value type of the associated variable. More...
|
|
bool | read (const std::string &s) override |
|
void | printValue (std::ostream &out) const override |
| General case for printing default value. More...
|
|
std::string | getValueString () const override |
| General case for printing value. More...
|
|
std::string | getDefaultValueString () const override |
| General case for printing default value. More...
|
|
std::string | getValueTypeString () const override |
| Get the name of the type of the value held in this Data. More...
|
|
void | operator= (const T &value) |
|
bool | copyValueFrom (const Data< T > *data) |
|
| Data (const Data &)=delete |
|
Data & | operator= (const Data &)=delete |
|
bool SOFA_CORE_API | read (const std::string &str) |
| Specialization for reading strings. More...
|
|
bool SOFA_CORE_API | read (const std::string &str) |
| Specialization for reading booleans. More...
|
|
bool | read (const std::string &str) |
| Specialization for reading strings. More...
|
|
bool | read (const std::string &str) |
| Specialization for reading booleans. More...
|
|
|
virtual T * | beginEdit () |
|
virtual T * | beginWriteOnly () |
|
virtual void | endEdit () |
|
void | setValue (const T &value) |
|
const T & | getValue () const |
|
| BaseData (const BaseInitData &init) |
|
| BaseData (const std::string &helpMsg, DataFlags flags=FLAG_DEFAULT) |
|
| BaseData (const char *helpMsg, DataFlags flags=FLAG_DEFAULT) |
|
| BaseData (const std::string &helpMsg, bool isDisplayed=true, bool isReadOnly=false) |
|
| BaseData (const char *helpMsg, bool isDisplayed=true, bool isReadOnly=false) |
|
| ~BaseData () override |
| Destructor. More...
|
|
const void * | getValueVoidPtr () const |
| Get current value as a void pointer (use getValueTypeInfo to find how to access it) More...
|
|
void * | beginEditVoidPtr () |
| Begin edit current value as a void pointer (use getValueTypeInfo to find how to access it) More...
|
|
void | endEditVoidPtr () |
| Must be called after beginEditVoidPtr(), after you are finished modifying this Data. More...
|
|
const std::string & | getHelp () const |
| Get a help message that describes this Data. More...
|
|
void | setHelp (const std::string &val) |
| Set the help message. More...
|
|
const std::string & | getGroup () const |
| Get group. More...
|
|
void | setGroup (const std::string &val) |
| Set group. More...
|
|
const std::string & | getWidget () const |
| Get widget. More...
|
|
void | setWidget (const char *val) |
| Set widget. More...
|
|
virtual std::string | getLinkPath () const |
| If we use the Data as a link and not as value directly. More...
|
|
virtual bool | canBeLinked () const |
|
Base * | getOwner () const |
| Return the Base component owning this Data. More...
|
|
void | setOwner (Base *o) |
| Set the owner of this Data. More...
|
|
BaseData * | getData () const |
| This method is needed by DDGNode. More...
|
|
const std::string & | getName () const |
| Return the name of this Data within the Base component. More...
|
|
void | setName (const std::string &name) |
|
bool | hasDefaultValue () const |
| Return whether the Data has a default value or not. More...
|
|
bool | setParent (BaseData *parent, const std::string &path=std::string()) |
| Link to a parent data. The value of this data will automatically duplicate the value of the parent data. More...
|
|
bool | setParent (const std::string &path) |
|
virtual bool | validParent (const BaseData *parent) |
| Check if a given Data can be linked as a parent of this data. More...
|
|
BaseData * | getParent () const |
|
void | update () override |
| Update the value of this Data. More...
|
|
bool | copyValueFrom (const BaseData *data) |
| Update this Data from the value of its parent. More...
|
|
bool | updateValueFromLink (const BaseData *data) |
|
template<class T > |
| SOFA_ATTRIBUTE_DEPRECATED__UNNECESSARY_PARAMETER_IN_TYPENAME () static std |
|
void | setFlag (DataFlagsEnum flag, bool b) |
| Set one of the flags. More...
|
|
bool | getFlag (DataFlagsEnum flag) const |
| Get one of the flags. More...
|
|
bool | isDisplayed () const |
| Return whether this Data has to be displayed in GUIs. More...
|
|
bool | isReadOnly () const |
| Return whether this Data will be read-only in GUIs. More...
|
|
bool | isPersistent () const |
| Return whether this Data contains persistent information. More...
|
|
bool | isAutoLink () const |
| Return whether this Data should be autolinked when using the src="" syntax. More...
|
|
bool | isRequired () const |
| Return whether the Data has to be set by the user for the owner component to be valid. More...
|
|
void | setDisplayed (bool b) |
| Set whether this Data should be displayed in GUIs. More...
|
|
void | setReadOnly (bool b) |
| Set whether this Data is read-only. More...
|
|
void | setPersistent (bool b) |
| Set whether this Data contains persistent information. More...
|
|
void | setAutoLink (bool b) |
| Set whether this data should be autolinked when using the src="" syntax. More...
|
|
void | setRequired (bool b) |
| Set whether the Data has to be set by the user for the owner component to be valid. More...
|
|
bool | isSet () const |
|
void | unset () |
| Reset the isSet flag to false, to indicate that the current value is the default for this Data. More...
|
|
void | forceSet () |
| Reset the isSet flag to true, to indicate that the current value has been modified. More...
|
|
int | getCounter () const |
|
| DDGNode () |
| Constructor. More...
|
|
virtual | ~DDGNode () |
| Destructor. Automatically remove remaining links. More...
|
|
void | addInput (DDGNode *n) |
| Add a new input to this node. More...
|
|
void | delInput (DDGNode *n) |
| Remove an input from this node. More...
|
|
void | addOutput (DDGNode *n) |
| Add a new output to this node. More...
|
|
void | delOutput (DDGNode *n) |
| Remove an output from this node. More...
|
|
const DDGLinkContainer & | getInputs () |
| Get the list of inputs for this DDGNode. More...
|
|
const DDGLinkContainer & | getOutputs () |
| Get the list of outputs for this DDGNode. More...
|
|
bool | isDirty () const |
| Returns true if the DDGNode needs to be updated. More...
|
|
virtual void | setDirtyValue () |
| Indicate the value needs to be updated. More...
|
|
virtual void | setDirtyOutputs () |
| Indicate the outputs needs to be updated. This method must be called after changing the value of this node. More...
|
|
void | cleanDirty () |
| Set dirty flag to false. More...
|
|
virtual void | notifyEndEdit () |
| Notify links that the DGNode has been modified. More...
|
|
void | updateIfDirty () const |
| Utility method to call update if necessary. This method should be called before reading of writing the value of this node. More...
|
|