HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NdrNode Class Reference

#include <node.h>

+ Inheritance diagram for NdrNode:

Public Member Functions

NDR_API NdrNode (const NdrIdentifier &identifier, const NdrVersion &version, const std::string &name, const TfToken &family, const TfToken &context, const TfToken &sourceType, const std::string &definitionURI, const std::string &implementationURI, NdrPropertyUniquePtrVec &&properties, const NdrTokenMap &metadata=NdrTokenMap(), const std::string &sourceCode=std::string())
 Constructor. More...
 
virtual NDR_API ~NdrNode ()
 Destructor. More...
 
The Basics
const NdrIdentifierGetIdentifier () const
 Return the identifier of the node. More...
 
NdrVersion GetVersion () const
 Return the version of the node. More...
 
const std::stringGetName () const
 Gets the name of the node. More...
 
const TfTokenGetFamily () const
 
const TfTokenGetContext () const
 
const TfTokenGetSourceType () const
 
const std::stringGetResolvedDefinitionURI () const
 
const std::stringGetResolvedImplementationURI () const
 
const std::stringGetSourceCode () const
 
virtual NDR_API bool IsValid () const
 
virtual NDR_API std::string GetInfoString () const
 
Inputs and Outputs

An input or output is also generically referred to as a "property".

NDR_API const NdrTokenVecGetInputNames () const
 Get an ordered list of all the input names on this node. More...
 
NDR_API const NdrTokenVecGetOutputNames () const
 Get an ordered list of all the output names on this node. More...
 
NDR_API NdrPropertyConstPtr GetInput (const TfToken &inputName) const
 
NDR_API NdrPropertyConstPtr GetOutput (const TfToken &outputName) const
 
Metadata

The metadata returned here is a direct result of what the parser plugin is able to determine about the node. See the documentation for a specific parser plugin to get help on what the parser is looking for to populate these values.

NDR_API const NdrTokenMapGetMetadata () const
 

Protected Member Functions

NdrNodeoperator= (const NdrNode &)=delete
 

Protected Attributes

bool _isValid
 
NdrIdentifier _identifier
 
NdrVersion _version
 
std::string _name
 
TfToken _family
 
TfToken _context
 
TfToken _sourceType
 
std::string _definitionURI
 
std::string _implementationURI
 
NdrPropertyUniquePtrVec _properties
 
NdrTokenMap _metadata
 
std::string _sourceCode
 
NdrPropertyPtrMap _inputs
 
NdrTokenVec _inputNames
 
NdrPropertyPtrMap _outputs
 
NdrTokenVec _outputNames
 

Detailed Description

Represents an abstract node. Describes information like the name of the node, what its inputs and outputs are, and any associated metadata.

In almost all cases, this class will not be used directly. More specialized nodes can be created that derive from NdrNode; those specialized nodes can add their own domain-specific data and methods.

Definition at line 48 of file node.h.

Constructor & Destructor Documentation

NDR_API NdrNode::NdrNode ( const NdrIdentifier identifier,
const NdrVersion version,
const std::string name,
const TfToken family,
const TfToken context,
const TfToken sourceType,
const std::string definitionURI,
const std::string implementationURI,
NdrPropertyUniquePtrVec &&  properties,
const NdrTokenMap metadata = NdrTokenMap(),
const std::string sourceCode = std::string() 
)

Constructor.

virtual NDR_API NdrNode::~NdrNode ( )
virtual

Destructor.

Member Function Documentation

const TfToken& NdrNode::GetContext ( ) const
inline

Gets the context of the node.

The context is the context that the node declares itself as having (or, if a particular node does not declare a context, it will be assigned a default context by the parser).

As a concrete example from the Sdr library, a shader with a specific source type may perform different duties vs. another shader with the same source type. For example, one shader with a source type of SdrArgsParser::SourceType may declare itself as having a context of 'pattern', while another shader of the same source type may say it is used for lighting, and thus has a context of 'light'.

Definition at line 97 of file node.h.

const TfToken& NdrNode::GetFamily ( ) const
inline

Gets the name of the family that the node belongs to. An empty token will be returned if the node does not belong to a family.

Definition at line 83 of file node.h.

const NdrIdentifier& NdrNode::GetIdentifier ( ) const
inline

Return the identifier of the node.

Definition at line 73 of file node.h.

virtual NDR_API std::string NdrNode::GetInfoString ( ) const
virtual

Gets a string with basic information about this node. Helpful for things like adding this node to a log.

NDR_API NdrPropertyConstPtr NdrNode::GetInput ( const TfToken inputName) const

