So, should every mesh flag be translated to a BMesh flag? &nbsp;Before I had it just copy over the flags from mesh elements, which is why BM_FGON, BM_SHARP, etc started after the first 16 bits, since they aren&#39;t originally stored in the flag.<div>
<br></div><div>Joe<br><br><div class="gmail_quote">On Sat, Jan 3, 2009 at 1:26 PM, Geoffrey Bantle <span dir="ltr">&lt;<a href="mailto:hairbat@yahoo.com">hairbat@yahoo.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Revision: 18298<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&amp;root=bf-blender&amp;revision=18298" target="_blank">http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&amp;root=bf-blender&amp;revision=18298</a><br>

Author: &nbsp; briggs<br>
Date: &nbsp; &nbsp; 2009-01-03 21:26:29 +0100 (Sat, 03 Jan 2009)<br>
<br>
Log Message:<br>
-----------<br>
-&gt; Cleanup up of API flags<br>
<br>
API flags now use dynamically allocated flag layers isntead<br>
of the persistent flag reserverd for &#39;marking&#39; elements<br>
(hide, select, sharp, ect).<br>
<br>
Modified Paths:<br>
--------------<br>
 &nbsp; &nbsp;branches/bmesh/bmesh/bmesh.h<br>
 &nbsp; &nbsp;branches/bmesh/bmesh/intern/bmesh_construct.c<br>
 &nbsp; &nbsp;branches/bmesh/bmesh/intern/bmesh_mesh.c<br>
 &nbsp; &nbsp;branches/bmesh/bmesh/intern/bmesh_queries.c<br>
