18 return ELEM(socket_type,
35 return ELEM(socket_type,
71 return {&storage->input_items.items,
72 &storage->input_items.items_num,
73 &storage->input_items.active_index};
112 item.
identifier = storage->input_items.next_identifier++;
118 return "Item_" + std::to_string(item.
identifier);
145 return {&storage->output_items.items,
146 &storage->output_items.items_num,
147 &storage->output_items.active_index};
186 item.
identifier = storage->output_items.next_identifier++;
192 return "Item_" + std::to_string(item.
identifier);
219 return {&storage->input_items.items,
220 &storage->input_items.items_num,
221 &storage->input_items.active_index};
260 item.
identifier = storage->input_items.next_identifier++;
267 return "Item_" + std::to_string(item.
identifier);
294 return {&storage->output_items.items,
295 &storage->output_items.items_num,
296 &storage->output_items.active_index};
335 item.
identifier = storage->output_items.next_identifier++;
342 return "Item_" + std::to_string(item.
identifier);
char * BLI_strdup_null(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_MALLOC
void set_item_name_and_make_unique(bNode &node, typename Accessor::ItemT &item, const char *value)
const bNodeSocket * evaluate_closure_node_internally_linked_input(const bNodeSocket &output_socket)
bool socket_type_supported_in_closure(const eNodeSocketDatatype socket_type, const int ntree_type)
static constexpr StringRefNull remove_item
static constexpr StringRefNull add_item
static constexpr StringRefNull move_item
static constexpr StringRefNull items
static constexpr StringRefNull active_index
static constexpr StringRefNull list
static socket_items::SocketItemsRef< ItemT > get_items_from_node(bNode &node)
static void init_with_socket_type_and_name(bNode &node, ItemT &item, const eNodeSocketDatatype socket_type, const char *name)
static void destruct_item(ItemT *item)
static constexpr bool has_type
static void copy_item(const ItemT &src, ItemT &dst)
static void blend_write_item(BlendWriter *writer, const ItemT &item)
static constexpr bool has_name
static std::string socket_identifier_for_item(const ItemT &item)
static char ** get_name(ItemT &item)
static StructRNA * item_srna
static eNodeSocketDatatype get_socket_type(const ItemT &item)
static void blend_read_data_item(BlendDataReader *reader, ItemT &item)
static constexpr StringRefNull node_idname
NodeClosureOutputItem ItemT
static bool supports_socket_type(const eNodeSocketDatatype socket_type, const int ntree_type)
static constexpr StringRefNull move_item
static constexpr StringRefNull remove_item
static constexpr StringRefNull add_item
static constexpr StringRefNull active_index
static constexpr StringRefNull items
static constexpr StringRefNull list
static constexpr StringRefNull node_idname
static void copy_item(const ItemT &src, ItemT &dst)
static void blend_read_data_item(BlendDataReader *reader, ItemT &item)
static void blend_write_item(BlendWriter *writer, const ItemT &item)
static socket_items::SocketItemsRef< ItemT > get_items_from_node(bNode &node)
NodeEvaluateClosureOutputItem ItemT
static std::string socket_identifier_for_item(const ItemT &item)
static constexpr bool has_name
static void destruct_item(ItemT *item)
static void init_with_socket_type_and_name(bNode &node, ItemT &item, const eNodeSocketDatatype socket_type, const char *name)
static constexpr bool has_type
static StructRNA * item_srna
static bool supports_socket_type(const eNodeSocketDatatype socket_type, const int ntree_type)
static eNodeSocketDatatype get_socket_type(const ItemT &item)
static char ** get_name(ItemT &item)