corenodes.h File Reference

Classes

struct   PortInfo
class   CoreNodeBaseInterface
class   CoreNodeInterface
class   MicroNodeGroupInterface
struct   MicroNodeGroupInterface::PrivateAutoCreatePortInfo
class   CoreNodeGroupInterface
struct   CoreNodeFactoryFunctionHelper< SINGLE_PARAM >
struct   CoreNodeFactoryFunctionHelper< true >
struct   SetParameters< CORENODE, typename >
struct   SetParameters< CORENODE, typename SFINAEHelper< void, typename CORENODE::Parameters >::type >

Namespaces

  maxon
  maxon::corenodes
  maxon::corenodes::details

Macros

#define  PRIVATE_MAXON_REGISTER_CORE_NODE_A (name, cls, initMetadata, line, ...)
#define  PRIVATE_MAXON_REGISTER_CORE_NODE (name, cls, meta, line, ...)
#define  MAXON_CORENODE_REGISTER (CLS, id, ...)
#define  MAXON_CORENODE_REGISTER_WITH_METADATA (CLS, id, META, ...)
#define  MAXON_CORENODE_REGISTER_PURE (CLS, id, ...)
#define  MAXON_CORENODE_REGISTER_PURE_WITH_METADATA (CLS, id, META, ...)

Typedefs

using  CoreNodeFactory = Factory< CoreNode(const DataDictionary &)>
using  Optimizer = Delegate< Result< Opt< OptimizationInfo > >(const CoreNode &node, const Block< const Tuple< ConstDataPtr, PORT_FLAGS > > &args)>

函数

template<typename N , typename... ARGS>
Result< typename std::decay< typename GetSignature< decltype(&N::Init)>::Parameters::template At< 0 >::type >::type >  CreateNode (OverloadRank0, const Id &nodeId, ARGS &&... args)
template<typename N , typename = decltype(&N::GetPortType), typename... ARGS>
Result< typename std::decay< typename GetSignature< decltype(&N::Init)>::Parameters::template At< 0 >::type >::type >  CreateNode (OverloadRank1, const Id &nodeId, ARGS &&... args)
template<typename N , typename... ARGS>
Result< CoreNode >  CreateNode (const Id &nodeId, ARGS &&... args)
template<typename N >
Result< CoreNode >  CreateNode ()
  MAXON_MEMBERFUNCTION_DETECTOR (Optimize)
template<typename NODE , typename = typename std::enable_if<maxon::corenodes::details::HasOptimize<NODE>::value>::type>
Result< void >  AddOptimizer (DataDictionary &meta, Bool dummy=false)
template<typename NODE , typename = typename std::enable_if<!maxon::corenodes::details::HasOptimize<NODE>::value>::type>
ResultOk< void >  AddOptimizer (DataDictionary &meta)
  MAXON_REGISTRY (CoreNodeFactory, CoreNodes, "net.maxon.corenode.registry.corenodes")
template<typename CORENODE >
Result< CoreNodeFactory >  CreateCoreNodeFactory (DataDictionary &&meta=DataDictionary())

变量

  NONE
  DEEP
  PORTS
  NANO_EMBEDDED
  NANO
  BLOCK
  HIDDEN_PORTS
  VERBOSE

Macro Definition Documentation

◆  PRIVATE_MAXON_REGISTER_CORE_NODE_A

#define PRIVATE_MAXON_REGISTER_CORE_NODE_A (   name,
  cls,
  initMetadata,
  line,
  ...  
)

◆  PRIVATE_MAXON_REGISTER_CORE_NODE

#define PRIVATE_MAXON_REGISTER_CORE_NODE (   name,
  cls,
  meta,
  line,
  ...  
)

◆  MAXON_CORENODE_REGISTER

#define MAXON_CORENODE_REGISTER (   CLS,
  id,
  ...  
)

Registers the given core node implementation class #CLS at the CoreNodes registry. The class has to contain an Init function with one or two parameters where the first parameter is either a MicroNodeGroupRef or a CoreNodeGroupRef and the optional second one is a DataDictionary which receives the parameters given to the factory's Create method. For an example of such a class have a look at MicroNodeGroupInterface.

