source: dev/trunk/ab5.0/abdev/ab_common/include/Lexical/Meta.h@ 636

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

libファイルを跨ったテンプレート展開に対応。

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