]> granicus.if.org Git - graphviz/commitdiff
lib/gvpr/compile.c: rewrite 'INT2PTR' macro as a function
authorMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 11 Sep 2021 19:26:07 +0000 (12:26 -0700)
committerMatthew Fernandez <matthew.fernandez@gmail.com>
Sat, 18 Sep 2021 20:37:37 +0000 (13:37 -0700)
This is more straightforward, type safe, and shorter.

lib/gvpr/compile.c

index 92d93f5095c1e389498bd24a73caa20ff4bdca09..67fd4de69e4003137fb5a0a180b9ea785cb46242 100644 (file)
@@ -43,11 +43,18 @@ static int isedge(Agobj_t *obj) {
 #include <gvpr/trie.c>
 
 #define BITS_PER_BYTE 8
+
+static void *int2ptr(Sflong_t i) {
+#ifdef HAVE_INTPTR_T
+  return (void*)(intptr_t)i;
+#else
+  return (void*)i;
+#endif
+}
+
 #ifdef HAVE_INTPTR_T
-#define INT2PTR(t,v) ((t)(intptr_t)(v))
 #define PTR2INT(v) ((Sflong_t)(intptr_t)(v))
 #else
-#define INT2PTR(t,v) ((t)(v))
 #define PTR2INT(v) ((Sflong_t)(v))
 #endif
 
@@ -276,9 +283,7 @@ static Agobj_t *deref(Expr_t * pgm, Exnode_t * x, Exref_t * ref,
     if (ref == 0)
        return objp;
     else if (ref->symbol->lex == DYNAMIC) {
-       ptr =
-           INT2PTR(void *,
-                   x->data.variable.dyna->data.variable.dyna->data.
+       ptr = int2ptr(x->data.variable.dyna->data.variable.dyna->data.
                    constant.value.integer);
        if (!ptr) {
            exerror("null reference %s in expression %s.%s",
@@ -681,7 +686,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            v.integer = PTR2INT(gp);
            break;
        case F_subg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                gp = openSubg(gp, args[1].string);
                v.integer = PTR2INT(gp);
@@ -691,7 +696,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_issubg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                v.integer = PTR2INT(agsubg(gp, args[1].string, 0));
            } else {
@@ -700,7 +705,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstsubg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                gp = agfstsubg(gp);
                v.integer = PTR2INT(gp);
@@ -710,7 +715,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtsubg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                gp = agnxtsubg(gp);
                v.integer = PTR2INT(gp);
@@ -720,7 +725,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_node:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                np = openNode(gp, args[1].string);
                v.integer = PTR2INT(np);
@@ -730,8 +735,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_addnode:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to addNode()");
                v.integer = 0;
@@ -742,7 +747,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(addNode(gp, np, 1));
            break;
        case F_fstnode:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                np = agfstnode(gp);
                v.integer = PTR2INT(np);
@@ -752,7 +757,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtnode:
-           np = INT2PTR(Agnode_t *, args[0].integer);
+           np = int2ptr(args[0].integer);
            if (np) {
                np = agnxtnode(agroot(np), np);
                v.integer = PTR2INT(np);
@@ -762,8 +767,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtnodesg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -775,7 +780,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_isnode:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                v.integer = PTR2INT(agnode(gp, args[1].string, 0));
            } else {
@@ -784,8 +789,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_issubnode:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -796,8 +801,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_indegree:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -808,8 +813,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_outdegree:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -820,8 +825,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_degree:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -832,8 +837,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_isin:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           objp = INT2PTR(Agobj_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           objp = int2ptr(args[1].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to isIn()");
                v.integer = 0;
@@ -844,8 +849,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = agcontains (gp, objp);
            break;
        case F_compof:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to compOf()");
                v.integer = 0;
@@ -856,7 +861,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(compOf(gp, np));
            break;
        case F_kindof:
-           objp = INT2PTR(Agobj_t *, args[0].integer);
+           objp = int2ptr(args[0].integer);
            if (!objp) {
                exerror("NULL object passed to kindOf()");
                v.string = 0;
@@ -877,8 +882,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            key = args[2].string;
            if (*key == '\0')
                key = 0;
-           np = INT2PTR(Agnode_t *, args[0].integer);
-           hp = INT2PTR(Agnode_t *, args[1].integer);
+           np = int2ptr(args[0].integer);
+           hp = int2ptr(args[1].integer);
            if (!np) {
                error(ERROR_WARNING, "NULL tail node passed to edge()");
                v.integer = 0;
@@ -894,9 +899,9 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            key = args[3].string;
            if (*key == '\0')
                key = 0;
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
-           hp = INT2PTR(Agnode_t *, args[2].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
+           hp = int2ptr(args[2].integer);
            if (!np) {
                error(ERROR_WARNING, "NULL tail node passed to edge_sg()");
                v.integer = 0;
@@ -909,8 +914,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_addedge:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           ep = INT2PTR(Agedge_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           ep = int2ptr(args[1].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to addEdge()");
                v.integer = 0;
@@ -921,8 +926,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(addEdge(gp, ep, 1));
            break;
        case F_opp:
-           ep = INT2PTR(Agedge_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           ep = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!ep) {
                error(ERROR_WARNING, "NULL edge passed to opp()");
                v.integer = 0;
@@ -941,8 +946,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            key = args[2].string;
            if (*key == '\0')
                key = 0;
-           np = INT2PTR(Agnode_t *, args[0].integer);
-           hp = INT2PTR(Agnode_t *, args[1].integer);
+           np = int2ptr(args[0].integer);
+           hp = int2ptr(args[1].integer);
            if (!np) {
                error(ERROR_WARNING, "NULL tail node passed to isEdge()");
                v.integer = 0;
@@ -956,9 +961,9 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            key = args[3].string;
            if (*key == '\0')
                key = 0;
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
-           hp = INT2PTR(Agnode_t *, args[2].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
+           hp = int2ptr(args[2].integer);
            if (!gp)
                gp = agroot(np);
            if (!np) {
@@ -971,8 +976,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(isEdge(gp, np, hp, key));
            break;
        case F_issubedge:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           ep = INT2PTR(Agedge_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           ep = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(ep);
            if (ep) {
@@ -983,7 +988,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstout:
-           np = INT2PTR(Agnode_t *, args[0].integer);
+           np = int2ptr(args[0].integer);
            if (np) {
                ep = agfstout(agroot(np), np);
                v.integer = PTR2INT(ep);
@@ -993,8 +998,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstoutsg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -1006,7 +1011,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtout:
-           ep = INT2PTR(Agedge_t *, args[0].integer);
+           ep = int2ptr(args[0].integer);
            if (ep) {
                ep = agnxtout(agroot(ep), ep);
                v.integer = PTR2INT(ep);
@@ -1016,8 +1021,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtoutsg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           ep = INT2PTR(Agedge_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           ep = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(ep);
            if (ep) {
@@ -1029,7 +1034,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstin:
-           np = INT2PTR(Agnode_t *, args[0].integer);
+           np = int2ptr(args[0].integer);
            if (np) {
                ep = agfstin(agroot(np), np);
                v.integer = PTR2INT(ep);
@@ -1039,8 +1044,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstinsg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -1052,7 +1057,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtin:
-           ep = INT2PTR(Agedge_t *, args[0].integer);
+           ep = int2ptr(args[0].integer);
            if (ep) {
                ep = agnxtin(agroot(ep), ep);
                v.integer = PTR2INT(ep);
@@ -1062,8 +1067,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtinsg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           ep = INT2PTR(Agedge_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           ep = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(ep);
            if (ep) {
@@ -1075,7 +1080,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstedge:
-           np = INT2PTR(Agnode_t *, args[0].integer);
+           np = int2ptr(args[0].integer);
            if (np) {
                ep = agfstedge(agroot(np), np);
                v.integer = PTR2INT(ep);
@@ -1085,8 +1090,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstedgesg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!gp)
                gp = agroot(np);
            if (np) {
@@ -1098,8 +1103,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtedge:
-           ep = INT2PTR(Agedge_t *, args[0].integer);
-           np = INT2PTR(Agnode_t *, args[1].integer);
+           ep = int2ptr(args[0].integer);
+           np = int2ptr(args[1].integer);
            if (!ep) {
                error(ERROR_WARNING, "NULL edge passed to nxtedge()");
                v.integer = 0;
@@ -1112,9 +1117,9 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nxtedgesg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           ep = INT2PTR(Agedge_t *, args[1].integer);
-           np = INT2PTR(Agnode_t *, args[2].integer);
+           gp = int2ptr(args[0].integer);
+           ep = int2ptr(args[1].integer);
+           np = int2ptr(args[2].integer);
            if (!gp)
                gp = agroot(np);
            if (!ep) {
@@ -1129,8 +1134,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_copy:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           objp = INT2PTR(Agobj_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           objp = int2ptr(args[1].integer);
            if (!objp) {
                error(ERROR_WARNING, "NULL object passed to clone()");
                v.integer = 0;
@@ -1138,8 +1143,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(copy(gp, objp));
            break;
        case F_clone:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           objp = INT2PTR(Agobj_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           objp = int2ptr(args[1].integer);
            if (!objp) {
                error(ERROR_WARNING, "NULL object passed to clone()");
                v.integer = 0;
@@ -1147,7 +1152,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = PTR2INT(clone(gp, objp));
            break;
        case F_cloneG:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                gp = cloneG(gp, args[1].string);
                v.integer = PTR2INT(gp);
@@ -1157,8 +1162,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_copya:
-           objp = INT2PTR(Agobj_t *, args[0].integer);
-           objp1 = INT2PTR(Agobj_t *, args[1].integer);
+           objp = int2ptr(args[0].integer);
+           objp1 = int2ptr(args[1].integer);
            if (!(objp && objp1)) {
                error(ERROR_WARNING, "NULL object passed to copyA()");
                v.integer = 0;
@@ -1166,7 +1171,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = copyAttr(objp, objp1);
            break;
        case F_induce:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to induce()");
                v.integer = 1;
@@ -1176,7 +1181,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_write:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to write()");
                v.integer = 1;
@@ -1184,7 +1189,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = sfioWrite (gp, state->outFile, state->dfltIO);
            break;
        case F_writeg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to writeG()");
                v.integer = 1;
@@ -1196,7 +1201,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            v.integer = PTR2INT(gp);
            break;
        case F_fwriteg:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to fwriteG()");
                v.integer = 1;
@@ -1217,7 +1222,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            v.string = readLine(pgm, args[0].integer);
            break;
        case F_isdirect:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to isDirect()");
                v.integer = 0;
@@ -1226,7 +1231,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_isstrict:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to isStrict()");
                v.integer = 0;
@@ -1235,8 +1240,8 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_delete:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
-           objp = INT2PTR(Agobj_t *, args[1].integer);
+           gp = int2ptr(args[0].integer);
+           objp = int2ptr(args[1].integer);
            if (!objp) {
                error(ERROR_WARNING, "NULL object passed to delete()");
                v.integer = 1;
@@ -1253,7 +1258,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = deleteObj(gp, objp);
            break;
        case F_lock:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to lock()");
                v.integer = -1;
@@ -1261,7 +1266,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
                v.integer = lockGraph(gp, args[1].integer);
            break;
        case F_nnodes:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to nNodes()");
                v.integer = 0;
@@ -1270,7 +1275,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_nedges:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (!gp) {
                error(ERROR_WARNING, "NULL graph passed to nEdges()");
                v.integer = 0;
@@ -1316,7 +1321,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            break;
        case F_hasattr:
        case F_get:
-           objp = INT2PTR(Agobj_t *, args[0].integer);
+           objp = int2ptr(args[0].integer);
            name = args[1].string;
            if (!objp) {
                exerror("NULL object passed to aget()/hasAttr()");
@@ -1339,7 +1344,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
             }
            break;
        case F_set:
-           objp = INT2PTR(Agobj_t *, args[0].integer);
+           objp = int2ptr(args[0].integer);
            if (!objp) {
                error(ERROR_WARNING, "NULL object passed to aset()");
                v.integer = 1;
@@ -1360,7 +1365,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
             }
            break;
        case F_dset:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                char* kind = args[1].string;
                char* name = args[2].string;
@@ -1386,7 +1391,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            }
            break;
        case F_fstattr:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                char* kind = args[1].string;
                if (!kind) {
@@ -1404,7 +1409,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
        case F_nxtattr:
        case F_isattr:
        case F_dget:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                char* kind = args[1].string;
                char* name = args[2].string;
@@ -1437,7 +1442,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
            v.integer = aghtmlstr(args[0].string);
            break;
        case F_html:
-           gp = INT2PTR(Agraph_t *, args[0].integer);
+           gp = int2ptr(args[0].integer);
            if (gp) {
                v.string = toHtml(gp, args[1].string);
            } else {
@@ -1613,7 +1618,7 @@ setval(Expr_t * pgm, Exnode_t * x, Exid_t * sym, Exref_t * ref,
     } else if (MINNAME <= sym->index && sym->index <= MAXNAME) {
        switch (sym->index) {
        case V_outgraph:
-           state->outgraph = INT2PTR(Agraph_t *, v.integer);
+           state->outgraph = int2ptr(v.integer);
            break;
        case V_travtype:
            iv = v.integer;
@@ -1624,7 +1629,7 @@ setval(Expr_t * pgm, Exnode_t * x, Exid_t * sym, Exref_t * ref,
                      iv, typeName(pgm, T_tvtyp));
            break;
        case V_travroot:
-           np = INT2PTR(Agnode_t *, v.integer);
+           np = int2ptr(v.integer);
            if (!np || agroot(np) == state->curgraph)
                state->tvroot = np;
            else {
@@ -1633,7 +1638,7 @@ setval(Expr_t * pgm, Exnode_t * x, Exid_t * sym, Exref_t * ref,
            }
            break;
        case V_travnext:
-           np = INT2PTR(Agnode_t *, v.integer);
+           np = int2ptr(v.integer);
            if (!np || agroot(np) == state->curgraph) {
                state->tvnext = np;
                state->flags |= GV_NEXT_SET;
@@ -1929,9 +1934,9 @@ binary(Expr_t * pg, Exnode_t * l, Exnode_t * ex, Exnode_t * r, int arg,
     if (r && r->type == T_tvtyp)
        return -1;
 
-    lobjp = INT2PTR(Agobj_t *, l->data.constant.value.integer);
+    lobjp = int2ptr(l->data.constant.value.integer);
     if (r)
-       robjp = INT2PTR(Agobj_t *, r->data.constant.value.integer);
+       robjp = int2ptr(r->data.constant.value.integer);
     else
        robjp = 0;
     switch (ex->op) {
@@ -2093,7 +2098,7 @@ static int stringOf(Expr_t * prog, Exnode_t * x, int arg, Exdisc_t* disc)
            tvtypeToStr (x->data.constant.value.integer)))
            rv = -1;
     } else {
-       objp = INT2PTR(Agobj_t *, x->data.constant.value.integer);
+       objp = int2ptr(x->data.constant.value.integer);
        if (!objp) {
            exerror("cannot generate name for NULL %s",
                    typeName(prog, x->type));
@@ -2137,7 +2142,7 @@ convert(Expr_t * prog, Exnode_t * x, int type,
            if (type != FLOATING && type <= T_obj)
                ret = 0;
        } else {
-           objp = INT2PTR(Agobj_t *, x->data.constant.value.integer);
+           objp = int2ptr(x->data.constant.value.integer);
            switch (type) {
            case T_graph:
                if (!objp || AGTYPE(objp) == AGRAPH)
@@ -2197,7 +2202,7 @@ convert(Expr_t * prog, Exnode_t * x, int type,
 static Extype_t keyval(Expr_t * pgm, Extype_t v, int type, Exdisc_t * disc)
 {
     if (type <= T_obj) {
-       v.integer = AGID(INT2PTR(Agobj_t *, v.integer));
+       v.integer = AGID(int2ptr(v.integer));
     }
     return v;
 }