[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41441] branches/bmesh/blender/source/ blender: use char for BMHeader type and flag (saves 2 bytes per edge/loop/ vertex/face)

Campbell Barton ideasman42 at gmail.com
Tue Nov 1 15:36:24 CET 2011


Revision: 41441
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41441
Author:   campbellbarton
Date:     2011-11-01 14:36:23 +0000 (Tue, 01 Nov 2011)
Log Message:
-----------
use char for BMHeader type and flag (saves 2 bytes per edge/loop/vertex/face)
also found mouse_mesh_shortest_path was casting edit selecton to the wrong type.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
    branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
    branches/bmesh/blender/source/blender/bmesh/bmesh.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_class.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_iterators.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_marking.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_operator_api.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_operators.h
    branches/bmesh/blender/source/blender/bmesh/bmesh_queries.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_inline.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_iterators.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_marking.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_operators.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_private.h
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_queries.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_walkers_impl.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/createops.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/bmesh/operators/subdivideop.c
    branches/bmesh/blender/source/blender/bmesh/tools/BME_extrude.c
    branches/bmesh/blender/source/blender/editors/include/ED_mesh.h
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_select.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
    branches/bmesh/blender/source/blender/editors/mesh/mesh_intern.h
    branches/bmesh/blender/source/blender/editors/space_view3d/drawobject.c
    branches/bmesh/blender/source/blender/editors/space_view3d/view3d_buttons.c
    branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
    branches/bmesh/blender/source/blender/editors/transform/transform_orientations.c

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c	2011-11-01 14:36:23 UTC (rev 41441)
@@ -629,7 +629,7 @@
 			int drawSmooth;
 			
 			efa = l[0]->f;
