MicroNode Class Reference

#include <corenodes_instances.h>

Inheritance diagram for MicroNode:

详细描述

MicroNode is the base class of all micro node implementation classes such as BasicMicroNode or BatchMicroNode . To implement a new custom micro node, you usually write a subclass of BasicMicroNode .

There is a 1:1 correspondence between a MicroNodeInterface instance and a MicroNode instance: Each MicroNodeInterface instance holds its own MicroNode instance, see MicroNodeInterface::GetImplementation() and MicroNode::GetNode() .

Although MicroNode itself has no data members, it is ensured by its subclasses that the data layout always starts with MicroNode::Base . MicroNode::ToBase() does the corresponding cast.

Classes

class   AllowsChild
class   AllowsParent
class   Base
struct   Child
class   Lazy
class   PortsAccess
struct   Source

Public Types

enum   TYPE {
   INVALID ,
   BASIC ,
   BATCH ,
   SPLIT_MERGE ,
   ITERATION ,
   SEQUENCING ,
   RECURSION_STEP ,
   CURRENT_ITERATION_VALUE ,
   CURRENT_ITERATION_VALUE_WITH_INIT ,
   COPY ,
   SET_TRUE ,
   NOP ,
   SUBTRACTIVE_DOMAIN ,
   VARIABLE_MASK ,
   VALUE_PORT_MASK ,
   INPUT_PORT_MASK ,
   EXPORTED_PORT ,
   VIRTUAL_INPUT_PORT ,
   OUTPUT_PORT_MASK ,
   VARIABLE ,
   PORT_MASK ,
   FACTOR_MASK ,
   ROOT ,
   WHILE_CONDITION ,
   INDEFINITE_LOOP ,
   TOP_LEVEL_FACTOR_MASK ,
   FRAME_MASK ,
   TOP_LEVEL_FRAME ,
   FRAME ,
   EVENT_MASK ,
   EVENT ,
   FACTOR_HEAD_MASK ,
   DEFINITE_FACTOR_HEAD_MASK ,
   CONTAINER_LOOP_HEAD_MASK ,
   CONTAINER_OUTPUT_HEAD_MASK ,
   DEFINITE_FACTOR_MASK ,
   CONTAINER_OUTPUT_ELEMENT_MASK ,
   INDEXABLE_FACTOR_MASK ,
   DIMENSIONAL_FACTOR_TEST ,
   CONTAINER_LOOP_MASK ,
   INDEFINITE_LOOP_HEAD ,
   RECURSION_HEAD ,
   DEFINITE_LOOP_HEAD ,
   CONTAINER_LOOP_HEAD ,
   ARRAY_LOOP_HEAD ,
   CONTAINER_LOOP ,
   ARRAY_LOOP ,
   CONTAINER_OUTPUT_HEAD ,
   CONTAINER_OUTPUT_ELEMENT ,
   ARRAY_OUTPUT_ELEMENT ,
   DEFINITE_LOOP ,
   GENERIC_DEFINITE_LOOP ,
   RECURSION ,
   INPUT_ELEMENT_MASK ,
   ARRAY_INPUT_ELEMENT ,
   CONTAINER_INPUT_ELEMENT ,
   INPUT_MASK ,
   OUTPUT_MASK ,
   CONTAINER_MASK ,
   CONTAINER ,
   ARRAY_CONTAINER ,
   ARRAY ,
   CONTAINER_OUTPUT_MASK ,
   CONTAINER_OUTPUT ,
   CONTAINER_INPUT_GROUP_MASK ,
   CONTAINER_INPUT_GROUP ,
   ALL
}
enum   FLAGS {
   NONE ,
   STATE ,
   STATE_MODIFIER ,
   LOCAL ,
   PERMANENT ,
   CACHED ,
   DONT_WRAP ,
   CURRENT_ITV ,
   NEXT_ITV ,
   CONTAINER_MEMBER ,
   COMMUTATIVE ,
   STATE_MAPPER ,
   PARAMETER ,
   INPUT_WITHOUT_VALUE ,
   OUTER_DOMAIN ,
   NO_FACTORS ,
   SUSPEND ,
   KEEP_LETTER_CASE ,
   INDEPENDENT ,
   INCLUDE_IN_PREDECESSORS ,
   FACTOR_REFERENCE ,
   OPTIONAL_INPUT ,
   CURRENT_ITV_GROUP ,
   NEXT_ITV_GROUP ,
   HIDDEN ,
   ITV_MASK ,
   ITV_GROUP_MASK ,
   PORT_MODIFIERS ,
   MODIFIERS ,
   ALL
}
enum   PORTSACCESS_FLAGS {
   NONE ,
   ITERATION ,
   CONTAINER_MASK ,
   CONST_MASK ,
   BATCH ,
   BATCH_ACCESS ,
   CONTAINER ,
   CONST_CONTAINER ,
   DIRECT_ACCESS_TEST
}
template<typename PORT >
using  Input = typename PORT::PrivateInput
template<typename... PORTS>
using  端口 = typename PortsAccess < PORTSACCESS_FLAGS::NONE , PORTS... >::Members

