[Bf-blender-cvs] [5b8e2ebd97b] master: Cleanup: Use Span to iterate over nodes instead of ListBase
Hans Goudey
noreply at git.blender.org
Fri Dec 2 18:16:59 CET 2022
Commit: 5b8e2ebd97bd795c6aea1b5270c8e49b70b3069e
Author: Hans Goudey
Date: Fri Dec 2 11:12:51 2022 -0600
Branches: master
https://developer.blender.org/rB5b8e2ebd97bd795c6aea1b5270c8e49b70b3069e
Cleanup: Use Span to iterate over nodes instead of ListBase
Since 90ea1b76434fe175e, there is always a span of nodes
available at runtime. This is easier to read and write.
===================================================================
M source/blender/blenkernel/intern/image.cc
M source/blender/blenkernel/intern/material.cc
M source/blender/blenkernel/intern/node.cc
M source/blender/blenkernel/intern/node_tree_update.cc
M source/blender/blenkernel/intern/scene.cc
M source/blender/blenkernel/intern/texture.cc
M source/blender/blenloader/intern/versioning_common.cc
M source/blender/blenloader/intern/versioning_defaults.cc
M source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
M source/blender/depsgraph/intern/builder/deg_builder_relations.cc
M source/blender/editors/space_buttons/buttons_texture.cc
M source/blender/editors/space_node/link_drag_search.cc
M source/blender/editors/space_node/node_draw.cc
M source/blender/editors/space_node/node_edit.cc
M source/blender/editors/space_node/node_group.cc
M source/blender/editors/space_node/node_relationships.cc
M source/blender/editors/space_node/node_select.cc
M source/blender/editors/space_node/space_node.cc
M source/blender/editors/transform/transform_convert_node.cc
M source/blender/editors/util/ed_viewer_path.cc
M source/blender/io/usd/intern/usd_writer_material.cc
M source/blender/nodes/composite/node_composite_tree.cc
M source/blender/nodes/shader/node_shader_util.cc
M source/blender/nodes/shader/nodes/node_shader_common.cc
M source/blender/render/intern/pipeline.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc
index ae05096826b..5e8a2cad99e 100644
--- a/source/blender/blenkernel/intern/image.cc
+++ b/source/blender/blenkernel/intern/image.cc
@@ -71,6 +71,7 @@
#include "BKE_lib_id.h"
#include "BKE_main.h"
#include "BKE_node.h"
+#include "BKE_node_runtime.hh"
#include "BKE_node_tree_update.h"
#include "BKE_packedFile.h"
#include "BKE_report.h"
@@ -2743,7 +2744,7 @@ static void image_walk_ntree_all_users(
{
switch (ntree->type) {
case NTREE_SHADER:
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->id) {
if (node->type == SH_NODE_TEX_IMAGE) {
NodeTexImage *tex = static_cast<NodeTexImage *>(node->storage);
@@ -2759,7 +2760,7 @@ static void image_walk_ntree_all_users(
}
break;
case NTREE_TEXTURE:
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->id && node->type == TEX_NODE_IMAGE) {
Image *ima = (Image *)node->id;
ImageUser *iuser = static_cast<ImageUser *>(node->storage);
@@ -2768,7 +2769,7 @@ static void image_walk_ntree_all_users(
}
break;
case NTREE_COMPOSIT:
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->id && node->type == CMP_NODE_IMAGE) {
Image *ima = (Image *)node->id;
ImageUser *iuser = static_cast<ImageUser *>(node->storage);
diff --git a/source/blender/blenkernel/intern/material.cc b/source/blender/blenkernel/intern/material.cc
index 597375f4f81..bcce1e61eb5 100644
--- a/source/blender/blenkernel/intern/material.cc
+++ b/source/blender/blenkernel/intern/material.cc
@@ -58,6 +58,7 @@
#include "BKE_material.h"
#include "BKE_mesh.h"
#include "BKE_node.h"
+#include "BKE_node_runtime.hh"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BKE_vfont.h"
@@ -1387,7 +1388,7 @@ static bool ntree_foreach_texnode_recursive(bNodeTree *nodetree,
{
const bool do_image_nodes = (slot_filter & PAINT_SLOT_IMAGE) != 0;
const bool do_color_attributes = (slot_filter & PAINT_SLOT_COLOR_ATTRIBUTE) != 0;
- LISTBASE_FOREACH (bNode *, node, &nodetree->nodes) {
+ for (bNode *node : nodetree->all_nodes()) {
if (do_image_nodes && node->typeinfo->nclass == NODE_CLASS_TEXTURE &&
node->typeinfo->type == SH_NODE_TEX_IMAGE && node->id) {
if (!callback(node, userdata)) {
diff --git a/source/blender/blenkernel/intern/node.cc b/source/blender/blenkernel/intern/node.cc
index c712d7ff668..c502381fc62 100644
--- a/source/blender/blenkernel/intern/node.cc
+++ b/source/blender/blenkernel/intern/node.cc
@@ -166,9 +166,9 @@ static void ntree_copy_data(Main * /*bmain*/, ID *id_dst, const ID *id_src, cons
}
/* update node->parent pointers */
- LISTBASE_FOREACH (bNode *, new_node, &ntree_dst->nodes) {
- if (new_node->parent) {
- new_node->parent = dst_runtime.nodes_by_id.lookup_key_as(new_node->parent->identifier);
+ for (bNode *node : ntree_dst->all_nodes()) {
+ if (node->parent) {
+ node->parent = dst_runtime.nodes_by_id.lookup_key_as(node->parent->identifier);
}
}
@@ -323,7 +323,7 @@ static void node_foreach_id(ID *id, LibraryForeachIDData *data)
BKE_LIB_FOREACHID_PROCESS_IDSUPER(data, ntree->gpd, IDWALK_CB_USER);
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
BKE_LIB_FOREACHID_PROCESS_ID(data, node->id, IDWALK_CB_USER);
BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(
@@ -363,7 +363,7 @@ static void node_foreach_cache(ID *id,
#endif
if (nodetree->type == NTREE_COMPOSIT) {
- LISTBASE_FOREACH (bNode *, node, &nodetree->nodes) {
+ for (bNode *node : nodetree->all_nodes()) {
if (node->type == CMP_NODE_MOVIEDISTORTION) {
key.offset_in_ID = size_t(BLI_ghashutil_strhash_p(node->name));
function_callback(id, &key, (void **)&node->storage, 0, user_data);
@@ -378,7 +378,7 @@ static void node_foreach_path(ID *id, BPathForeachPathData *bpath_data)
switch (ntree->type) {
case NTREE_SHADER: {
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->type == SH_NODE_SCRIPT) {
NodeShaderScript *nss = reinterpret_cast<NodeShaderScript *>(node->storage);
BKE_bpath_foreach_path_fixed_process(bpath_data, nss->filepath);
@@ -495,7 +495,7 @@ void ntreeBlendWrite(BlendWriter *writer, bNodeTree *ntree)
BKE_animdata_blend_write(writer, ntree->adt);
}
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
BLO_write_struct(writer, bNode, node);
if (node->prop) {
@@ -1229,7 +1229,7 @@ static void update_typeinfo(Main *bmain,
}
/* initialize nodes */
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (nodetype && STREQ(node->idname, nodetype->idname)) {
node_set_typeinfo(C, ntree, node, unregister ? nullptr : nodetype);
}
@@ -1266,7 +1266,7 @@ void ntreeSetTypes(const bContext *C, bNodeTree *ntree)
{
ntree_set_typeinfo(ntree, ntreeTypeFind(ntree->idname));
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
node_set_typeinfo(C, ntree, node, nodeTypeFind(node->idname));
LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) {
@@ -2023,7 +2023,7 @@ void nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_so
bool nodeFindNodeTry(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
{
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
ListBase *sockets = (sock->in_out == SOCK_IN) ? &node->inputs : &node->outputs;
int i;
LISTBASE_FOREACH_INDEX (bNodeSocket *, tsock, sockets, i) {
@@ -2778,7 +2778,7 @@ static void node_preview_init_tree_recursive(bNodeInstanceHash *previews,
const int xsize,
const int ysize)
{
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
bNodeInstanceKey key = BKE_node_instance_key(parent_key, ntree, node);
if (BKE_node_preview_used(node)) {
@@ -2811,7 +2811,7 @@ static void node_preview_tag_used_recursive(bNodeInstanceHash *previews,
bNodeTree *ntree,
bNodeInstanceKey parent_key)
{
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
bNodeInstanceKey key = BKE_node_instance_key(parent_key, ntree, node);
if (BKE_node_preview_used(node)) {
@@ -2926,7 +2926,7 @@ void nodeUnlinkNode(bNodeTree *ntree, bNode *node)
static void node_unlink_attached(bNodeTree *ntree, bNode *parent)
{
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->parent == parent) {
nodeDetachNode(ntree, node);
}
@@ -3454,7 +3454,7 @@ bool ntreeHasTree(const bNodeTree *ntree, const bNodeTree *lookup)
if (ntree == lookup) {
return true;
}
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (const bNode *node : ntree->all_nodes()) {
if (ELEM(node->type, NODE_GROUP, NODE_CUSTOM_GROUP) && node->id) {
if (ntreeHasTree((bNodeTree *)node->id, lookup)) {
return true;
@@ -3494,7 +3494,7 @@ bNode *nodeGetActive(bNodeTree *ntree)
return nullptr;
}
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->flag & NODE_ACTIVE) {
return node;
}
@@ -3526,7 +3526,7 @@ void nodeClearActive(bNodeTree *ntree)
return;
}
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
node->flag &= ~NODE_ACTIVE;
}
}
@@ -3540,7 +3540,7 @@ void nodeSetActive(bNodeTree *ntree, bNode *node)
SET_FLAG_FROM_TEST(flags_to_set, is_texture_class, NODE_ACTIVE_TEXTURE);
/* Make sure only one node is active per node tree. */
- LISTBASE_FOREACH (bNode *, tnode, &ntree->nodes) {
+ for (bNode *tnode : ntree->all_nodes()) {
tnode->flag &= ~flags_to_set;
}
node->flag |= flags_to_set;
@@ -3974,7 +3974,7 @@ void ntreeUpdateAllUsers(Main *main, ID *id)
/* Update all users of ngroup, to add/remove sockets as needed. */
FOREACH_NODETREE_BEGIN (main, ntree, owner_id) {
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->id == id) {
BKE_ntree_update_tag_node_property(ntree, node);
need_update = true;
@@ -4315,7 +4315,7 @@ bool BKE_node_tree_iter_step(NodeTreeIterStore *ntreeiter, bNodeTree **r_nodetre
void BKE_nodetree_remove_layer_n(bNodeTree *ntree, Scene *scene, const int layer_index)
{
BLI_assert(layer_index != -1);
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->type == CMP_NODE_R_LAYERS && (Scene *)node->id == scene) {
if (node->custom1 == layer_index) {
node->custom1 = 0;
diff --git a/source/blender/blenkernel/intern/node_tree_update.cc b/source/blender/blenkernel/intern/node_tree_update.cc
index 57d85c10677..bb063dadb06 100644
--- a/source/blender/blenkernel/intern/node_tree_update.cc
+++ b/source/blender/blenkernel/intern/node_tree_update.cc
@@ -733,7 +733,7 @@ struct NodeTreeRelations {
this->ensure_all_trees();
for (bNodeTree *ntree : *all_trees_) {
- LISTBASE_FOREACH (bNode *, node, &ntree->nodes) {
+ for (bNode *node : ntree->all_nodes()) {
if (node->id == nullptr) {
continue;
}
@@ -1012,7 +1012,7 @@ class NodeTreeMainUpdater {
#ifdef DEBUG
/* Check the uniqueness of node identifiers. */
Set<int32_t> node_identifiers;
- LISTBASE_FOREACH (bNode *, node, &ntree.nodes) {
+ for (bNode *node : ntree.all_nodes()) {
BLI_assert(node->identifier > 0);
node_
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list