#include <stdio.h>
#include <math.h>
-#define ISEDGE(e) (AGTYPE(e)&2)
+static int isedge(Agobj_t *obj) {
+ return AGTYPE(obj) == AGOUTEDGE || AGTYPE(obj) == AGINEDGE;
+}
+
#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))
exerror("Current object $ not defined");
return 0;
}
- if (ISEDGE(objp))
+ if (isedge(objp))
return deref(pgm, x, ref->next,
(Agobj_t *) AGHEAD((Agedge_t *) objp), state);
else
exerror("Current object $ not defined");
return 0;
}
- if (ISEDGE(objp))
+ if (isedge(objp))
return deref(pgm, x, ref->next,
(Agobj_t *) AGTAIL((Agedge_t *) objp), state);
else
if (sym->lex == ID) {
switch (sym->index) {
case M_head:
- if (ISEDGE(objp))
+ if (isedge(objp))
v->integer = PTR2INT(AGHEAD((Agedge_t *) objp));
else {
error(ERROR_WARNING, "head of non-edge");
}
break;
case M_tail:
- if (ISEDGE(objp))
+ if (isedge(objp))
v->integer = PTR2INT(AGTAIL((Agedge_t *) objp));
else {
error(ERROR_WARNING, "tail of non-edge");
ret = 0;
break;
case T_edge:
- if (!objp || ISEDGE(objp))
+ if (!objp || isedge(objp))
ret = 0;
break;
}