公共成员函数

enum maxon::corenodes::MicroNode::TYPE   MAXON_ENUM_ORDERED_FLAGS_CLASS ( TYPE )
enum maxon::corenodes::MicroNode::FLAGS   MAXON_ENUM_FLAGS_CLASS ( FLAGS )
const Base ToBase () const
Base ToBase ()
Bool   HasSameClass (const MicroNode &other) const
const MicroNodeInterface GetNode () const
MicroNodeInterface GetNode ()
TYPE   GetType () const
FLAGS   GetFlags () const
enum maxon::corenodes::MicroNode::PORTSACCESS_FLAGS   MAXON_ENUM_FLAGS_CLASS ( PORTSACCESS_FLAGS )

静态公共成员函数

static void  InitUserData ()
static void  GetLlvmAssembly (const LlvmGlobalsReceiver &)

Public Attributes

class maxon::corenodes::MicroNode::Base   MAXON_ENUM_FLAGS_CLASS

静态公共属性

static const TYPE   INPUT_TYPE_MASK
static const TYPE   OUTPUT_TYPE_MASK
static const FLAGS   MICRONODE_FLAGS

Member Typedef Documentation

◆  Input

using Input = typename PORT::PrivateInput

◆  端口

using 端口 = typename PortsAccess < PORTSACCESS_FLAGS::NONE , PORTS...>::Members

You have to use {const Ports<...>&} as the parameter type of the Process method of a BasicMicroNode .

Template Parameters
PORTS The ports which shall be accessed within the Process method.

Member Enumeration Documentation

◆  TYPE

enum TYPE
strong

This enum lists the defined micro node types.

Enumerator
INVALID 
BASIC 

Enum value for BasicMicroNode .

BATCH 
SPLIT_MERGE 
ITERATION 
SEQUENCING 
RECURSION_STEP 
CURRENT_ITERATION_VALUE 
CURRENT_ITERATION_VALUE_WITH_INIT 
COPY 
SET_TRUE 
NOP 
SUBTRACTIVE_DOMAIN 
VARIABLE_MASK 
VALUE_PORT_MASK 
INPUT_PORT_MASK 
EXPORTED_PORT 
VIRTUAL_INPUT_PORT 
OUTPUT_PORT_MASK 
VARIABLE 
PORT_MASK 
FACTOR_MASK 
ROOT 
WHILE_CONDITION 
INDEFINITE_LOOP 
TOP_LEVEL_FACTOR_MASK 
FRAME_MASK 
TOP_LEVEL_FRAME 
FRAME 
EVENT_MASK 
EVENT 
FACTOR_HEAD_MASK 
DEFINITE_FACTOR_HEAD_MASK 
CONTAINER_LOOP_HEAD_MASK 
CONTAINER_OUTPUT_HEAD_MASK 
DEFINITE_FACTOR_MASK 
CONTAINER_OUTPUT_ELEMENT_MASK 
INDEXABLE_FACTOR_MASK 
DIMENSIONAL_FACTOR_TEST 
CONTAINER_LOOP_MASK 
INDEFINITE_LOOP_HEAD 
RECURSION_HEAD 
DEFINITE_LOOP_HEAD 
CONTAINER_LOOP_HEAD 
ARRAY_LOOP_HEAD 
CONTAINER_LOOP 
ARRAY_LOOP 
CONTAINER_OUTPUT_HEAD 
CONTAINER_OUTPUT_ELEMENT 
ARRAY_OUTPUT_ELEMENT 
DEFINITE_LOOP 
GENERIC_DEFINITE_LOOP 
RECURSION 
INPUT_ELEMENT_MASK 
ARRAY_INPUT_ELEMENT 
CONTAINER_INPUT_ELEMENT 
INPUT_MASK 
OUTPUT_MASK 
CONTAINER_MASK 
CONTAINER 
ARRAY_CONTAINER 
ARRAY 
CONTAINER_OUTPUT_MASK 
CONTAINER_OUTPUT 
CONTAINER_INPUT_GROUP_MASK 
CONTAINER_INPUT_GROUP 
ALL 

