Blender V4.3
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); \
}
node_ attributes set("label", ss.str())
#define NODE_SOCKET_API_BASE(type_, name, string_name)
Definition graph/node.h:48

Definition at line 55 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 63 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 48 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); \
}
const SocketType * find_input(ustring name) const
const NodeType * type
Definition graph/node.h:178
SocketModifiedFlags modified_flag_bit
Definition node_type.h:87

Definition at line 24 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:24

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