Blender V4.3
node_type.h File Reference
#include "graph/node_enum.h"
#include "util/array.h"
#include "util/map.h"
#include "util/param.h"
#include "util/string.h"
#include "util/vector.h"

Go to the source code of this file.

Classes

struct  SocketType
 
struct  NodeType
 

Macros

#define NODE_DECLARE
 
#define NODE_DEFINE(structname)
 
#define NODE_ABSTRACT_DECLARE
 
#define NODE_ABSTRACT_DEFINE(structname)
 
#define SOCKET_OFFSETOF(T, name)   offsetof(T, name)
 
#define SOCKET_SIZEOF(T, name)   (sizeof(T::name))
 
#define SOCKET_DEFINE(name, ui_name, default_value, datatype, TYPE, flags, ...)
 
#define SOCKET_BOOLEAN(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, bool, SocketType::BOOLEAN, 0, ##__VA_ARGS__)
 
#define SOCKET_INT(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, int, SocketType::INT, 0, ##__VA_ARGS__)
 
#define SOCKET_UINT(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, uint, SocketType::UINT, 0, ##__VA_ARGS__)
 
#define SOCKET_UINT64(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, uint64_t, SocketType::UINT64, 0, ##__VA_ARGS__)
 
#define SOCKET_FLOAT(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float, SocketType::FLOAT, 0, ##__VA_ARGS__)
 
#define SOCKET_COLOR(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::COLOR, 0, ##__VA_ARGS__)
 
#define SOCKET_VECTOR(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::VECTOR, 0, ##__VA_ARGS__)
 
#define SOCKET_POINT(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::POINT, 0, ##__VA_ARGS__)
 
#define SOCKET_NORMAL(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::NORMAL, 0, ##__VA_ARGS__)
 
#define SOCKET_POINT2(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, float2, SocketType::POINT2, 0, ##__VA_ARGS__)
 
#define SOCKET_STRING(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, ustring, SocketType::STRING, 0, ##__VA_ARGS__)
 
#define SOCKET_TRANSFORM(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, Transform, SocketType::TRANSFORM, 0, ##__VA_ARGS__)
 
#define SOCKET_ENUM(name, ui_name, values, default_value, ...)
 
#define SOCKET_NODE(name, ui_name, node_type, ...)
 
#define SOCKET_BOOLEAN_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_INT_ARRAY(name, ui_name, default_value, ...)    SOCKET_DEFINE(name, ui_name, default_value, array<int>, SocketType::INT_ARRAY, 0, ##__VA_ARGS__)
 
#define SOCKET_FLOAT_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_COLOR_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_VECTOR_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_POINT_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_NORMAL_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_POINT2_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_STRING_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_TRANSFORM_ARRAY(name, ui_name, default_value, ...)
 
#define SOCKET_NODE_ARRAY(name, ui_name, node_type, ...)
 
#define SOCKET_IN_BOOLEAN(name, ui_name, default_value, ...)
 
#define SOCKET_IN_INT(name, ui_name, default_value, ...)
 
#define SOCKET_IN_FLOAT(name, ui_name, default_value, ...)
 
#define SOCKET_IN_COLOR(name, ui_name, default_value, ...)
 
#define SOCKET_IN_VECTOR(name, ui_name, default_value, ...)
 
#define SOCKET_IN_POINT(name, ui_name, default_value, ...)
 
#define SOCKET_IN_NORMAL(name, ui_name, default_value, ...)
 
#define SOCKET_IN_STRING(name, ui_name, default_value, ...)
 
#define SOCKET_IN_CLOSURE(name, ui_name, ...)
 
#define SOCKET_OUT_BOOLEAN(name, ui_name)
 
#define SOCKET_OUT_INT(name, ui_name)
 
#define SOCKET_OUT_FLOAT(name, ui_name)
 
#define SOCKET_OUT_COLOR(name, ui_name)
 
