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

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

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

File size: 1.7 KB
Line 
1#pragma once
2
3#include <CodeGenerator.h>
4#include <NamespaceSupporter.h>
5#include <Meta.h>
6#include <DataTable.h>
7#include <CodeGenerator.h>
8#include <Linker.h>
9
10class Compiler
11{
12 // 名前空間サポート
13 NamespaceSupporter namespaceSupporter;
14
15 // オブジェクトモジュール
16 ObjectModule *pObjectModule;
17 ObjectModule *pNowObjectModule;
18
19public:
20
21 Compiler()
22 : pObjectModule( new ObjectModule )
23 , pNowObjectModule( pObjectModule )
24 , targetModuleType( Exe )
25 {
26 }
27 ~Compiler()
28 {
29 delete pObjectModule;
30 }
31
32 NamespaceSupporter &GetNamespaceSupporter()
33 {
34 return namespaceSupporter;
35 }
36
37 // コード生成機構
38 CodeGenerator codeGenerator;
39
40 // リンカ
41 Linker linker;
42
43 // オブジェクトモジュール
44 ObjectModule &GetObjectModule()
45 {
46 return *pNowObjectModule;
47 }
48 void SelectObjectModule( ObjectModule &objectModule )
49 {
50 pNowObjectModule = &objectModule;
51 }
52
53
54 // ターゲット
55 enum TargetModuleType
56 {
57 Exe,
58 Dll,
59 StaticLibrary,
60 };
61
62 TargetModuleType targetModuleType;
63
64 bool IsExe() const
65 {
66 if( targetModuleType == Exe )
67 {
68 return true;
69 }
70 return false;
71 }
72 bool IsDll() const
73 {
74 if( targetModuleType == Dll )
75 {
76 return true;
77 }
78 return false;
79 }
80 bool IsStaticLibrary() const
81 {
82 if( targetModuleType == StaticLibrary )
83 {
84 return true;
85 }
86 return false;
87 }
88 void SetTargetModuleType( TargetModuleType targetModuleType )
89 {
90 this->targetModuleType = targetModuleType;
91 }
92
93
94
95 static bool StringToType( const std::string &typeName, Type &type );
96 static const std::string TypeToString( const Type &type );
97
98 // コンパイル中のクラス
99 const CClass *pCompilingClass;
100};
101
102extern Compiler compiler;
Note: See TracBrowser for help on using the repository browser.