#endif
}
+static Sflong_t ptr2int(const void *p) {
#ifdef HAVE_INTPTR_T
-#define PTR2INT(v) ((Sflong_t)(intptr_t)(v))
+ return (Sflong_t)(intptr_t)p;
#else
-#define PTR2INT(v) ((Sflong_t)(v))
+ return (Sflong_t)p;
#endif
+}
static int iofread(void *chan, char *buf, int bufsize)
{
switch (sym->index) {
case M_head:
if (isedge(objp))
- v->integer = PTR2INT(AGHEAD((Agedge_t *) objp));
+ v->integer = ptr2int(AGHEAD((Agedge_t *) objp));
else {
error(ERROR_WARNING, "head of non-edge");
return -1;
break;
case M_tail:
if (isedge(objp))
- v->integer = PTR2INT(AGTAIL((Agedge_t *) objp));
+ v->integer = ptr2int(AGTAIL((Agedge_t *) objp));
else {
error(ERROR_WARNING, "tail of non-edge");
return -1;
break;
case M_parent:
if (AGTYPE(objp) == AGRAPH)
- v->integer = PTR2INT(agparent((Agraph_t *) objp));
+ v->integer = ptr2int(agparent((Agraph_t *) objp));
else {
exerror("parent of non-graph");
return -1;
}
break;
case M_root:
- v->integer = PTR2INT(agroot(agraphof(objp)));
+ v->integer = ptr2int(agroot(agraphof(objp)));
break;
case M_n_edges:
if (AGTYPE(objp) == AGRAPH)
switch (sym->index) {
case F_graph:
gp = openG(args[0].string, xargs(args[1].string));
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
break;
case F_subg:
gp = int2ptr(args[0].integer);
if (gp) {
gp = openSubg(gp, args[1].string);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
} else {
error(ERROR_WARNING, "NULL graph passed to subg()");
v.integer = 0;
case F_issubg:
gp = int2ptr(args[0].integer);
if (gp) {
- v.integer = PTR2INT(agsubg(gp, args[1].string, 0));
+ v.integer = ptr2int(agsubg(gp, args[1].string, 0));
} else {
error(ERROR_WARNING, "NULL graph passed to isSubg()");
v.integer = 0;
gp = int2ptr(args[0].integer);
if (gp) {
gp = agfstsubg(gp);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
} else {
error(ERROR_WARNING, "NULL graph passed to fstsubg()");
v.integer = 0;
gp = int2ptr(args[0].integer);
if (gp) {
gp = agnxtsubg(gp);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
} else {
error(ERROR_WARNING, "NULL graph passed to nxtsubg()");
v.integer = 0;
gp = int2ptr(args[0].integer);
if (gp) {
np = openNode(gp, args[1].string);
- v.integer = PTR2INT(np);
+ v.integer = ptr2int(np);
} else {
error(ERROR_WARNING, "NULL graph passed to node()");
v.integer = 0;
error(ERROR_WARNING, "NULL node passed to addNode()");
v.integer = 0;
} else
- v.integer = PTR2INT(addNode(gp, np, 1));
+ v.integer = ptr2int(addNode(gp, np, 1));
break;
case F_fstnode:
gp = int2ptr(args[0].integer);
if (gp) {
np = agfstnode(gp);
- v.integer = PTR2INT(np);
+ v.integer = ptr2int(np);
} else {
error(ERROR_WARNING, "NULL graph passed to fstnode()");
v.integer = 0;
np = int2ptr(args[0].integer);
if (np) {
np = agnxtnode(agroot(np), np);
- v.integer = PTR2INT(np);
+ v.integer = ptr2int(np);
} else {
error(ERROR_WARNING, "NULL node passed to nxtnode()");
v.integer = 0;
gp = agroot(np);
if (np) {
np = agnxtnode(gp, np);
- v.integer = PTR2INT(np);
+ v.integer = ptr2int(np);
} else {
error(ERROR_WARNING, "NULL node passed to nxtnode_sg()");
v.integer = 0;
case F_isnode:
gp = int2ptr(args[0].integer);
if (gp) {
- v.integer = PTR2INT(agnode(gp, args[1].string, 0));
+ v.integer = ptr2int(agnode(gp, args[1].string, 0));
} else {
error(ERROR_WARNING, "NULL graph passed to isNode()");
v.integer = 0;
if (!gp)
gp = agroot(np);
if (np) {
- v.integer = PTR2INT(addNode(gp, np, 0));
+ v.integer = ptr2int(addNode(gp, np, 0));
} else {
error(ERROR_WARNING, "NULL node passed to isSubnode()");
v.integer = 0;
error(ERROR_WARNING, "NULL node passed to compOf()");
v.integer = 0;
} else
- v.integer = PTR2INT(compOf(gp, np));
+ v.integer = ptr2int(compOf(gp, np));
break;
case F_kindof:
objp = int2ptr(args[0].integer);
v.integer = 0;
} else {
ep = openEdge(0, np, hp, key);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
}
break;
case F_edgesg:
v.integer = 0;
} else {
ep = openEdge(gp, np, hp, key);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
}
break;
case F_addedge:
error(ERROR_WARNING, "NULL edge passed to addEdge()");
v.integer = 0;
} else
- v.integer = PTR2INT(addEdge(gp, ep, 1));
+ v.integer = ptr2int(addEdge(gp, ep, 1));
break;
case F_opp:
ep = int2ptr(args[0].integer);
np = agtail(ep);
else
np = aghead(ep);
- v.integer = PTR2INT(np);
+ v.integer = ptr2int(np);
}
break;
case F_isedge:
error(ERROR_WARNING, "NULL head node passed to isEdge()");
v.integer = 0;
} else
- v.integer = PTR2INT(isEdge(agroot(np), np, hp, key));
+ v.integer = ptr2int(isEdge(agroot(np), np, hp, key));
break;
case F_isedgesg:
key = args[3].string;
error(ERROR_WARNING, "NULL head node passed to isEdge_sg()");
v.integer = 0;
} else
- v.integer = PTR2INT(isEdge(gp, np, hp, key));
+ v.integer = ptr2int(isEdge(gp, np, hp, key));
break;
case F_issubedge:
gp = int2ptr(args[0].integer);
if (!gp)
gp = agroot(ep);
if (ep) {
- v.integer = PTR2INT(addEdge(gp, ep, 0));
+ v.integer = ptr2int(addEdge(gp, ep, 0));
} else {
error(ERROR_WARNING, "NULL edge passed to isSubedge()");
v.integer = 0;
np = int2ptr(args[0].integer);
if (np) {
ep = agfstout(agroot(np), np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstout()");
v.integer = 0;
gp = agroot(np);
if (np) {
ep = agfstout(gp, np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstout_sg()");
v.integer = 0;
ep = int2ptr(args[0].integer);
if (ep) {
ep = agnxtout(agroot(ep), ep);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL edge passed to nxtout()");
v.integer = 0;
gp = agroot(ep);
if (ep) {
ep = agnxtout(gp, ep);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL edge passed to nxtout_sg()");
v.integer = 0;
np = int2ptr(args[0].integer);
if (np) {
ep = agfstin(agroot(np), np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstin()");
v.integer = 0;
gp = agroot(np);
if (np) {
ep = agfstin(gp, np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstin_sg()");
v.integer = 0;
ep = int2ptr(args[0].integer);
if (ep) {
ep = agnxtin(agroot(ep), ep);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL edge passed to nxtin()");
v.integer = 0;
gp = agroot(ep);
if (ep) {
ep = agnxtin(gp, ep);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL edge passed to nxtin_sg()");
v.integer = 0;
np = int2ptr(args[0].integer);
if (np) {
ep = agfstedge(agroot(np), np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstedge()");
v.integer = 0;
gp = agroot(np);
if (np) {
ep = agfstedge(gp, np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
} else {
error(ERROR_WARNING, "NULL node passed to fstedge_sg()");
v.integer = 0;
v.integer = 0;
} else {
ep = agnxtedge(agroot(np), ep, np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
}
break;
case F_nxtedgesg:
v.integer = 0;
} else {
ep = agnxtedge(gp, ep, np);
- v.integer = PTR2INT(ep);
+ v.integer = ptr2int(ep);
}
break;
case F_copy:
error(ERROR_WARNING, "NULL object passed to clone()");
v.integer = 0;
} else
- v.integer = PTR2INT(copy(gp, objp));
+ v.integer = ptr2int(copy(gp, objp));
break;
case F_clone:
gp = int2ptr(args[0].integer);
error(ERROR_WARNING, "NULL object passed to clone()");
v.integer = 0;
} else
- v.integer = PTR2INT(clone(gp, objp));
+ v.integer = ptr2int(clone(gp, objp));
break;
case F_cloneG:
gp = int2ptr(args[0].integer);
if (gp) {
gp = cloneG(gp, args[1].string);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
} else {
error(ERROR_WARNING, "NULL graph passed to cloneG()");
v.integer = 0;
break;
case F_readg:
gp = readFile(args[0].string);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
break;
case F_fwriteg:
gp = int2ptr(args[0].integer);
break;
case F_freadg:
gp = freadFile(pgm, args[0].integer);
- v.integer = PTR2INT(gp);
+ v.integer = ptr2int(gp);
break;
case F_openf:
v.integer = openFile(pgm, args[0].string, args[1].string);
} else if (sym->lex == ID && sym->index <= LAST_V) {
switch (sym->index) {
case V_this:
- v.integer = PTR2INT(state->curobj);
+ v.integer = ptr2int(state->curobj);
break;
case V_thisg:
- v.integer = PTR2INT(state->curgraph);
+ v.integer = ptr2int(state->curgraph);
break;
case V_nextg:
- v.integer = PTR2INT(state->nextgraph);
+ v.integer = ptr2int(state->nextgraph);
break;
case V_targt:
- v.integer = PTR2INT(state->target);
+ v.integer = ptr2int(state->target);
break;
case V_outgraph:
- v.integer = PTR2INT(state->outgraph);
+ v.integer = ptr2int(state->outgraph);
break;
case V_tgtname:
v.string = state->tgtname;
v.integer = state->tvt;
break;
case V_travroot:
- v.integer = PTR2INT(state->tvroot);
+ v.integer = ptr2int(state->tvroot);
break;
case V_travnext:
- v.integer = PTR2INT(state->tvnext);
+ v.integer = ptr2int(state->tvnext);
break;
case V_travedge:
- v.integer = PTR2INT(state->tvedge);
+ v.integer = ptr2int(state->tvedge);
break;
}
return v;