#define SOCKET_OUT_VECTOR(name, ui_name)
 
#define SOCKET_OUT_POINT(name, ui_name)
 
#define SOCKET_OUT_NORMAL(name, ui_name)
 
#define SOCKET_OUT_CLOSURE(name, ui_name)
 
#define SOCKET_OUT_STRING(name, ui_name)
 
#define SOCKET_OUT_ENUM(name, ui_name)
 

Typedefs

typedef uint64_t SocketModifiedFlags
 

Macro Definition Documentation

◆ NODE_ABSTRACT_DECLARE

#define NODE_ABSTRACT_DECLARE
Value:
template<typename T> static const NodeType *register_base_type(); \
static const NodeType *get_node_base_type();

Definition at line 160 of file node_type.h.

◆ NODE_ABSTRACT_DEFINE

#define NODE_ABSTRACT_DEFINE ( structname)
Value:
const NodeType *structname::get_node_base_type() \
{ \
/* Base types constructed in this getter to ensure correct initialization \
* order. Regular types are not so they are auto-registered for XML parsing. */ \
static const NodeType *node_base_type = register_base_type<structname>(); \
return node_base_type; \
} \
template<typename T> const NodeType *structname::register_base_type()

Definition at line 164 of file node_type.h.

◆ NODE_DECLARE

#define NODE_DECLARE
Value:
static const NodeType *get_node_type(); \
template<typename T> static const NodeType *register_type(); \
static Node *create(const NodeType *type); \
static const NodeType *node_type;

Definition at line 142 of file node_type.h.

◆ NODE_DEFINE

#define NODE_DEFINE ( structname)
Value:
const NodeType *structname::node_type = structname::register_type<structname>(); \
Node *structname::create(const NodeType *) \
{ \
return new structname(); \
} \
const NodeType *structname::get_node_type() \
{ \
return node_type; \
} \
template<typename T> const NodeType *structname::register_type()

Definition at line 148 of file node_type.h.

◆ SOCKET_BOOLEAN

◆ SOCKET_BOOLEAN_ARRAY

#define SOCKET_BOOLEAN_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<bool>, SocketType::BOOLEAN_ARRAY, 0, ##__VA_ARGS__)
#define SOCKET_DEFINE(name, ui_name, default_value, datatype, TYPE, flags,...)
Definition node_type.h:177
@ BOOLEAN_ARRAY
Definition node_type.h:43

Definition at line 243 of file node_type.h.

Referenced by NODE_DEFINE().

◆ SOCKET_COLOR

#define SOCKET_COLOR ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::COLOR, 0, ##__VA_ARGS__)

Definition at line 202 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_COLOR_ARRAY

#define SOCKET_COLOR_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float3>, SocketType::COLOR_ARRAY, 0, ##__VA_ARGS__)

Definition at line 251 of file node_type.h.

Referenced by NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_DEFINE

