]> granicus.if.org Git - graphviz/commitdiff
netogen: [nfc] rewrite 'push' and 'pop' macros as functions
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sun, 6 Feb 2022 06:51:16 +0000 (17:51 +1100)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 7 Feb 2022 07:51:14 +0000 (18:51 +1100)
There is no need for these to be macros. Modern compilers will easily inline
these helpers. Making them functions provides additional type safety.

lib/neatogen/closest.c

index 3ca9a01a0236e489d487b0673290f30452f3d777..bc6c99159e90a483e9ec3a14dd3d281760994d6a 100644 (file)
@@ -49,15 +49,21 @@ static void freeStack(PairStack * s)
     free(s->data);
 }
 
-#define push(s,x) { \
-       if (s->top>=s->max_size) { \
-               s->max_size *= 2; \
-               s->data = realloc(s->data, s->max_size*sizeof(Pair)); \
-       } \
-       s->data[s->top++] = x; \
+static void push(PairStack *s, Pair x) {
+  if (s->top >= s->max_size) {
+    s->max_size *= 2;
+    s->data = realloc(s->data, s->max_size * sizeof(Pair));
+  }
+  s->data[s->top++] = x;
 }
 
-#define pop(s,x) ((s->top==0) ? FALSE : (s->top--, x = s->data[s->top], TRUE))
+static bool pop(PairStack *s, Pair *x) {
+  if (s->top == 0)
+    return false;
+  --s->top;
+  *x = s->data[s->top];
+  return true;
+}
 
 #define sub(h,i) (h->data[i])
 
@@ -307,7 +313,7 @@ construct_graph(int n, PairStack * edges_stack, vtx_data ** New_graph)
     free(degrees);
 
     /* add all edges from stack */
-    while (pop(edges_stack, pair)) {
+    while (pop(edges_stack, &pair)) {
        add_edge(new_graph, pair.left, pair.right);
     }
 }