MutableGNode Class Reference

#include <nodesystem.h>

Inheritance diagram for MutableGNode:

Detailed Description

MutableGNode is the base class of mutable node references. The class hierarchy is

See also usernodes_nodes for a class diagram and more details. The function NodeSystem::BeginModification() returns a reference to the root node of a node system with write access, from this all other nodes and ports can be found and modified.

Public Member Functions

void Reset ()
 
MutableGNodeoperator= (std::nullptr_t)
 
 MutableGNode ()=default
 
Result< void > InitFromPath (NodeSystemInterface *system, const NodePath &path, NODE_KIND check=NODE_KIND::ALL_MASK)
 
Result< void > InitFromPath (NodeSystemInterface *system, const PathBlock &path, NODE_KIND check=NODE_KIND::ALL_MASK)
 
- Public Member Functions inherited from MutableGNodeFunctions< MutableGNodeBase >
Result< void > Remove (Opt< ChangeList & > list={}) const
 
Result< void > InheritChild (const InternedId &childId, Opt< ChangeList & > list={}) const
 
Result< BoolInheritValue (const InternedId &attr, Opt< ChangeList & > list={}) const
 
Result< BoolRemoveValue (const InternedId &attr, Opt< ChangeList & > list={}) const
 
Result< BoolSetValue (const InternedId &attr, ForwardingDataPtr &&value, Opt< ChangeList & > list={}) const
 
Result< BoolSetValue (const ATTR &attr, const typename ATTR::ValueType &value, Opt< ChangeList & > list={}) const
 
Result< BoolSetValue (const ATTR &attr, typename ATTR::ValueType &&value, Opt< ChangeList & > list={}) const
 
Result< BoolSetValue (const typename ATTR::ValueType &value, Opt< ChangeList & > list={}) const
 
Result< BoolSetValue (typename ATTR::ValueType &&value, Opt< ChangeList & > list={}) const
 
Result< void > ChangeValue (const InternedId &attr, const SubDataOperation &op, const SubDataPathBlock &path, ForwardingDataPtr &&value, Opt< ChangeList & > list={}) const
 
- Public Member Functions inherited from GNodeFunctions< BASE >
Bool IsPort () const
 
const PortSelector< BASE::MUTABLE > & ToPort () const
 
Result< void > GetValues (GraphAttribute::FLAGS mask, GraphAttributeMap &attribs, Bool includeInherited=true, Bool includeRemoved=false) const
 
Result< ConstDataPtrGetValue (const InternedId &attr, const DataType &expectedType) const
 
Result< ConstDataPtrGetValue (const InternedId &attr, const DataType &expectedType, Int &nesting, Bool negativeRootNesting=false) const
 
template<typename T >
Result< Opt< const T & > > GetValue (const InternedId &attr) const
 
template<typename ATTR >
Result< Opt< const typename ATTR::ValueType & > > GetValue (const ATTR &attr) const
 
template<typename ATTR >
Result< Opt< const typename ATTR::ValueType & > > GetValue () const
 
template<typename ATTR >
Result< Opt< const typename ATTR::ValueType & > > GetValue (const ATTR &attr, Int &nesting) const
 
Result< BoolGetBaseValues (const InternedId &attr, const DataType &expectedType, const ValueReceiver< const ConstDataPtr &, Int > &receiver) const
 
template<typename T >
Result< const T & > GetDefaultValue (const T &def=maxon::NullValue< const T & >()) const
 
template<typename T >
Result< const T & > GetConstantValue (const T &def=maxon::NullValue< const T & >()) const
 
Result< BoolGetAttributeModificationsSince (TimeStamp stamp, const ValueReceiver< InternedId, ConstDataPtr > &receiver) const
 
TimeStamp GetAttributeStamp (const InternedId &attr) const
 
Result< NodeSelector< BASE::MUTABLE > > GetNode () const
 
Result< GNodeSelector< BASE::MUTABLE > > GetParent () const
 
Result< GNodeSelector< BASE::MUTABLE > > FindChild (const InternedId &name, NODE_KIND mask) const
 
template<typename NODE >
Result< typename NODE::template Selector< BASE::MUTABLE > > FindInnerNode (const PathBlock &relativePath) const
 
Result< BoolGetInnerNodes (NODE_KIND mask, Bool includeThis, const ValueReceiver< const GNodeSelector< BASE::MUTABLE > & > &receiver) const
 
const NodeSystemGetBase () const
 
const Block< const NodeSystem > & GetBases () const
 
Result< BoolGetAllBases (const ValueReceiver< const NodeSystem & > &receiver) const
 
const NodeTemplate & GetTemplate () const
 
Result< BoolGetAllTemplates (const ValueReceiver< const NodeTemplate & > &receiver) const
 
const NodeSystemDerivationHandler & GetDerivationHandler () const
 

Private Member Functions

 MutableGNode (NodeSystemInterface *system, const GNodeHandle &node)
 
 MutableGNode (NodeSystemInterface *system, GNodeHandle &&node)
 

Additional Inherited Members

- Protected Types inherited from MutableGNodeFunctions< MutableGNodeBase >
using Super = GNodeFunctions< MutableGNodeBase >
 
- Protected Types inherited from GNodeFunctions< BASE >
using Super = BASE
 

Constructor & Destructor Documentation

◆ MutableGNode() [1/3]

MutableGNode ( )
default

Constructs a null node reference.

◆ MutableGNode() [2/3]

MutableGNode ( NodeSystemInterface system,
const GNodeHandle node 
)
private

◆ MutableGNode() [3/3]

MutableGNode ( NodeSystemInterface system,
GNodeHandle &&  node 
)
private

Member Function Documentation

◆ Reset()

void Reset ( )

Resets this @CLASS to the state it has right after default construction. This includes freeing all resources held by this @CLASS.

◆ operator=()

MutableGNode& operator= ( std::nullptr_t  )

Resets this reference to a null reference.

◆ InitFromPath() [1/2]

Result<void> InitFromPath ( NodeSystemInterface system,
const NodePath &  path,
NODE_KIND  check = NODE_KIND::ALL_MASK 
)

Initializes a g-node reference from a node system and a path. If there's no node in the node system for the given path, this reference is set to a null reference. If a node exists but its kind doesn't match the check mask, an IllegalArgumentError is returned.

Parameters
[in]systemThe node system to use.
[in]pathA path which points to a g-node in the given node system.
[in]checkA mask of the expected node kind(s).
Returns
Usually OK (even when path doesn't exist), but an IllegalArgumentError if path exists but doesn't match check.

◆ InitFromPath() [2/2]

Result<void> InitFromPath ( NodeSystemInterface system,
const PathBlock path,
NODE_KIND  check = NODE_KIND::ALL_MASK 
)

Initializes a g-node reference from a node system and a path. If there's no node in the node system for the given path, this reference is set to a null reference. If a node exists but its kind doesn't match the check mask, an IllegalArgumentError is returned.

Parameters
[in]systemThe node system to use.
[in]pathA path which points to a g-node in the given node system.
[in]checkA mask of the expected node kind(s).
Returns
Usually OK (even when path doesn't exist), but an IllegalArgumentError if path exists but doesn't match check.