Open Search
    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< TrivialDataPtr, CORENODE_PORT_FLAGS > > &args)>
     

    Functions

     MAXON_INTERNED_ID ("Root", RootNodeId)
     
    template<typename N , typename... ARGS>
    Result< typename std::decay< typename GetSignature< decltype(&N::Init)>::Parameters::template At< 0 >::type >::typeCreateNode (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 >::typeCreateNode (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())
     

    Variables

     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.

    Parameters
    [in]CLSThe 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]idThe 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.

    Parameters
    [in]CLSThe 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]idThe identifier to use for the registry entry.
    [in]METAAdditional 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.

    Parameters
    [in]CLSThe 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]idThe 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.

    Parameters
    [in]CLSThe 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]idThe identifier to use for the registry entry.
    [in]METAAdditional 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.