Blender  V3.3
Classes | Macros
graph/node.h File Reference
#include <type_traits>
#include "graph/node_type.h"
#include "util/array.h"
#include "util/map.h"
#include "util/param.h"

Go to the source code of this file.

Classes

struct  NodeOwner
 
union  Node
 

Macros

#define NODE_SOCKET_API_BASE_METHODS(type_, name, string_name)
 
#define NODE_SOCKET_API_BASE(type_, name, string_name)
 
#define NODE_SOCKET_API(type_, name)
 
#define NODE_SOCKET_API_ARRAY(type_, name)
 
#define NODE_SOCKET_API_STRUCT_MEMBER(type_, name, member)
 

Macro Definition Documentation

◆ NODE_SOCKET_API

#define NODE_SOCKET_API (   type_,
  name 
)
Value:
NODE_SOCKET_API_BASE(type_, name, #name) \
void set_##name(type_ value) \
{ \
const SocketType *socket = get_##name##_socket(); \
this->set(*socket, value); \
}
#define NODE_SOCKET_API_BASE(type_, name, string_name)
Definition: graph/node.h:47

Definition at line 54 of file graph/node.h.

◆ NODE_SOCKET_API_ARRAY

#define NODE_SOCKET_API_ARRAY (   type_,
  name 
)
Value:
NODE_SOCKET_API_BASE(type_, name, #name) \
void set_##name(type_ &value) \
{ \
const SocketType *socket = get_##name##_socket(); \
this->set(*socket, value); \
} \
type_ &get_##name() \
{ \
const SocketType *socket = get_##name##_socket(); \
return get_socket_value<type_>(this, *socket); \
}

Definition at line 62 of file graph/node.h.

◆ NODE_SOCKET_API_BASE

#define NODE_SOCKET_API_BASE (   type_,
  name,
  string_name 
)
Value:
protected: \
type_ name; \
\
public: \
NODE_SOCKET_API_BASE_METHODS(type_, name, string_name)

Definition at line 47 of file graph/node.h.

◆ NODE_SOCKET_API_BASE_METHODS

#define NODE_SOCKET_API_BASE_METHODS (   type_,
  name,
  string_name 
)
Value:
const SocketType *get_##name##_socket() const \
{ \
/* Explicitly cast to base class to use `Node::type` even if the derived class defines \
* `type`. */ \
const Node *self_node = this; \
static const SocketType *socket = self_node->type->find_input(ustring(string_name)); \
return socket; \
} \
bool name##_is_modified() const \
{ \
const SocketType *socket = get_##name##_socket(); \
return socket_is_modified(*socket); \
} \
void tag_##name##_modified() \
{ \
const SocketType *socket = get_##name##_socket(); \
socket_modified |= socket->modified_flag_bit; \
} \
type_ const &get_##name() const \
{ \
const SocketType *socket = get_##name##_socket(); \
return get_socket_value<type_>(this, *socket); \
}
Type type
Definition: node_type.h:73

Definition at line 23 of file graph/node.h.

◆ NODE_SOCKET_API_STRUCT_MEMBER

#define NODE_SOCKET_API_STRUCT_MEMBER (   type_,
  name,
  member 
)
Value:
NODE_SOCKET_API_BASE_METHODS(type_, name##_##member, #name "." #member) \
void set_##name##_##member(type_ value) \
{ \
const SocketType *socket = get_##name##_##member##_socket(); \
this->set(*socket, value); \
}
#define NODE_SOCKET_API_BASE_METHODS(type_, name, string_name)
Definition: graph/node.h:23

Definition at line 75 of file graph/node.h.