]> granicus.if.org Git - graphviz/commitdiff
mapBool: use C99 bools for boolean parameters
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 10 Jan 2022 00:32:23 +0000 (16:32 -0800)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Mon, 10 Jan 2022 15:51:35 +0000 (07:51 -0800)
Note that this required a somewhat awkward work around in `getAdjustMode` that
was abusing being able to fit something other than a boolean into the type used
for booleans.

lib/common/emit.c
lib/common/utils.c
lib/common/utils.h
lib/dotgen/rank.c
lib/neatogen/adjust.c
lib/neatogen/neatoinit.c
lib/sfdpgen/sfdpinit.c

index 78483bbca0b731623bac1c64b963d3fd12fe3ea1..60bb99718c7b9c4b7ad5c079e67551b891aa2823 100644 (file)
@@ -2504,7 +2504,7 @@ static void emit_begin_edge(GVJ_t * job, edge_t * e, char** styles)
     obj->type = EDGE_OBJTYPE;
     obj->u.e = e;
     obj->emit_state = EMIT_EDRAW;
-    if (ED_label(e) && !ED_label(e)->html && mapBool(agget(e,"labelaligned"),FALSE))
+    if (ED_label(e) && !ED_label(e)->html && mapBool(agget(e,"labelaligned"), false))
        obj->labeledgealigned = TRUE;
 
     /* We handle the edge style and penwidth here because the width
index 0b6dd91f1a51b6e834b809c9543cc2d3c0cabfa9..204c3ffe45dfc3304f8414feb3964c8a02ecd86d 100644 (file)
@@ -442,27 +442,27 @@ int maptoken(char *p, char **name, int *val)
     return val[i];
 }
 
-boolean mapBool(char *p, boolean dflt)
+bool mapBool(char *p, bool dflt)
 {
     if (!p || (*p == '\0'))
        return dflt;
     if (!strcasecmp(p, "false"))
-       return FALSE;
+       return false;
     if (!strcasecmp(p, "no"))
-       return FALSE;
+       return false;
     if (!strcasecmp(p, "true"))
-       return TRUE;
+       return true;
     if (!strcasecmp(p, "yes"))
-       return TRUE;
+       return true;
     if (isdigit((int)*p))
-       return atoi(p);
+       return atoi(p) != 0;
     else
        return dflt;
 }
 
 boolean mapbool(char *p)
 {
-    return mapBool (p, FALSE);
+    return mapBool(p, false) ? TRUE : FALSE;
 }
 
 pointf dotneato_closest(splines * spl, pointf pt)
@@ -889,7 +889,8 @@ void compute_bb(graph_t * g)
 
 int is_a_cluster (Agraph_t* g)
 {
-    return ((g == g->root) || (!strncasecmp(agnameof(g), "cluster", 7)) || mapBool(agget(g,"cluster"),FALSE));
+  return g == g->root || !strncasecmp(agnameof(g), "cluster", 7) ||
+         mapBool(agget(g, "cluster"), false);
 }
 
 /* setAttr:
index 01afc0f5aa0999a9f513298bd9e5ec10d2ed5927..a2298eff0db271e2e290b15c6d97b8bad233fe20 100644 (file)
@@ -88,7 +88,7 @@ UTILS_API void UF_setname(Agnode_t *, Agnode_t *);
 UTILS_API char *Fgets(FILE *fp);
 UTILS_API const char *safefile(const char *filename);
 
-UTILS_API boolean mapBool(char *, boolean);
+UTILS_API bool mapBool(char *, bool);
 UTILS_API boolean mapbool(char *);
 UTILS_API int maptoken(char *, char **, int *);
 
index de04ea60640c9d59e7ea17f3137a27bc3f3a28be..4958425daa52ed0d10b059430dd757d2f315d896 100644 (file)
@@ -25,6 +25,7 @@
 
 #include       <dotgen/dot.h>
 #include       <limits.h>
+#include       <stdbool.h>
 
 static void dot1_rank(graph_t * g, aspect_t* asp);
 static void dot2_rank(graph_t * g, aspect_t* asp);
@@ -606,13 +607,10 @@ static int is_empty(graph_t * g)
     return (!agfstnode(g));
 }
 
-static int is_a_strong_cluster(graph_t * g)
+static bool is_a_strong_cluster(graph_t * g)
 {
-    int rv;
     char *str = agget(g, "compact");
-    /* rv = mapBool((str), TRUE); */
-    rv = mapBool((str), FALSE);
-    return rv;
+    return mapBool(str, false);
 }
 
 static int rankset_kind(graph_t * g)
