From afeddd42e653be2853515eb364fcd363c9023c3a Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 29 Apr 2020 10:52:01 +0200 Subject: Cleanup: use LISTBASE_FOREACH iterator everywhere possible in libquery. Done also in 2.83 release branch to avoid too much conflicts on merging (some of those were already done for nodes in master, and gave me conflicts yesterday...). --- source/blender/blenkernel/intern/lib_query.c | 82 ++++++++++------------------ 1 file changed, 28 insertions(+), 54 deletions(-) (limited to 'source/blender/blenkernel/intern/lib_query.c') diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c index c93aade7cfa..2ca03fd5d7e 100644 --- a/source/blender/blenkernel/intern/lib_query.c +++ b/source/blender/blenkernel/intern/lib_query.c @@ -251,11 +251,9 @@ static void library_foreach_particlesystemsObjectLooper(ParticleSystem *UNUSED(p static void library_foreach_nla_strip(LibraryForeachIDData *data, NlaStrip *strip) { - NlaStrip *substrip; - FOREACH_CALLBACK_INVOKE(data, strip->act, IDWALK_CB_USER); - for (substrip = strip->strips.first; substrip; substrip = substrip->next) { + LISTBASE_FOREACH (NlaStrip *, substrip, &strip->strips) { library_foreach_nla_strip(data, substrip); } @@ -264,15 +262,10 @@ static void library_foreach_nla_strip(LibraryForeachIDData *data, NlaStrip *stri static void library_foreach_animationData(LibraryForeachIDData *data, AnimData *adt) { - FCurve *fcu; - NlaTrack *nla_track; - NlaStrip *nla_strip; - - for (fcu = adt->drivers.first; fcu; fcu = fcu->next) { + LISTBASE_FOREACH (FCurve *, fcu, &adt->drivers) { ChannelDriver *driver = fcu->driver; - DriverVar *dvar; - for (dvar = driver->variables.first; dvar; dvar = dvar->next) { + LISTBASE_FOREACH (DriverVar *, dvar, &driver->variables) { /* only used targets */ DRIVER_TARGETS_USED_LOOPER_BEGIN (dvar) { FOREACH_CALLBACK_INVOKE_ID(data, dtar->id, IDWALK_CB_NOP); @@ -284,8 +277,8 @@ static void library_foreach_animationData(LibraryForeachIDData *data, AnimData * FOREACH_CALLBACK_INVOKE(data, adt->action, IDWALK_CB_USER); FOREACH_CALLBACK_INVOKE(data, adt->tmpact, IDWALK_CB_USER); - for (nla_track = adt->nla_tracks.first; nla_track; nla_track = nla_track->next) { - for (nla_strip = nla_track->strips.first; nla_strip; nla_strip = nla_strip->next) { + LISTBASE_FOREACH (NlaTrack *, nla_track, &adt->nla_tracks) { + LISTBASE_FOREACH (NlaStrip *, nla_strip, &nla_track->strips) { library_foreach_nla_strip(data, nla_strip); } } @@ -462,7 +455,6 @@ static void library_foreach_screen_area(LibraryForeachIDData *data, ScrArea *are } case SPACE_NODE: { SpaceNode *snode = (SpaceNode *)sl; - bNodeTreePath *path; const bool is_private_nodetree = snode->id != NULL && ntreeFromID(snode->id) == snode->nodetree; @@ -473,7 +465,7 @@ static void library_foreach_screen_area(LibraryForeachIDData *data, ScrArea *are FOREACH_CALLBACK_INVOKE( data, snode->nodetree, is_private_nodetree ? IDWALK_CB_EMBEDDED : IDWALK_CB_USER_ONE); - for (path = snode->treepath.first; path; path = path->next) { + LISTBASE_FOREACH (bNodeTreePath *, path, &snode->treepath) { if (path == snode->treepath.first) { /* first nodetree in path is same as snode->nodetree */ FOREACH_CALLBACK_INVOKE(data, @@ -677,8 +669,7 @@ static void library_foreach_ID_link(Main *bmain, library_foreach_collection(&data, scene->master_collection); } - ViewLayer *view_layer; - for (view_layer = scene->view_layers.first; view_layer; view_layer = view_layer->next) { + LISTBASE_FOREACH (ViewLayer *, view_layer, &scene->view_layers) { CALLBACK_INVOKE(view_layer->mat_override, IDWALK_CB_USER); LISTBASE_FOREACH (Base *, base, &view_layer->object_bases) { @@ -757,7 +748,6 @@ static void library_foreach_ID_link(Main *bmain, case ID_OB: { Object *object = (Object *)id; - ParticleSystem *psys; /* Object is special, proxies make things hard... */ const int data_cb_flag = data.cb_flag; @@ -813,10 +803,8 @@ static void library_foreach_ID_link(Main *bmain, /* Note that ob->effect is deprecated, so no need to handle it here. */ if (object->pose) { - bPoseChannel *pchan; - data.cb_flag |= proxy_cb_flag; - for (pchan = object->pose->chanbase.first; pchan; pchan = pchan->next) { + LISTBASE_FOREACH (bPoseChannel *, pchan, &object->pose->chanbase) { IDP_foreach_property( pchan->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); CALLBACK_INVOKE(pchan->custom, IDWALK_CB_USER); @@ -832,8 +820,7 @@ static void library_foreach_ID_link(Main *bmain, } if (object->lodlevels.first) { - LodLevel *level; - for (level = object->lodlevels.first; level; level = level->next) { + LISTBASE_FOREACH (LodLevel *, level, &object->lodlevels) { CALLBACK_INVOKE(level->source, IDWALK_CB_NEVER_SELF); } } @@ -845,7 +832,7 @@ static void library_foreach_ID_link(Main *bmain, &object->constraints, library_foreach_constraintObjectLooper, &data); BKE_shaderfx_foreachIDLink(object, library_foreach_shaderfxForeachIDLink, &data); - for (psys = object->particlesystem.first; psys; psys = psys->next) { + LISTBASE_FOREACH (ParticleSystem *, psys, &object->particlesystem) { BKE_particlesystem_id_loop(psys, library_foreach_particlesystemsObjectLooper, &data); } @@ -998,31 +985,29 @@ static void library_foreach_ID_link(Main *bmain, case ID_NT: { bNodeTree *ntree = (bNodeTree *)id; - bNode *node; - bNodeSocket *sock; CALLBACK_INVOKE(ntree->gpd, IDWALK_CB_USER); - for (node = ntree->nodes.first; node; node = node->next) { + LISTBASE_FOREACH (bNode *, node, &ntree->nodes) { CALLBACK_INVOKE_ID(node->id, IDWALK_CB_USER); IDP_foreach_property( node->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); - for (sock = node->inputs.first; sock; sock = sock->next) { + LISTBASE_FOREACH (bNodeSocket *, sock, &node->inputs) { IDP_foreach_property( sock->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); } - for (sock = node->outputs.first; sock; sock = sock->next) { + LISTBASE_FOREACH (bNodeSocket *, sock, &node->outputs) { IDP_foreach_property( sock->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); } } - for (sock = ntree->inputs.first; sock; sock = sock->next) { + LISTBASE_FOREACH (bNodeSocket *, sock, &ntree->inputs) { IDP_foreach_property( sock->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); } - for (sock = ntree->outputs.first; sock; sock = sock->next) { + LISTBASE_FOREACH (bNodeSocket *, sock, &ntree->outputs) { IDP_foreach_property( sock->prop, IDP_TYPE_FILTER_ID, library_foreach_idpropertiesForeachIDLink, &data); } @@ -1069,11 +1054,8 @@ static void library_foreach_ID_link(Main *bmain, } if (psett->boids) { - BoidState *state; - BoidRule *rule; - - for (state = psett->boids->states.first; state; state = state->next) { - for (rule = state->rules.first; rule; rule = rule->next) { + LISTBASE_FOREACH (BoidState *, state, &psett->boids->states) { + LISTBASE_FOREACH (BoidRule *, rule, &state->rules) { if (rule->type == eBoidRuleType_Avoid) { BoidRuleGoalAvoid *gabr = (BoidRuleGoalAvoid *)rule; CALLBACK_INVOKE(gabr->ob, IDWALK_CB_NOP); @@ -1095,23 +1077,19 @@ static void library_foreach_ID_link(Main *bmain, case ID_MC: { MovieClip *clip = (MovieClip *)id; MovieTracking *tracking = &clip->tracking; - MovieTrackingObject *object; - MovieTrackingTrack *track; - MovieTrackingPlaneTrack *plane_track; CALLBACK_INVOKE(clip->gpd, IDWALK_CB_USER); - for (track = tracking->tracks.first; track; track = track->next) { + LISTBASE_FOREACH (MovieTrackingTrack *, track, &tracking->tracks) { CALLBACK_INVOKE(track->gpd, IDWALK_CB_USER); } - for (object = tracking->objects.first; object; object = object->next) { - for (track = object->tracks.first; track; track = track->next) { + LISTBASE_FOREACH (MovieTrackingObject *, object, &tracking->objects) { + LISTBASE_FOREACH (MovieTrackingTrack *, track, &object->tracks) { CALLBACK_INVOKE(track->gpd, IDWALK_CB_USER); } } - for (plane_track = tracking->plane_tracks.first; plane_track; - plane_track = plane_track->next) { + LISTBASE_FOREACH (MovieTrackingPlaneTrack *, plane_track, &tracking->plane_tracks) { CALLBACK_INVOKE(plane_track->image, IDWALK_CB_USER); } break; @@ -1119,12 +1097,9 @@ static void library_foreach_ID_link(Main *bmain, case ID_MSK: { Mask *mask = (Mask *)id; - MaskLayer *mask_layer; - for (mask_layer = mask->masklayers.first; mask_layer; mask_layer = mask_layer->next) { - MaskSpline *mask_spline; - for (mask_spline = mask_layer->splines.first; mask_spline; - mask_spline = mask_spline->next) { + LISTBASE_FOREACH (MaskLayer *, mask_layer, &mask->masklayers) { + LISTBASE_FOREACH (MaskSpline *, mask_spline, &mask_layer->splines) { for (i = 0; i < mask_spline->tot_point; i++) { MaskSplinePoint *point = &mask_spline->points[i]; CALLBACK_INVOKE_ID(point->parent.id, IDWALK_CB_USER); @@ -1136,7 +1111,7 @@ static void library_foreach_ID_link(Main *bmain, case ID_LS: { FreestyleLineStyle *linestyle = (FreestyleLineStyle *)id; - LineStyleModifier *lsm; + for (i = 0; i < MAX_MTEX; i++) { if (linestyle->mtex[i]) { library_foreach_mtex(&data, linestyle->mtex[i]); @@ -1148,7 +1123,7 @@ static void library_foreach_ID_link(Main *bmain, (ID **)&linestyle->nodetree, callback, user_data, flag, &data); } - for (lsm = linestyle->color_modifiers.first; lsm; lsm = lsm->next) { + LISTBASE_FOREACH (LineStyleModifier *, lsm, &linestyle->color_modifiers) { if (lsm->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { LineStyleColorModifier_DistanceFromObject *p = (LineStyleColorModifier_DistanceFromObject *)lsm; @@ -1157,7 +1132,7 @@ static void library_foreach_ID_link(Main *bmain, } } } - for (lsm = linestyle->alpha_modifiers.first; lsm; lsm = lsm->next) { + LISTBASE_FOREACH (LineStyleModifier *, lsm, &linestyle->alpha_modifiers) { if (lsm->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { LineStyleAlphaModifier_DistanceFromObject *p = (LineStyleAlphaModifier_DistanceFromObject *)lsm; @@ -1166,7 +1141,7 @@ static void library_foreach_ID_link(Main *bmain, } } } - for (lsm = linestyle->thickness_modifiers.first; lsm; lsm = lsm->next) { + LISTBASE_FOREACH (LineStyleModifier *, lsm, &linestyle->thickness_modifiers) { if (lsm->type == LS_MODIFIER_DISTANCE_FROM_OBJECT) { LineStyleThicknessModifier_DistanceFromObject *p = (LineStyleThicknessModifier_DistanceFromObject *)lsm; @@ -1233,8 +1208,7 @@ static void library_foreach_ID_link(Main *bmain, CALLBACK_INVOKE(gpencil->mat[i], IDWALK_CB_USER); } - for (bGPDlayer *gplayer = gpencil->layers.first; gplayer != NULL; - gplayer = gplayer->next) { + LISTBASE_FOREACH (bGPDlayer *, gplayer, &gpencil->layers) { CALLBACK_INVOKE(gplayer->parent, IDWALK_CB_NOP); } -- cgit v1.2.3