Get an input property by name. nullptr is returned if an input with the given name does not exist.

NDR_API const NdrTokenVec& NdrNode::GetInputNames ( ) const

Get an ordered list of all the input names on this node.

NDR_API const NdrTokenMap& NdrNode::GetMetadata ( ) const

All metadata that came from the parse process. Specialized nodes may isolate values in the metadata (with possible manipulations and/or additional parsing) and expose those values in their API.

const std::string& NdrNode::GetName ( ) const
inline

Gets the name of the node.

Definition at line 79 of file node.h.

NDR_API NdrPropertyConstPtr NdrNode::GetOutput ( const TfToken outputName) const

Get an output property by name. nullptr is returned if an output with the given name does not exist.

NDR_API const NdrTokenVec& NdrNode::GetOutputNames ( ) const

Get an ordered list of all the output names on this node.

const std::string& NdrNode::GetResolvedDefinitionURI ( ) const
inline

Gets the URI to the resource that provided this node's definition. Could be a path to a file, or some other resource identifier. This URI should be fully resolved.

See Also
NdrNode::GetResolvedImplementationURI()

Definition at line 118 of file node.h.

const std::string& NdrNode::GetResolvedImplementationURI ( ) const
inline

Gets the URI to the resource that provides this node's implementation. Could be a path to a file, or some other resource identifier. This URI should be fully resolved.

See Also
NdrNode::GetResolvedDefinitionURI()

Definition at line 125 of file node.h.

const std::string& NdrNode::GetSourceCode ( ) const
inline

Returns the source code for this node. This will be empty for most nodes. It will be non-empty only for the nodes that are constructed using NdrRegistry::GetNodeFromSourceCode(), in which case, the source code has not been parsed (or even compiled) yet.

An unparsed node with non-empty source-code but no properties is considered to be invalid. Once the node is parsed and the relevant properties and metadata are extracted from the source code, the node becomes valid.

See Also
NdrNode::IsValid

Definition at line 138 of file node.h.

const TfToken& NdrNode::GetSourceType ( ) const
inline

Gets the type of source that this node originated from.

Note that this is distinct from GetContext(), which is the type that the node declares itself as having.

As a concrete example from the Sdr library, several shader parsers exist and operate on different types of shaders. In this scenario, each distinct type of shader (OSL, Args, etc) is considered a different source, even though they are all shaders. In addition, the shaders under each source type may declare themselves as having a specific context (shaders can serve different roles). See GetContext() for more information on this.

Definition at line 111 of file node.h.

NdrVersion NdrNode::GetVersion ( ) const
inline

Return the version of the node.

Definition at line 76 of file node.h.

virtual NDR_API bool NdrNode::IsValid ( ) const
inlinevirtual

Whether or not this node is valid. A node that is valid indicates that the parser plugin was able to successfully parse the contents of this node.

Note that if a node is not valid, some data like its name, URI, source code etc. could still be available (data that was obtained during the discovery process). However, other data that must be gathered from the parsing process will NOT be available (eg, inputs and outputs).

Definition at line 149 of file node.h.

NdrNode& NdrNode::operator= ( const NdrNode )
protecteddelete

Member Data Documentation

TfToken NdrNode::_context
protected

Definition at line 207 of file node.h.

std::string NdrNode::_definitionURI
protected

Definition at line 209 of file node.h.

TfToken NdrNode::_family
protected

Definition at line 206 of file node.h.

NdrIdentifier NdrNode::_identifier
protected

Definition at line 203 of file node.h.

std::string NdrNode::_implementationURI
protected

Definition at line 210 of file node.h.

NdrTokenVec NdrNode::_inputNames
protected

Definition at line 216 of file node.h.

NdrPropertyPtrMap NdrNode::_inputs
protected

Definition at line 215 of file node.h.

bool NdrNode::_isValid
protected

Definition at line 202 of file node.h.

NdrTokenMap NdrNode::_metadata
protected

Definition at line 212 of file node.h.

std::string NdrNode::_name
protected

Definition at line 205 of file node.h.

NdrTokenVec NdrNode::_outputNames
protected

Definition at line 218 of file node.h.

NdrPropertyPtrMap NdrNode::_outputs
protected

Definition at line 217 of file node.h.

NdrPropertyUniquePtrVec NdrNode::_properties
protected

Definition at line 211 of file node.h.

std::string NdrNode::_sourceCode
protected

Definition at line 213 of file node.h.

TfToken NdrNode::_sourceType
protected

Definition at line 208 of file node.h.

NdrVersion NdrNode::_version
protected

Definition at line 204 of file node.h.


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