◆  FLAGS

enum FLAGS
strong

This enum lists the flags for micro nodes as returned by GetFlags() .

Enumerator
NONE 

No flag set.

STATE 
STATE_MODIFIER 
LOCAL 
PERMANENT 
CACHED 
DONT_WRAP 
CURRENT_ITV 
NEXT_ITV 
CONTAINER_MEMBER 
COMMUTATIVE 
STATE_MAPPER 
PARAMETER 
INPUT_WITHOUT_VALUE 
OUTER_DOMAIN 
NO_FACTORS 
SUSPEND 
KEEP_LETTER_CASE 
INDEPENDENT 
INCLUDE_IN_PREDECESSORS 
FACTOR_REFERENCE 
OPTIONAL_INPUT 
CURRENT_ITV_GROUP 
NEXT_ITV_GROUP 
HIDDEN 
ITV_MASK 
ITV_GROUP_MASK 
PORT_MODIFIERS 
MODIFIERS 
ALL 

◆  PORTSACCESS_FLAGS

enum PORTSACCESS_FLAGS
strong
Enumerator
NONE 
ITERATION 
CONTAINER_MASK 
CONST_MASK 
BATCH 
BATCH_ACCESS 
CONTAINER 
CONST_CONTAINER 
DIRECT_ACCESS_TEST 

成员函数文档编制

◆  MAXON_ENUM_ORDERED_FLAGS_CLASS()

enum maxon::corenodes::MicroNode::TYPE MAXON_ENUM_ORDERED_FLAGS_CLASS ( TYPE   )

◆  MAXON_ENUM_FLAGS_CLASS() [1/2]

enum maxon::corenodes::MicroNode::FLAGS MAXON_ENUM_FLAGS_CLASS ( FLAGS   )

◆  ToBase() [1/2]

const Base & ToBase ( ) const

Casts this MicroNode to its Base object. Each MicroNode has a Base as its first data member.

返回
This object, casted to Base .

◆  ToBase() [2/2]

Base & ToBase ( )

Casts this MicroNode to its Base object. Each MicroNode has a Base as its first data member.

返回
This object, casted to Base .

◆  HasSameClass()

Bool HasSameClass ( const MicroNode other ) const

Checks if this micro node has the same implementation class as #other.

参数
[in] other Another micro node.
返回
This object, casted to MicroNode .

◆  GetNode() [1/2]

const MicroNodeInterface * GetNode ( ) const

Returns the MicroNodeInterface instance which owns this MicroNode .

返回
The owning MicroNodeInterface .

◆  GetNode() [2/2]

MicroNodeInterface * GetNode ( )

Returns the MicroNodeInterface instance which owns this MicroNode .

返回
The owning MicroNodeInterface .

◆  GetType()

TYPE GetType ( ) const

Returns the type of this micro node.

返回
Type of this micro node.

◆  GetFlags()

FLAGS GetFlags ( ) const

Returns the flags of this micro node.

返回
Flags of this micro node.

◆  MAXON_ENUM_FLAGS_CLASS() [2/2]

enum maxon::corenodes::MicroNode::PORTSACCESS_FLAGS MAXON_ENUM_FLAGS_CLASS ( PORTSACCESS_FLAGS   )

◆  InitUserData()

static void InitUserData ( )
static

◆  GetLlvmAssembly()

static void GetLlvmAssembly ( const LlvmGlobalsReceiver )
static

Member Data Documentation

◆  MAXON_ENUM_FLAGS_CLASS

class maxon::corenodes::MicroNode::Base MAXON_ENUM_FLAGS_CLASS

◆  INPUT_TYPE_MASK

const TYPE INPUT_TYPE_MASK static

◆  OUTPUT_TYPE_MASK

const TYPE OUTPUT_TYPE_MASK static

◆  MICRONODE_FLAGS

const FLAGS MICRONODE_FLAGS static