#define SOCKET_DEFINE ( name,
ui_name,
default_value,
datatype,
TYPE,
flags,
... )
Value:
{ \
static datatype defval = default_value; \
static_assert(std::is_same_v<decltype(T::name), datatype>); \
type->register_input(ustring(#name), \
ustring(ui_name), \
TYPE, \
SOCKET_OFFSETOF(T, name), \
&defval, \
NULL, \
NULL, \
flags, \
##__VA_ARGS__); \
}
#define NULL
#define SOCKET_OFFSETOF(T, name)
Definition node_type.h:175

Definition at line 177 of file node_type.h.

◆ SOCKET_ENUM

◆ SOCKET_FLOAT

#define SOCKET_FLOAT ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float, SocketType::FLOAT, 0, ##__VA_ARGS__)

◆ SOCKET_FLOAT_ARRAY

#define SOCKET_FLOAT_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float>, SocketType::FLOAT_ARRAY, 0, ##__VA_ARGS__)

Definition at line 248 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_IN_BOOLEAN

#define SOCKET_IN_BOOLEAN ( name,
ui_name,
default_value,
... )
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
bool, \
##__VA_ARGS__)

Definition at line 291 of file node_type.h.

Referenced by NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_IN_CLOSURE

#define SOCKET_IN_CLOSURE ( name,
ui_name,
... )
Value:
type->register_input(ustring(#name), \
ustring(ui_name), \
0, \
NULL, \
NULL, \
NULL, \
##__VA_ARGS__)

Definition at line 350 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_IN_COLOR

◆ SOCKET_IN_FLOAT

◆ SOCKET_IN_INT

#define SOCKET_IN_INT ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, int, SocketType::INT, SocketType::LINKABLE, ##__VA_ARGS__)

Definition at line 299 of file node_type.h.

◆ SOCKET_IN_NORMAL

#define SOCKET_IN_NORMAL ( name,
ui_name,
default_value,
... )

◆ SOCKET_IN_POINT

#define SOCKET_IN_POINT ( name,
ui_name,
default_value,
... )

◆ SOCKET_IN_STRING

#define SOCKET_IN_STRING ( name,
ui_name,
default_value,
... )
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
ustring, \
##__VA_ARGS__)

Definition at line 342 of file node_type.h.

Referenced by NODE_DEFINE().

◆ SOCKET_IN_VECTOR

#define SOCKET_IN_VECTOR ( name,
ui_name,
default_value,
... )

◆ SOCKET_INT

#define SOCKET_INT ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, int, SocketType::INT, 0, ##__VA_ARGS__)

◆ SOCKET_INT_ARRAY

#define SOCKET_INT_ARRAY ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, array<int>, SocketType::INT_ARRAY, 0, ##__VA_ARGS__)

Definition at line 246 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_NODE

#define SOCKET_NODE ( name,
ui_name,
node_type,
... )
Value:
{ \
static Node *defval = NULL; \
assert(SOCKET_SIZEOF(T, name) == sizeof(Node *)); \
type->register_input(ustring(#name), \
ustring(ui_name), \
SOCKET_OFFSETOF(T, name), \
&defval, \
NULL, \
node_type, \
##__VA_ARGS__); \
}

Definition at line 229 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_NODE_ARRAY

#define SOCKET_NODE_ARRAY ( name,
ui_name,
node_type,
... )
Value:
{ \
static array<Node *> defval = {}; \
assert(SOCKET_SIZEOF(T, name) == sizeof(array<Node *>)); \
type->register_input(ustring(#name), \
ustring(ui_name), \
SOCKET_OFFSETOF(T, name), \
&defval, \
NULL, \
node_type, \
##__VA_ARGS__); \
}

Definition at line 277 of file node_type.h.

Referenced by NODE_ABSTRACT_DEFINE().

◆ SOCKET_NORMAL

#define SOCKET_NORMAL ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::NORMAL, 0, ##__VA_ARGS__)

Definition at line 208 of file node_type.h.

◆ SOCKET_NORMAL_ARRAY

#define SOCKET_NORMAL_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float3>, SocketType::NORMAL_ARRAY, 0, ##__VA_ARGS__)

Definition at line 260 of file node_type.h.

◆ SOCKET_OFFSETOF

#define SOCKET_OFFSETOF ( T,
name )   offsetof(T, name)

Definition at line 175 of file node_type.h.

◆ SOCKET_OUT_BOOLEAN

#define SOCKET_OUT_BOOLEAN ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::BOOLEAN); \
}

Definition at line 361 of file node_type.h.

◆ SOCKET_OUT_CLOSURE

◆ SOCKET_OUT_COLOR

◆ SOCKET_OUT_ENUM

#define SOCKET_OUT_ENUM ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::ENUM); \
}

Definition at line 397 of file node_type.h.

◆ SOCKET_OUT_FLOAT

◆ SOCKET_OUT_INT

