avoid use of long long in IDTYPE comparisons
authorJohn Ellson <ellson@research.att.com>
Mon, 20 Jul 2015 12:38:47 +0000 (08:38 -0400)
committerJohn Ellson <ellson@research.att.com>
Mon, 20 Jul 2015 12:38:47 +0000 (08:38 -0400)
lib/cgraph/edge.c
lib/cgraph/node.c

index 4810f3f1dd991bef1b6033af5862c16b72136dd7..1da3158ddab1f14bde6a6fb73db18fb0a0cfede4 100644 (file)
@@ -404,37 +404,38 @@ Agedge_t *agsubedge(Agraph_t * g, Agedge_t * e, int cflag)
 /* edge comparison.  OBJTYPE(e) == 0 means ID is a wildcard. */
 int agedgeidcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
 {
-    long long v;
     Agedge_t *e0, *e1;
 
     NOTUSED(d);
     e0 = arg_e0;
     e1 = arg_e1;
     NOTUSED(disc);
-    v = AGID(e0->node) - AGID(e1->node);
-    if (v == 0) {              /* same node */
-       if ((AGID(e0) == 0) || (AGID(e1) == 0))
-           v = 0;
-       else
-           v = AGID(e0) - AGID(e1);
-    }
-    return ((v==0)?0:(v<0?-1:1));
+
+    if (AGID(e0->node) < AGID(e1->node)) return -1;
+    if (AGID(e0->node) > AGID(e1->node)) return 1;
+    return 0;
 }
 
 /* edge comparison.  for ordered traversal. */
 int agedgeseqcmpf(Dict_t * d, void *arg_e0, void *arg_e1, Dtdisc_t * disc)
 {
-    long long v;
     Agedge_t *e0, *e1;
 
     NOTUSED(d);
     e0 = arg_e0;
     e1 = arg_e1;
     NOTUSED(disc);
-       assert(arg_e0 && arg_e1);
-       if (e0->node != e1->node) v = AGSEQ(e0->node) - AGSEQ(e1->node);
-       else v = (AGSEQ(e0) - AGSEQ(e1));
-    return ((v==0)?0:(v<0?-1:1));
+    assert(arg_e0 && arg_e1);
+
+    if (e0->node != e1->node) {
+        if (AGSEQ(e0->node) < AGSEQ(e1->node)) return -1;
+        if (AGSEQ(e0->node) > AGSEQ(e1->node)) return 1;
+    }
+    else {
+        if (AGSEQ(e0) < AGSEQ(e1)) return -1;
+        if (AGSEQ(e0) > AGSEQ(e1)) return 1;
+    }
+    return 0;
 }
 
 /* indexing for ordered traversal */
index c5a1c96a69faabd37dcbc84c7f076155cfc1b8f5..c44ed6486e35e6475cf772ca67846621db9e6b24 100644 (file)
@@ -273,22 +273,26 @@ Agnode_t *agsubnode(Agraph_t * g, Agnode_t * n0, int cflag)
 
 int agsubnodeidcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
 {
-    long long  v;
     Agsubnode_t *sn0, *sn1;
+
     sn0 = (Agsubnode_t *) arg0;
     sn1 = (Agsubnode_t *) arg1;
-    v = (AGID(sn0->node) - AGID(sn1->node));
-    return ((v==0)?0:(v<0?-1:1));
+    
+    if (AGID(sn0->node) < AGID(sn1->node)) return -1;
+    if (AGID(sn0->node) > AGID(sn1->node)) return 1;
+    return 0; 
 }
 
 int agsubnodeseqcmpf(Dict_t * d, void *arg0, void *arg1, Dtdisc_t * disc)
 {
     Agsubnode_t *sn0, *sn1;
-    long       v;
+
     sn0 = (Agsubnode_t *) arg0;
     sn1 = (Agsubnode_t *) arg1;
-    v = (AGSEQ(sn0->node) - AGSEQ(sn1->node));
-    return ((v==0)?0:(v<0?-1:1));
+
+    if (AGSEQ(sn0->node) < AGSEQ(sn1->node)) return -1;
+    if (AGSEQ(sn0->node) > AGSEQ(sn1->node)) return 1;
+    return 0; 
 }
 
 /* free_subnode: