www.pudn.com > ANSI_C_OOP.rar > lists.c
#include#include #include "Circle.h" #include "List.h" int main (int argc, char ** argv) { void * q; unsigned n; initList(); initCircle(); q = new(List, 1); while (* ++ argv) switch (** argv) { case '+': switch ((* argv)[1]) { case 'c': addFirst(q, new(Circle, 1, 2, 3)); break; case 'p': addFirst(q, new(Point, 4, 5)); break; default: addFirst(q, new(Object)); } break; case '-': puto(takeLast(q), stdout); break; case '.': n = count(q); while (n -- > 0) { const void * p = takeFirst(q); if (isOf(p, Point)) draw(p); else puto(p, stdout); addLast(q, p); } break; default: if (isdigit(** argv & 0xff)) addFirst(q, (void *) atoi(* argv)); else addFirst(q, * argv + 1); } return 0; }