source: dev/trunk/ab5.0/abdev/BasicCompiler_Common/include/Meta.h@ 520

Last change on this file since 520 was 520, checked in by dai_9181, 16 years ago

Hashmapクラスをjengaプロジェクトに移動。

File size: 3.0 KB
Line 
1#pragma once
2
3#include <option.h>
4#include <Program.h>
5#include <Class.h>
6#include <Procedure.h>
7#include <TypeDef.h>
8#include <Variable.h>
9#include <Const.h>
10#include <Delegate.h>
11
12class Meta
13{
14 // 名前空間
15 NamespaceScopesCollection namespaceScopesCollection;
16
17 // 関数・メソッド
18 UserProcs userProcs;
19
20 // DLL関数
21 DllProcs dllProcs;
22
23 // クラス
24 Classes classesImpl;
25
26 // グローバル変数
27 GlobalVars globalVars;
28
29 // グローバル定数
30 Consts globalConsts;
31
32 // グローバル定数マクロ
33 ConstMacros globalConstMacros;
34
35 // blittable型
36 BlittableTypes blittableTypes;
37
38 // TypeDef
39 TypeDefCollection typeDefs;
40
41 // 関数ポインタ
42 ProcPointers procPointers;
43
44 // デリゲート
45 Delegates delegates;
46
47 // XMLシリアライズ用
48private:
49 friend class boost::serialization::access;
50 template<class Archive> void serialize(Archive& ar, const unsigned int version)
51 {
52 trace_for_serialize( "serializing - Meta" );
53
54 ar & BOOST_SERIALIZATION_NVP( namespaceScopesCollection );
55 ar & BOOST_SERIALIZATION_NVP( userProcs );
56 ar & BOOST_SERIALIZATION_NVP( dllProcs );
57 ar & BOOST_SERIALIZATION_NVP( classesImpl );
58 ar & BOOST_SERIALIZATION_NVP( globalVars );
59 ar & BOOST_SERIALIZATION_NVP( globalConsts );
60 ar & BOOST_SERIALIZATION_NVP( globalConstMacros );
61 ar & BOOST_SERIALIZATION_NVP( blittableTypes );
62 ar & BOOST_SERIALIZATION_NVP( typeDefs );
63 ar & BOOST_SERIALIZATION_NVP( procPointers );
64 ar & BOOST_SERIALIZATION_NVP( delegates );
65 }
66
67 Classes *pNowClassesForDebugger;
68
69public:
70 Meta()
71 : classesImpl()
72 , pNowClassesForDebugger( &classesImpl )
73 {
74 }
75
76 // 初期化
77 void Clear();
78
79 // 静的リンク
80 void StaticLink( Meta &meta, long dataSectionBaseOffset, int sourceIndexBase );
81
82 const NamespaceScopesCollection &GetNamespaces() const
83 {
84 return namespaceScopesCollection;
85 }
86 NamespaceScopesCollection &GetNamespaces()
87 {
88 return namespaceScopesCollection;
89 }
90
91 const UserProcs &GetUserProcs() const
92 {
93 return userProcs;
94 }
95 UserProcs &GetUserProcs()
96 {
97 return userProcs;
98 }
99
100 const DllProcs &GetDllProcs() const
101 {
102 return dllProcs;
103 }
104 DllProcs &GetDllProcs()
105 {
106 return dllProcs;
107 }
108
109 Classes &GetClasses()
110 {
111 return *pNowClassesForDebugger;
112 }
113 void SetClasses( Classes *pClasses )
114 {
115 this->pNowClassesForDebugger = pClasses;
116 }
117
118 const GlobalVars &GetGlobalVars() const
119 {
120 return globalVars;
121 }
122 GlobalVars &GetGlobalVars()
123 {
124 return globalVars;
125 }
126
127 const Consts &GetGlobalConsts() const
128 {
129 return globalConsts;
130 }
131 Consts &GetGlobalConsts()
132 {
133 return globalConsts;
134 }
135
136 const ConstMacros &GetGlobalConstMacros() const
137 {
138 return globalConstMacros;
139 }
140 ConstMacros &GetGlobalConstMacros()
141 {
142 return globalConstMacros;
143 }
144
145 BlittableTypes &GetBlittableTypes()
146 {
147 return blittableTypes;
148 }
149
150 TypeDefCollection &GetTypeDefs()
151 {
152 return typeDefs;
153 }
154
155 ProcPointers &GetProcPointers()
156 {
157 return procPointers;
158 }
159
160 Delegates &GetDelegates()
161 {
162 return delegates;
163 }
164};
Note: See TracBrowser for help on using the repository browser.