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

Last change on this file since 637 was 637, checked in by dai_9181, 15 years ago

リンカの依存関係解決モジュールを製作中

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