[Bf-blender-cvs] [b3afbca] master: ListBase API: add utility api funcs for clearing and checking empty

Campbell Barton noreply at git.blender.org
Fri Feb 7 20:28:36 CET 2014


Commit: b3afbcab8ff2330c1473647be330a3ffe9b11885
Author: Campbell Barton
Date:   Sat Feb 8 06:07:10 2014 +1100
https://developer.blender.org/rBb3afbcab8ff2330c1473647be330a3ffe9b11885

ListBase API: add utility api funcs for clearing and checking empty

===================================================================

M	source/blender/blenfont/intern/blf_font.c
M	source/blender/blenkernel/intern/action.c
M	source/blender/blenkernel/intern/anim_sys.c
M	source/blender/blenkernel/intern/armature.c
M	source/blender/blenkernel/intern/blender.c
M	source/blender/blenkernel/intern/bpath.c
M	source/blender/blenkernel/intern/constraint.c
M	source/blender/blenkernel/intern/context.c
M	source/blender/blenkernel/intern/curve.c
M	source/blender/blenkernel/intern/deform.c
M	source/blender/blenkernel/intern/depsgraph.c
M	source/blender/blenkernel/intern/displist.c
M	source/blender/blenkernel/intern/fcurve.c
M	source/blender/blenkernel/intern/fmodifier.c
M	source/blender/blenkernel/intern/freestyle.c
M	source/blender/blenkernel/intern/gpencil.c
M	source/blender/blenkernel/intern/group.c
M	source/blender/blenkernel/intern/implicit.c
M	source/blender/blenkernel/intern/ipo.c
M	source/blender/blenkernel/intern/key.c
M	source/blender/blenkernel/intern/linestyle.c
M	source/blender/blenkernel/intern/mask.c
M	source/blender/blenkernel/intern/material.c
M	source/blender/blenkernel/intern/mball.c
M	source/blender/blenkernel/intern/nla.c
M	source/blender/blenkernel/intern/node.c
M	source/blender/blenkernel/intern/object.c
M	source/blender/blenkernel/intern/object_deform.c
M	source/blender/blenkernel/intern/object_dupli.c
M	source/blender/blenkernel/intern/particle.c
M	source/blender/blenkernel/intern/particle_system.c
M	source/blender/blenkernel/intern/pointcache.c
M	source/blender/blenkernel/intern/report.c
M	source/blender/blenkernel/intern/scene.c
M	source/blender/blenkernel/intern/screen.c
M	source/blender/blenkernel/intern/seqcache.c
M	source/blender/blenkernel/intern/seqmodifier.c
M	source/blender/blenkernel/intern/sequencer.c
M	source/blender/blenkernel/intern/sketch.c
M	source/blender/blenkernel/intern/smoke.c
M	source/blender/blenkernel/intern/text.c
M	source/blender/blenkernel/intern/tracking.c
M	source/blender/blenlib/BLI_listbase.h
M	source/blender/blenlib/intern/BLI_args.c
M	source/blender/blenlib/intern/BLI_mempool.c
M	source/blender/blenlib/intern/scanfill.c
M	source/blender/blenlib/intern/task.c
M	source/blender/blenlib/intern/threads.c
M	source/blender/blenloader/intern/readblenentry.c
M	source/blender/blenloader/intern/readfile.c
M	source/blender/blenloader/intern/versioning_250.c
M	source/blender/blenloader/intern/versioning_260.c
M	source/blender/blenloader/intern/versioning_legacy.c
M	source/blender/bmesh/intern/bmesh_edgeloop.c
M	source/blender/bmesh/intern/bmesh_marking.c
M	source/blender/bmesh/intern/bmesh_operators.c
M	source/blender/bmesh/intern/bmesh_walkers.c
M	source/blender/bmesh/operators/bmo_connect_pair.c
M	source/blender/collada/ArmatureExporter.cpp
M	source/blender/collada/SceneExporter.cpp
M	source/blender/editors/animation/anim_channels_edit.c
M	source/blender/editors/animation/anim_filter.c
M	source/blender/editors/animation/keyframes_general.c
M	source/blender/editors/animation/keyframing.c
M	source/blender/editors/animation/keyingsets.c
M	source/blender/editors/armature/armature_edit.c
M	source/blender/editors/armature/armature_utils.c
M	source/blender/editors/armature/editarmature_retarget.c
M	source/blender/editors/armature/editarmature_sketch.c
M	source/blender/editors/armature/pose_group.c
M	source/blender/editors/armature/pose_lib.c
M	source/blender/editors/armature/pose_utils.c
M	source/blender/editors/curve/editcurve.c
M	source/blender/editors/gpencil/editaction_gpencil.c
M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/gpencil/gpencil_undo.c
M	source/blender/editors/interface/interface.c
M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_icons.c
M	source/blender/editors/interface/interface_layout.c
M	source/blender/editors/mask/mask_ops.c
M	source/blender/editors/mesh/editmesh_knife.c
M	source/blender/editors/mesh/editmesh_select.c
M	source/blender/editors/metaball/mball_edit.c
M	source/blender/editors/object/object_add.c
M	source/blender/editors/object/object_edit.c
M	source/blender/editors/object/object_lattice.c
M	source/blender/editors/object/object_modifier.c
M	source/blender/editors/object/object_select.c
M	source/blender/editors/object/object_vgroup.c
M	source/blender/editors/physics/particle_edit.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/screen/screen_edit.c
M	source/blender/editors/sculpt_paint/paint_undo.c
M	source/blender/editors/sculpt_paint/paint_utils.c
M	source/blender/editors/sculpt_paint/paint_vertex.c
M	source/blender/editors/sculpt_paint/paint_vertex_proj.c
M	source/blender/editors/space_buttons/buttons_texture.c
M	source/blender/editors/space_console/space_console.c
M	source/blender/editors/space_graph/graph_draw.c
M	source/blender/editors/space_graph/graph_edit.c
M	source/blender/editors/space_graph/graph_select.c
M	source/blender/editors/space_image/image_buttons.c
M	source/blender/editors/space_image/image_ops.c
M	source/blender/editors/space_nla/nla_channels.c
M	source/blender/editors/space_nla/nla_edit.c
M	source/blender/editors/space_node/node_add.c
M	source/blender/editors/space_node/node_edit.c
M	source/blender/editors/space_node/node_relationships.c
M	source/blender/editors/space_node/node_templates.c
M	source/blender/editors/space_node/space_node.c
M	source/blender/editors/space_outliner/outliner_draw.c
M	source/blender/editors/space_outliner/outliner_tree.c
M	source/blender/editors/space_outliner/space_outliner.c
M	source/blender/editors/space_sequencer/sequencer_edit.c
M	source/blender/editors/space_time/space_time.c
M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/editors/space_view3d/view3d_ruler.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/editors/transform/transform_conversions.c
M	source/blender/editors/transform/transform_snap.c
M	source/blender/ikplugin/intern/itasc_plugin.cpp
M	source/blender/imbuf/intern/cache.c
M	source/blender/imbuf/intern/colormanagement.c
M	source/blender/imbuf/intern/openexr/openexr_api.cpp
M	source/blender/makesrna/intern/rna_animation.c
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/modifiers/intern/MOD_mask.c
M	source/blender/modifiers/intern/MOD_weightvgedit.c
M	source/blender/modifiers/intern/MOD_weightvgmix.c
M	source/blender/modifiers/intern/MOD_weightvgproximity.c
M	source/blender/nodes/composite/nodes/node_composite_image.c
M	source/blender/nodes/intern/node_common.c
M	source/blender/render/intern/source/envmap.c
M	source/blender/render/intern/source/multires_bake.c
M	source/blender/render/intern/source/render_result.c
M	source/blender/render/intern/source/rendercore.c
M	source/blender/windowmanager/intern/wm.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/intern/wm_files.c
M	source/blender/windowmanager/intern/wm_keymap.c
M	source/blender/windowmanager/intern/wm_operators.c
M	source/creator/creator.c
M	source/gameengine/Converter/BL_ArmatureObject.cpp
M	source/gameengine/VideoTexture/VideoFFmpeg.cpp