index 0af47f04a768a7f32159cf139deb24734dd11e57..3f172f1e34930b0969dc1718e04d92c947d4f860 100644 (file)
@@ -762,7 +762,8 @@ fdpAdjust (graph_t* g, adjust_data* am)
     }
 
     remove_overlap(Ndim, A, pos, sizes, am->value, am->scaling, 
-                  ELSCHEME_NONE, 0, NULL, NULL, mapBool (agget(g, "overlap_shrink"), TRUE));
+                   ELSCHEME_NONE, 0, NULL, NULL,
+                   mapBool(agget(g, "overlap_shrink"), true) ? TRUE : FALSE);
 
     for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
        double *npos = pos + Ndim * ND_id(n);
@@ -1007,10 +1008,11 @@ static adjust_data *getAdjustMode(Agraph_t* g, char *s, adjust_data* dp)
            ap++;
        }
        if (ap->attrib == NULL ) {
-           int v = mapBool(s,'?');
-           if (v == '?') {
+           bool v = mapBool(s, false);
+           bool unmappable = v != mapBool(s, true);
+           if (unmappable) {
                agerr (AGWARN, "Unrecognized overlap value \"%s\" - using false\n", s);
-               v = FALSE;
+               v = false;
            }
            if (v) {
                dp->mode = adjustMode[0].mode;
index 82cc8a90a02b9d6513230745d89551754fa8aa1a..9401c60efaa6abb755464ef42013f5c3abec5eba 100644 (file)
@@ -531,7 +531,7 @@ int init_nop(Agraph_t * g, int adjust)
     attrsym_t *G_bb = agfindgraphattr(g, "bb");
     int didAdjust = 0;  /* Have nodes been moved? */
     int haveBackground;
-    boolean translate = !mapBool(agget(g, "notranslate"), FALSE);
+    bool translate = !mapBool(agget(g, "notranslate"), false);
 
     /* If G_bb not defined, define it */
     if (!G_bb)
@@ -1426,7 +1426,7 @@ void neato_layout(Agraph_t * g)
        }
        else gv_postprocess(g, 0);
     } else {
-       boolean noTranslate = mapBool(agget(g, "notranslate"), FALSE);
+       bool noTranslate = mapBool(agget(g, "notranslate"), false);
        PSinputscale = get_inputscale (g);
        neato_init_graph(g);
        layoutMode = neatoMode(g);
index d9284b9b2d36494cd4c6ecd18177e2b5b7fe695c..ed8e43c4019f4fd2d4a850b1fb78e4b6ae4dee25 100644 (file)
@@ -22,6 +22,7 @@
 #include <sfdpgen/uniform_stress.h>
 #include <sfdpgen/stress_model.h>
 #include <cgraph/strcasecmp.h>
+#include <stdbool.h>
 
 static void sfdp_init_edge(edge_t * e)
 {
@@ -257,8 +258,8 @@ tuneControl (graph_t* g, spring_electrical_control ctrl)
     ctrl->smoothing = late_smooth(g, agfindgraphattr(g, "smoothing"), SMOOTHING_NONE);
     ctrl->tscheme = late_quadtree_scheme(g, agfindgraphattr(g, "quadtree"), QUAD_TREE_NORMAL);
     ctrl->method = METHOD_SPRING_ELECTRICAL;
-    ctrl->beautify_leaves = mapBool (agget(g, "beautify"), FALSE);
-    ctrl->do_shrinking = mapBool (agget(g, "overlap_shrink"), TRUE);
+    ctrl->beautify_leaves = mapBool(agget(g, "beautify"), false) ? TRUE : FALSE;
+    ctrl->do_shrinking = mapBool(agget(g, "overlap_shrink"), true) ? TRUE : FALSE;
     ctrl->rotation = late_double(g, agfindgraphattr(g, "rotation"), 0.0, -MAXDOUBLE);
     ctrl->edge_labeling_scheme = late_int(g, agfindgraphattr(g, "label_scheme"), 0, 0);
     if (ctrl->edge_labeling_scheme > 4) {