#ifndef DECL_H #define DECL_H enum { DECL_FUNC = 1, DECL_ARRAY = 2, DECL_STRUCT = 4, //NOT vars DECL_GLOBAL = 8, DECL_LOCAL = 16, DECL_PARAM = 32, DECL_FIELD = 64 //ARE vars }; struct Type; struct ConstType; struct Decl { string name; Type* type; //type int kind, offset; ConstType* defType; //default value Decl(const string& s, Type* t, int k, ConstType* d = 0) : name(s), type(t), kind(k), defType(d) {} ~Decl(); virtual void getName(char* buff); }; struct DeclSeq { vector decls; DeclSeq(); ~DeclSeq(); Decl* findDecl(const string& s); Decl* insertDecl(const string& s, Type* t, int kind, ConstType* d = 0); int size() { return decls.size(); } }; #endif