diff options
Diffstat (limited to 'intern/cycles/graph/node_type.h')
-rw-r--r-- | intern/cycles/graph/node_type.h | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/intern/cycles/graph/node_type.h b/intern/cycles/graph/node_type.h index a79d44b82f3..3b9b3007099 100644 --- a/intern/cycles/graph/node_type.h +++ b/intern/cycles/graph/node_type.h @@ -28,6 +28,8 @@ CCL_NAMESPACE_BEGIN struct Node; struct NodeType; +typedef uint64_t SocketModifiedFlags; + /* Socket Type */ struct SocketType { @@ -88,6 +90,7 @@ struct SocketType { const NodeType **node_type; int flags; ustring ui_name; + SocketModifiedFlags modified_flag_bit; size_t size() const; bool is_array() const; @@ -162,12 +165,12 @@ struct NodeType { /* Sock Definition Macros */ -#define SOCKET_OFFSETOF(T, name) (((char *)&(((T *)1)->name)) - (char *)1) -#define SOCKET_SIZEOF(T, name) (sizeof(((T *)1)->name)) +#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, ...) \ { \ static datatype defval = default_value; \ - CHECK_TYPE(((T *)1)->name, datatype); \ + CHECK_TYPE(T::name, datatype); \ type->register_input(ustring(#name), \ ustring(ui_name), \ TYPE, \ @@ -264,8 +267,8 @@ struct NodeType { ##__VA_ARGS__) #define SOCKET_NODE_ARRAY(name, ui_name, node_type, ...) \ { \ - static Node *defval = NULL; \ - assert(SOCKET_SIZEOF(T, name) == sizeof(Node *)); \ + static array<Node *> defval = {}; \ + assert(SOCKET_SIZEOF(T, name) == sizeof(array<Node *>)); \ type->register_input(ustring(#name), \ ustring(ui_name), \ SocketType::NODE_ARRAY, \ |