MaterialX 1.38.6
Loading...
Searching...
No Matches
Node Class Reference

A node element within a NodeGraph or Document. More...

#include <Node.h>

Inheritance diagram for Node:
InterfaceElement TypedElement Element

Public Member Functions

 Node (ElementPtr parent, const string &name)
 
Connections
void setConnectedNode (const string &inputName, ConstNodePtr node)
 Set the node to which the given input is connected, creating a child input if needed. More...
 
NodePtr getConnectedNode (const string &inputName) const
 Return the Node connected to the given input. More...
 
void setConnectedNodeName (const string &inputName, const string &nodeName)
 Set the name of the Node connected to the given input, creating a child element for the input if needed.
 
string getConnectedNodeName (const string &inputName) const
 Return the name of the Node connected to the given input. More...
 
void setConnectedOutput (const string &inputName, OutputPtr output)
 Set the output to which the given input is connected, creating a child input if needed. More...
 
OutputPtr getConnectedOutput (const string &inputName) const
 Return the output connected to the given input. More...
 
NodeDef References
NodeDefPtr getNodeDef (const string &target=EMPTY_STRING, bool allowRoughMatch=false) const
 Return the first NodeDef that declares this node, optionally filtered by the given target name. More...
 
Implementation References
InterfaceElementPtr getImplementation (const string &target=EMPTY_STRING) const
 Return the first implementation for this node, optionally filtered by the given target and language names. More...
 
Traversal
Edge getUpstreamEdge (size_t index=0) const override
 Return the Edge with the given index that lies directly upstream from this element in the dataflow graph. More...
 
size_t getUpstreamEdgeCount () const override
 Return the number of queriable upstream edges for this element. More...
 
OutputPtr getNodeDefOutput (ElementPtr connectingElement)
 Given a connecting element (Input or Output) return the NodeDef output corresponding to the output the element is connected to. More...
 
vector< PortElementPtrgetDownstreamPorts () const
 Return a vector of all downstream ports that connect to this node, ordered by the names of the port elements.
 
Utility
ConstInterfaceElementPtr getDeclaration (const string &target=EMPTY_STRING) const override
 Return the first declaration of this interface, optionally filtered by the given target name. More...
 
InputPtr addInputFromNodeDef (const string &inputName)
 Add an input based on the corresponding input for the associated node definition. More...
 
void addInputsFromNodeDef ()
 Add inputs based on the corresponding associated node definition.
 
Validation
bool validate (string *message=nullptr) const override
 Validate that the given element tree, including all descendants, is consistent with the MaterialX specification. More...
 
- Public Member Functions inherited from InterfaceElement
void setNodeDefString (const string &nodeDef)
 Set the NodeDef string for the interface.
 
bool hasNodeDefString () const
 Return true if the given interface has a NodeDef string.
 
const string & getNodeDefString () const
 Return the NodeDef string for the interface.
 
InputPtr addInput (const string &name=EMPTY_STRING, const string &type=DEFAULT_TYPE_STRING)
 Add an Input to this interface. More...
 
InputPtr getInput (const string &name) const
 Return the Input, if any, with the given name.
 
vector< InputPtrgetInputs () const
 Return a vector of all Input elements.
 
size_t getInputCount () const
 Return the number of Input elements.
 
void removeInput (const string &name)
 Remove the Input, if any, with the given name.
 
InputPtr getActiveInput (const string &name) const
 Return the first Input with the given name that belongs to this interface, taking interface inheritance into account.
 
vector< InputPtrgetActiveInputs () const
 Return a vector of all Input elements that belong to this interface, taking inheritance into account.
 
OutputPtr addOutput (const string &name=EMPTY_STRING, const string &type=DEFAULT_TYPE_STRING)
 Add an Output to this interface. More...
 
OutputPtr getOutput (const string &name) const
 Return the Output, if any, with the given name.
 
vector< OutputPtrgetOutputs () const
 Return a vector of all Output elements.
 
size_t getOutputCount () const
 Return the number of Output elements.
 
void removeOutput (const string &name)
 Remove the Output, if any, with the given name.
 
OutputPtr getActiveOutput (const string &name) const
 Return the first Output with the given name that belongs to this interface, taking interface inheritance into account.
 
