6#ifndef MATERIALX_ELEMENT_H
7#define MATERIALX_ELEMENT_H
18MATERIALX_NAMESPACE_BEGIN
69using ElementMap = std::unordered_map<string, ElementPtr>;
79class MX_CORE_API
Element :
public std::enable_shared_from_this<Element>
86 _root(parent ? parent->getRoot() :
nullptr)
96 using DocumentPtr = shared_ptr<Document>;
97 using ConstDocumentPtr = shared_ptr<const Document>;
99 template <
class T>
friend class ElementRegistry;
116 _category = category;
164 setAttribute(FILE_PREFIX_ATTRIBUTE, prefix);
170 return hasAttribute(FILE_PREFIX_ATTRIBUTE);
176 return getAttribute(FILE_PREFIX_ATTRIBUTE);
185 if (elem->hasFilePrefix())
187 return elem->getFilePrefix();
200 setAttribute(GEOM_PREFIX_ATTRIBUTE, prefix);
206 return hasAttribute(GEOM_PREFIX_ATTRIBUTE);
212 return getAttribute(GEOM_PREFIX_ATTRIBUTE);
221 if (elem->hasGeomPrefix())
223 return elem->getGeomPrefix();
236 setAttribute(COLOR_SPACE_ATTRIBUTE, colorSpace);
242 return hasAttribute(COLOR_SPACE_ATTRIBUTE);
248 return getAttribute(COLOR_SPACE_ATTRIBUTE);
257 if (elem->hasColorSpace())
259 return elem->getColorSpace();
272 setAttribute(INHERIT_ATTRIBUTE, inherit);
278 return hasAttribute(INHERIT_ATTRIBUTE);
284 return getAttribute(INHERIT_ATTRIBUTE);
292 setInheritString(super->getName());
296 removeAttribute(INHERIT_ATTRIBUTE);
303 return hasInheritString() ? resolveNameReference<Element>(getInheritString()) :
nullptr;
320 setAttribute(NAMESPACE_ATTRIBUTE, space);
326 return hasAttribute(NAMESPACE_ATTRIBUTE);
332 return getAttribute(NAMESPACE_ATTRIBUTE);
341 const string& namespaceStr = elem->getNamespace();
342 if (!namespaceStr.empty())
345 const size_t i = name.find_first_of(NAME_PREFIX_SEPARATOR);
346 if (i != string::npos && name.substr(0, i) == namespaceStr)
352 return namespaceStr + NAME_PREFIX_SEPARATOR + name;
365 setAttribute(DOC_ATTRIBUTE, doc);
371 return getAttribute(DOC_ATTRIBUTE);
381 template <
class T>
bool isA(
const string& category = EMPTY_STRING)
const
385 if (!category.empty() && getCategory() != category)
391 template <
class T> shared_ptr<T>
asA();
394 template <
class T> shared_ptr<const T>
asA()
const;
407 template <
class T> shared_ptr<T> addChild(
const string& name = EMPTY_STRING);
431 ElementMap::const_iterator it = _childMap.find(name);
432 return (it != _childMap.end()) ? it->second :
ElementPtr();
441 return child ? child->asA<T>() : shared_ptr<T>();
454 template <
class T> vector<shared_ptr<T>>
getChildrenOfType(
const string& category = EMPTY_STRING)
const
456 vector<shared_ptr<T>> children;
459 shared_ptr<T> instance = child->asA<T>();
462 if (!category.empty() && child->getCategory() != category)
464 children.push_back(instance);
485 if (getChildOfType<T>(name))
499 return _attributeMap.count(attrib) != 0;
506 StringMap::const_iterator it = _attributeMap.find(attrib);
507 return (it != _attributeMap.end()) ? it->second : EMPTY_STRING;
513 return _attributeOrder;
529 if (hasAttribute(attrib))
533 return fromValueString<T>(getAttribute(attrib));
552 return shared_from_this();
558 return shared_from_this();
564 return _parent.lock();
570 return _parent.lock();
589 for (
ElementPtr elem = getSelf(); elem; elem = elem->getParent())
591 shared_ptr<T> typedElem = elem->asA<T>();
606 shared_ptr<const T> typedElem = elem->asA<T>();
711 _sourceUri = sourceUri;
717 return !_sourceUri.empty();
732 if (elem->hasSourceUri())
734 return elem->getSourceUri();
746 virtual bool validate(
string* message =
nullptr)
const;
764 while (_childMap.count(name))
791 template <
class T> shared_ptr<T> resolveNameReference(
const string& name,
ConstElementPtr parent =
nullptr)
const
794 shared_ptr<T> child = scope->getChildOfType<T>(getQualifiedName(name));
795 return child ? child : scope->getChildOfType<T>(name);
800 void validateRequire(
bool expression,
bool& res,
string* message,
const string& errorDesc)
const;
803 static const string NAME_ATTRIBUTE;
804 static const string FILE_PREFIX_ATTRIBUTE;
805 static const string GEOM_PREFIX_ATTRIBUTE;
806 static const string COLOR_SPACE_ATTRIBUTE;
807 static const string INHERIT_ATTRIBUTE;
808 static const string NAMESPACE_ATTRIBUTE;
809 static const string DOC_ATTRIBUTE;
810 static const string XPOS_ATTRIBUTE;
811 static const string YPOS_ATTRIBUTE;
814 virtual void registerChildElement(
ElementPtr child);
815 virtual void unregisterChildElement(
ElementPtr child);
821 return std::const_pointer_cast<Element>(shared_from_this());
830 vector<ElementPtr> _childOrder;
835 weak_ptr<Element> _parent;
836 weak_ptr<Element> _root;
841 return std::make_shared<T>(parent, name);
846 using CreatorMap = std::unordered_map<string, CreatorFunction>;
848 static CreatorMap _creatorMap;
857 Element(parent, category, name)
865 using TypeDefPtr = shared_ptr<class TypeDef>;
874 setAttribute(TYPE_ATTRIBUTE, type);
880 return hasAttribute(TYPE_ATTRIBUTE);
886 return getAttribute(TYPE_ATTRIBUTE);
892 return getType() ==
"color3" || getType() ==
"color4";
898 return getType() == MULTI_OUTPUT_TYPE_STRING;
912 static const string TYPE_ATTRIBUTE;
934 setAttribute(VALUE_ATTRIBUTE, value);
940 return hasAttribute(VALUE_ATTRIBUTE);
946 return getAttribute(VALUE_ATTRIBUTE);
963 setAttribute(INTERFACE_NAME_ATTRIBUTE, name);
969 return hasAttribute(INTERFACE_NAME_ATTRIBUTE);
975 return getAttribute(INTERFACE_NAME_ATTRIBUTE);
985 setAttribute(IMPLEMENTATION_NAME_ATTRIBUTE, name);
991 return hasAttribute(IMPLEMENTATION_NAME_ATTRIBUTE);
997 return getAttribute(IMPLEMENTATION_NAME_ATTRIBUTE);
1005 template <
class T>
void setValue(
const T& value,
const string& type = EMPTY_STRING)
1007 setType(!type.empty() ? type : getTypeString<T>());
1012 void setValue(
const char* value,
const string& type = EMPTY_STRING)
1014 setValue(value ?
string(value) : EMPTY_STRING, type);
1020 return hasAttribute(VALUE_ATTRIBUTE);
1064 setAttribute(UNIT_ATTRIBUTE, unit);
1070 return hasAttribute(UNIT_ATTRIBUTE);
1076 return getAttribute(UNIT_ATTRIBUTE);
1086 setAttribute(UNITTYPE_ATTRIBUTE, unit);
1092 return hasAttribute(UNITTYPE_ATTRIBUTE);
1098 return getAttribute(UNITTYPE_ATTRIBUTE);
1108 setTypedAttribute<bool>(UNIFORM_ATTRIBUTE, value);
1114 return getTypedAttribute<bool>(UNIFORM_ATTRIBUTE);
1123 bool validate(
string* message =
nullptr)
const override;
1128 static const string VALUE_ATTRIBUTE;
1129 static const string INTERFACE_NAME_ATTRIBUTE;
1130 static const string IMPLEMENTATION_NAME_ATTRIBUTE;
1131 static const string IMPLEMENTATION_TYPE_ATTRIBUTE;
1132 static const string ENUM_ATTRIBUTE;
1133 static const string ENUM_VALUES_ATTRIBUTE;
1134 static const string UI_NAME_ATTRIBUTE;
1135 static const string UI_FOLDER_ATTRIBUTE;
1136 static const string UI_MIN_ATTRIBUTE;
1137 static const string UI_MAX_ATTRIBUTE;
1138 static const string UI_SOFT_MIN_ATTRIBUTE;
1139 static const string UI_SOFT_MAX_ATTRIBUTE;
1140 static const string UI_STEP_ATTRIBUTE;
1141 static const string UI_ADVANCED_ATTRIBUTE;
1142 static const string UNIT_ATTRIBUTE;
1143 static const string UNITTYPE_ATTRIBUTE;
1144 static const string UNIFORM_ATTRIBUTE;
1162 static const string CATEGORY;
1176 Element(parent, CATEGORY, name)
1182 static const string CATEGORY;
1191 Element(parent, CATEGORY, name)
1197 static const string CATEGORY;
1206 Element(parent, CATEGORY, name)
1212 static const string CATEGORY;
1245 _filePrefix = filePrefix;
1261 _geomPrefix = geomPrefix;
1285 _filenameMap[key] = value;
1294 return _filenameMap;
1304 _geomNameMap[key] = value;
1310 return _geomNameMap;
1319 virtual string resolve(
const string& str,
const string& type)
const;
1324 return type == FILENAME_TYPE_STRING || type == GEOMNAME_TYPE_STRING;
1345 using Exception::Exception;
1350 string childName = name;
1351 if (childName.empty())
1356 if (_childMap.count(childName))
1357 throw Exception(
"Child name is not unique: " + childName);
1359 shared_ptr<T> child = std::make_shared<T>(
getSelf(), childName);
1360 registerChildElement(child);
1374MATERIALX_NAMESPACE_END
shared_ptr< Token > TokenPtr
A shared pointer to a Token.
Definition: Element.h:46
shared_ptr< const GenericElement > ConstGenericElementPtr
A shared pointer to a const GenericElement.
Definition: Element.h:63
shared_ptr< TypedElement > TypedElementPtr
A shared pointer to a TypedElement.
Definition: Element.h:36
shared_ptr< StringResolver > StringResolverPtr
A shared pointer to a StringResolver.
Definition: Element.h:66
shared_ptr< const CommentElement > ConstCommentElementPtr
A shared pointer to a const CommentElement.
Definition: Element.h:53
std::unordered_map< string, ElementPtr > ElementMap
A hash map from strings to elements.
Definition: Element.h:69
shared_ptr< NewlineElement > NewlineElementPtr
A shared pointer to a NewlineElement.
Definition: Element.h:56
shared_ptr< const Token > ConstTokenPtr
A shared pointer to a const Token.
Definition: Element.h:48
shared_ptr< GenericElement > GenericElementPtr
A shared pointer to a GenericElement.
Definition: Element.h:61
shared_ptr< const Element > ConstElementPtr
A shared pointer to a const Element.
Definition: Element.h:33
shared_ptr< Element > ElementPtr
A shared pointer to an Element.
Definition: Element.h:31
shared_ptr< ValueElement > ValueElementPtr
A shared pointer to a ValueElement.
Definition: Element.h:41
shared_ptr< const ValueElement > ConstValueElementPtr
A shared pointer to a const ValueElement.
Definition: Element.h:43
shared_ptr< CommentElement > CommentElementPtr
A shared pointer to a CommentElement.
Definition: Element.h:51
shared_ptr< const TypedElement > ConstTypedElementPtr
A shared pointer to a const TypedElement.
Definition: Element.h:38
std::function< bool(ConstElementPtr)> ElementPredicate
A standard function taking an ElementPtr and returning a boolean.
Definition: Element.h:72
shared_ptr< const NewlineElement > ConstNewlineElementPtr
A shared pointer to a const NewlineElement.
Definition: Element.h:58
MX_CORE_API string prettyPrint(ConstElementPtr elem)
Pretty print the given element tree, calling asString recursively on each element in depth-first orde...
MX_CORE_API bool targetStringsMatch(const string &target1, const string &target2)
Given two target strings, each containing a string array of target names, return true if they have an...
Import and export declarations for the Core library.
vector< string > StringVec
A vector of strings.
Definition: Library.h:55
std::unordered_map< string, string > StringMap
An unordered map with strings as both keys and values.
Definition: Library.h:57
MX_CORE_API string incrementName(const string &name)
Increment the numeric suffix of a name.
MX_CORE_API string createValidName(string name, char replaceChar='_')
Create a valid MaterialX name from the given string.
shared_ptr< Value > ValuePtr
A shared pointer to a Value.
Definition: Value.h:29
MX_CORE_API string toValueString(const T &data)
Convert the given data value to a value string.
A MaterialX document, which represents the top-level element in the MaterialX ownership hierarchy.
Definition: Document.h:32
An edge between two connected Elements, returned during graph traversal.
Definition: Traversal.h:30
The base class for MaterialX elements.
Definition: Element.h:80
const string & getActiveSourceUri() const
Return the source URI that is active at the scope of this element, taking all ancestor elements into ...
Definition: Element.h:728
bool hasNamespace() const
Return true if this element has a namespace string.
Definition: Element.h:324
const string & getAttribute(const string &attrib) const
Return the value string of the given attribute.
Definition: Element.h:504
ConstElementPtr getSelf() const
Return our self pointer.
Definition: Element.h:556
const string & getActiveGeomPrefix() const
Return the geom prefix string that is active at the scope of this element, taking all ancestor elemen...
Definition: Element.h:217
string asString() const
Return a single-line description of this element, including its category, name, and attributes.
bool isA(const string &category=EMPTY_STRING) const
Return true if this element belongs to the given subclass.
Definition: Element.h:381
void setDocString(const string &doc)
Set the documentation string of this element.
Definition: Element.h:363
shared_ptr< T > getAncestorOfType()
Return the first ancestor of the given subclass, or an empty shared pointer if no ancestor of this su...
Definition: Element.h:587
bool hasGeomPrefix() const
Return true if the given element has a geom prefix string.
Definition: Element.h:204
shared_ptr< const T > getAncestorOfType() const
Return the first ancestor of the given subclass, or an empty shared pointer if no ancestor of this su...
Definition: Element.h:602
void setChildIndex(const string &name, int index)
Set the index of the child, if any, with the given name.
const string & getInheritString() const
Return the inherit string of this element.
Definition: Element.h:282
TreeIterator traverseTree() const
Traverse the tree from the given element to each of its descendants in depth-first order,...
GraphIterator traverseGraph() const
Traverse the dataflow graph from the given element to each of its upstream sources in depth-first ord...
bool hasSourceUri() const
Return true if this element has a source URI.
Definition: Element.h:715
void removeChild(const string &name)
Remove the child element, if any, with the given name.
ElementPtr changeChildCategory(ElementPtr child, const string &category)
Change the category of the given child element.
const string & getColorSpace() const
Return the element's color space string.
Definition: Element.h:246
shared_ptr< T > addChild(const string &name=EMPTY_STRING)
Add a child element of the given subclass and name.
Definition: Element.h:1348
const string & getName() const
Return the element's name string.
Definition: Element.h:138
void setColorSpace(const string &colorSpace)
Set the element's color space string.
Definition: Element.h:234
string getQualifiedName(const string &name) const
Return a qualified version of the given name, taking the namespace at the scope of this element into ...
Definition: Element.h:337
string createValidChildName(string name) const
Using the input name as a starting point, modify it to create a valid, unique name for a child elemen...
Definition: Element.h:761
shared_ptr< const T > asA() const
Dynamic cast to a const instance of the given subclass.
const string & getGeomPrefix() const
Return the element's geom prefix string.
Definition: Element.h:210
void setFilePrefix(const string &prefix)
Set the element's file prefix string.
Definition: Element.h:162
bool hasInheritedBase(ConstElementPtr base) const
Return true if this element has the given element as an inherited base, taking the full inheritance c...
bool hasInheritanceCycle() const
Return true if the inheritance chain for this element contains a cycle.
void setAttribute(const string &attrib, const string &value)
Set the value string of the given attribute.
const StringVec & getAttributeNames() const
Return a vector of stored attribute names, in the order they were set.
Definition: Element.h:511
void setName(const string &name)
Set the element's name string.
virtual void clearContent()
Clear all attributes and descendants from this element.
int getChildIndex(const string &name) const
Return the index of the child, if any, with the given name.
ElementPtr getChild(const string &name) const
Return the child element, if any, with the given name.
Definition: Element.h:429
const string & getSourceUri() const
Return the element's source URI.
Definition: Element.h:721
virtual bool validate(string *message=nullptr) const
Validate that the given element tree, including all descendants, is consistent with the MaterialX spe...
bool hasColorSpace() const
Return true if the given element has a color space string.
Definition: Element.h:240
InheritanceIterator traverseInheritance() const
Traverse the inheritance chain from the given element to each element from which it inherits.
ElementPtr getRoot()
Return the root element of our tree.
const string & getFilePrefix() const
Return the element's file prefix string.
Definition: Element.h:174
void copyContentFrom(const ConstElementPtr &source)
Copy all attributes and descendants from the given element to this one.
void setTypedAttribute(const string &attrib, const T &data)
Set the value of an implicitly typed attribute.
Definition: Element.h:519
bool operator!=(const Element &rhs) const
Return true if the given element tree, including all descendants, differs from this one.
DocumentPtr getDocument()
Return the root document of our tree.
virtual size_t getUpstreamEdgeCount() const
Return the number of queriable upstream edges for this element.
Definition: Element.h:672
StringResolverPtr createStringResolver(const string &geom=EMPTY_STRING) const
Construct a StringResolver at the scope of this element.
bool hasInheritString() const
Return true if this element has an inherit string.
Definition: Element.h:276
const string & getActiveColorSpace() const
Return the color space string that is active at the scope of this element, taking all ancestor elemen...
Definition: Element.h:253
shared_ptr< T > asA()
Dynamic cast to an instance of the given subclass.
ElementPtr getInheritsFrom() const
Return the element, if any, that this one directly inherits from.
Definition: Element.h:301
ElementPtr getUpstreamElement(size_t index=0) const
Return the Element with the given index that lies directly upstream from this one in the dataflow gra...
T getTypedAttribute(const string &attrib) const
Return the value of an implicitly typed attribute.
Definition: Element.h:527
void setCategory(const string &category)
Set the element's category string.
Definition: Element.h:114
void removeAttribute(const string &attrib)
Remove the given attribute, if present.
bool operator==(const Element &rhs) const
Return true if the given element tree, including all descendants, is identical to this one.
shared_ptr< T > getChildOfType(const string &name) const
Return the child element, if any, with the given name and subclass.
Definition: Element.h:438
ElementPtr getDescendant(const string &namePath) const
Return the element specified by the given hierarchical name path, relative to the current element.
string getNamePath(ConstElementPtr relativeTo=nullptr) const
Return the element's hierarchical name path, relative to the root document.
ConstElementPtr getRoot() const
Return the root element of our tree.
void setGeomPrefix(const string &prefix)
Set the element's geom prefix string.
Definition: Element.h:198
void setNamespace(const string &space)
Set the namespace string of this element.
Definition: Element.h:318
ElementPtr getSelf()
Return our self pointer.
Definition: Element.h:550
const vector< ElementPtr > & getChildren() const
Return a constant vector of all child elements.
Definition: Element.h:446
ConstElementPtr getParent() const
Return our parent element.
Definition: Element.h:568
const string & getActiveFilePrefix() const
Return the file prefix string that is active at the scope of this element, taking all ancestor elemen...
Definition: Element.h:181
void setInheritString(const string &inherit)
Set the inherit string of this element.
Definition: Element.h:270
const string & getNamespace() const
Return the namespace string of this element.
Definition: Element.h:330
ConstDocumentPtr getDocument() const
Return the root document of our tree.
bool hasAttribute(const string &attrib) const
Return true if the given attribute is present.
Definition: Element.h:497
void removeChildOfType(const string &name)
Remove the child element, if any, with the given name and subclass.
Definition: Element.h:483
void setSourceUri(const string &sourceUri)
Set the element's source URI.
Definition: Element.h:709
string getDocString() const
Return the documentation string of this element.
Definition: Element.h:369
void setInheritsFrom(ConstElementPtr super)
Set the element that this one directly inherits from.
Definition: Element.h:288
ElementPtr getParent()
Return our parent element.
Definition: Element.h:562
bool hasFilePrefix() const
Return true if the given element has a file prefix string.
Definition: Element.h:168
ElementPtr addChildOfCategory(const string &category, string name=EMPTY_STRING)
Add a child element of the given category and name.
const string & getCategory() const
Return the element's category string.
Definition: Element.h:122
vector< shared_ptr< T > > getChildrenOfType(const string &category=EMPTY_STRING) const
Return a vector of all child elements that are instances of the given subclass, optionally filtered b...
Definition: Element.h:454
virtual Edge getUpstreamEdge(size_t index=0) const
Return the Edge with the given index that lies directly upstream from this element in the dataflow gr...
The base class for exceptions that are propagated from the MaterialX library to the client applicatio...
Definition: Exception.h:22
An exception that is thrown when an ElementPtr is used after its owning Document has gone out of scop...
Definition: Element.h:1343
An exception that is thrown when a type mismatch is encountered.
Definition: Value.h:38
A generic element subclass, for instantiating elements with unrecognized categories.
Definition: Element.h:1203
An iterator object representing the state of an upstream graph traversal.
Definition: Traversal.h:192
An iterator object representing the current state of an inheritance traversal.
Definition: Traversal.h:334
An element representing a newline within a document.
Definition: Element.h:1188
A helper object for applying string modifiers to data values in the context of a specific element and...
Definition: Element.h:1229
void setFilenameSubstitution(const string &key, const string &value)
Set an arbitrary substring substitution for filename data values.
Definition: Element.h:1283
static bool isResolvedType(const string &type)
Return true if the given type may be resolved by this class.
Definition: Element.h:1322
const string & getGeomPrefix() const
Return the geom prefix for this context.
Definition: Element.h:1265
void setUvTileString(const string &uvTile)
Set the UV-tile substring substitution for filename data values.
const string & getFilePrefix() const
Return the file prefix for this context.
Definition: Element.h:1249
const StringMap & getGeomNameSubstitutions() const
Return the map of geometry name substring substitutions.
Definition: Element.h:1308
void addTokenSubstitutions(ConstElementPtr element)
Add filename token substitutions for a given element.
void setFilePrefix(const string &filePrefix)
Set the file prefix for this context.
Definition: Element.h:1243
virtual string resolve(const string &str, const string &type) const
Given an input string and type, apply all appropriate modifiers and return the resulting string.
void setUdimString(const string &udim)
Set the UDIM substring substitution for filename data values.
void setGeomPrefix(const string &geomPrefix)
Set the geom prefix for this context.
Definition: Element.h:1259
const StringMap & getFilenameSubstitutions() const
Return the map of filename substring substitutions.
Definition: Element.h:1292
void setGeomNameSubstitution(const string &key, const string &value)
Set an arbitrary substring substitution for geometry name data values.
Definition: Element.h:1302
static StringResolverPtr create()
Create a new string resolver.
Definition: Element.h:1232
A token element representing a string value.
Definition: Element.h:1153
An iterator object representing the state of a tree traversal.
Definition: Traversal.h:89
The base class for typed elements.
Definition: Element.h:854
virtual const string & getType() const
Return the element's type string.
Definition: Element.h:884
bool isColorType() const
Return true if the element is of color type.
Definition: Element.h:890
void setType(const string &type)
Set the element's type string.
Definition: Element.h:872
bool isMultiOutputType() const
Return true if the element is of multi-output type.
Definition: Element.h:896
TypeDefPtr getTypeDef() const
Return the TypeDef declaring the type string of this element.
bool hasType() const
Return true if the given element has a type string.
Definition: Element.h:878
The base class for elements that support typed values.
Definition: Element.h:918
ValuePtr getValue() const
Return the typed value of an element as a generic value object, which may be queried to access its da...
Definition: Element.h:1028
void setUnit(const string &unit)
Set the unit string of an element.
Definition: Element.h:1062
const string & getValueString() const
Get the value string of a element.
Definition: Element.h:944
void setInterfaceName(const string &name)
Set the interface name of an element.
Definition: Element.h:961
ValuePtr getDefaultValue() const
Return the default value for this element as a generic value object, which may be queried to access i...
string getResolvedValueString(StringResolverPtr resolver=nullptr) const
Return the resolved value string of an element, applying any string substitutions that are defined at...
bool validate(string *message=nullptr) const override
Validate that the given element tree, including all descendants, is consistent with the MaterialX spe...
ValuePtr getResolvedValue(StringResolverPtr resolver=nullptr) const
Return the resolved value of an element as a generic value object, which may be queried to access its...
Definition: Element.h:1043
const string & getImplementationName() const
Return the implementation name of an element.
Definition: Element.h:995
void setValue(const char *value, const string &type=EMPTY_STRING)
Set the typed value of an element from a C-style string.
Definition: Element.h:1012
bool hasUnitType() const
Return true if the given element has a unit type.
Definition: Element.h:1090
void setIsUniform(bool value)
Set the uniform attribute flag on this element.
Definition: Element.h:1106
const string & getUnit() const
Return the unit string of an element.
Definition: Element.h:1074
bool getIsUniform() const
The the uniform attribute flag for this element.
Definition: Element.h:1112
void setValueString(const string &value)
Set the value string of an element.
Definition: Element.h:932
void setValue(const T &value, const string &type=EMPTY_STRING)
Set the typed value of an element.
Definition: Element.h:1005
bool hasUnit() const
Return true if the given element has a unit string.
Definition: Element.h:1068
bool hasInterfaceName() const
Return true if the given element has an interface name.
Definition: Element.h:967
void setUnitType(const string &unit)
Set the unit type of an element.
Definition: Element.h:1084
bool hasImplementationName() const
Return true if the given element has an implementation name.
Definition: Element.h:989
void setImplementationName(const string &name)
Set the implementation name of an element.
Definition: Element.h:983
const string & getActiveUnit() const
Return the unit defined by the assocaited NodeDef if this element is a child of a Node.
const string & getInterfaceName() const
Return the interface name of an element.
Definition: Element.h:973
bool hasValueString() const
Return true if the given element has a value string.
Definition: Element.h:938
const string & getUnitType() const
Return the unit type of an element.
Definition: Element.h:1096
bool hasValue() const
Return true if the element possesses a typed value.
Definition: Element.h:1018
static ValuePtr createValueFromStrings(const string &value, const string &type)
Create a new value instance from value and type strings.