OpenSim
OpenSim 3.0
|
An abstract property is a serializable (name,value) pair, for which we
do not know the type of the value. More...
#include <AbstractProperty.h>
Public Member Functions | |
void | setAllowableListSize (int aMin, int aMax) |
Require that the number of values n in the value list of this property | |
void | setAllowableListSize (int aNum) |
Require that the number of values n in the value list of this property | |
virtual | ~AbstractProperty () |
Return all heap space used by this property. | |
virtual AbstractProperty * | clone () const =0 |
Return a new instance of this concrete property object, containing | |
virtual std::string | toString () const =0 |
For relatively simple types, return the current value of this property | |
virtual std::string | getTypeName () const =0 |
This returns a string representation of this property's value type which will be the same as T::getClassName() for Object-derived types T, and some reasonably nice name for simple types, including at least "bool", "int", "double", "string", "Vec3", "Vector", and "Transform". | |
virtual bool | isObjectProperty () const =0 |
Return true if this is an "object property", meaning that its values are all concrete objects of types that ultimately derive from the OpenSim serializable base class Object. | |
virtual bool | isUnnamedProperty () const =0 |
An unnamed property is a one-object property whose name was given as | |
bool | equals (const AbstractProperty &other) const |
Compare this property with another one; this is primarily used | |
bool | isSamePropertyClass (const AbstractProperty &other) const |
Return true if the \a other property is an object of exactly the same | |
bool | operator== (const AbstractProperty &other) const |
See the equals() method for the meaning of this operator. | |
void | setAllPropertiesUseDefault (bool shouldUseDefault) |
This method sets the "use default" flag for this property and the | |
void | readFromXMLParentElement (SimTK::Xml::Element &parent, int versionNumber) |
Given an XML parent element expected to contain a value for this property as an immediate child element, find that property element and set the property value from it. | |
void | writeToXMLParentElement (SimTK::Xml::Element &parent) |
Given an XML parent element, append a single child element representing | |
void | setName (const std::string &name) |
Set the property name. | |
void | setComment (const std::string &aComment) |
Set a user-friendly comment to be associated with property. | |
void | setValueIsDefault (bool isDefault) |
%Set flag indicating whether the value of this property was simply taken from a default object and thus should not be written out when serializing. | |
const std::string & | getName () const |
Get the property name. | |
const std::string & | getComment () const |
Get the comment associated with this property. | |
bool | getValueIsDefault () const |
Get the flag indicating whether the current value is just the default value for this property (in which case it doesn't need to be written out). | |
int | getMinListSize () const |
Get the minimum number of values allowed in this property's value | |
int | getMaxListSize () const |
Get the maximum number of values allowed in this property's value | |
bool | isOptionalProperty () const |
This is an "optional" property if its value list can contain at most | |
bool | isListProperty () const |
This is a "list" property if its value list can contain more than | |
bool | isOneValueProperty () const |
This is a "one-value" property if its value list must always contain | |
bool | isOneObjectProperty () const |
This is a "one-object" property if it is a "one-value" property and | |
Container interface | |
A property can be viewed as a random-access container of values. These methods provide a subset of the usual container methods modeled after std::vector. Note that any methods involving the actual property value type T must be templatized; they will be delegated to the concrete Property<T> for resolution. | |
int | size () const |
Return the number of values currently in this property's value list. | |
bool | empty () const |
Return true if this property's value list is currently empty. | |
void | clear () |
Empty the value list for this property; fails if zero is not an | |
virtual const Object & | getValueAsObject (int index=-1) const =0 |
For an object property, the values can be obtained as references to the abstract base class Object from which all the objects derive. | |
virtual Object & | updValueAsObject (int index=-1)=0 |
Get writable access to an existing object value. | |
virtual void | setValueAsObject (const Object &obj, int index=-1)=0 |
Set the indicated value element to a new copy of the supplied object. | |
template<class T > | |
const T & | getValue (int index=-1) const |
Return one of the values in this property as type T; this works only if the underlying concrete property stores type T and if the indexed element is present, otherwise throws an exception. | |
template<class T > | |
T & | updValue (int index=-1) |
Return a writable reference to one of the values in this property as type T; this works only if the underlying concrete property is actually of type T and the indexed element is present. | |
template<class T > | |
int | appendValue (const T &value) |
Append a new value of type T to the end of the list of values currently |
Protected Member Functions | |
AbstractProperty () | |
AbstractProperty (const std::string &name, const std::string &comment) | |
virtual bool | isEqualTo (const AbstractProperty &other) const =0 |
The base class equals() method will have already done a lot of checking prior to calling this method, including verifying that both values are non-default and that the value lists are the same size; the concrete property need only compare the values. | |
virtual void | readFromXMLElement (SimTK::Xml::Element &propertyElement, int versionNumber)=0 |
Read in a new value for this property from the XML element | |
virtual void | writeToXMLElement (SimTK::Xml::Element &propertyElement) const =0 |
Output a serialized representation of this property by writing its | |
virtual int | getNumValues () const =0 |
How may values are currently stored in this property? If this is an object property you can use this with getValueAsObject() to iterate over the contained objects. | |
virtual void | clearValues ()=0 |
If the concrete property allows it, clear the value list. | |
virtual bool | isAcceptableObjectTag (const std::string &objectTypeTag) const =0 |
Return true if the given string is the XML tag name for one of the |
An abstract property is a serializable (name,value) pair, for which we
do not know the type of the value.
Values may be simple types like int or string, or may be serializable objects derived from the OpenSim Object class.
AbstractProperty is an abstract base class that provides the functionality common to all properties that does not involve knowledge of the value type. Property<T> derives from AbstractProperty to represent properties where the type is known.
|
inlinevirtual |
Return all heap space used by this property.
|
protected |
|
protected |
|
inline |
Append a new value of type T to the end of the list of values currently
contained in this property.
This works only if the underlying concrete property is of type T, the property holds a variable-length list, and the list isn't already of maximum size.
Reimplemented in OpenSim::Property< T >.
void OpenSim::AbstractProperty::clear | ( | ) |
Empty the value list for this property; fails if zero is not an
allowable size for this property.
|
protectedpure virtual |
If the concrete property allows it, clear the value list.
Implemented in OpenSim::Property_Deprecated.
|
pure virtual |
Return a new instance of this concrete property object, containing
new copies of this property's values.
The new property object is allocated on the heap and it is up to the caller to delete it when done.
Implemented in OpenSim::Property< T >, OpenSim::Property_Deprecated, OpenSim::PropertyDblVec_< M >, OpenSim::PropertyDblVec_< 2 >, OpenSim::PropertyDblVec_< 3 >, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyDblArray, OpenSim::PropertyIntArray, OpenSim::PropertyStrArray, OpenSim::PropertyBoolArray, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, OpenSim::PropertyObj, OpenSim::PropertyTransform, OpenSim::PropertyBool, OpenSim::PropertyDbl, OpenSim::PropertyInt, and OpenSim::PropertyStr.
|
inline |
Return true if this property's value list is currently empty.
|
inline |
Compare this property with another one; this is primarily used
for testing.
The properties must be of the identical concrete type, and their names and other base class attributes must be identical (including the comment). If they both have the "use default" flag set then we consider the values identical without looking. Otherwise, we delegate to the concrete property to determine if the values are equal; the meaning is determined by the concrete property depending on its type. Floating point values should be compared to a tolerance, and should be considered equal if both are the same infinity or both are NaN (the latter in contrast to normal IEEE floating point behavior, where NaN!=NaN).
|
inline |
Get the comment associated with this property.
|
inline |
Get the maximum number of values allowed in this property's value
list.
Will be unlimited for list properties (unless explicitly changed), and one for optional and one-value properties.
|
inline |
Get the minimum number of values allowed in this property's value
list.
Will be zero for optional properties, zero for list properties (unless explicitly changed), and one for one-value properties.
|
inline |
Get the property name.
|
protectedpure virtual |
How may values are currently stored in this property? If this is an
object property you can use this with getValueAsObject() to iterate over the contained objects.
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyDblVec_< M >, OpenSim::PropertyDblVec_< 2 >, OpenSim::PropertyDblVec_< 3 >, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyDblArray, OpenSim::PropertyIntArray, OpenSim::PropertyStrArray, OpenSim::PropertyBoolArray, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, and OpenSim::PropertyObjArray< Control >.
|
pure virtual |
This returns a string representation of this property's value type
which will be the same as T::getClassName() for Object-derived types T, and some reasonably nice name for simple types, including at least "bool", "int", "double", "string", "Vec3", "Vector", and "Transform".
Implemented in OpenSim::Property< T >, OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, OpenSim::PropertyDblVec_< M >, OpenSim::PropertyDblVec_< 2 >, OpenSim::PropertyDblVec_< 3 >, OpenSim::PropertyObj, OpenSim::PropertyDblArray, OpenSim::PropertyIntArray, OpenSim::PropertyStrArray, OpenSim::PropertyBoolArray, OpenSim::PropertyTransform, OpenSim::PropertyStr, OpenSim::PropertyDbl, OpenSim::PropertyBool, and OpenSim::PropertyInt.
|
inline |
Return one of the values in this property as type T; this works only
if the underlying concrete property stores type T and if the indexed element is present, otherwise throws an exception.
Reimplemented in OpenSim::Property< T >.
|
pure virtual |
For an object property, the values can be obtained as references to
the abstract base class Object from which all the objects derive.
If the property can hold a list of values you must provide an index to select the value, otherwise it is optional but if supplied must be 0. This will throw an exception if this is not an object property, that is, if it is a simple property, because its values can't be represented as an Object in that case.
[in] | index | If supplied must be 0 <= index < getNumValues(). |
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, and OpenSim::PropertyObj.
|
inline |
Get the flag indicating whether the current value is just the default
value for this property (in which case it doesn't need to be written out).
|
protectedpure virtual |
Return true if the given string is the XML tag name for one of the
Object-derived types that is allowed by this property.
If so, we expect that an element with that tag could be deserialized into a value element of this property. This always returns false for a simple property.
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, and OpenSim::PropertyObj.
|
protectedpure virtual |
The base class equals() method will have already done a lot of checking
prior to calling this method, including verifying that both values are non-default and that the value lists are the same size; the concrete property need only compare the values.
Implemented in OpenSim::Property_Deprecated.
|
inline |
This is a "list" property if its value list can contain more than
one value.
This is the kind of property created by the Object::addListProperty<T> method, for any type T.
|
pure virtual |
Return true if this is an "object property", meaning that its values
are all concrete objects of types that ultimately derive from the OpenSim serializable base class Object.
If this returns true then it is safe to call getValueAsObject(). Otherwise this property contains only simple types like "int" or "std::string", and you'll need to know the actual type in order to access the values.
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, and OpenSim::PropertyObj.
|
inline |
This is a "one-object" property if it is a "one-value" property and
it contains an Object-derived value.
This is the kind of property created by the Object::addProperty<T> method when T is a type derived from OpenSim's Object serializable base class. One-object properties have a special, compact representation in XML.
|
inline |
This is a "one-value" property if its value list must always contain
exactly one value.
This is the kind of property created by the Object::addProperty<T> method, for any type T.
|
inline |
This is an "optional" property if its value list can contain at most
one value.
This is the kind of property created by the Object::addOptionalProperty<T> method, for any type T.
|
inline |
Return true if the \a other property is an object of exactly the same
concrete class as this one.
|
pure virtual |
An unnamed property is a one-object property whose name was given as
null or as the contained object's type tag.
In that case getName() will return the object type tag, and the XML representation will just be the object, with name attribute ignored if there is one.
Implemented in OpenSim::Property_Deprecated.
|
inline |
See the equals() method for the meaning of this operator.
|
protectedpure virtual |
Read in a new value for this property from the XML element
propertyElement.
The element is expected to have the form
where the values may be simple (like int or double) or may be objects contained in child elements for which the object type name serves as the element tag. Note that although the XML file may contain an abbreviated representation for one-object properties, it will have been canonicalized into the above form for the purpose of reading, so concrete properties may assume the above form always.
The format for the property value (and any of its contained objects) is assumed to be the one that was in use when the given ".osim" file version number was current; if necessary the in-memory version will be updated to the now-current format.
If this is an object property, the contained objects will be asked recursively to read themselves in from the same document. However, any object that has the "file" attribute will read in its contents from that file rather than from the supplied XML document, and the version number will be taken from that file rather than the argument supplied here.
Implemented in OpenSim::Property_Deprecated.
void OpenSim::AbstractProperty::readFromXMLParentElement | ( | SimTK::Xml::Element & | parent, |
int | versionNumber | ||
) |
Given an XML parent element expected to contain a value for this
property as an immediate child element, find that property element and set the property value from it.
If no such property element can be found, the "use default value" attribute of this property will be set on return; that is not an error. However, if the property element is found but is malformed or unsuitable in some way, an exception will be thrown with a message explaining what is wrong.
|
inline |
Require that the number of values n in the value list of this property
be in the range aMin <= n <= aMax.
|
inline |
Require that the number of values n in the value list of this property
be exactly n=aNum values.
void OpenSim::AbstractProperty::setAllPropertiesUseDefault | ( | bool | shouldUseDefault | ) |
This method sets the "use default" flag for this property and the
properties of any objects it contains to the given value.
|
inline |
Set a user-friendly comment to be associated with property.
This will be displayed in XML and in "help" output for OpenSim Objects.
|
inline |
Set the property name.
|
pure virtual |
Set the indicated value element to a new copy of the supplied object.
If you already have a heap-allocated object you're willing to give up and want to avoid the extra copy, use adoptValueObject().
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, and OpenSim::PropertyObj.
|
inline |
%Set flag indicating whether the value of this property was simply
taken from a default object and thus should not be written out when serializing.
|
inline |
Return the number of values currently in this property's value list.
|
pure virtual |
For relatively simple types, return the current value of this property
in a string suitable for displaying to a user in the GUI.
Objects just return something like "(Object)".
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyDblVec_< M >, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyDblVec_< 2 >, OpenSim::PropertyDblVec_< 3 >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, OpenSim::PropertyObj, OpenSim::PropertyDblArray, OpenSim::PropertyIntArray, OpenSim::PropertyStrArray, OpenSim::PropertyBoolArray, OpenSim::PropertyTransform, OpenSim::PropertyStr, OpenSim::PropertyDbl, OpenSim::PropertyBool, and OpenSim::PropertyInt.
|
inline |
Return a writable reference to one of the values in this property as
type T; this works only if the underlying concrete property is actually of type T and the indexed element is present.
Otherwise it throws an exception.
Reimplemented in OpenSim::Property< T >.
|
pure virtual |
Get writable access to an existing object value.
Note that you can't use this to install a different concrete object; see setValueAsObject() if you want to do that.
[in] | index | If supplied must be 0 <= index < getNumValues(). |
Implemented in OpenSim::Property_Deprecated, OpenSim::PropertyObjPtr< T >, OpenSim::PropertyObjPtr< Joint >, OpenSim::PropertyObjPtr< Function >, OpenSim::PropertyObjPtr< OpenSim::Function >, OpenSim::PropertyObjArray< T >, OpenSim::PropertyObjArray< ExternalForce >, OpenSim::PropertyObjArray< ObjectGroup >, OpenSim::PropertyObjArray< Actuator >, OpenSim::PropertyObjArray< ContactGeometry >, OpenSim::PropertyObjArray< PathPoint >, OpenSim::PropertyObjArray< Coordinate >, OpenSim::PropertyObjArray< ControlLinearNode >, OpenSim::PropertyObjArray< MarkerWeight >, OpenSim::PropertyObjArray< IKTask >, OpenSim::PropertyObjArray< Force >, OpenSim::PropertyObjArray< Joint >, OpenSim::PropertyObjArray< MarkerPair >, OpenSim::PropertyObjArray< DisplayGeometry >, OpenSim::PropertyObjArray< Scale >, OpenSim::PropertyObjArray< Probe >, OpenSim::PropertyObjArray< Controller >, OpenSim::PropertyObjArray< ModelComponent >, OpenSim::PropertyObjArray< Function >, OpenSim::PropertyObjArray< Muscle >, OpenSim::PropertyObjArray< TrackingTask >, OpenSim::PropertyObjArray< Measurement >, OpenSim::PropertyObjArray< BodyScale >, OpenSim::PropertyObjArray< Marker >, OpenSim::PropertyObjArray< Analysis >, OpenSim::PropertyObjArray< Body >, OpenSim::PropertyObjArray< Constraint >, OpenSim::PropertyObjArray< Control >, and OpenSim::PropertyObj.
|
protectedpure virtual |
Output a serialized representation of this property by writing its
value to the given XML property element.
If the "use default value" attribute is set for this property (meaning we don't have a meaningful value for it) then you should not call this method unless you are trying to serialize the defaults. Note that this method unconditionally serializes the property; it does not check to see whether it should.
This method is not called for the special case of a one-object property, in which case only the object is written to the XML file (without the property element). In all other cases (simple property or property containing an array of objects), the format is
and that is the only format produced here since the empty-valued property element is supplied (with the property name as its tag).
Implemented in OpenSim::Property_Deprecated.
void OpenSim::AbstractProperty::writeToXMLParentElement | ( | SimTK::Xml::Element & | parent | ) |
Given an XML parent element, append a single child element representing
the serialized form of this property.