vector< OutputPtrgetActiveOutputs () const
 Return a vector of all Output elements that belong to this interface, taking inheritance into account.
 
void setConnectedOutput (const string &inputName, OutputPtr output)
 Set the output to which the given input is connected, creating a child input if needed. More...
 
OutputPtr getConnectedOutput (const string &inputName) const
 Return the output connected to the given input. More...
 
TokenPtr addToken (const string &name=EMPTY_STRING)
 Add a Token to this interface. More...
 
TokenPtr getToken (const string &name) const
 Return the Token, if any, with the given name.
 
vector< TokenPtrgetTokens () const
 Return a vector of all Token elements.
 
void removeToken (const string &name)
 Remove the Token, if any, with the given name.
 
TokenPtr getActiveToken (const string &name) const
 Return the first Token with the given name that belongs to this interface, taking interface inheritance into account.
 
vector< TokenPtrgetActiveTokens () const
 Return a vector of all Token elements that belong to this interface, taking inheritance into account.
 
ValueElementPtr getValueElement (const string &name) const
 Return the ValueElement, if any, with the given name.
 
ValueElementPtr getActiveValueElement (const string &name) const
 Return the first value element with the given name that belongs to this interface, taking interface inheritance into account. More...
 
vector< ValueElementPtrgetActiveValueElements () const
 Return a vector of all value elements that belong to this interface, taking inheritance into account. More...
 
template<class T >
InputPtr setInputValue (const string &name, const T &value, const string &type=EMPTY_STRING)
 Set the typed value of an input by its name, creating a child element to hold the input if needed.
 
ValuePtr getInputValue (const string &name, const string &target=EMPTY_STRING) const
 Return the typed value of an input by its name, taking both the calling element and its declaration into account. More...
 
TokenPtr setTokenValue (const string &name, const string &value)
 Set the string value of a Token by its name, creating a child element to hold the Token if needed.
 
string getTokenValue (const string &name)
 Return the string value of a Token by its name, or an empty string if the given Token is not present.
 
void setTarget (const string &target)
 Set the target string of this interface.
 
bool hasTarget () const
 Return true if the given interface has a target string.
 
const string & getTarget () const
 Return the target string of this interface.
 
void setVersionString (const string &version)
 Set the version string of this interface.
 
bool hasVersionString () const
 Return true if this interface has a version string.
 
const string & getVersionString () const
 Return the version string of this interface.
 
void setVersionIntegers (int majorVersion, int minorVersion)
 Set the major and minor versions as an integer pair.
 
virtual std::pair< int, int > getVersionIntegers () const
 Return the major and minor versions as an integer pair. More...
 
void setDefaultVersion (bool defaultVersion)
 Set the default version flag of this element.
 
bool getDefaultVersion () const
 Return the default version flag of this element.
 
bool hasExactInputMatch (ConstInterfaceElementPtr declaration, string *message=nullptr) const
 Return true if this instance has an exact input match with the given declaration, where each input of this the instance corresponds to a declaration input of the same name and type. More...
 
- Public Member Functions inherited from TypedElement
void setType (const string &type)
 Set the element's type string.
 
bool hasType () const
 Return true if the given element has a type string.
 
virtual const string & getType () const
 Return the element's type string. More...
 
bool isMultiOutputType () const
 Return true if the element is of multi-output type.
 
TypeDefPtr getTypeDef () const
 Return the TypeDef declaring the type string of this element. More...
 
- Public Member Functions inherited from Element
 Element (const Element &)=delete
 
Elementoperator= (const Element &)=delete
 
bool operator== (const Element &rhs) const
 Return true if the given element tree, including all descendants, is identical to this one.
 
bool operator!= (const Element &rhs) const
 Return true if the given element tree, including all descendants, differs from this one.
 
void setCategory (const string &category)
 Set the element's category string.
 
const string & getCategory () const
 Return the element's category string. More...
 
void setName (const string &name)
 Set the element's name string. More...
 
const string & getName () const
 Return the element's name string.
 
string getNamePath (ConstElementPtr relativeTo=nullptr) const
 Return the element's hierarchical name path, relative to the root document. More...
 
ElementPtr getDescendant (const string &namePath) const
 Return the element specified by the given hierarchical name path, relative to the current element. More...
 
