#pragma once #include #include #include #include #include #include class Compiler { // 名前空間サポート NamespaceSupporter namespaceSupporter; // オブジェクトモジュール ObjectModule *pObjectModule; ObjectModule *pNowObjectModule; public: Compiler() : pObjectModule( new ObjectModule ) , pNowObjectModule( pObjectModule ) { } ~Compiler() { delete pObjectModule; } NamespaceSupporter &GetNamespaceSupporter() { return namespaceSupporter; } // コード生成機構 CodeGenerator codeGenerator; // リンカ Linker linker; ObjectModule &GetObjectModule() { return *pNowObjectModule; } void SelectObjectModule( ObjectModule &objectModule ) { pNowObjectModule = &objectModule; } static bool StringToType( const std::string &typeName, Type &type ); static const std::string TypeToString( const Type &type ); // コンパイル中のクラス const CClass *pCompilingClass; }; extern Compiler compiler;