X-Git-Url: http://plrg.eecs.uci.edu/git/?p=repair.git;a=blobdiff_plain;f=Repair%2FRepairInterpreter%2Ftmodel.h;fp=Repair%2FRepairInterpreter%2Ftmodel.h;h=295acb732944395edc0a6fb76e5716b72194ac6a;hp=0000000000000000000000000000000000000000;hb=be34c81d43fc69f77c813151c794198ed914a492;hpb=3469d127f4a400205edf2663a33e53258f934be7 diff --git a/Repair/RepairInterpreter/tmodel.h b/Repair/RepairInterpreter/tmodel.h new file mode 100755 index 0000000..295acb7 --- /dev/null +++ b/Repair/RepairInterpreter/tmodel.h @@ -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