void setFilePrefix (const string &prefix)
 Set the element's file prefix string.
 
bool hasFilePrefix () const
 Return true if the given element has a file prefix string.
 
const string & getFilePrefix () const
 Return the element's file prefix string.
 
const string & getActiveFilePrefix () const
 Return the file prefix string that is active at the scope of this element, taking all ancestor elements into account.
 
void setGeomPrefix (const string &prefix)
 Set the element's geom prefix string.
 
bool hasGeomPrefix () const
 Return true if the given element has a geom prefix string.
 
const string & getGeomPrefix () const
 Return the element's geom prefix string.
 
const string & getActiveGeomPrefix () const
 Return the geom prefix string that is active at the scope of this element, taking all ancestor elements into account.
 
void setColorSpace (const string &colorSpace)
 Set the element's color space string.
 
bool hasColorSpace () const
 Return true if the given element has a color space string.
 
const string & getColorSpace () const
 Return the element's color space string.
 
const string & getActiveColorSpace () const
 Return the color space string that is active at the scope of this element, taking all ancestor elements into account.
 
void setInheritString (const string &inherit)
 Set the inherit string of this element.
 
bool hasInheritString () const
 Return true if this element has an inherit string.
 
const string & getInheritString () const
 Return the inherit string of this element.
 
void setInheritsFrom (ConstElementPtr super)
 Set the element that this one directly inherits from.
 
ElementPtr getInheritsFrom () const
 Return the element, if any, that this one directly inherits from.
 
bool hasInheritedBase (ConstElementPtr base) const
 Return true if this element has the given element as an inherited base, taking the full inheritance chain into account.
 
bool hasInheritanceCycle () const
 Return true if the inheritance chain for this element contains a cycle.
 
void setNamespace (const string &space)
 Set the namespace string of this element.
 
bool hasNamespace () const
 Return true if this element has a namespace string.
 
const string & getNamespace () const
 Return the namespace string of this element.
 
string getQualifiedName (const string &name) const
 Return a qualified version of the given name, taking the namespace at the scope of this element into account.
 
void setDocString (const string &doc)
 Set the documentation string of this element.
 
string getDocString () const
 Return the documentation string of this element.
 
template<class T >
bool isA (const string &category=EMPTY_STRING) const
 Return true if this element belongs to the given subclass. More...
 
template<class T >
shared_ptr< T > asA ()
 Dynamic cast to an instance of the given subclass.
 
template<class T >
shared_ptr< const T > asA () const
 Dynamic cast to a const instance of the given subclass.
 
template<class T >
shared_ptr< T > addChild (const string &name=EMPTY_STRING)
 Add a child element of the given subclass and name. More...
 
ElementPtr addChildOfCategory (const string &category, string name=EMPTY_STRING)
 Add a child element of the given category and name. More...
 
ElementPtr changeChildCategory (ElementPtr child, const string &category)
 Change the category of the given child element. More...
 
ElementPtr getChild (const string &name) const
 Return the child element, if any, with the given name.
 
template<class T >
shared_ptr< T > getChildOfType (const string &name) const
 Return the child element, if any, with the given name and subclass. More...
 
const vector< ElementPtr > & getChildren () const
 Return a constant vector of all child elements. More...
 
template<class T >
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 by the given category string. More...
 
void setChildIndex (const string &name, int index)
 Set the index of the child, if any, with the given name. More...
 
int getChildIndex (const string &name) const
 Return the index of the child, if any, with the given name. More...
 
void removeChild (const string &name)
 Remove the child element, if any, with the given name.
 
template<class T >
void removeChildOfType (const string &name)
 Remove the child element, if any, with the given name and subclass. More...
 
void setAttribute (const string &attrib, const string &value)
 Set the value string of the given attribute.
 
bool hasAttribute (const string &attrib) const
 Return true if the given attribute is present.
 
const string & getAttribute (const string &attrib) const
 Return the value string of the given attribute. More...
 
const StringVecgetAttributeNames () const
 Return a vector of stored attribute names, in the order they were set.
 
template<class T >
void setTypedAttribute (const string &attrib, const T &data)
 Set the value of an implicitly typed attribute. More...
 
template<class T >
getTypedAttribute (const string &attrib) const
 Return the value of an implicitly typed attribute. More...
 
