#pragma once class Meta { // 名前空間 NamespaceScopesCollection namespaceScopesCollection; // 関数・メソッド UserProcs userProcs; // DLL関数 DllProcs dllProcs; // クラス Classes classesImpl; // グローバル変数 GlobalVars globalVars; // グローバル定数 Consts globalConsts; // グローバル定数マクロ ConstMacros globalConstMacros; // blittable型 BlittableTypes blittableTypes; // TypeDef TypeDefCollection typeDefs; // 関数ポインタ ProcPointers procPointers; // デリゲート Delegates delegates; // XMLシリアライズ用 private: friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - Meta" ); ar & BOOST_SERIALIZATION_NVP( namespaceScopesCollection ); ar & BOOST_SERIALIZATION_NVP( userProcs ); ar & BOOST_SERIALIZATION_NVP( dllProcs ); ar & BOOST_SERIALIZATION_NVP( classesImpl ); ar & BOOST_SERIALIZATION_NVP( globalVars ); ar & BOOST_SERIALIZATION_NVP( globalConsts ); ar & BOOST_SERIALIZATION_NVP( globalConstMacros ); ar & BOOST_SERIALIZATION_NVP( blittableTypes ); ar & BOOST_SERIALIZATION_NVP( typeDefs ); ar & BOOST_SERIALIZATION_NVP( procPointers ); ar & BOOST_SERIALIZATION_NVP( delegates ); } Classes *pNowClassesForDebugger; public: Meta() : classesImpl() , pNowClassesForDebugger( &classesImpl ) { } // 初期化 void Clear(); // 静的リンク void StaticLink( Meta &meta, long dataSectionBaseOffset, int sourceIndexBase ); const NamespaceScopesCollection &GetNamespaces() const { return namespaceScopesCollection; } NamespaceScopesCollection &GetNamespaces() { return namespaceScopesCollection; } const UserProcs &GetUserProcs() const { return userProcs; } UserProcs &GetUserProcs() { return userProcs; } const DllProcs &GetDllProcs() const { return dllProcs; } DllProcs &GetDllProcs() { return dllProcs; } Classes &GetClasses() { return *pNowClassesForDebugger; } void SetClasses( Classes *pClasses ) { this->pNowClassesForDebugger = pClasses; } const GlobalVars &GetGlobalVars() const { return globalVars; } GlobalVars &GetGlobalVars() { return globalVars; } const Consts &GetGlobalConsts() const { return globalConsts; } Consts &GetGlobalConsts() { return globalConsts; } const ConstMacros &GetGlobalConstMacros() const { return globalConstMacros; } ConstMacros &GetGlobalConstMacros() { return globalConstMacros; } BlittableTypes &GetBlittableTypes() { return blittableTypes; } TypeDefCollection &GetTypeDefs() { return typeDefs; } ProcPointers &GetProcPointers() { return procPointers; } Delegates &GetDelegates() { return delegates; } const ::Delegate &ToDelegate( const CClass &_class ); const CClass *FindClassSupportedTypeDef( const Symbol &symbol ); };