nodeslib.h File Reference

Classes

class  NodesLib
 
struct  NodesLib::Variant
 

Namespaces

 maxon
 
 maxon::nodes
 

Macros

#define PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE(id, enable, CNT, ...)
 
#define MAXON_DECLARATION_REGISTER_BUILTINNODE(id, ...)
 
#define MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE(id, enable, ...)
 
#define PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE_DELEGATE(id, enable, CNT, ...)
 
#define MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE_DELEGATE(id, enable, ...)
 

Macro Definition Documentation

◆ PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE

#define PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE (   id,
  enable,
  CNT,
  ... 
)

◆ MAXON_DECLARATION_REGISTER_BUILTINNODE

#define MAXON_DECLARATION_REGISTER_BUILTINNODE (   id,
  ... 
)

Registers a built-in node at the BuiltinNodes registry. After the macro you have to add a code block which returns the NodeTemplate to register. The code block will be executed lazily as it will be wrapped by NodesLib::CreateLazyTemplate.

Parameters
[in]idThe identifier to use.
[in]...This optional argument is passed as second argument to NodesLib::CreateLazyTemplate. It allows to control for which node system classes the node shall be supported.

◆ MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE

#define MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE (   id,
  enable,
  ... 
)

Registers a built-in node at the BuiltinNodes registry. Node enabled state will be tied to the #enable parameter. One can link node to a MAXON_FEATURE_CONFIGURATION_BRANCHES value. After the macro you have to add a code block which returns the NodeTemplate to register. The code block will be executed lazily as it will be wrapped by NodesLib::CreateLazyTemplate. Note that using an enable check in the supplied code block will make the node not instantiate but it would still be registered and visible in node list.

Parameters
[in]idThe identifier to use.
[in]enableConfiguration flag to control if node is to be registered or not.
[in]...This optional argument is passed as second argument to NodesLib::CreateLazyTemplate. It allows to control for which node system classes the node shall be supported.

◆ PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE_DELEGATE

#define PRIVATE_MAXON_DECLARATION_REGISTER_BUILTINNODE_DELEGATE (   id,
  enable,
  CNT,
  ... 
)

◆ MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE_DELEGATE

#define MAXON_DECLARATION_REGISTER_FEATURE_BUILTINNODE_DELEGATE (   id,
  enable,
  ... 
)

Registers a built-in node at the BuiltinNodes registry. Node enabled state will be tied to the #enable parameter. One can link node to a MAXON_FEATURE_CONFIGURATION_BRANCHES value. After the macro you have to add a code block for a function with the parameter list (const InstantiationTrace& parent, const TemplateArguments& args) and return type Result<MutableRoot>, this function will be used to implement the InstantiateImpl method of the registered node template (via NodesLib::CreateTemplateFromDelegate). Note that using an enable check in the supplied code block will make the node not instantiate but it would still be registered and visible in node list.

Parameters
[in]idThe identifier to use.
[in]enableConfiguration flag to control if node is to be registered or not.
[in]...This optional argument is passed as argument to NodesLib::CreateTemplateFromDelegate. It allows to control for which node system classes the node shall be supported.