void removeAttribute (const string &attrib)
 Remove the given attribute, if present.
 
ElementPtr getSelf ()
 Return our self pointer.
 
ConstElementPtr getSelf () const
 Return our self pointer.
 
ElementPtr getParent ()
 Return our parent element.
 
ConstElementPtr getParent () const
 Return our parent element.
 
ElementPtr getRoot ()
 Return the root element of our tree.
 
ConstElementPtr getRoot () const
 Return the root element of our tree.
 
DocumentPtr getDocument ()
 Return the root document of our tree.
 
ConstDocumentPtr getDocument () const
 Return the root document of our tree.
 
template<class T >
shared_ptr< const T > getAncestorOfType () const
 Return the first ancestor of the given subclass, or an empty shared pointer if no ancestor of this subclass is found.
 
TreeIterator traverseTree () const
 Traverse the tree from the given element to each of its descendants in depth-first order, using pre-order visitation. More...
 
GraphIterator traverseGraph () const
 Traverse the dataflow graph from the given element to each of its upstream sources in depth-first order, using pre-order visitation. More...
 
ElementPtr getUpstreamElement (size_t index=0) const
 Return the Element with the given index that lies directly upstream from this one in the dataflow graph. More...
 
InheritanceIterator traverseInheritance () const
 Traverse the inheritance chain from the given element to each element from which it inherits. More...
 
void setSourceUri (const string &sourceUri)
 Set the element's source URI. More...
 
bool hasSourceUri () const
 Return true if this element has a source URI.
 
const string & getSourceUri () const
 Return the element's source URI.
 
const string & getActiveSourceUri () const
 Return the source URI that is active at the scope of this element, taking all ancestor elements into account.
 
void copyContentFrom (const ConstElementPtr &source)
 Copy all attributes and descendants from the given element to this one. More...
 
void clearContent ()
 Clear all attributes and descendants from this element.
 
string createValidChildName (string name) const
 Using the input name as a starting point, modify it to create a valid, unique name for a child element.
 
StringResolverPtr createStringResolver (const string &geom=EMPTY_STRING) const
 Construct a StringResolver at the scope of this element. More...
 
string asString () const
 Return a single-line description of this element, including its category, name, and attributes.
 

Static Public Attributes

static const string CATEGORY
 
- Static Public Attributes inherited from InterfaceElement
static const string NODE_DEF_ATTRIBUTE = "nodedef"
 
static const string TARGET_ATTRIBUTE = "target"
 
static const string VERSION_ATTRIBUTE = "version"
 
static const string DEFAULT_VERSION_ATTRIBUTE = "isdefaultversion"
 
- Static Public Attributes inherited from TypedElement
static const string TYPE_ATTRIBUTE = "type"
 
- Static Public Attributes inherited from Element
static const string NAME_ATTRIBUTE = "name"
 
static const string FILE_PREFIX_ATTRIBUTE = "fileprefix"
 
static const string GEOM_PREFIX_ATTRIBUTE = "geomprefix"
 
static const string COLOR_SPACE_ATTRIBUTE = "colorspace"
 
static const string INHERIT_ATTRIBUTE = "inherit"
 
static const string NAMESPACE_ATTRIBUTE = "namespace"
 
static const string DOC_ATTRIBUTE = "doc"
 

Additional Inherited Members

- Protected Types inherited from InterfaceElement
using NodeDefPtr = shared_ptr< NodeDef >
 
using ConstNodeDefPtr = shared_ptr< const NodeDef >
 
- Protected Types inherited from TypedElement
using TypeDefPtr = shared_ptr< class TypeDef >
 
- Protected Types inherited from Element
using DocumentPtr = shared_ptr< Document >
 
using ConstDocumentPtr = shared_ptr< const Document >
 
- Protected Member Functions inherited from InterfaceElement
 InterfaceElement (ElementPtr parent, const string &category, const string &name)
 
void registerChildElement (ElementPtr child) override
 
void unregisterChildElement (ElementPtr child) override
 
- Protected Member Functions inherited from TypedElement
 TypedElement (ElementPtr parent, const string &category, const string &name)
 
- Protected Member Functions inherited from Element
 Element (ElementPtr parent, const string &category, const string &name)
 