参数
[in] CLS The class which implements the node. It has to contain an Init function with either a MicroNodeGroupRef or a CoreNodeGroupRef as first parameter. If CLS is a class template, you have to specify the template arguments in ...
[in] id The identifier to use for the registry entry.
[in] ... Optional template arguments if CLS is a class template. The identifier will be extended by the arguments, see IdBuilder.

◆  MAXON_CORENODE_REGISTER_WITH_METADATA

#define MAXON_CORENODE_REGISTER_WITH_METADATA (   CLS,
  id,
  META,
  ...  
)

Registers the given core node implementation class #CLS at the CoreNodes registry. The class has to contain an Init function with one or two parameters where the first parameter is either a MicroNodeGroupRef or a CoreNodeGroupRef and the optional second one is a DataDictionary which receives the parameters given to the factory's Create method. For an example of such a class have a look at MicroNodeGroupInterface.

参数
[in] CLS The class which implements the node. It has to contain an Init function with either a MicroNodeGroupRef or a CoreNodeGroupRef as first parameter. If CLS is a class template, you have to specify the template arguments in ...
[in] id The identifier to use for the registry entry.
[in] META Additional code to set up meta data for the core node. Within the code you have access to the variable #meta of type DataDictionary which is used to setup the factory's meta data. The meta data can be accessed later through the factory's base interface DataDictionaryObjectInterface.
[in] ... Optional template arguments if CLS is a class template. The identifier will be extended by the arguments, see IdBuilder.

◆  MAXON_CORENODE_REGISTER_PURE

#define MAXON_CORENODE_REGISTER_PURE (   CLS,
  id,
  ...  
)

Registers the given core node implementation class #CLS at the CoreNodes registry, see MAXON_CORENODE_REGISTER. This macro should be used for core nodes which implement a pure function, it sets the CoreNodeInterface::Pure attribute of the factory to true.

参数
[in] CLS The class which implements the node. It has to contain an Init function with either a MicroNodeGroupRef or a CoreNodeGroupRef as first parameter. If CLS is a class template, you have to specify the template arguments in ...
[in] id The identifier to use for the registry entry.
[in] ... Optional template arguments if CLS is a class template. The identifier will be extended by the arguments, see IdBuilder.

◆  MAXON_CORENODE_REGISTER_PURE_WITH_METADATA

#define MAXON_CORENODE_REGISTER_PURE_WITH_METADATA (   CLS,
  id,
  META,
  ...  
)

Registers the given core node implementation class #CLS at the CoreNodes registry, see MAXON_CORENODE_REGISTER_WITH_METADATA. This macro should be used for core nodes which implement a pure function, it sets the CoreNodeInterface::Pure attribute of the factory to true.

参数
[in] CLS The class which implements the node. It has to contain an Init function with either a MicroNodeGroupRef or a CoreNodeGroupRef as first parameter. If CLS is a class template, you have to specify the template arguments in ...
[in] id The identifier to use for the registry entry.
[in] META Additional code to set up meta data for the core node. Within the code you have access to the variable #meta of type DataDictionary which is used to setup the factory's meta data. The meta data can be accessed later through the factory's base interface DataDictionaryObjectInterface.
[in] ... Optional template arguments if CLS is a class template. The identifier will be extended by the arguments, see IdBuilder.

Variable Documentation

◆  NONE

NONE

No flags.

◆  DEEP

DEEP

Write groups deeply, so the complete graph is written up to the micro node level.

◆  PORTS

PORTS

Include ports.

◆  NANO_EMBEDDED

NANO_EMBEDDED

Write nano nodes embedded in their micro nodes.

◆  NANO

NANO

Write the nano graph instead of the core node graph.

◆  BLOCK

BLOCK

Write the compiled block graph instead of the core node graph.

◆  HIDDEN_PORTS

HIDDEN_PORTS

Include hidden ports.

◆  VERBOSE

VERBOSE

Verbose output with a lot of information.