SDAG: Consolidate handling of parameter types to improve template support
[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;
17     XStr *arrayLength;
18     int isMsg;
19
20     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)
21         { 
22           if (t != NULL) { type = new XStr(t); } 
23           else {type = NULL;}
24           if (n != NULL) { name = new XStr(n); }
25           else { name = NULL; }
26           if (a != NULL) {arrayLength = new XStr(a); }
27           else { arrayLength = NULL; }
28         }
29
30 CStateVar(ParamList *pl)
31       : isVoid(0), type(new XStr(*(pl->param->getType()))), numPtrs(0),
32       name(new XStr(pl->getGivenName())), byRef(pl->isReference() ? new XStr("&") : NULL),
33       arrayLength(pl->isArray() ? new XStr(pl->getArrayLen()) : NULL), isMsg(pl->isMessage())
34       { }
35 };
36
37 }
38
39 #endif