template<class T >
shared_ptr< T > resolveNameReference (const string &name, ConstElementPtr parent=nullptr) const
 
void validateRequire (bool expression, bool &res, string *message, const string &errorDesc) const
 
virtual void registerChildElement (ElementPtr child)
 
virtual void unregisterChildElement (ElementPtr child)
 
ElementPtr getSelfNonConst () const
 
- Protected Attributes inherited from Element
string _category
 
string _name
 
string _sourceUri
 
ElementMap _childMap
 
vector< ElementPtr_childOrder
 
StringMap _attributeMap
 
StringVec _attributeOrder
 
weak_ptr< Element_parent
 
weak_ptr< Element_root
 

Detailed Description

A node element within a NodeGraph or Document.

A Node represents an instance of a NodeDef within a graph, and its Input elements apply specific values and connections to that instance.

Member Function Documentation

◆ addInputFromNodeDef()

InputPtr addInputFromNodeDef ( const string &  inputName)

Add an input based on the corresponding input for the associated node definition.

If the input already exists on the node it will just be returned.

◆ getConnectedNode()

NodePtr getConnectedNode ( const string &  inputName) const

Return the Node connected to the given input.

If the given input is not present, then an empty NodePtr is returned.

◆ getConnectedNodeName()

string getConnectedNodeName ( const string &  inputName) const

Return the name of the Node connected to the given input.

If the given input is not present, then an empty string is returned.

◆ getConnectedOutput()

OutputPtr getConnectedOutput ( const string &  inputName) const

Return the output connected to the given input.

If the given input is not present, then an empty OutputPtr is returned.

◆ getDeclaration()

ConstInterfaceElementPtr getDeclaration ( const string &  target = EMPTY_STRING) const
inlineoverridevirtual

Return the first declaration of this interface, optionally filtered by the given target name.

Reimplemented from InterfaceElement.

◆ getImplementation()

InterfaceElementPtr getImplementation ( const string &  target = EMPTY_STRING) const
inline

Return the first implementation for this node, optionally filtered by the given target and language names.

Parameters
targetAn optional target name, which will be used to filter the implementations that are considered.
Returns
An implementation for this node, or an empty shared pointer if none was found. Note that a node implementation may be either an Implementation element or a NodeGraph element.

◆ getNodeDef()

NodeDefPtr getNodeDef ( const string &  target = EMPTY_STRING,
bool  allowRoughMatch = false 
) const

Return the first NodeDef that declares this node, optionally filtered by the given target name.

Parameters
targetAn optional target name, which will be used to filter the nodedefs that are considered.
allowRoughMatchIf specified, then a rough match will be allowed when an exact match is not found. An exact match requires that each node input corresponds to a nodedef input of the same name and type.
Returns
A NodeDef for this node, or an empty shared pointer if none was found.

◆ getNodeDefOutput()

OutputPtr getNodeDefOutput ( ElementPtr  connectingElement)

Given a connecting element (Input or Output) return the NodeDef output corresponding to the output the element is connected to.

This is only valid if the NodeDef has explicit outputs defined, e.g. multiple outputs or an explicitly named output. If this is not the case, nullptr is returned, which implies the node is a standard node with a single implicit output.

◆ getUpstreamEdge()

Edge getUpstreamEdge ( size_t  index = 0) const
overridevirtual

Return the Edge with the given index that lies directly upstream from this element in the dataflow graph.

Reimplemented from Element.

◆ getUpstreamEdgeCount()

size_t getUpstreamEdgeCount ( ) const
inlineoverridevirtual

Return the number of queriable upstream edges for this element.

Reimplemented from Element.

◆ setConnectedNode()

void setConnectedNode ( const string &  inputName,
ConstNodePtr  node 
)

Set the node to which the given input is connected, creating a child input if needed.

If the node argument is null, then any existing node connection on the input will be cleared.

◆ setConnectedOutput()

void setConnectedOutput ( const string &  inputName,
OutputPtr  output 
)

Set the output to which the given input is connected, creating a child input if needed.

If the node argument is null, then any existing output connection on the input will be cleared.

◆ validate()

bool validate ( string *  message = nullptr) const
overridevirtual

Validate that the given element tree, including all descendants, is consistent with the MaterialX specification.

Reimplemented from Element.


The documentation for this class was generated from the following files: