Accidentally checked this file in...removing it now.
[repair.git] / Repair / RepairInterpreter / tmodel.h
1 // stores the structure definitions
2 #ifndef TMODEL_H
3 #define TMODEL_H
4
5 #include "classlist.h"
6
7 #define STYPE_STRUCT 1
8 #define STYPE_INT 2
9 #define STYPE_BIT 3
10 #define STYPE_BYTE 4
11 #define STYPE_SHORT 5
12 #define STYPE_ARRAY 0x100
13
14
15 class structure {
16   public:
17   structure(char *nam);
18   void settype(int t);
19   //  void setparams(tparam **tp,int n);
20   void setsubtype(ttype *sub);
21   ttype * getsubtype();
22   void setfields(tfield **fieldarray, int n);
23   void setlabels(tlabel **lab,int n);
24   /*  int getnumparams();
25       tparam * getparam(int i);*/
26   int getnumlabels();
27   tlabel * getlabel(int i);
28   int getnumfields();
29   tfield * getfield(int i);
30   char * getname();
31   void print();
32   int getsize(bitreader *br,model *m, Hashtable *env);
33
34   private:
35   int type;
36   char *name;
37   /*  tparam ** params;
38       int numparams;*/
39   ttype *subtype;
40   tfield ** fields;
41   int numfields;
42   tlabel ** labels;
43   int numlabels;
44 };
45
46 #define pointersize 4
47 #define intsize 4
48 #define shortsize 2
49
50 #define TTYPE_STRUCT 0x1
51 #define TTYPE_INT 0x2
52 #define TTYPE_BIT 0x3
53 #define TTYPE_BYTE 0x4
54 #define TTYPE_SHORT 0x5
55 #define TTYPE_PTR 0x100
56
57
58
59 class ttype {
60  public:
61   void print();
62   ttype(int typ);
63   ttype(char *t);
64   ttype(char *t,  AElementexpr *size);
65   ttype(int type, AElementexpr * size);
66   void makeptr();
67   void setsize(AElementexpr *size);
68   AElementexpr * getsize();
69   int getbytes(bitreader *br,model *m,Hashtable *env);
70
71   bool isptr();
72   int numderef();
73   int gettype();
74   int basesize(bitreader *br,model *m,Hashtable *env);
75   /*  int getnumparamvalues();
76       AElementexpr * getparamvalues(int i);*/
77   char * getname();
78
79  private:
80   int primtype;
81   int intlength; /*for variable length integers*/
82   char * type;
83   /*  AElementexpr ** paramvalues;
84       int numparamvalues;*/
85   AElementexpr * asize;
86 };
87
88 /*class tparam {
89  public:
90   void print();
91   tparam(ttype *t,char * n);
92   char * getname();
93
94  private:
95   ttype *type;
96   char *name;
97   };*/
98
99
100
101 class tlabel {
102  public:
103   void print();
104   tlabel(tfield *f, char *fld,AElementexpr *a);
105   char * getname();
106   ttype * gettype();
107   char *getfield();
108   AElementexpr * getindex();
109
110  private:
111   char *field;
112   AElementexpr *index;
113   tfield * specifictype;
114 };
115
116 class tfield {
117  public:
118   tfield(ttype *tt, char *n);
119   void print();
120   ttype * gettype();
121   char * getname();
122
123  private:
124   char *name;
125   ttype *type;
126   bool reserved;
127 };
128 #endif