chiark / gitweb /
use nprocessors to set -DNPROCESSORS
[moebius2.git] / mgraph.h
index a5eb61127f6e6cc3fbbf0493d5b53c0fe565d3a1..06c53e214ec1f5cac09a151f827b8caaf7344b77 100644 (file)
--- a/mgraph.h
+++ b/mgraph.h
 #define Y1 (1 << YSHIFT)
 
 #define V6 6
+#define V3 3
 
 #define FOR_VERTEX(v) \
   for ((v)=0; (v)<N; (v)++)
 
-#define FOR_VPEDGE(v,e) \
+#define FOR_VPEDGE(e) \
   for ((e)=0; (e)<V6; (e)++)
 
 int edge_end2(unsigned v1, int e);
@@ -101,10 +102,12 @@ int edge_end2(unsigned v1, int e);
  * returns  eprime   s.t.  v1==EDGE_END2(v2,eprime) */
 int edge_reverse(int v1, int e);
 
+#define EDGE_OPPOSITE(e) (((e)+V3) % V6)
+
 #define RIM_VERTEX_P(v) (((v) & ~XMASK) == 0 || ((v) & ~XMASK) == (Y-1)*Y1)
 
 #define FOR_VEDGE_X(v1,e,v2,init,otherwise)    \
-  FOR_VPEDGE((v1),(e))                         \
+  FOR_VPEDGE((e))                              \
     if (((v2)= EDGE_END2((v1),(e)),            \
         (init),                                \
         (v2)) < 0) { otherwise; } else
@@ -122,6 +125,8 @@ int edge_reverse(int v1, int e);
   for ((vy)=0; (vy)<Y; (vy)+=Y-1)                              \
     for ((vx)=0; (v)= (vy)<<YSHIFT | (vx), (vx)<X; (vx)++)
 
+int vertices_span_join_p(int v0, int v1);
+
 typedef double Vertices[N][D3];
 struct Vertices { Vertices a; };