-			drawSmooth = (efa->head.flag & BM_SMOOTH);
+			drawSmooth= BM_TestHFlag(efa, BM_SMOOTH);
 
 			draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, BM_GetIndex(efa), &drawSmooth);
 			if(draw) {
@@ -697,7 +697,7 @@
 			int drawSmooth;
 
 			efa = l[0]->f;
-			drawSmooth = (efa->head.flag & BM_SMOOTH);
+			drawSmooth= BM_TestHFlag(efa, BM_SMOOTH);
 			
 			draw = setDrawOptions==NULL ? 1 : setDrawOptions(userData, BM_GetIndex(efa), &drawSmooth);
 			if(draw) {

Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifiers_bmesh.c	2011-11-01 14:36:23 UTC (rev 41441)
@@ -148,7 +148,7 @@
 	for (i=0; i<totvert; i++, mv++) {
 		v = BM_Make_Vert(bm, mv->co, NULL);
 		normal_short_to_float_v3(v->no, mv->no);
-		v->head.flag = MEFlags_To_BMFlags(mv->flag, BM_VERT);
+		v->head.hflag = MEFlags_To_BMFlags(mv->flag, BM_VERT);
 
 		CustomData_to_bmesh_block(&dm->vertData, &bm->vdata, i, &v->head.data);
 		vtable[i] = v;
@@ -160,7 +160,7 @@
 	for (i=0; i<totedge; i++, me++) {
 		e = BM_Make_Edge(bm, vtable[me->v1], vtable[me->v2], NULL, 0);
 
-		e->head.flag = MEFlags_To_BMFlags(me->flag, BM_EDGE);
+		e->head.hflag = MEFlags_To_BMFlags(me->flag, BM_EDGE);
 
 		CustomData_to_bmesh_block(&dm->edgeData, &bm->edata, i, &e->head.data);
 		etable[i] = e;
@@ -190,7 +190,7 @@
 		if (!f)
 			continue;
 
-		f->head.flag = MEFlags_To_BMFlags(mp->flag, BM_FACE);
+		f->head.hflag = MEFlags_To_BMFlags(mp->flag, BM_FACE);
 		f->mat_nr = mp->mat_nr;
 
 		l = BMIter_New(&liter, bm, BM_LOOPS_OF_FACE, f);

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h	2011-11-01 14:36:23 UTC (rev 41441)
@@ -143,16 +143,16 @@
 struct BMFace *BM_Make_Ngon ( struct BMesh *bm, struct BMVert *v1, struct BMVert *v2, struct BMEdge **edges, int len, int nodouble );
 
 /*stuff for dealing with header flags*/
-BM_INLINE int BM_TestHFlag(const void *element, const int flag);
+BM_INLINE char BM_TestHFlag(const void *element, const char hflag);
 
 /*stuff for dealing with header flags*/
-BM_INLINE void BM_SetHFlag(void *element, const int flag);
+BM_INLINE void BM_SetHFlag(void *element, const char hflag);
 
 /*stuff for dealing with header flags*/
-BM_INLINE void BM_ClearHFlag(void *element, const int flag);
+BM_INLINE void BM_ClearHFlag(void *element, const char hflag);
 
 /*stuff for dealing BM_ToggleHFlag header flags*/
-BM_INLINE void BM_ToggleHFlag(void *element, const int flag);
+BM_INLINE void BM_ToggleHFlag(void *element, const char hflag);
 BM_INLINE void BM_MergeHFlag(void *element_a, void *element_b);
 BM_INLINE void BM_SetIndex(void *element, const int index);
 BM_INLINE int BM_GetIndex(const void *element);
@@ -275,14 +275,14 @@
 struct EditMesh *bmesh_to_editmesh ( BMesh *bm );
 
 /*convert between bmesh and Mesh flags*/
-int BMFlags_To_MEFlags ( void *element );
+short BMFlags_To_MEFlags(void *element);
 
 /*convert between Mesh and bmesh flags
   type must be BM_VERT/BM_EDGE/BM_FACE,
   and represents the type of the element
   parameter (the three defines map to
   MVert, MEdge, and MPoly, respectively).*/
-int MEFlags_To_BMFlags ( int flag, int type );
+char MEFlags_To_BMFlags(const char hflag, const char htype);
 
 /*convert MLoop*** in a bmface to mtface and mcol in
   an MFace*/

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_class.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_class.h	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_class.h	2011-11-01 14:36:23 UTC (rev 41441)
@@ -57,9 +57,10 @@
 typedef struct BMHeader {
 	void *data; /*customdata layers*/
 	struct BMFlagLayer *flags;
-	short type; /*element geometric type (verts/edges/loops/faces)*/
-	short flag; /*this would be a CD layer, see below*/
 	int index; /*note: use BM_GetIndex/SetIndex macros for index*/
+
+	char htype; /*element geometric type (verts/edges/loops/faces)*/
+	char hflag; /*this would be a CD layer, see below*/
 } BMHeader;
 
 /*note: need some way to specify custom locations for custom data layers.  so we can

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_iterators.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_iterators.h	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_iterators.h	2011-11-01 14:36:23 UTC (rev 41441)
@@ -71,12 +71,12 @@
 		int			i;
 		long		l;
 		float		f;
-	}filter;
-	int type, count;
+	} filter;
+	int htype, count;
 }BMIter;
 
-void *BMIter_New(struct BMIter *iter, struct BMesh *bm, int type, void *data);
+void *BMIter_New(struct BMIter *iter, struct BMesh *bm, const char htype, void *data);
 void *BMIter_Step(struct BMIter *iter);
-void *BMIter_AtIndex(struct BMesh *bm, int type, void *data, int index);
+void *BMIter_AtIndex(struct BMesh *bm, const char htype, void *data, int index);
 
 #endif

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_marking.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_marking.h	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_marking.h	2011-11-01 14:36:23 UTC (rev 41441)
@@ -4,8 +4,8 @@
 typedef struct BMEditSelection
 {
 	struct BMEditSelection *next, *prev;
-	short type;
 	void *data;
+	char htype;
 } BMEditSelection;
 
 /* pinning code */
@@ -27,7 +27,7 @@
   chuck it.*/
 int BM_Selected(BMesh *bm, const void *element);
 
-void BM_clear_flag_all(BMesh *bm, int flag);
+void BM_clear_flag_all(BMesh *bm, const char hflag);
 
 /*individual element select functions, BM_Select is a shortcut for these
   that automatically detects which one to use*/
@@ -38,7 +38,7 @@
 void BM_Selectmode_Set(struct BMesh *bm, int selectmode);
 
 /*counts number of elements with flag set*/
-int BM_CountFlag(struct BMesh *bm, int type, int flag, int respecthide);
+int BM_CountFlag(struct BMesh *bm, const char htype, const char hflag, int respecthide);
 
 /*edit selection stuff*/
 void BM_set_actFace(BMesh *em, BMFace *f);

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh_operator_api.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh_operator_api.h	2011-11-01 12:51:38 UTC (rev 41440)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh_operator_api.h	2011-11-01 14:36:23 UTC (rev 41441)
@@ -164,7 +164,7 @@
 
 /*count the number of elements with a specific flag.  type
   can be a bitmask of BM_FACE, BM_EDGE, or BM_FACE.*/
-int BMO_CountFlag(struct BMesh *bm, int flag, int type);
+int BMO_CountFlag(struct BMesh *bm, int flag, const char htype);
 
 /*---------formatted operator initialization/execution-----------*/
 /*
@@ -259,26 +259,26 @@
 void BMO_Get_Mat4(struct BMOperator *op, const char *slotname, float mat[4][4]);
 void BMO_Get_Mat3(struct BMOperator *op, const char *slotname, float mat[3][3]);
 
-void BMO_Clear_Flag_All(BMesh *bm, BMOperator *op, int type, int flag);
+void BMO_Clear_Flag_All(BMesh *bm, BMOperator *op, const char htype, int flag);
 
 /*puts every element of type type (which is a bitmask) with tool flag flag,
   into a slot.*/
-void BMO_Flag_To_Slot(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_Flag_To_Slot(struct BMesh *bm, struct BMOperator *op, const char *slotname, const int flag, const char htype);
 
 /*tool-flags all elements inside an element slot array with flag flag.*/
-void BMO_Flag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_Flag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, const int hflag, const char htype);
 /*clears tool-flag flag from all elements inside a slot array.*/
-void BMO_Unflag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_Unflag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, const int flag, const char htype);
 
 /*tool-flags all elements inside an element slot array with flag flag.*/
-void BMO_HeaderFlag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_HeaderFlag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, const char hflag, const char htype);
 /*clears tool-flag flag from all elements inside a slot array.*/
-void BMO_UnHeaderFlag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_UnHeaderFlag_Buffer(struct BMesh *bm, struct BMOperator *op, const char *slotname, const char hflag, const char htype);
 
 /*puts every element of type type (which is a bitmask) with header flag 
   flag, into a slot.  note: ignores hidden elements (e.g. elements with
   header flag BM_HIDDEN set).*/
-void BMO_HeaderFlag_To_Slot(struct BMesh *bm, struct BMOperator *op, const char *slotname, int flag, int type);
+void BMO_HeaderFlag_To_Slot(struct BMesh *bm, struct BMOperator *op, const char *slotname, const char hflag, const char htype);
 
 /*counts number of elements inside a slot array.*/
 int BMO_CountSlotBuf(struct BMesh *bm, struct BMOperator *op, const char *slotname);
@@ -359,7 +359,7 @@
 	int cur; //for arrays
 	struct GHashIterator giter;
 	void *val;
-	int restrictmask;
+	char restrictmask; /* bitwise '&' with BMHeader.htype */
 } BMOIter;
 
 void *BMO_FirstElem(BMOperator *op, const char *slotname);
@@ -368,7 +368,7 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list