===================================================================

diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index 846c9cc..ac03502 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -701,8 +701,7 @@ static void blf_font_fill(FontBLF *font)
 	font->flags = 0;
 	font->dpi = 0;
 	font->size = 0;
-	font->cache.first = NULL;
-	font->cache.last = NULL;
+	BLI_listbase_clear(&font->cache);
 	font->glyph_cache = NULL;
 	font->blur = 0;
 	font->max_tex_size = -1;
diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c
index 8967df1..3a32cad 100644
--- a/source/blender/blenkernel/intern/action.c
+++ b/source/blender/blenkernel/intern/action.c
@@ -193,7 +193,7 @@ bAction *BKE_action_copy(bAction *src)
 	BLI_duplicatelist(&dst->markers, &src->markers);
 	
 	/* copy F-Curves, fixing up the links as we go */
-	dst->curves.first = dst->curves.last = NULL;
+	BLI_listbase_clear(&dst->curves);
 	
 	for (sfcu = src->curves.first; sfcu; sfcu = sfcu->next) {
 		/* duplicate F-Curve */
@@ -319,7 +319,7 @@ void action_groups_add_channel(bAction *act, bActionGroup *agrp, FCurve *fcurve)
 		return;
 	
 	/* if no channels anywhere, just add to two lists at the same time */
-	if (act->curves.first == NULL) {
+	if (BLI_listbase_is_empty(&act->curves)) {
 		fcurve->next = fcurve->prev = NULL;
 		
 		agrp->channels.first = agrp->channels.last = fcurve;
@@ -390,8 +390,7 @@ void action_groups_remove_channel(bAction *act, FCurve *fcu)
 		
 		if (agrp->channels.first == agrp->channels.last) {
 			if (agrp->channels.first == fcu) {
-				agrp->channels.first = NULL;
-				agrp->channels.last = NULL;
+				BLI_listbase_clear(&agrp->channels);
 			}
 		}
 		else if (agrp->channels.first == fcu) {
@@ -998,7 +997,7 @@ void BKE_pose_remove_group(Object *ob)
 		/* now, remove it from the pose */
 		BLI_freelinkN(&pose->agroups, grp);
 		pose->active_group--;
-		if (pose->active_group < 0 || pose->agroups.first == NULL) {
+		if (pose->active_group < 0 || BLI_listbase_is_empty(&pose->agroups)) {
 			pose->active_group = 0;
 		}
 	}
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index a46b308..5c50b9d 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -273,7 +273,7 @@ AnimData *BKE_copy_animdata(AnimData *adt, const bool do_action)
 	copy_fcurves(&dadt->drivers, &adt->drivers);
 	
 	/* don't copy overrides */
-	dadt->overrides.first = dadt->overrides.last = NULL;
+	BLI_listbase_clear(&dadt->overrides);
 	
 	/* return */
 	return dadt;
@@ -465,7 +465,7 @@ void action_move_fcurves_by_basepath(bAction *srcAct, bAction *dstAct, const cha
 				/* if group is empty and tagged, then we can remove as this operation
 				 * moved out all the channels that were formerly here
 				 */
-				if (agrp->channels.first == NULL)
+				if (BLI_listbase_is_empty(&agrp->channels))
 					BLI_freelinkN(&srcAct->groups, agrp);
 				else
 					agrp->flag &= ~AGRP_TEMP;
@@ -1900,7 +1900,7 @@ static void nlaevalchan_buffers_accumulate(ListBase *channels, ListBase *tmp_buf
 	NlaEvalChannel *nec, *necn, *necd;
 	
 	/* optimize - abort if no channels */
-	if (tmp_buffer->first == NULL)
+	if (BLI_listbase_is_empty(tmp_buffer))
 		return;
 	
 	/* accumulate results in tmp_channels buffer to the accumulation buffer */
@@ -2308,7 +2308,7 @@ static void animsys_evaluate_nla(ListBase *echannels, PointerRNA *ptr, AnimData
 	}
 	
 	/* only continue if there are strips to evaluate */
-	if (estrips.first == NULL)
+	if (BLI_listbase_is_empty(&estrips))
 		return;
 	
 	
@@ -2524,7 +2524,7 @@ void BKE_animsys_evaluate_all_animation(Main *main, Scene *scene, float ctime)
 	 * however, if there are some curves, we will need to make sure that their 'ctime' property gets
 	 * set correctly, so this optimization must be skipped in that case...
 	 */
-	if ((main->action.first == NULL) && (main->curve.first == NULL)) {
+	if (BLI_listbase_is_empty(&main->action) && BLI_listbase_is_empty(&main->curve)) {
 		if (G.debug & G_DEBUG)
 			printf("\tNo Actions, so no animation needs to be evaluated...\n");
 			
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index 699e713..caec93a 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -2537,7 +2537,7 @@ static int minmax_armature(Object *ob, float r_min[3], float r_max[3])
 		minmax_v3v3_v3(r_min, r_max, pchan->pose_tail);
 	}
 
-	return (ob->pose->chanbase.first != NULL);
+	return (BLI_listbase_is_empty(&ob->pose->chanbase) == false);
 }
 
 static void boundbox_armature(Object *ob, float loc[3], float size[3])
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 2b87a76..ed48bf5 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -204,7 +204,7 @@ static void setup_app_data(bContext *C, BlendFileData *bfd, const char *filepath
 	char mode;
 
 	/* 'u' = undo save, 'n' = no UI load */
-	if (bfd->main->screen.first == NULL) mode = 'u';
+	if (BLI_listbase_is_empty(&bfd->main->screen)) mode = 'u';
 	else if (G.fileflags & G_FILE_NO_UI) mode = 'n';
 	else mode = 0;
 
diff --git a/source/blender/blenkernel/intern/bpath.c b/source/blender/blenkernel/intern/bpath.c
index b7a6cf4..00fff61 100644
--- a/source/blender/blenkernel/intern/bpath.c
+++ b/source/blender/blenkernel/intern/bpath.c
@@ -755,7 +755,7 @@ void BKE_bpath_list_restore(Main *bmain, const int flag, void *ls_handle)
 void BKE_bpath_list_free(void *ls_handle)
 {
 	ListBase *ls = ls_handle;
-	BLI_assert(ls->first == NULL);  /* assumes we were used */
+	BLI_assert(BLI_listbase_is_empty(ls));  /* assumes we were used */
 	BLI_freelistN(ls);
 	MEM_freeN(ls);
 }
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index 2eca9f3..c14e8dd 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -4490,7 +4490,7 @@ void BKE_copy_constraints(ListBase *dst, const ListBase *src, int do_extern)
 {
 	bConstraint *con, *srccon;
 	
-	dst->first = dst->last = NULL;
+	BLI_listbase_clear(dst);
 	BLI_duplicatelist(dst, src);
 	
 	for (con = dst->first, srccon = src->first; con && srccon; srccon = srccon->next, con = con->next) {
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 2eb7638..a63807f 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -366,8 +366,7 @@ static int ctx_data_collection_get(const bContext *C, const char *member, ListBa
 		return 1;
 	}
 
-	list->first = NULL;
-	list->last = NULL;
+	BLI_listbase_clear(list);
 
 	return 0;
 }
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index c597968..8567a57 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -206,7 +206,7 @@ Curve *BKE_curve_copy(Curve *cu)
 	int a;
 
 	cun = BKE_libblock_copy(&cu->id);
-	cun->nurb.first = cun->nurb.last = NULL;
+	BLI_listbase_clear(&cun->nurb);
 	BKE_nurbList_duplicate(&(cun->nurb), &(cu->nurb));
 
 	cun->mat = MEM_dupallocN(cu->mat);
@@ -534,7 +534,7 @@ void BKE_nurbList_free(ListBase *lb)
 		BKE_nurb_free(nu);
 		nu = next;
 	}
-	lb->first = lb->last = NULL;
+	BLI_listbase_clear(lb);
 }
 
 Nurb *BKE_nurb_duplicate(Nurb *nu)
@@ -1628,7 +1628,7 @@ void BKE_curve_bevel_make(Scene *scene, Object *ob, ListBase *disp, int forRende
 	int nr, a;
 
 	cu = ob->data;
-	disp->first = disp->last = NULL;
+	BLI_listbase_clear(disp);
 
 	/* if a font object is being edited, then do nothing */
 // XXX	if ( ob == obedit && ob->type == OB_FONT ) return;
@@ -4039,7 +4039,7 @@ bool BKE_curve_minmax(Curve *cu, bool use_radius, float min[3], float max[3])
 	for (nu = nurb_lb->first; nu; nu = nu->next)
 		BKE_nurb_minmax(nu, use_radius, min, max);
 
-	return (nurb_lb->first != NULL);
+	return (BLI_listbase_is_empty(nurb_lb) == false);
 }
 
 bool BKE_curve_center_median(Curve *cu, float cent[3])
diff --git a/source/blender/blenkernel/intern/deform.c b/source/blender/blenkernel/intern/deform.c
index 6ff27e5..82b6dde 100644
--- a/source/blender/blenkernel/intern/deform.c
+++ b/source/blender/blenkernel/intern/deform.c
@@ -71,7 +71,7 @@ void defgroup_copy_list(ListBase *outbase, ListBase *inbase)
 {
 	bDeformGroup *defgroup, *defgroupn;
 
-	outbase->first = outbase->last = NULL;
+	BLI_listbase_clear(outbase);
 
 	for (defgroup = inbase->first; defgroup; defgroup = defgroup->next) {
 		defgroupn = defgroup_duplicate(defgroup);
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 5f4bfc8..af84055 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -1379,7 +1379,7 @@ static void dag_scene_build(Main *bmain, Scene *sce)
 	ListBase tempbase;
 	Base *base;
 
-	tempbase.first = tempbase.last = NULL;
+	BLI_listbase_clear(&tempbase);
 	
 	build_dag(bmain, sce, DAG_RL_ALL_BUT_DATA);
 	
@@ -1941,7 +1941,7 @@ static void dag_object_time_update_flags(Main *bmain, Scene *scene, Object *ob)
 				break;
 			case OB_FONT:
 				cu = ob->data;
-				if (cu->nurb.first == NULL && cu->str && cu->vfont)
+				if (BLI_listbase_is_empty(&cu->nurb) && cu->str && cu->vfont)
 					ob->recalc |= OB_RECALC_DATA;
 				break;
 			case OB_LATTICE:
@@ -2078,7 +2078,7 @@ static void dag_current_scene_layers(Main *bmain, ListBase *lb)
 	wmWindowManager *wm;
 	wmWindow *win;
 	
-	lb->first = lb->last = NULL;
+	BLI_listbase_clear(lb);
 
 	/* if we have a windowmanager, look into windows */
 	if ((wm = bmain->wm.first)) {
@@ -2411,7 +2411,7 @@ void DAG_ids_flush_tagged(Main *bmain)
 	/* get list of visible scenes and layers */
 	dag_current_scene_layers(bmain, &listbase);
 
-	if (listbase.first == NULL)
+	if (BLI_listbase_is_empty(&listbase))
 		return;
 
 	/* loop over all ID types */
@@ -2774,7 +2774,7 @@ void DAG_pose_sort(Object *ob)
 	dag_check_cycle(dag);
 	
 	/* now we try to sor

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list