Moved the interpreter
[repair.git] / Repair / RepairInterpreter / tmodel.h
diff --git a/Repair/RepairInterpreter/tmodel.h b/Repair/RepairInterpreter/tmodel.h
new file mode 100755 (executable)
index 0000000..295acb7
--- /dev/null
@@ -0,0 +1,128 @@
+// stores the structure definitions
+#ifndef TMODEL_H
+#define TMODEL_H
+
+#include "classlist.h"
+
+#define STYPE_STRUCT 1
+#define STYPE_INT 2
+#define STYPE_BIT 3
+#define STYPE_BYTE 4
+#define STYPE_SHORT 5
+#define STYPE_ARRAY 0x100
+
+
+class structure {
+  public:
+  structure(char *nam);
+  void settype(int t);
+  //  void setparams(tparam **tp,int n);
+  void setsubtype(ttype *sub);
+  ttype * getsubtype();
+  void setfields(tfield **fieldarray, int n);
+  void setlabels(tlabel **lab,int n);
+  /*  int getnumparams();
+      tparam * getparam(int i);*/
+  int getnumlabels();
+  tlabel * getlabel(int i);
+  int getnumfields();
+  tfield * getfield(int i);
+  char * getname();
+  void print();
+  int getsize(bitreader *br,model *m, Hashtable *env);
+
+  private:
+  int type;
+  char *name;
+  /*  tparam ** params;
+      int numparams;*/
+  ttype *subtype;
+  tfield ** fields;
+  int numfields;
+  tlabel ** labels;
+  int numlabels;
+};
+
+#define pointersize 4
+#define intsize 4
+#define shortsize 2
+
+#define TTYPE_STRUCT 0x1
+#define TTYPE_INT 0x2
+#define TTYPE_BIT 0x3
+#define TTYPE_BYTE 0x4
+#define TTYPE_SHORT 0x5
+#define TTYPE_PTR 0x100
+
+
+
+class ttype {
+ public:
+  void print();
+  ttype(int typ);
+  ttype(char *t);
+  ttype(char *t,  AElementexpr *size);
+  ttype(int type, AElementexpr * size);
+  void makeptr();
+  void setsize(AElementexpr *size);
+  AElementexpr * getsize();
+  int getbytes(bitreader *br,model *m,Hashtable *env);
+
+  bool isptr();
+  int numderef();
+  int gettype();
+  int basesize(bitreader *br,model *m,Hashtable *env);
+  /*  int getnumparamvalues();
+      AElementexpr * getparamvalues(int i);*/
+  char * getname();
+
+ private:
+  int primtype;
+  int intlength; /*for variable length integers*/
+  char * type;
+  /*  AElementexpr ** paramvalues;
+      int numparamvalues;*/
+  AElementexpr * asize;
+};
+
+/*class tparam {
+ public:
+  void print();
+  tparam(ttype *t,char * n);
+  char * getname();
+
+ private:
+  ttype *type;
+  char *name;
+  };*/
+
+
+
+class tlabel {
+ public:
+  void print();
+  tlabel(tfield *f, char *fld,AElementexpr *a);
+  char * getname();
+  ttype * gettype();
+  char *getfield();
+  AElementexpr * getindex();
+
+ private:
+  char *field;
+  AElementexpr *index;
+  tfield * specifictype;
+};
+
+class tfield {
+ public:
+  tfield(ttype *tt, char *n);
+  void print();
+  ttype * gettype();
+  char * getname();
+
+ private:
+  char *name;
+  ttype *type;
+  bool reserved;
+};
+#endif