<br>
Modified: branches/bmesh/bmesh/bmesh.h<br>
===================================================================<br>
--- branches/bmesh/bmesh/bmesh.h &nbsp; &nbsp; &nbsp; &nbsp;2009-01-03 20:20:09 UTC (rev 18297)<br>
+++ branches/bmesh/bmesh/bmesh.h &nbsp; &nbsp; &nbsp; &nbsp;2009-01-03 20:26:29 UTC (rev 18298)<br>
@@ -47,86 +47,68 @@<br>
&nbsp;struct BMEdge;<br>
&nbsp;struct BMFace;<br>
&nbsp;struct BMLoop;<br>
+<br>
&nbsp;/*<br>
- &nbsp; &nbsp; &nbsp; all mesh elements should share this beginning layout<br>
- &nbsp; &nbsp; &nbsp; we can pack this a little tighter now...<br>
-<br>
- &nbsp; &nbsp; &nbsp; BMHeader *next, *prev;<br>
- &nbsp; &nbsp; &nbsp; int EID;<br>
- &nbsp; &nbsp; &nbsp; int eflag1, eflag2;<br>
- &nbsp; &nbsp; &nbsp; short systemflag, type;<br>
- &nbsp; &nbsp; &nbsp; struct BMFlagLayer *flags;<br>
+ * BMHeader<br>
+ *<br>
+ * All mesh elements begin with a BMHeader. This structure<br>
+ * hold several types of data<br>
+ *<br>
+ * 1: The type of the element (vert, edge, loop or face)<br>
+ * 2: Persistant flags/markings (sharp, seam, select, hidden, ect)<br>
+ * 3: Unique ID in the bmesh.<br>
+ * 4: some elements for internal record keeping.<br>
+ *<br>
&nbsp;*/<br>
<br>
-/* Defines for BMHeader-&gt;type*/<br>
+/*BMHeader-&gt;type*/<br>
&nbsp;#define BM_VERT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1<br>
&nbsp;#define BM_EDGE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2<br>
&nbsp;#define BM_FACE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;4<br>
&nbsp;#define BM_LOOP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;8<br>
&nbsp;#define BM_ALL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BM_VERT | BM_EDGE | BM_FACE | BM_LOOP<br>
<br>
-/*Masks for BMHeader-&gt;flag<br>
- &nbsp; &nbsp; &nbsp; Note: Its entirely possible that any temporal flags should be moved<br>
- &nbsp; &nbsp; &nbsp; into the dynamically allocated flag layers and only reserve BMHeader-&gt;flag<br>
- &nbsp; &nbsp; &nbsp; for things like select, hide, ect.<br>
+/*BMHeader-&gt;flag*/<br>
+#define BM_SELECT &nbsp; &nbsp; &nbsp;(1&lt;&lt;0)<br>
+#define BM_SEAM &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;1)<br>
+#define BM_FGON &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;2)<br>
+#define BM_HIDDEN &nbsp; &nbsp; &nbsp;(1&lt;&lt;3)<br>
+#define BM_SHARP &nbsp; &nbsp; &nbsp; (1&lt;&lt;4)<br>
+#define BM_SMOOTH &nbsp; &nbsp; &nbsp;(1&lt;&lt;5)<br>
<br>
- &nbsp; &nbsp; &nbsp; The first 16 bits are reserved for the original element flags.<br>
- &nbsp; &nbsp; &nbsp; The next 5 (till BM_SMOOTH) are bmesh-added ones that replace<br>
- &nbsp; &nbsp; &nbsp; single variable flags. &nbsp;The rest after that are temporary flags.<br>
-*/<br>
-<br>
-#define BM_SELECT &nbsp; &nbsp; &nbsp;1 //redefinition of SELECT<br>
-<br>
-/*auxillery bmesh flags. &nbsp;note, these should<br>
- &nbsp;become internal to the api eventually.<br>
-<br>
- &nbsp;start at the 17th flag.<br>
- */<br>
-#define BM_SEAM &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;16)<br>
-#define BM_FGON &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;17)<br>
-#define BM_HIDDEN &nbsp; &nbsp; &nbsp;(1&lt;&lt;18)<br>
-#define BM_SHARP &nbsp; &nbsp; &nbsp; (1&lt;&lt;19)<br>
-#define BM_SMOOTH &nbsp; &nbsp; &nbsp;(1&lt;&lt;20) /* for faces */<br>
-<br>
-#define BM_DIRTY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1&lt;&lt;21) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*Not used yet*/<br>
-#define BM_NEW &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1&lt;&lt;22)<br>
-#define BM_OVERLAP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1&lt;&lt;23) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*used by bmesh_verts_in_face*/<br>
-#define BM_EDGEVERT &nbsp; &nbsp;(1&lt;&lt;24) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*used by bmesh_make_ngon*/<br>
-#define BM_DELETE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;25)<br>
-#define BM_AUX1 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;26) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*different for edges/verts/faces/ect*/<br>
-#define BM_AUX2 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;27) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*different for edges/verts/faces/ect*/<br>
-#define BM_AUX3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(1&lt;&lt;28) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*different for edges/verts/faces/ect*/<br>
-#define BM_TEMP_FLAGS &nbsp;BM_DIRTY|BM_NEW|BM_OVERLAP|BM_EDGEVERT|BM_DELETE<br>
-<br>
-/*All Mesh elements start with this structure*/<br>
&nbsp;typedef struct BMHeader<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;struct BMHeader *next, *prev;<br>
- &nbsp; &nbsp; &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EID;<br>
- &nbsp; &nbsp; &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flag; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*mesh flags, never to be (ab)used by the api itself!*/<br>
+ &nbsp; &nbsp; &nbsp; int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EID; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*Consider removing this/making it ifdeffed for debugging*/<br>
+ &nbsp; &nbsp; &nbsp; short &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flag, type;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; eflag1, eflag2; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*Flags used by eulers. Try and get rid of/minimize some of these*/<br>
- &nbsp; &nbsp; &nbsp; short &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type, pad1, pad2, pad3; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*Type of element this is head to*/<br>
- &nbsp; &nbsp; &nbsp; struct BMFlagLayer *flags; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*Dynamically allocated block of flag layers for operators to use*/<br>
+ &nbsp; &nbsp; &nbsp; struct BMFlagLayer *flags; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*Dynamically allocated block of flag layers for operators to use*/<br>
&nbsp;} BMHeader;<br>
<br>
+typedef struct BMFlagLayer{<br>
+ &nbsp; &nbsp; &nbsp; int f1;<br>
+ &nbsp; &nbsp; &nbsp; short mask, pflag;<br>
+}BMFlagLayer;<br>
<br>
-/*Used for circular linked list functions*/<br>
+#define BM_OVERLAP &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (1&lt;&lt;0) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*used by bmesh_verts_in_face*/<br>
+#define BM_EDGEVERT &nbsp; &nbsp;(1&lt;&lt;1) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*used by bmesh_make_ngon*/<br>
+<br>
+<br>
+/*<br>
+ * BMNode<br>
+ *<br>
+ * Used for circular/linked list functions that form basis of<br>
+ * adjacency system in BMesh. This should probably be hidden<br>
+ * somewhere since tool authors never need to know about it.<br>
+ *<br>
+*/<br>
+<br>
&nbsp;typedef struct BMNode{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;struct BMNode *next, *prev;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;void *data;<br>
&nbsp;}BMNode;<br>
<br>
-/*Used by operator API to give each operator private flag space<br>
- &nbsp; &nbsp; &nbsp; -Perhaps want to change this to have a union for storing float/long/pointer/ect<br>
- &nbsp; &nbsp; &nbsp; -pflag should be used for system/API stuff<br>
-*/<br>
<br>
-typedef struct BMFlagLayer{<br>
- &nbsp; &nbsp; &nbsp; int f1;<br>
- &nbsp; &nbsp; &nbsp; short mask, pflag;<br>
-}BMFlagLayer;<br>
-<br>
-struct BMOperator;<br>
&nbsp;typedef struct BMesh<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;ListBase verts, edges, polys;<br>
@@ -143,9 +125,9 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int nextv, nexte, nextp, nextl;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;struct CustomData vdata, edata, pdata, ldata;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int selectmode;<br>
- &nbsp; &nbsp; &nbsp; struct BLI_mempool *flagpool; &nbsp; &nbsp; /*memory pool for dynamically allocated flag layers*/<br>
- &nbsp; &nbsp; &nbsp; int stackdepth; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*current depth of operator stack*/<br>
- &nbsp; &nbsp; &nbsp; int totflags, walkers; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*total number of tool flag layers*/<br>
+ &nbsp; &nbsp; &nbsp; struct BLI_mempool *flagpool; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*memory pool for dynamically allocated flag layers*/<br>
+ &nbsp; &nbsp; &nbsp; int stackdepth; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*current depth of operator stack*/<br>
+ &nbsp; &nbsp; &nbsp; int totflags, walkers; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*total number of tool flag layers*/<br>
&nbsp;}BMesh;<br>
<br>
&nbsp;typedef struct BMVert<br>
<br>
Modified: branches/bmesh/bmesh/intern/bmesh_construct.c<br>
===================================================================<br>
--- branches/bmesh/bmesh/intern/bmesh_construct.c &nbsp; &nbsp; &nbsp; 2009-01-03 20:20:09 UTC (rev 18297)<br>
+++ branches/bmesh/bmesh/intern/bmesh_construct.c &nbsp; &nbsp; &nbsp; 2009-01-03 20:26:29 UTC (rev 18298)<br>
@@ -187,16 +187,15 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;BMFace *f = NULL;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int overlap = 0, i;<br>
<br>
-<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if(nodouble){<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(len &gt; VERT_BUF_SIZE)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;verts = MEM_callocN(sizeof(BMVert *) * len, &quot;bmesh make ngon vertex array&quot;);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(i = 0; i &lt; len; i++){<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!bmesh_test_sysflag((BMHeader*)(edges[i]-&gt;v1), BM_EDGEVERT)){<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bmesh_set_sysflag((BMHeader*)(edges[i]-&gt;v1), BM_EDGEVERT);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!BMO_TestFlag(bm, edges[i]-&gt;v1, BM_EDGEVERT)){<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BMO_SetFlag(bm, edges[i]-&gt;v1, BM_EDGEVERT);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;verts[i] = edges[i]-&gt;v1;<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if(!bmesh_test_sysflag((BMHeader*)(edges[i]-&gt;v2), BM_EDGEVERT)) {<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bmesh_set_sysflag((BMHeader*)(edges[i]-&gt;v2), BM_EDGEVERT);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if(!BMO_TestFlag(bm, edges[i]-&gt;v2, BM_EDGEVERT)) {<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BMO_SetFlag(bm, edges[i]-&gt;v2, BM_EDGEVERT);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;verts[i] = &nbsp; &nbsp; &nbsp;edges[i]-&gt;v2;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
@@ -205,8 +204,8 @@<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;/*clear flags*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for(i = 0; i &lt; len; i++){<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bmesh_clear_sysflag((BMHeader*)(edges[i]-&gt;v1), BM_EDGEVERT);<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bmesh_clear_sysflag((BMHeader*)(edges[i]-&gt;v2), BM_EDGEVERT);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BMO_ClearFlag(bm, edges[i]-&gt;v1, BM_EDGEVERT);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BMO_ClearFlag(bm, edges[i]-&gt;v2, BM_EDGEVERT);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(len &gt; VERT_BUF_SIZE)<br>
<br>
Modified: branches/bmesh/bmesh/intern/bmesh_mesh.c<br>
===================================================================<br>
--- branches/bmesh/bmesh/intern/bmesh_mesh.c &nbsp; &nbsp;2009-01-03 20:20:09 UTC (rev 18297)<br>
+++ branches/bmesh/bmesh/intern/bmesh_mesh.c &nbsp; &nbsp;2009-01-03 20:26:29 UTC (rev 18298)<br>
@@ -88,33 +88,6 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return 0;<br>
&nbsp;}<br>
<br>
-/*<br>
- * CLEAR TEMP FLAGS<br>
- *<br>
- * Clears all temporary flags at end of the modelling loop.<br>
- * May need to move this to operator finishing function?<br>
- *<br>
-*/<br>
-static void clear_temp_flags(BMesh *bm)<br>
-{<br>
- &nbsp; &nbsp; &nbsp; BMIter verts;<br>
- &nbsp; &nbsp; &nbsp; BMIter edges;<br>
- &nbsp; &nbsp; &nbsp; BMIter loops;<br>
- &nbsp; &nbsp; &nbsp; BMIter faces;<br>
-<br>
- &nbsp; &nbsp; &nbsp; BMVert *v;<br>
- &nbsp; &nbsp; &nbsp; BMEdge *e;<br>
- &nbsp; &nbsp; &nbsp; BMLoop *l;<br>
- &nbsp; &nbsp; &nbsp; BMFace *f;<br>
-<br>
- &nbsp; &nbsp; &nbsp; for(v = BMIter_New(&amp;verts, bm, BM_VERTS, bm ); v; v = BMIter_Step(&amp;verts)) bmesh_clear_sysflag(&amp;(v-&gt;head), BM_TEMP_FLAGS);<br>
- &nbsp; &nbsp; &nbsp; for(e = BMIter_New(&amp;edges, bm, BM_EDGES, bm ); e; e = BMIter_Step(&amp;edges)) bmesh_clear_sysflag(&amp;(e-&gt;head), BM_TEMP_FLAGS);<br>
- &nbsp; &nbsp; &nbsp; for(f = BMIter_New(&amp;faces, bm, BM_FACES, bm ); f; f = BMIter_Step(&amp;faces)){<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bmesh_clear_sysflag(&amp;(f-&gt;head), BM_TEMP_FLAGS);<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(l = BMIter_New(&amp;loops, bm, BM_LOOPS_OF_FACE, f ); l; l = BMIter_Step(&amp;loops)) bmesh_clear_sysflag(&amp;(l-&gt;head), BM_TEMP_FLAGS);<br>
- &nbsp; &nbsp; &nbsp; }<br>
-}<br>
-<br>
&nbsp;/*<br>
 &nbsp;* &nbsp; &nbsp; BMESH MAKE MESH<br>
 &nbsp;*<br>
@@ -293,6 +266,5 @@<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;/*compute normals, clear temp flags and flush selections*/<br>
 &nbsp; &nbsp; &nbsp; &nbsp;BM_Compute_Normals(bm);<br>
- &nbsp; &nbsp; &nbsp; clear_temp_flags(bm);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;bmesh_selectmode_flush(bm);<br>
&nbsp;}<br>
<br>
Modified: branches/bmesh/bmesh/intern/bmesh_queries.c<br>
===================================================================<br>
--- branches/bmesh/bmesh/intern/bmesh_queries.c 2009-01-03 20:20:09 UTC (rev 18297)<br>
+++ branches/bmesh/bmesh/intern/bmesh_queries.c 2009-01-03 20:26:29 UTC (rev 18298)<br>
@@ -76,21 +76,20 @@<br>
 &nbsp;* that appear in a given face<br>
 &nbsp;*<br>
&nbsp;*/<br>
-<br>
-int BM_Verts_In_Face(BMFace *f, BMVert **varr, int len)<br>
+int BM_Verts_In_Face(BMesh *bm, BMFace *f, BMVert **varr, int len)<br>
&nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;BMLoop *curloop = NULL;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;int i, count = 0;<br>
<br>
- &nbsp; &nbsp; &nbsp; for(i=0; i &lt; len; i++) bmesh_set_sysflag(&amp;(varr[i]-&gt;head), BM_OVERLAP);<br>
+ &nbsp; &nbsp; &nbsp; for(i=0; i &lt; len; i++) BMO_SetFlag(bm, varr[i], BM_OVERLAP);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;curloop = f-&gt;loopbase;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;do{<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(bmesh_test_sysflag(&amp;(curloop-&gt;v-&gt;head), BM_OVERLAP)) count++;<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(BMO_TestFlag(bm, curloop-&gt;v, BM_OVERLAP)) count++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;curloop = ((BMLoop*)(curloop-&gt;head.next));<br>
 &nbsp; &nbsp; &nbsp; &nbsp;} while(curloop = ((BMLoop*)(curloop-&gt;head.next)));<br>
<br>
- &nbsp; &nbsp; &nbsp; for(i=0; i &lt; len; i++) bmesh_clear_sysflag(&amp;(varr[i]-&gt;head), BM_OVERLAP);<br>
+ &nbsp; &nbsp; &nbsp; for(i=0; i &lt; len; i++) BMO_ClearFlag(bm, varr[i], BM_OVERLAP);<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return count;<br>
&nbsp;}<br>
@@ -490,7 +489,7 @@<br>
 &nbsp; &nbsp; &nbsp; &nbsp;for(i=0; i &lt; len; i++){<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;f = BMIter_New(&amp;vertfaces, bm, BM_FACES_OF_VERT, varr[i] );<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;while(f){<br>
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount = BM_Verts_In_Face(f, varr, len);<br>
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; amount = BM_Verts_In_Face(bm, f, varr, len);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(amount &gt;= len){<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if((len == f-&gt;len) &amp;&amp; existface)<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;*existface = f;<br>
<br>
<br>
_______________________________________________<br>
Bf-blender-cvs mailing list<br>
<a href="mailto:Bf-blender-cvs@blender.org">Bf-blender-cvs@blender.org</a><br>
<a href="http://lists.blender.org/mailman/listinfo/bf-blender-cvs" target="_blank">http://lists.blender.org/mailman/listinfo/bf-blender-cvs</a><br>
</blockquote></div><br></div>