Blender  V3.3
Classes | Macros | Typedefs
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_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 153 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 157 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;
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
std::unique_ptr< IDProperty, IDPropertyDeleter > create(StringRefNull prop_name, int32_t value)
Allocate a new IDProperty of type IDP_INT, set its name and value.

Definition at line 135 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 141 of file node_type.h.

◆ SOCKET_BOOLEAN

#define SOCKET_BOOLEAN (   name,
  ui_name,
  default_value,
  ... 
)     SOCKET_DEFINE(name, ui_name, default_value, bool, SocketType::BOOLEAN, 0, ##__VA_ARGS__)

Definition at line 185 of file node_type.h.

◆ 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:170
@ BOOLEAN_ARRAY
Definition: node_type.h:41

Definition at line 234 of file node_type.h.

◆ 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 193 of file node_type.h.

◆ 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__)
@ COLOR_ARRAY
Definition: node_type.h:44

Definition at line 242 of file node_type.h.

◆ 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 T
#define SOCKET_OFFSETOF(T, name)
Definition: node_type.h:168

Definition at line 170 of file node_type.h.

◆ SOCKET_ENUM

#define SOCKET_ENUM (   name,
  ui_name,
  values,
  default_value,
  ... 
)
Value:
{ \
static int defval = default_value; \
assert(SOCKET_SIZEOF(T, name) == sizeof(int)); \
type->register_input(ustring(#name), \
ustring(ui_name), \
SOCKET_OFFSETOF(T, name), \
&defval, \
&values, \
NULL, \
##__VA_ARGS__); \
}
#define SOCKET_SIZEOF(T, name)
Definition: node_type.h:169

Definition at line 207 of file node_type.h.

◆ SOCKET_FLOAT

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

Definition at line 191 of file node_type.h.

◆ 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__)
@ FLOAT_ARRAY
Definition: node_type.h:42

Definition at line 239 of file node_type.h.

◆ 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 282 of file node_type.h.

◆ 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 341 of file node_type.h.

◆ SOCKET_IN_COLOR

#define SOCKET_IN_COLOR (   name,
  ui_name,
  default_value,
  ... 
)
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
float3, \
##__VA_ARGS__)

Definition at line 301 of file node_type.h.

◆ SOCKET_IN_FLOAT

#define SOCKET_IN_FLOAT (   name,
  ui_name,
  default_value,
  ... 
)
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
float, \
##__VA_ARGS__)

Definition at line 293 of file node_type.h.

◆ 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 290 of file node_type.h.

◆ SOCKET_IN_NORMAL

#define SOCKET_IN_NORMAL (   name,
  ui_name,
  default_value,
  ... 
)
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
float3, \
##__VA_ARGS__)

Definition at line 325 of file node_type.h.

◆ SOCKET_IN_POINT

#define SOCKET_IN_POINT (   name,
  ui_name,
  default_value,
  ... 
)
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
float3, \
##__VA_ARGS__)

Definition at line 317 of file node_type.h.

◆ 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 333 of file node_type.h.

◆ SOCKET_IN_VECTOR

#define SOCKET_IN_VECTOR (   name,
  ui_name,
  default_value,
  ... 
)
Value:
SOCKET_DEFINE(name, \
ui_name, \
default_value, \
float3, \
##__VA_ARGS__)

Definition at line 309 of file node_type.h.

◆ SOCKET_INT

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

Definition at line 187 of file node_type.h.

◆ 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 237 of file node_type.h.

◆ 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 220 of file node_type.h.

◆ 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__); \
}
@ NODE_ARRAY
Definition: node_type.h:51

Definition at line 268 of file node_type.h.

◆ 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 199 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__)
@ NORMAL_ARRAY
Definition: node_type.h:47

Definition at line 251 of file node_type.h.

◆ SOCKET_OFFSETOF

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

Definition at line 168 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 352 of file node_type.h.

◆ SOCKET_OUT_CLOSURE

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

Definition at line 380 of file node_type.h.

◆ SOCKET_OUT_COLOR

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

Definition at line 364 of file node_type.h.

◆ SOCKET_OUT_ENUM

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

Definition at line 388 of file node_type.h.

◆ SOCKET_OUT_FLOAT

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

Definition at line 360 of file node_type.h.

◆ SOCKET_OUT_INT

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

Definition at line 356 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 376 of file node_type.h.

◆ SOCKET_OUT_POINT

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

Definition at line 372 of file node_type.h.

◆ SOCKET_OUT_STRING

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

Definition at line 384 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 368 of file node_type.h.

◆ 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 197 of file node_type.h.

◆ 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 201 of file node_type.h.

◆ 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__)
@ POINT2_ARRAY
Definition: node_type.h:48

Definition at line 254 of file node_type.h.

◆ 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__)
@ POINT_ARRAY
Definition: node_type.h:46

Definition at line 248 of file node_type.h.

◆ SOCKET_SIZEOF

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

Definition at line 169 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__)

Definition at line 203 of file node_type.h.

◆ 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__)
@ STRING_ARRAY
Definition: node_type.h:49

Definition at line 257 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__)

Definition at line 205 of file node_type.h.

◆ 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:50

Definition at line 260 of file node_type.h.

◆ 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 189 of file node_type.h.

◆ 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 195 of file node_type.h.

◆ 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__)
@ VECTOR_ARRAY
Definition: node_type.h:45

Definition at line 245 of file node_type.h.

Typedef Documentation

◆ SocketModifiedFlags

Definition at line 18 of file node_type.h.