Index: trunk/abdev/BasicCompiler32/BasicCompiler.vcproj
===================================================================
--- trunk/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 254)
+++ trunk/abdev/BasicCompiler32/BasicCompiler.vcproj	(revision 256)
@@ -1254,4 +1254,16 @@
 				</File>
 				<Filter
+					Name="CoreClasses"
+					>
+					<File
+						RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp"
+						>
+					</File>
+				</Filter>
+			</Filter>
+			<Filter
+				Name="Compiler Classes"
+				>
+				<Filter
 					Name="Langauge Classes"
 					>
@@ -1326,12 +1338,4 @@
 					<File
 						RelativePath="..\BasicCompiler_Common\src\Variable.cpp"
-						>
-					</File>
-				</Filter>
-				<Filter
-					Name="CoreClasses"
-					>
-					<File
-						RelativePath="..\BasicCompiler_Common\src\CommonCodeGenerator.cpp"
 						>
 					</File>
@@ -1392,110 +1396,118 @@
 			</Filter>
 			<Filter
-				Name="Language Classes"
-				>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Class.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Compiler.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Const.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\DataTable.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Exception.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\LexicalScope.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Member.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\MetaImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Method.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Namespace.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\NativeCode.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Parameter.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Procedure.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Program.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Prototype.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Symbol.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Type.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Variable.h"
+				Name="Common Classes"
+				>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\Hashmap.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\logger.h"
 					>
 				</File>
 			</Filter>
 			<Filter
-				Name="Common Classes"
-				>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\BoostSerializationSupport.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\Hashmap.h"
-					>
-				</File>
-				<File
-					RelativePath="..\BasicCompiler_Common\include\logger.h"
-					>
-				</File>
+				Name="Compiler Classes"
+				>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\CodeGenerator.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\Compiler.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\Linker.h"
+					>
+				</File>
+				<Filter
+					Name="Language Classes"
+					>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Class.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Const.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\DataTable.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Exception.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\LexicalScope.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Member.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Meta.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Method.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Namespace.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\NativeCode.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Parameter.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Procedure.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Program.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Prototype.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Symbol.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Type.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
+						>
+					</File>
+					<File
+						RelativePath="..\BasicCompiler_Common\include\Variable.h"
+						>
+					</File>
+				</Filter>
 			</Filter>
 		</Filter>
