Open Search
    nodesystem.h File Reference

    Classes

    struct  GNodeDataPtr
     
    class  GNodeHandle
     
    class  NodeSystemInterface
     
    class  NodeSystem
     
    class  GNodeBase
     
    class  MutableGNodeBase
     
    class  GNodeResultBase< SUPER >
     
    class  GNodeFunctions< BASE >
     
    class  GNode
     
    class  MutableGNodeFunctions< BASE >
     
    class  MutableGNode
     
    class  GNodeIteratorBase
     
    class  GNodeIterator< NODE >
     
    class  NodeFunctions< BASE >
     
    class  Node
     
    class  MutableNodeFunctions< BASE >
     
    class  MutableNode
     
    class  MutableRoot
     
    class  PortListFunctions< BASE >
     
    class  PortList
     
    class  MutablePortListFunctions< BASE >
     
    class  MutablePortList
     
    class  PortFunctions< BASE >
     
    class  Port
     
    class  MutablePortFunctions< BASE >
     
    class  MutablePort
     

    Namespaces

     maxon
     
     maxon::nodes
     
     maxon::nodes::details
     

    Macros

    #define MAXON_CPP20_REQUIRES(...)
     
    #define PRIVATE_MAXON_NODE_CTOR(name, super)
     
    #define PRIVATE_MAXON_NODEFN_PROLOGUE
     
    #define PRIVATE_MAXON_NODEFN_MEMBERS(name, super)
     
    #define PRIVATE_MAXON_NODE_MEMBERS(name, super)
     

    Typedefs

    template<Bool MUTABLE>
    using GNodeSelector = typename std::conditional< MUTABLE, MutableGNode, GNode >::type
     
    template<Bool MUTABLE>
    using PortListSelector = typename std::conditional< MUTABLE, MutablePortList, PortList >::type
     
    template<Bool MUTABLE>
    using PortSelector = typename std::conditional< MUTABLE, MutablePort, Port >::type
     
    using Connection = Tuple< Port, Wires >
     
    using MutableConnection = Tuple< MutablePort, Wires >
     
    template<Bool MUTABLE>
    using ConnectionSelector = typename std::conditional< MUTABLE, MutableConnection, Connection >::type
     
    using UpdateAssetEntry = Tuple< AssetReference, AssetBase >
     
    template<Bool MUTABLE>
    using NodeSelector = typename std::conditional< MUTABLE, MutableNode, Node >::type
     
    template<typename BASE >
    using NodeFunctionsSuper = typename std::conditional< BASE::HAS_ERROR, typename std::conditional< BASE::MUTABLE, MutableGNodeFunctions< BASE >, GNodeFunctions< BASE > >::type, GNodeSelector< BASE::MUTABLE > >::type
     
    template<typename BASE >
    using PortFunctionsSuper = typename std::conditional< BASE::HAS_ERROR, typename std::conditional< BASE::MUTABLE, MutablePortListFunctions< BASE >, PortListFunctions< BASE > >::type, PortListSelector< BASE::MUTABLE > >::type
     

    Enumerations

    enum class  GNODE_FLAGS : UInt64 {
      NONE ,
      DIRECT_PORT ,
      DERIVED_PORT_INHERITED ,
      DERIVED_PORT_SYNTHESIZED ,
      CONTEXT_SOURCE ,
      CONTEXT_TARGET ,
      FUNCTION_INSTANTIATION ,
      CONTEXT_PARAMETER_PORT ,
      TAPPING_PORT ,
      DERIVATION_FILTER_SOURCE ,
      DERIVATION_FILTER_TARGET ,
      ALL_MASK
    }
     
    enum class  VALUEMODE : Char {
      NONE ,
      DYNAMIC ,
      CONSTANT ,
      UNKNOWN_CONSTANT
    }
     

    Functions

    class NodeSystemData MAXON_FORWARD ("maxon/nodesystem_data.h")
     
    class NodeSystemClass MAXON_FORWARD ("maxon/nodesystem_class.h")
     
    class NodeSystemDerivationHandler MAXON_FORWARD ("maxon/nodesystem_derivation.h")
     
    class TemplateArguments MAXON_FORWARD ("maxon/nodetemplate.h")
     
    enum maxon::nodes::GNODE_FLAGS UInt64 MAXON_ENUM_FLAGS (GNODE_FLAGS)
     
    enum maxon::nodes::VALUEMODE Char MAXON_ENUM_LIST (VALUEMODE)
     
    template<typename T >
    Result< T > ConstructGNodeResult (typename ConstIf< NodeSystemInterface, !T::MUTABLE >::type *system, Result< GNodeHandle > &&handle)
     
     MAXON_DATATYPE (MutableRoot, "net.maxon.node.datatype.mutableroot")
     

    Variables

     NONE
     
     DIRECT_PORT
     
     DERIVED_PORT_INHERITED
     
     DERIVED_PORT_SYNTHESIZED
     
     CONTEXT_SOURCE
     
     CONTEXT_TARGET
     
     FUNCTION_INSTANTIATION
     
     CONTEXT_PARAMETER_PORT
     
     TAPPING_PORT
     
     DERIVATION_FILTER_SOURCE
     
     DERIVATION_FILTER_TARGET
     
     ALL_MASK
     
     DYNAMIC
     
     CONSTANT
     
     UNKNOWN_CONSTANT
     
     DIRECT_ATTRIBUTES
     
     BASE_ATTRIBUTES
     
     DERIVED_ATTRIBUTES
     
     BASES
     
     ALL_BASES
     
     NO_CONNECTIONS
     
     INDUCED_CONNECTIONS
     
     ATTRIBUTES
     
     CLEANUP
     
     FOR_GROUP
     
    maxon::nodes::NodeSystemInterface MAXON_ENUM_LIST
     
    maxon::nodes::details::GNodeResultBase MAXON_ENUM_FLAGS_CLASS
     

    Macro Definition Documentation

    ◆ MAXON_CPP20_REQUIRES

    #define MAXON_CPP20_REQUIRES (   ...)

    LiteralId (constexpr) value type not allowed on ports.

    See also
    DataDescriptionInterface::Set

    ◆ PRIVATE_MAXON_NODE_CTOR

    #define PRIVATE_MAXON_NODE_CTOR (   name,
      super 
    )

    ◆ PRIVATE_MAXON_NODEFN_PROLOGUE

    #define PRIVATE_MAXON_NODEFN_PROLOGUE

    ◆ PRIVATE_MAXON_NODEFN_MEMBERS

    #define PRIVATE_MAXON_NODEFN_MEMBERS (   name,
      super 
    )

    ◆ PRIVATE_MAXON_NODE_MEMBERS

    #define PRIVATE_MAXON_NODE_MEMBERS (   name,
      super 
    )

    Variable Documentation

    ◆ NONE

    NONE

    No flag set.

    Don't do any finalizations at all.

    No flags.

    The port doesn't have a value at all.

    ◆ DIRECT_PORT

    DIRECT_PORT

    This flag is set for a port which has been created directly by user code, as opposed to derived ports (DERIVED_PORT_INHERITED, DERIVED_PORT_SYNTHESIZED) which are created based on port bundles of connected ports.

    ◆ DERIVED_PORT_INHERITED

    DERIVED_PORT_INHERITED

    This flag is set for a port which has been created (or would have been created) during the derivation of inherited ports, namely when a port derives an inner port from an incoming connection from a port bundle.

    See also
    DIRECT_PORT
    DERIVED_PORT_SYNTHESIZED

    ◆ DERIVED_PORT_SYNTHESIZED

    DERIVED_PORT_SYNTHESIZED

    This flag is set for a port which has been created (or would have been created) during the derivation of synthesized ports, namely when a port derives an inner port from an outgoing connection to a port bundle.

    See also
    DIRECT_PORT
    DERIVED_PORT_INHERITED

    ◆ CONTEXT_SOURCE

    CONTEXT_SOURCE

    This flag is set for a port which is a source port of a CONTEXT wire (or which has an enclosing port with that property).

    ◆ CONTEXT_TARGET

    CONTEXT_TARGET

    This flag is set for a port which is a target port of a CONTEXT wire (or which has an enclosing port with that property).

    ◆ FUNCTION_INSTANTIATION

    FUNCTION_INSTANTIATION

    This flag is set for a port which has the FunctionParameters attribute set (or which has an enclosing port with that property). Such a port provides a context containing the function parameters, and it instantiates its predecessor subgraph for a compilation into a function.

    ◆ CONTEXT_PARAMETER_PORT

    CONTEXT_PARAMETER_PORT

    This flag is set for the context port of a built-in NODE::CONTEXT::GET node.

    ◆ TAPPING_PORT

    TAPPING_PORT

    This flag is set for a port for which the TappingPort attribute is true (or which has an enclosing port with that property).

    ◆ DERIVATION_FILTER_SOURCE

    DERIVATION_FILTER_SOURCE

    This flag can be set for a port to enable connection filtering for derivation: A connection from a port marked in such a way to a port which has the DERIVATION_FILTER_TARGET flag set has to pass the filter function NodeSystemDerivationHandlerInterface::FilterDerivationConnection, otherwise it isn't reported by PortFunctions::GetConnections.

    ◆ DERIVATION_FILTER_TARGET

    DERIVATION_FILTER_TARGET

    See DERIVATION_FILTER_SOURCE.

    ◆ ALL_MASK

    ALL_MASK

    Combination of all flags of this enum.

    ◆ DYNAMIC

    DYNAMIC

    The port's value is dynamic, so it can't be computed during validation because it depends on values not known at that time.

    ◆ CONSTANT

    CONSTANT

    The port's value is a known constant, so the EffectivePortValue attribute yields a valid value.

    ◆ UNKNOWN_CONSTANT

    UNKNOWN_CONSTANT

    The port's value is an unknown constant. This mode happens when the value mode CONSTANT is injected into a template/group but the corresponding constant value is not injected (because the template/group isn't interested in the value itself).

    ◆ DIRECT_ATTRIBUTES

    DIRECT_ATTRIBUTES

    Writes direct attributes (those which are set directly at the node system).

    ◆ BASE_ATTRIBUTES

    BASE_ATTRIBUTES

    Writes base attributes (those which are inherited from a base node system).

    ◆ DERIVED_ATTRIBUTES

    DERIVED_ATTRIBUTES

    Writes derived attributes.

    ◆ BASES

    BASES

    Also writes the node systems which are used as bases for the node system.

    ◆ ALL_BASES

    ALL_BASES

    Like BASES, but also writes bases of bases etc.

    ◆ NO_CONNECTIONS

    NO_CONNECTIONS

    No connections will be written.

    ◆ INDUCED_CONNECTIONS

    INDUCED_CONNECTIONS

    Induced connections will be written.

    ◆ ATTRIBUTES

    ATTRIBUTES

    Combination of all attribute flags, used to write all attributes.

    ◆ CLEANUP

    CLEANUP

    Run clean-up finalizations.

    ◆ FOR_GROUP

    FOR_GROUP

    Deprecated.