14 for (
const int i : this->
inputs.index_range()) {
16 if (item.
key == key) {
25 for (
const int i : this->
outputs.index_range()) {
27 if (item.
key == key) {
46 return a.
inputs.as_span() ==
b.inputs.as_span() && a.
outputs.as_span() ==
b.outputs.as_span();
55 const bool allow_auto_structure_type)
59 const bNode *input_node =
64 for (
const int i :
IndexRange(storage.input_items.items_num)) {
66 const bNodeSocket &socket = input_node->output_socket(
i);
73 allow_auto_structure_type);
74 signature.
inputs.add({item.
name, stype, structure_type});
78 for (
const int i :
IndexRange(storage.output_items.items_num)) {
86 allow_auto_structure_type);
87 signature.
outputs.add({item.
name, stype, structure_type});
94 const bool allow_auto_structure_type)
96 BLI_assert(node.is_type(
"NodeEvaluateClosure"));
99 for (
const int i :
IndexRange(storage.input_items.items_num)) {
107 allow_auto_structure_type);
108 signature.
inputs.add({item.
name, stype, structure_type});
111 for (
const int i :
IndexRange(storage.output_items.items_num)) {
119 allow_auto_structure_type);
120 signature.
outputs.add({item.
name, stype, structure_type});
129 if (item.define_signature) {
139 for (
const Item &src_signature : this->
items) {
141 if (!signature.
inputs.add(item)) {
154 if (!signature.
outputs.add(item)) {
NodeSocketInterfaceStructureType
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_DYNAMIC
@ NODE_INTERFACE_SOCKET_STRUCTURE_TYPE_AUTO
const bNode * get_corresponding_input(const bNodeTree &tree, const bNode &output_bnode) const
std::optional< int > find_output_index(StringRef key) const
CustomIDVectorSet< Item, ItemKeyGetter > inputs
std::optional< int > find_input_index(StringRef key) const
CustomIDVectorSet< Item, ItemKeyGetter > outputs
void set_auto_structure_types()
static ClosureSignature from_evaluate_closure_node(const bNode &node, bool allow_auto_structure_type)
static ClosureSignature from_closure_output_node(const bNode &node, bool allow_auto_structure_type)
const bNodeZoneType * zone_type_by_node_type(const int node_type)
bNodeSocketType * node_socket_type_find_static(int type, int subtype=0)
bool operator==(const BokehKernelKey &a, const BokehKernelKey &b)
bool operator!=(const Domain &a, const Domain &b)
NodeSocketInterfaceStructureType get_structure_type_for_bundle_signature(const bNodeSocket &socket, const NodeSocketInterfaceStructureType stored_structure_type, const bool allow_auto_structure_type)
NodeSocketInterfaceStructureType structure_type
const bke::bNodeSocketType * type
bool has_type_definition() const
std::optional< ClosureSignature > get_merged_signature() const