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...).
This commit is contained in:
Bastien Montagne 2020-04-29 10:52:01 +02:00
parent 839fe335d2
commit afeddd42e6
1 changed files with 28 additions and 54 deletions

View File

@ -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);
}