75413eaf51e410d6112f7a38c402b670246895b1
[charm.git] / src / xlat-i / sdag / CStateVar.h
1 #ifndef _CStateVar_H_
2 #define _CStateVar_H_
3
4 #include "xi-util.h"
5 #include "xi-symbol.h"
6
7 namespace xi {
8
9   class ParamList;
10
11 struct CStateVar {
12     int isVoid;
13     XStr *type;
14     int numPtrs;
15     XStr *name;
16     XStr *byRef, *declaredRef;
17     bool byConst;
18     XStr *arrayLength;
19     int isMsg;
20
21     CStateVar(int v, const char *t, int np, const char *n, XStr *r, const char *a, int m) : isVoid(v), numPtrs(np),  byRef(r), isMsg(m)
22         { 
23           if (t != NULL) { type = new XStr(t); } 
24           else {type = NULL;}
25           if (n != NULL) { name = new XStr(n); }
26           else { name = NULL; }
27           if (a != NULL) {arrayLength = new XStr(a); }
28           else { arrayLength = NULL; }
29         }
30
31 CStateVar(ParamList *pl)
32       : isVoid(0)
33       , type(new XStr(*(pl->param->getType())))
34       , numPtrs(0)
35       , name(new XStr(pl->getGivenName()))
36       , byRef(pl->isReference() ? new XStr("&") : NULL)
37       , declaredRef(pl->declaredReference() ? new XStr("&") : NULL)
38       , byConst(pl->isConst())
39       , arrayLength(pl->isArray() ? new XStr(pl->getArrayLen()) : NULL)
40       , isMsg(pl->isMessage())
41       { }
42 };
43
44 }
45
46 #endif