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 ,
  EXPLICIT_PORT ,
  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 ,
  UNIQUE_GLOBAL_CONTEXT_PORT ,
  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
 
 EXPLICIT_PORT
 
 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
 
 UNIQUE_GLOBAL_CONTEXT_PORT
 
 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.

◆ EXPLICIT_PORT

EXPLICIT_PORT

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

◆ DIRECT_PORT

DIRECT_PORT

◆ DERIVED_PORT_INHERITED

DERIVED_PORT_INHERITED

This flag is set for a port which has been created (or would have been created if it hadn't been created explicitly by user code) during the derivation of inherited ports, namely when a port derives an inner port from an incoming connection from a port bundle.

See also
EXPLICIT_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 if it hadn't been created explicitly by user code) during the derivation of synthesized ports, namely when a port derives an inner port from an outgoing connection to a port bundle.

See also
EXPLICIT_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.

◆ UNIQUE_GLOBAL_CONTEXT_PORT

UNIQUE_GLOBAL_CONTEXT_PORT

This flag is set for a child port of the GlobalContext port when that port shouldn't receive the value of a shared global context, but its own unique context value. This is accomplished by changing the port id of the port on the way to the root node to be the full path to the port (excluding the identifiers for input list and GlobalContext, so e.g. A/u instead of A<GC/u in the example below). E.g., in the following example there are two child nodes A, B, and each of them has a shared global context s and a unique global context u. At root level, there are distinct ports for the unique global contexts of A and B.

◆ 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.