#pragma once class ObjectModule : public Jenga::Common::BoostSerializationSupport { public: // メタ情報 Meta meta; // グローバル領域のネイティブコード NativeCode globalNativeCode; // データテーブル DataTable dataTable; // XMLシリアライズ用 private: virtual const char *RootTagName() const { return "objectModule"; } friend class boost::serialization::access; template void serialize(Archive& ar, const unsigned int version) { trace_for_serialize( "serializing - objectModule" ); ar & BOOST_SERIALIZATION_NVP( meta ); ar & BOOST_SERIALIZATION_NVP( globalNativeCode ); ar & BOOST_SERIALIZATION_NVP( dataTable ); } }; class Linker { // データテーブルスケジュール void ResolveDataTableSchedules( long dataSectionBaseOffset ); // DLL関数スケジュール void ResolveDllProcSchedules( long codeSectionBaseOffset, long importSectionBaseOffset ); // ユーザ定義関数スケジュール void ResolveUserProcSchedules( long codeSectionBaseOffset ); // グローバル変数スケジュール void ResolveGlobalVarSchedules( long rwSectionBaseOffset ); NativeCode nativeCode; DWORD imageBase; public: Linker() { } void SetImageBase( DWORD imageBase ) { this->imageBase = imageBase; } // リンク void Link( vector &objectModules ); };