Index: trunk/abdev/BasicCompiler32/Compile_Calc.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Calc.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/Compile_Calc.cpp	(revision 256)
@@ -461,6 +461,6 @@
 			}
 			else{
-				if( compiler.GetMeta().GetGlobalConsts().IsExist(variable)
-					|| compiler.GetMeta().GetGlobalConstMacros().IsExist(variable) )
+				if( compiler.objectModule.meta.GetGlobalConsts().IsExist(variable)
+					|| compiler.objectModule.meta.GetGlobalConstMacros().IsExist(variable) )
 				{
 					//定数リストに該当したとき
@@ -606,8 +606,8 @@
 
 
-	if( varType.IsObject() && compiler.GetMeta().GetBlittableTypes().IsExist( calcType ) ){
+	if( varType.IsObject() && compiler.objectModule.meta.GetBlittableTypes().IsExist( calcType ) ){
 		// Blittable型をオブジェクトとして扱う
 		vector<const UserProc *> userProcs;
-		compiler.GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
+		compiler.objectModule.meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
 		if( userProcs.size() != 1 ){
 			SetError();
Index: trunk/abdev/BasicCompiler32/Compile_CallProc.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/Compile_CallProc.cpp	(revision 256)
@@ -117,5 +117,5 @@
 				pobj_c = &varType.GetClass();
 				if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){
-					pobj_c=compiler.GetMeta().GetClasses().Find(ObjectName);
+					pobj_c=compiler.objectModule.meta.GetClasses().Find(ObjectName);
 					if( pobj_c ){
 						isStatic = true;
Index: trunk/abdev/BasicCompiler32/Compile_Func.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/Compile_Func.cpp	(revision 256)
@@ -185,5 +185,5 @@
 		tempParm=temp2;
 
-		type.SetType( DEF_OBJECT, compiler.GetMeta().GetClasses().GetStringClassPtr() );
+		type.SetType( DEF_OBJECT, compiler.objectModule.meta.GetClasses().GetStringClassPtr() );
 	}
 
@@ -235,5 +235,5 @@
 
 		//オーバーロードを解決
-		pUserProc=OverloadSolution(name,subs,compiler.GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
+		pUserProc=OverloadSolution(name,subs,compiler.objectModule.meta.GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
 
 		if(!pUserProc){
Index: trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 256)
@@ -58,5 +58,5 @@
 
 		//クラスに属する静的メンバを定義
-		compiler.GetMeta().GetClasses().InitStaticMember();
+		compiler.objectModule.meta.GetClasses().InitStaticMember();
 
 		GetGlobalDataForDll();
@@ -71,5 +71,5 @@
 		//静的ローカルオブジェクトのコンストラクタ呼び出し
 
-		BOOST_FOREACH( Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
+		BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
 			if(memicmp(pVar->GetName().c_str(),"Static%",7)==0){
 				//コンストラクタ呼び出し
@@ -219,5 +219,5 @@
 		&& userProc.GetParentClass().GetName() == "_System_TypeBase" ){
 
-			compiler.GetMeta().GetClasses().Compile_System_InitializeUserTypes();
+			compiler.objectModule.meta.GetClasses().Compile_System_InitializeUserTypes();
 	}
 	else if( userProc.GetName() == "RegisterGlobalRoots"
@@ -270,5 +270,5 @@
 
 	//コンパイルスタートをクラス管理クラスに追加
-	compiler.GetMeta().GetClasses().StartCompile( pUserProc );
+	compiler.objectModule.meta.GetClasses().StartCompile( pUserProc );
 
 	//コンパイル中の関数
@@ -789,8 +789,8 @@
 
 repeat:
-	compiler.GetMeta().GetUserProcs().Iterator_Reset();
-	while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
+	compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
+	while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
 	{
-		UserProc *pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
+		UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
 		CompileBufferInProcedure( *pUserProc );
 	}
@@ -808,8 +808,8 @@
 		//プロシージャコンパイルによって、プロシージャコンパイルが必要になる場合
 
-		compiler.GetMeta().GetUserProcs().Iterator_Reset();
-		while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
+		compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
+		while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
 		{
-			UserProc *pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
+			UserProc *pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
 			CompileBufferInProcedure( *pUserProc );
 		}
Index: trunk/abdev/BasicCompiler32/Compile_Var.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/Compile_Var.cpp	(revision 256)
@@ -362,5 +362,5 @@
 	// 名前空間を分離
 	char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE];
-	compiler.GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
+	compiler.objectModule.meta.GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
 
 	// 先頭オブジェクトまたはクラス名と入れ子メンバに分割
@@ -456,5 +456,5 @@
 		//Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき
 		//（コンストラクタ、デストラクタ内を除く）
-		const CMethod *pMethod = compiler.GetMeta().GetClasses().GetNowCompilingMethodInfo();
+		const CMethod *pMethod = compiler.objectModule.meta.GetClasses().GetNowCompilingMethodInfo();
 		if( isWriteAccess &&
 			pMethod->IsConst() &&
@@ -496,5 +496,5 @@
 			GetNowStaticVarFullName(VarName,temporary);
 
-			pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temporary ) );
+			pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temporary ) );
 			if( pVar ){
 				goto GlobalOk;
@@ -519,13 +519,13 @@
 			}
 
-			int typeDefIndex = compiler.GetMeta().GetTypeDefs().GetIndex( VarName );
+			int typeDefIndex = compiler.objectModule.meta.GetTypeDefs().GetIndex( VarName );
 			if( typeDefIndex != -1 ){
 				// TypeDef後の型名だったとき
-				lstrcpy( VarName, compiler.GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
+				lstrcpy( VarName, compiler.objectModule.meta.GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
 			}
 
 			char temp2[VN_SIZE];
 			sprintf(temp2,"%s.%s",VarName,temporary);
-			pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );
+			pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );
 			if( pVar ){
 				lstrcpy(member,tempMember);
@@ -539,5 +539,5 @@
 			char temp2[VN_SIZE];
 			sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName);
-			pVar = compiler.GetMeta().GetGlobalVars().Find( Symbol( temp2 ) );
+			pVar = compiler.objectModule.meta.GetGlobalVars().Find( Symbol( temp2 ) );
 			if( pVar ){
 				goto GlobalOk;
@@ -549,5 +549,5 @@
 		/////////////////////
 
-		pVar = compiler.GetMeta().GetGlobalVars().BackSearch( Symbol( VarName ) );
+		pVar = compiler.objectModule.meta.GetGlobalVars().BackSearch( Symbol( VarName ) );
 		if( pVar ){
 			goto GlobalOk;
@@ -837,5 +837,5 @@
 			char *temp;
 			temp=(char *)i64data;
-			i2=compiler.GetDataTable().AddString(temp,lstrlen(temp));
+			i2=compiler.objectModule.dataTable.AddString(temp,lstrlen(temp));
 			HeapDefaultFree(temp);
 
@@ -1010,5 +1010,5 @@
 			char *temp;
 			temp=(char *)i64data;
-			i2=compiler.GetDataTable().AddString(temp,lstrlen(temp));
+			i2=compiler.objectModule.dataTable.AddString(temp,lstrlen(temp));
 			HeapDefaultFree(temp);
 
@@ -1267,5 +1267,5 @@
 	}
 
-	BOOST_FOREACH( const Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
+	BOOST_FOREACH( const Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
 		if( pVar->GetType().IsObject() || pVar->GetType().IsPointer() || pVar->GetType().IsStruct() ){
 			// オブジェクトまたはポインタだったとき
Index: trunk/abdev/BasicCompiler32/MakePeHdr.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/MakePeHdr.cpp	(revision 256)
@@ -146,7 +146,7 @@
 	//////////////////
 	// データテーブル
-	compiler.GetDataTable().Init();
+	compiler.objectModule.dataTable.Clear();
 	if(bDebugCompile){
-		compiler.GetDataTable().Add( (long)0x00000002 );
+		compiler.objectModule.dataTable.Add( (long)0x00000002 );
 	}
 
@@ -172,10 +172,10 @@
 
 	//関数ポインタ情報を初期化
-	compiler.GetMeta().GetProcPointers().clear();
+	compiler.objectModule.meta.GetProcPointers().clear();
 
 	// 名前空間情報を取得
 	NamespaceSupporter::CollectNamespaces(
 		Smoothie::Lexical::source.GetBuffer(),
-		compiler.GetMeta().GetNamespaces()
+		compiler.objectModule.meta.GetNamespaces()
 	);
 
@@ -183,8 +183,8 @@
 	//   CollectProcedures関数の中で参照されるオブジェクト名を事前に取得する。
 	//     ※オブジェクトの内容までは取得しない
-	compiler.GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
+	compiler.objectModule.meta.GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
 
 	//TypeDef情報を初期化
-	compiler.GetMeta().GetTypeDefs().Init();
+	compiler.objectModule.meta.GetTypeDefs().Init();
 
 	//定数情報を取得
@@ -195,45 +195,45 @@
 	CollectProcedures(
 		Smoothie::Lexical::source,
-		compiler.GetMeta().GetUserProcs(),
-		compiler.GetMeta().GetDllProcs()
+		compiler.objectModule.meta.GetUserProcs(),
+		compiler.objectModule.meta.GetDllProcs()
 	);
 
 	// クラス情報を取得（※注 - CollectProceduresの後に呼び出す）
-	compiler.GetMeta().GetClasses().GetAllClassInfo();
+	compiler.objectModule.meta.GetClasses().GetAllClassInfo();
 
 	// サブルーチン（ユーザー定義、DLL関数）のイテレータの準備
-	compiler.GetMeta().GetUserProcs().Iterator_Init();
-	compiler.GetMeta().GetDllProcs().Iterator_Init();
+	compiler.objectModule.meta.GetUserProcs().Iterator_Init();
+	compiler.objectModule.meta.GetDllProcs().Iterator_Init();
 
 /*
-	if( !compiler.GetMeta().WriteXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )
+	if( !compiler.objectModule.WriteXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
 	{
 		MessageBox(0,"XML書き込みに失敗","test",0);
 	}
-	MetaImpl *pTempMeta = new MetaImpl();
-	if( !pTempMeta->ReadXml( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" ) )
+	ObjectModule *pTempObjectModule = new ObjectModule();
+	if( !pTempObjectModule->ReadXml( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
 	{
 		MessageBox(0,"XML読み込みに失敗","test",0);
 	}
 
-	if( !compiler.GetMeta().WriteBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
+	if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
 	{
 		MessageBox(0,"バイナリ書き込みに失敗","test",0);
 	}
-	MetaImpl *pTempMeta = new MetaImpl();
-	if( !pTempMeta->ReadBinaly( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
+	Meta *pTempMeta = new Meta();
+	if( !pTempMeta->ReadBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
 	{
 		MessageBox(0,"バイナリ読み込みに失敗","test",0);
 	}
-	if( !compiler.GetMeta().WriteText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
+	if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
 	{
 		MessageBox(0,"バイナリ書き込みに失敗","test",0);
 	}
-	MetaImpl *pTempMeta = new MetaImpl();
-	if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\meta_test.dat" ) )
+	Meta *pTempMeta = new Meta();
+	if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
 	{
 		MessageBox(0,"バイナリ読み込みに失敗","test",0);
 	}
-	compiler.GetMeta() = (*pTempMeta);*/
+	compiler.objectModule = (*pTempObjectModule);*/
 
 
@@ -436,5 +436,5 @@
 
 		// コード生成対象を選択
-		compiler.codeGenerator.Select( compiler.globalNativeCode );
+		compiler.codeGenerator.Select( compiler.objectModule.globalNativeCode );
 
 		trace_for_sourcecodestep( "★★★ グローバル領域のコンパイルを開始" );
@@ -461,5 +461,5 @@
 
 		//クラスに属する静的メンバを定義
-		compiler.GetMeta().GetClasses().InitStaticMember();
+		compiler.objectModule.meta.GetClasses().InitStaticMember();
 
 		//グローバル実行領域をコンパイル開始
@@ -550,4 +550,44 @@
 
 
+	trace( "コード生成が終了しました。" );
+
+
+/*
+	int t,t2;
+	t=GetTickCount();
+	if( !compiler.objectModule.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
+	{
+		MessageBox(0,"XML書き込みに失敗","test",0);
+	}
+	if( !compiler.objectModule.ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.xml" ) )
+	{
+		MessageBox(0,"XML読み込みに失敗","test",0);
+	}
+	t2=GetTickCount();
+	t2-=t;
+	char s[100];
+	sprintf(s,"%d",t2);
+	MessageBox(0,s,"test",0);
+	
+	if( !compiler.objectModule.meta.WriteBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
+	{
+		MessageBox(0,"バイナリ書き込みに失敗","test",0);
+	}
+	Meta *pTempMeta = new Meta();
+	if( !pTempMeta->ReadBinary( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
+	{
+		MessageBox(0,"バイナリ読み込みに失敗","test",0);
+	}
+	if( !compiler.objectModule.meta.WriteText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
+	{
+		MessageBox(0,"バイナリ書き込みに失敗","test",0);
+	}
+	Meta *pTempMeta = new Meta();
+	if( !pTempMeta->ReadText( Jenga::Common::Environment::GetAppDir() + "\\objectModule_test.dat" ) )
+	{
+		MessageBox(0,"バイナリ読み込みに失敗","test",0);
+	}*/
+
+
 
 	////////////////////////////////
@@ -561,8 +601,8 @@
 	// 使用するDLL関数のチェック
 	////////////////////////////////
-	compiler.GetMeta().GetDllProcs().Iterator_Reset();
-	while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
+	compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
+	while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
 	{
-		const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
+		const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
 
 		if( !pDllProc->IsUsing() ){
@@ -634,8 +674,8 @@
 			//辞書順にサーチ
 			temporary[0]=0;
-			compiler.GetMeta().GetUserProcs().Iterator_Reset();
-			while( compiler.GetMeta().GetUserProcs().Iterator_HasNext() )
+			compiler.objectModule.meta.GetUserProcs().Iterator_Reset();
+			while( compiler.objectModule.meta.GetUserProcs().Iterator_HasNext() )
 			{
-				pUserProc = compiler.GetMeta().GetUserProcs().Iterator_GetNext();
+				pUserProc = compiler.objectModule.meta.GetUserProcs().Iterator_GetNext();
 				if(pUserProc->IsExport()){
 					if(temporary[0]=='\0'){
@@ -724,8 +764,8 @@
 	int ImportDllNum=0;
 
-	compiler.GetMeta().GetDllProcs().Iterator_Reset();
-	while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
+	compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
+	while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
 	{
-		const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
+		const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
 
 		if( !pDllProc->IsUsing() ){
@@ -764,8 +804,8 @@
 		pImportTable[i].Name=i3+i*0x10;
 
-		compiler.GetMeta().GetDllProcs().Iterator_Reset();
-		while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
+		compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
+		while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
 		{
-			const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
+			const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
 
 			if( !pDllProc->IsUsing() ){
@@ -793,8 +833,8 @@
 	i3+=ImportDllNum*0x10;
 	for(i=0,i5=0;i<ImportDllNum;i++){
-		compiler.GetMeta().GetDllProcs().Iterator_Reset();
-		while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
+		compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
+		while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
 		{
-			DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
+			DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
 
 			if( !pDllProc->IsUsing() ){
@@ -839,5 +879,5 @@
 	//（デバッグ情報で利用される）
 	extern int AllInitGlobalVarSize;
-	BOOST_FOREACH( Variable *pVar, compiler.GetMeta().GetGlobalVars() ){
+	BOOST_FOREACH( Variable *pVar, compiler.objectModule.meta.GetGlobalVars() ){
 		if(pVar->GetOffsetAddress()&0x80000000){
 			pVar->SetOffsetAddress( (pVar->GetOffsetAddress()&0x7FFFFFFF)+AllInitGlobalVarSize );
@@ -921,6 +961,6 @@
 
 	//データセクションのファイル上のサイズ
-	if(compiler.GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetDataTable().GetSize()%FILE_ALIGNMENT);
-	else FileSize_DataSection=compiler.GetDataTable().GetSize();
+	if(compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.objectModule.dataTable.GetSize()+(FILE_ALIGNMENT-compiler.objectModule.dataTable.GetSize()%FILE_ALIGNMENT);
+	else FileSize_DataSection=compiler.objectModule.dataTable.GetSize();
 	if(FileSize_DataSection) bUse_DataSection=1;
 	else bUse_DataSection=0;
@@ -1084,8 +1124,8 @@
 			HintSize;			//ヒント名（関数名）テーブル
 
-		compiler.GetMeta().GetDllProcs().Iterator_Reset();
-		while( compiler.GetMeta().GetDllProcs().Iterator_HasNext() )
+		compiler.objectModule.meta.GetDllProcs().Iterator_Reset();
+		while( compiler.objectModule.meta.GetDllProcs().Iterator_HasNext() )
 		{
-			const DllProc *pDllProc = compiler.GetMeta().GetDllProcs().Iterator_GetNext();
+			const DllProc *pDllProc = compiler.objectModule.meta.GetDllProcs().Iterator_GetNext();
 
 			if( !pDllProc->IsUsing() ){
@@ -1105,5 +1145,5 @@
 	////////////////////////////////////////
 	//仮想関数データテーブルスケジュール
-	compiler.GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
+	compiler.objectModule.meta.GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
 
 
@@ -1640,5 +1680,5 @@
 	if(bUse_DataSection){
 		//データ テーブル
-		WriteFile(hFile,compiler.GetDataTable().GetPtr(),compiler.GetDataTable().GetSize(),(DWORD *)&i2,NULL);
+		WriteFile(hFile,compiler.objectModule.dataTable.GetPtr(),compiler.objectModule.dataTable.GetSize(),(DWORD *)&i2,NULL);
 		i+=i2;
 	}
@@ -1752,4 +1792,4 @@
 
 	//クラスに関するメモリを解放
-	compiler.GetMeta().GetClasses().Clear();
+	compiler.objectModule.meta.GetClasses().Clear();
 }
Index: trunk/abdev/BasicCompiler32/NumOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 254)
+++ trunk/abdev/BasicCompiler32/NumOpe.cpp	(revision 256)
@@ -76,5 +76,5 @@
 	SetStringQuotes( parameter );
 
-	Operator_New( *compiler.GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) );
+	Operator_New( *compiler.objectModule.meta.GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.objectModule.meta.GetClasses().GetStringClassPtr() ) );
 
 	free( parameter );
@@ -254,5 +254,5 @@
 		Type leftType;
 		if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
-			if( isClassName == false && compiler.GetMeta().GetBlittableTypes().IsExist( leftType ) ){
+			if( isClassName == false && compiler.objectModule.meta.GetBlittableTypes().IsExist( leftType ) ){
 				// 左側のオブジェクト部分がBlittable型のとき
 
@@ -260,5 +260,5 @@
 				lstrcpy( temporary, termLeft );
 				sprintf( termLeft, "%s(%s)",
-					compiler.GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
+					compiler.objectModule.meta.GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
 					temporary );
 			}
@@ -289,5 +289,5 @@
 
 	if( pIsClassName ){
-		if( compiler.GetMeta().GetClasses().Find( termFull ) ){
+		if( compiler.objectModule.meta.GetClasses().Find( termFull ) ){
 			*pIsClassName = true;
 			return true;
@@ -380,5 +380,5 @@
 		}
 
-		ConstMacro *pConstMacro = compiler.GetMeta().GetGlobalConstMacros().Find( procName );
+		ConstMacro *pConstMacro = compiler.objectModule.meta.GetGlobalConstMacros().Find( procName );
 		if( pConstMacro )
 		{
@@ -582,5 +582,5 @@
 		}
 
-		i2 = compiler.GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
+		i2 = compiler.objectModule.dataTable.AddBinary( binary, num * tempBaseType.GetSize() );
 
 		//mov eax,i2
@@ -784,5 +784,5 @@
 
 						type_stack[sp]=DEF_OBJECT;
-						index_stack[sp]=(LONG_PTR)compiler.GetMeta().GetClasses().GetStringClassPtr();
+						index_stack[sp]=(LONG_PTR)compiler.objectModule.meta.GetClasses().GetStringClassPtr();
 						bLiteralCalculation=0;
 
@@ -795,5 +795,5 @@
 					bLiteralCalculation=0;
 
-					i2=compiler.GetDataTable().AddString(term,i3);
+					i2=compiler.objectModule.dataTable.AddString(term,i3);
 
 					//push DataSize
@@ -879,5 +879,5 @@
 						}
 						else{
-							index_stack[sp] = (LONG_PTR)compiler.GetMeta().GetClasses().GetObjectClassPtr();
+							index_stack[sp] = (LONG_PTR)compiler.objectModule.meta.GetClasses().GetObjectClassPtr();
 						}
 
@@ -896,10 +896,10 @@
 					//////////////
 
-					i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term);
+					i3 = compiler.objectModule.meta.GetGlobalConsts().GetBasicType(term);
 					if(i3){
-						if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){
+						if( compiler.objectModule.meta.GetGlobalConsts().IsStringPtr( term ) ){
 							//リテラル文字列
 
-							double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
+							double dbl = compiler.objectModule.meta.GetGlobalConsts().GetDoubleData(term);
 							memcpy(&i64data,&dbl,sizeof(double));
 
@@ -915,5 +915,5 @@
 						if(IsRealNumberType(i3)){
 							//実数
-							double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
+							double dbl = compiler.objectModule.meta.GetGlobalConsts().GetDoubleData(term);
 							memcpy(&i64data,&dbl,sizeof(double));
 							goto Literal;
@@ -921,5 +921,5 @@
 						else if(IsWholeNumberType(i3)){
 							//整数
-							i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term);
+							i64data = compiler.objectModule.meta.GetGlobalConsts().GetWholeData(term);
 							goto Literal;
 						}
