00001 #ifndef _MESSAGE_H 00002 #define _MESSAGE_H 00003 00004 #include "xi-Template.h" 00005 00006 namespace xi { 00007 00008 class MsgVar { 00009 public: 00010 Type* type; 00011 const char* name; 00012 int cond; 00013 int array; 00014 MsgVar(Type* t, const char* n, int c, int a); 00015 Type* getType(); 00016 const char* getName(); 00017 int isConditional(); 00018 int isArray(); 00019 void print(XStr& str); 00020 }; 00021 00022 class MsgVarList : public Printable { 00023 public: 00024 MsgVar* msg_var; 00025 MsgVarList* next; 00026 MsgVarList(MsgVar* mv, MsgVarList* n = 0); 00027 void print(XStr& str); 00028 int len(void); 00029 }; 00030 00031 class Message : public TEntity { 00032 NamedType* type; 00033 MsgVarList* mvlist; 00034 void printVars(XStr& str); 00035 00036 public: 00037 Message(int l, NamedType* t, MsgVarList* mv = 0); 00038 void print(XStr& str); 00039 void genDecls(XStr& str); 00040 void genDefs(XStr& str); 00041 void genReg(XStr& str); 00042 00043 virtual const char* proxyPrefix(void); 00044 void genAllocDecl(XStr& str); 00045 int numArrays(void); 00046 int numConditional(void); 00047 int numVars(void); 00048 }; 00049 00050 } // namespace xi 00051 00052 #endif // ifndef _MESSAGE_H