#define SOCKET_OUT_INT ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::INT); \
}

Definition at line 365 of file node_type.h.

◆ SOCKET_OUT_NORMAL

#define SOCKET_OUT_NORMAL ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::NORMAL); \
}

Definition at line 385 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_OUT_POINT

#define SOCKET_OUT_POINT ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::POINT); \
}

Definition at line 381 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_OUT_STRING

#define SOCKET_OUT_STRING ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::STRING); \
}

Definition at line 393 of file node_type.h.

◆ SOCKET_OUT_VECTOR

#define SOCKET_OUT_VECTOR ( name,
ui_name )
Value:
{ \
type->register_output(ustring(#name), ustring(ui_name), SocketType::VECTOR); \
}

Definition at line 377 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_POINT

#define SOCKET_POINT ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::POINT, 0, ##__VA_ARGS__)

Definition at line 206 of file node_type.h.

Referenced by NODE_DEFINE().

◆ SOCKET_POINT2

#define SOCKET_POINT2 ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float2, SocketType::POINT2, 0, ##__VA_ARGS__)

Definition at line 210 of file node_type.h.

Referenced by NODE_DEFINE().

◆ SOCKET_POINT2_ARRAY

#define SOCKET_POINT2_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float2>, SocketType::POINT2_ARRAY, 0, ##__VA_ARGS__)

Definition at line 263 of file node_type.h.

Referenced by NODE_DEFINE().

◆ SOCKET_POINT_ARRAY

#define SOCKET_POINT_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float3>, SocketType::POINT_ARRAY, 0, ##__VA_ARGS__)

Definition at line 257 of file node_type.h.

Referenced by NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_SIZEOF

#define SOCKET_SIZEOF ( T,
name )   (sizeof(T::name))

Definition at line 176 of file node_type.h.

◆ SOCKET_STRING

#define SOCKET_STRING ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, ustring, SocketType::STRING, 0, ##__VA_ARGS__)

◆ SOCKET_STRING_ARRAY

#define SOCKET_STRING_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<ustring>, SocketType::STRING_ARRAY, 0, ##__VA_ARGS__)

Definition at line 266 of file node_type.h.

◆ SOCKET_TRANSFORM

#define SOCKET_TRANSFORM ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, Transform, SocketType::TRANSFORM, 0, ##__VA_ARGS__)

◆ SOCKET_TRANSFORM_ARRAY

#define SOCKET_TRANSFORM_ARRAY ( name,
ui_name,
default_value,
... )
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
0, \
##__VA_ARGS__)
@ TRANSFORM_ARRAY
Definition node_type.h:52

Definition at line 269 of file node_type.h.

Referenced by NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_UINT

#define SOCKET_UINT ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, uint, SocketType::UINT, 0, ##__VA_ARGS__)

Definition at line 196 of file node_type.h.

Referenced by NODE_ABSTRACT_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_UINT64

#define SOCKET_UINT64 ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, uint64_t, SocketType::UINT64, 0, ##__VA_ARGS__)

Definition at line 198 of file node_type.h.

Referenced by NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_VECTOR

#define SOCKET_VECTOR ( name,
ui_name,
default_value,
... )    SOCKET_DEFINE(name, ui_name, default_value, float3, SocketType::VECTOR, 0, ##__VA_ARGS__)

Definition at line 204 of file node_type.h.

Referenced by NODE_DEFINE(), and NODE_DEFINE().

◆ SOCKET_VECTOR_ARRAY

#define SOCKET_VECTOR_ARRAY ( name,
ui_name,
default_value,
... )
Value:
name, ui_name, default_value, array<float3>, SocketType::VECTOR_ARRAY, 0, ##__VA_ARGS__)

Definition at line 254 of file node_type.h.

Referenced by NODE_DEFINE().

Typedef Documentation

◆ SocketModifiedFlags

Definition at line 19 of file node_type.h.