source: dev/trunk/abdev/BasicCompiler_Common/include/Linker.h@ 266

Last change on this file since 266 was 266, checked in by dai_9181, 17 years ago

BasicSourceのシリアライズがうまくいっていない

File size: 1.5 KB
Line 
1#pragma once
2
3class ObjectModule : public Jenga::Common::BoostSerializationSupport<ObjectModule>
4{
5public:
6 // メタ情報
7 Meta meta;
8
9 // グローバル領域のネイティブコード
10 NativeCode globalNativeCode;
11
12 // データテーブル
13 DataTable dataTable;
14
15 // ソースコード
16 BasicSource source;
17
18 // XMLシリアライズ用
19private:
20 virtual const char *RootTagName() const
21 {
22 return "objectModule";
23 }
24 friend class boost::serialization::access;
25 template<class Archive> void serialize(Archive& ar, const unsigned int version)
26 {
27 trace_for_serialize( "serializing - objectModule" );
28
29 ar & BOOST_SERIALIZATION_NVP( meta );
30 ar & BOOST_SERIALIZATION_NVP( globalNativeCode );
31 ar & BOOST_SERIALIZATION_NVP( dataTable );
32 ar & BOOST_SERIALIZATION_NVP( source );
33 }
34};
35
36class Linker
37{
38 NativeCode nativeCode;
39 DWORD imageBase;
40
41public:
42
43 Linker()
44 {
45 }
46
47 const NativeCode &GetNativeCode() const
48 {
49 return nativeCode;
50 }
51
52 void SetImageBase( DWORD imageBase )
53 {
54 this->imageBase = imageBase;
55 }
56
57 // データテーブルスケジュール
58 void ResolveDataTableSchedules( long dataSectionBaseOffset );
59
60 // DLL関数スケジュール
61 void ResolveDllProcSchedules( long codeSectionBaseOffset, long importSectionBaseOffset, long lookupSize, long hintSize );
62
63 // ユーザ定義関数スケジュール
64 void ResolveUserProcSchedules( long codeSectionBaseOffset );
65
66 // グローバル変数スケジュール
67 void ResolveGlobalVarSchedules( long rwSectionBaseOffset );
68
69 // リンク
70 void Link( vector<ObjectModule *> &objectModules );
71};
Note: See TracBrowser for help on using the repository browser.