~ubuntu-branches/ubuntu/lucid/cdrdao/lucid

« back to all changes in this revision

Viewing changes to pccts/h/SList.h

  • Committer: Bazaar Package Importer
  • Author(s): Andrew Suffield
  • Date: 2004-06-24 22:33:16 UTC
  • Revision ID: james.westby@ubuntu.com-20040624223316-534onzugaeeyq61j
Tags: upstream-1.1.9
ImportĀ upstreamĀ versionĀ 1.1.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef SList_h
 
2
#define SList_h
 
3
 
 
4
/*
 
5
 * SList.h
 
6
 *
 
7
 * SOFTWARE RIGHTS
 
8
 *
 
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.
 
14
 *
 
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
 
25
 * completed.
 
26
 *
 
27
 * PCCTS 1.33
 
28
 * Terence Parr
 
29
 * Parr Research Corporation
 
30
 * with Purdue University and AHPCRC, University of Minnesota
 
31
 * 1992-2000
 
32
 */
 
33
 
 
34
#include "pcctscfg.h"
 
35
 
 
36
#include "pccts_stdio.h"
 
37
#include "pccts_stdlib.h"
 
38
 
 
39
PCCTS_NAMESPACE_STD
 
40
 
 
41
#include "PCCTSAST.h"
 
42
 
 
43
class PCCTS_AST;
 
44
 
 
45
class SListNode {
 
46
protected:
 
47
        void *_elem;                    /* pointer to any kind of element */
 
48
        SListNode *_next;
 
49
public:
 
50
        SListNode()                             {_elem=_next=NULL;}
 
51
        virtual ~SListNode()    {_elem=_next=NULL;}
 
52
        void *elem()                    { return _elem; }
 
53
        void setElem(void *e)   { _elem = e; }
 
54
        void setNext(SListNode *t)      { _next = t; }
 
55
        SListNode *next()               { return _next; }
 
56
};
 
57
 
 
58
class SList {
 
59
        SListNode *head, *tail;
 
60
public:
 
61
        SList() {head=tail=NULL;}
 
62
        virtual ~SList() {head=tail=NULL;}
 
63
        virtual void *iterate(SListNode **);
 
64
        virtual void add(void *e);
 
65
        virtual void lfree();
 
66
        virtual PCCTS_AST *to_ast(SList list);
 
67
        virtual void require(int e,char *err){ if ( !e ) panic(err); }
 
68
        virtual void panic(char *err){ /* MR23 */ printMessage(stderr, "SList panic: %s\n", err); exit(PCCTS_EXIT_FAILURE); }
 
69
        virtual int printMessage(FILE* pFile, const char* pFormat, ...); // MR23
 
70
};
 
71
 
 
72
#endif