charmxi: abolish use of TList in SDAG processing
[charm.git] / src / xlat-i / sdag / CParsedFile.h
1 #ifndef CK_CPARSEDFILE_H
2 #define CK_CPARSEDFILE_H
3
4 #include "xi-symbol.h"
5 #include "CEntry.h"
6 #include "sdag-globals.h"
7 #include "EToken.h"
8 #include <list>
9
10 namespace xi {
11
12 class Chare;
13 class Entry;
14
15 class CParsedFile {
16   private:
17     void mapCEntry();                   // search and check if all functions in when() are defined.
18     void generateConnectEntryList(void);
19     void generateEntryList(void);       // collect and setup CEntry list for When and If
20     void generateCode(XStr& decls, XStr& defs);
21     void generateEntries(XStr& decls, XStr& defs);
22     void generateConnectEntries(XStr& output);
23     void generateInitFunction(XStr& decls, XStr& defs);
24     void generatePupFunction(XStr& output);
25     void generateTraceEp(XStr& decls, XStr& defs);
26     void generateRegisterEp(XStr& decls, XStr& defs);
27     void generateDependencyMergePoints(XStr& output);
28     std::list<Entry*> nodeList;
29     std::list<CEntry*> entryList;
30     std::list<SdagConstruct *> connectEntryList;
31     Chare *container;
32
33   public:
34     static XStr *className;
35     CParsedFile(Chare *c): container(c) {}
36     ~CParsedFile(void){}
37     void print(int indent);
38     void addNode(Entry *e) { nodeList.push_back(e); }
39     void doProcess(XStr& classname, XStr& decls, XStr& defs);
40 };
41
42 }
43
44 #endif