9 * We reserve no LEGAL rights to SORCERER -- SORCERER is in the public
10 * domain. An individual or company may do whatever they wish with
11 * source code distributed with SORCERER or the code generated by
12 * SORCERER, including the incorporation of SORCERER, or its output, into
13 * commerical software.
15 * We encourage users to develop software with SORCERER. However, we do
16 * ask that credit is given to us for developing SORCERER. By "credit",
17 * we mean that if you incorporate our source code into one of your
18 * programs (commercial product, research project, or otherwise) that you
19 * acknowledge this fact somewhere in the documentation, research report,
20 * etc... If you like SORCERER and have developed a nice tool with the
21 * output, please mention that you developed it using SORCERER. In
22 * addition, we ask that this header remain intact in our source code.
23 * As long as these guidelines are kept, we expect to continue enhancing
24 * this system and expect to make other tools available as they are
29 * Parr Research Corporation
30 * with Purdue University and AHPCRC, University of Minnesota
43 void *_elem; /* pointer to any kind of element */
46 SListNode() {_elem=_next=NULL;}
47 virtual ~SListNode() {_elem=_next=NULL;}
48 void *elem() { return _elem; }
49 void setElem(void *e) { _elem = e; }
50 void setNext(SListNode *t) { _next = t; }
51 SListNode *next() { return _next; }
55 SListNode *head, *tail;
57 SList() {head=tail=NULL;}
58 virtual ~SList() {head=tail=NULL;}
59 virtual void *iterate(SListNode **);
60 virtual void add(void *e);
62 virtual PCCTS_AST *to_ast(SList list);
63 virtual void require(int e,char *err){ if ( !e ) panic(err); }
64 virtual void panic(char *err){ fprintf(stderr, "SList panic: %s\n", err); exit(PCCTS_EXIT_FAILURE); }