Cleanup: Fix const correctness of node tree interface cache API
It shouldn't be possible to retrieve a mutable interface item from a const node tree. Unfortunately that means we have to duplicate the accessor methods. Fortunately they are very small.
This commit is contained in:
@@ -553,19 +553,37 @@ inline void bNodeTree::ensure_interface_cache() const
|
||||
this->tree_interface.ensure_items_cache();
|
||||
}
|
||||
|
||||
inline blender::Span<bNodeTreeInterfaceSocket *> bNodeTree::interface_inputs() const
|
||||
inline blender::Span<bNodeTreeInterfaceSocket *> bNodeTree::interface_inputs()
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->inputs_;
|
||||
}
|
||||
|
||||
inline blender::Span<bNodeTreeInterfaceSocket *> bNodeTree::interface_outputs() const
|
||||
inline blender::Span<const bNodeTreeInterfaceSocket *> bNodeTree::interface_inputs() const
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->inputs_;
|
||||
}
|
||||
|
||||
inline blender::Span<bNodeTreeInterfaceSocket *> bNodeTree::interface_outputs()
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->outputs_;
|
||||
}
|
||||
|
||||
inline blender::Span<bNodeTreeInterfaceItem *> bNodeTree::interface_items() const
|
||||
inline blender::Span<const bNodeTreeInterfaceSocket *> bNodeTree::interface_outputs() const
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->outputs_;
|
||||
}
|
||||
|
||||
inline blender::Span<bNodeTreeInterfaceItem *> bNodeTree::interface_items()
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->items_;
|
||||
}
|
||||
|
||||
inline blender::Span<const bNodeTreeInterfaceItem *> bNodeTree::interface_items() const
|
||||
{
|
||||
BLI_assert(this->tree_interface.items_cache_is_available());
|
||||
return this->tree_interface.runtime->items_;
|
||||
|
||||
@@ -450,7 +450,7 @@ static void run_node_group_ui(bContext *C, wmOperator *op)
|
||||
|
||||
node_tree->ensure_interface_cache();
|
||||
int input_index = 0;
|
||||
for (bNodeTreeInterfaceSocket *io_socket : node_tree->interface_inputs()) {
|
||||
for (const bNodeTreeInterfaceSocket *io_socket : node_tree->interface_inputs()) {
|
||||
draw_property_for_socket(
|
||||
*node_tree, layout, op->properties, &bmain_ptr, op->ptr, *io_socket, input_index);
|
||||
++input_index;
|
||||
|
||||
@@ -788,9 +788,12 @@ typedef struct bNodeTree {
|
||||
void ensure_interface_cache() const;
|
||||
|
||||
/* Cached interface item lists. */
|
||||
blender::Span<bNodeTreeInterfaceSocket *> interface_inputs() const;
|
||||
blender::Span<bNodeTreeInterfaceSocket *> interface_outputs() const;
|
||||
blender::Span<bNodeTreeInterfaceItem *> interface_items() const;
|
||||
blender::Span<bNodeTreeInterfaceSocket *> interface_inputs();
|
||||
blender::Span<const bNodeTreeInterfaceSocket *> interface_inputs() const;
|
||||
blender::Span<bNodeTreeInterfaceSocket *> interface_outputs();
|
||||
blender::Span<const bNodeTreeInterfaceSocket *> interface_outputs() const;
|
||||
blender::Span<bNodeTreeInterfaceItem *> interface_items();
|
||||
blender::Span<const bNodeTreeInterfaceItem *> interface_items() const;
|
||||
#endif
|
||||
} bNodeTree;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user