/* parse.c 724b */ Value parsesx(Par p) { switch (p->alt) { case ATOM: { Name n = p->u.atom; const char *s = nametostr(n); long l; /* value of digits in s, if any */ char *t; /* first nondigit in s */ l = strtol(s, &t, 10); if (*t == '\0' && *s != '\0') /* s is all digits */ return mkNum(l); else if (strcmp(s, "#t") == 0) return truev; else if (strcmp(s, "#f") == 0) return falsev; else if (strcmp(s, ".") == 0) error("this interpreter cannot handle . in quoted S-expressions" ); else return mkSym(n); } case LIST: /* parsesx [[LIST]] and return 724c */ if (p->u.list == NULL) return mkNil(); else return mkPair(allocate(parsesx(p->u.list->hd)), allocate(parsesx(mkList(p->u.list->tl)))); } assert(0); return falsev; }
void addPS(PointSet * ps, int x, int y) { point pt; pt.x = x; pt.y = y; dtinsert(ps, mkPair(pt)); }
void insertPS(PointSet * ps, point pt) { pair *pp; pp = mkPair(pt); if (dtinsert(ps, pp) != pp) free(pp); }
void addPS(PointSet * ps, int x, int y) { point pt; pair *pp; pt.x = x; pt.y = y; pp = mkPair(pt); if (dtinsert(ps, pp) != pp) free(pp); }
void insertPS(PointSet * ps, point pt) { dtinsert(ps, mkPair(pt)); }