Index: /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 198)
@@ -282,5 +282,5 @@
 
 	// コンパイル中の関数が属する名前空間
-	namespaceSupporter.GetLivingNamespaceScopes() = pUserProc->GetNamespaceScopes();
+	namespaceSupporter.SetLivingNamespaceScopes( pUserProc->GetNamespaceScopes() );
 
 	// コンパイル中の関数でImportsされている名前空間
Index: /trunk/abdev/BasicCompiler64/BasicCompiler.vcproj
===================================================================
--- /trunk/abdev/BasicCompiler64/BasicCompiler.vcproj	(revision 197)
+++ /trunk/abdev/BasicCompiler64/BasicCompiler.vcproj	(revision 198)
@@ -66,4 +66,5 @@
 				DebugInformationFormat="3"
 				CallingConvention="0"
+				DisableSpecificWarnings="4103"
 			/>
 			<Tool
@@ -158,4 +159,5 @@
 				EnableIntrinsicFunctions="true"
 				FavorSizeOrSpeed="1"
+				WholeProgramOptimization="false"
 				AdditionalIncludeDirectories="..\..\;..\..\cpplibs\boost;..\BasicCompiler_Common\include"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;JPN;_AMD64_;_WIN64"
@@ -163,5 +165,5 @@
 				ExceptionHandling="1"
 				BasicRuntimeChecks="0"
-				RuntimeLibrary="0"
+				RuntimeLibrary="1"
 				RuntimeTypeInfo="true"
 				UsePrecompiledHeader="0"
@@ -176,4 +178,5 @@
 				DebugInformationFormat="0"
 				CallingConvention="0"
+				DisableSpecificWarnings="4103"
 			/>
 			<Tool
@@ -196,5 +199,5 @@
 				SuppressStartupBanner="true"
 				AdditionalLibraryDirectories="..\..\jenga\lib\amd64"
-				IgnoreDefaultLibraryNames="libcpmtd.lib"
+				IgnoreDefaultLibraryNames="libcpmt.lib"
 				GenerateDebugInformation="false"
 				ProgramDatabaseFile=".\Release/BasicCompiler64.pdb"
@@ -258,4 +261,8 @@
 				>
 			</File>
+			<File
+				RelativePath="..\BasicCompiler_Common\include\option.h"
+				>
+			</File>
 			<Filter
 				Name="言語対応文字列"
@@ -306,4 +313,12 @@
 				</File>
 				<File
+					RelativePath="..\BasicCompiler_Common\include\MetaImpl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\NamespaceSupporter.h"
+					>
+				</File>
+				<File
 					RelativePath="..\BasicCompiler_Common\include\ProcedureImpl.h"
 					>
@@ -315,4 +330,12 @@
 				<File
 					RelativePath="..\BasicCompiler_Common\include\SmoothieImpl.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\TypeDef.h"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\include\VariableImpl.h"
 					>
 				</File>
@@ -1022,4 +1045,8 @@
 				</File>
 				<File
+					RelativePath="..\BasicCompiler_Common\src\NamespaceSupporter.cpp"
+					>
+				</File>
+				<File
 					RelativePath="..\BasicCompiler_Common\src\ProcedureImpl.cpp"
 					>
@@ -1031,4 +1058,12 @@
 				<File
 					RelativePath="..\BasicCompiler_Common\src\SmoothieImpl.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\src\TypeDef.cpp"
+					>
+				</File>
+				<File
+					RelativePath="..\BasicCompiler_Common\src\VariableImpl.cpp"
 					>
 				</File>
Index: /trunk/abdev/BasicCompiler64/Compile_Calc.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_Calc.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_Calc.cpp	(revision 198)
@@ -1,4 +1,6 @@
 #include <jenga/include/smoothie/Smoothie.h>
 #include <jenga/include/smoothie/LexicalAnalysis.h>
+
+#include <Compiler.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -230,8 +232,8 @@
 	}
 
-	if( varType.IsObject() && Smoothie::GetMeta().blittableTypes.IsExist( calcType ) ){
+	if( varType.IsObject() && compiler.GetMeta().GetBlittableTypes().IsExist( calcType ) ){
 		// Blittable型をオブジェクトとして扱う
 		vector<UserProc *> userProcs;
-		Smoothie::GetMeta().blittableTypes.GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
+		compiler.GetMeta().GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs );
 		if( userProcs.size() != 1 ){
 			SetError();
Index: /trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_CallProc.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_CallProc.cpp	(revision 198)
@@ -1,3 +1,5 @@
 #include <jenga/include/smoothie/Smoothie.h>
+
+#include <Compiler.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -134,5 +136,5 @@
 				pobj_c = &varType.GetClass();
 				if( NATURAL_TYPE( varType.GetBasicType() ) != DEF_OBJECT ){
-					pobj_c=Smoothie::GetMeta().GetClasses().Find(ObjectName);
+					pobj_c=compiler.GetMeta().GetClasses().Find(ObjectName);
 					if( pobj_c ){
 						isStatic = true;
Index: /trunk/abdev/BasicCompiler64/Compile_Func.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_Func.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_Func.cpp	(revision 198)
@@ -1,3 +1,5 @@
 #include <jenga/include/smoothie/Smoothie.h>
+
+#include <Compiler.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -32,5 +34,5 @@
 		tempParm=temp2;
 
-		type.SetType( DEF_OBJECT, Smoothie::GetMeta().GetClasses().GetStringClassPtr() );
+		type.SetType( DEF_OBJECT, compiler.GetMeta().GetClasses().GetStringClassPtr() );
 	}
 
@@ -80,5 +82,5 @@
 
 		//オーバーロードを解決
-		pUserProc=OverloadSolution(name,subs,Smoothie::GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
+		pUserProc=OverloadSolution(name,subs,compiler.GetMeta().GetProcPointers()[ProcPtr_BaseIndex]->Params(), Type() );
 
 		if(!pUserProc){
@@ -165,5 +167,5 @@
 void Opcode_Func_SizeOf( const string &typeName ){
 	Type tempType;
-	if( !Type::StringToType( typeName, tempType ) ){
+	if( !Compiler::StringToType( typeName, tempType ) ){
 		SetError(3,typeName,cp);
 		return;
Index: /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp	(revision 198)
@@ -3,6 +3,9 @@
 
 #include <Program.h>
+#include <Compiler.h>
 #include <LexicalScopingImpl.h>
 #include <ClassImpl.h>
+#include <VariableImpl.h>
+#include <NamespaceSupporter.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -56,5 +59,5 @@
 
 		//クラスに属する静的メンバを定義
-		Smoothie::GetMeta().GetClasses().InitStaticMember();
+		compiler.GetMeta().GetClasses().InitStaticMember();
 
 		GetGlobalDataForDll();
@@ -215,5 +218,5 @@
 		&& userProc.GetParentClass().GetName() == "_System_TypeBase" ){
 
-			Smoothie::GetMeta().GetClasses().Compile_System_InitializeUserTypes();
+			compiler.GetMeta().GetClasses().Compile_System_InitializeUserTypes();
 	}
 	else if( userProc.GetName() == "RegisterGlobalRoots"
@@ -263,5 +266,5 @@
 
 	//コンパイルスタートをクラス管理クラスに追加
-	Smoothie::GetMeta().GetClasses().StartCompile( pUserProc );
+	compiler.GetMeta().GetClasses().StartCompile( pUserProc );
 
 	//コンパイル中の関数
@@ -269,8 +272,8 @@
 
 	// コンパイル中の関数が属する名前空間
-	Smoothie::Temp::liveingNamespaceScopes = pUserProc->GetNamespaceScopes();
+	namespaceSupporter.SetLivingNamespaceScopes( pUserProc->GetNamespaceScopes() );
 
 	// コンパイル中の関数でImportsされている名前空間
-	Smoothie::Temp::importedNamespaces = pUserProc->GetImportedNamespaces();
+	namespaceSupporter.SetImportedNamespaces( pUserProc->GetImportedNamespaces() );
 
 	if(pUserProc->IsSystem()){
@@ -358,5 +361,5 @@
 		Parameter &param = *pUserProc->RealParams()[i3];
 
-		Variable *pVar = new Variable( param.GetVarName(), param, false, param.IsRef() );
+		Variable *pVar = new VariableImpl( param.GetVarName(), param, false, param.IsRef() );
 
 		if( param.IsArray() ){
@@ -479,9 +482,9 @@
 		else{
 			if( pUserProc->ReturnType().IsObject() ){
-				sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );
+				sprintf(temporary,"%s=Nothing%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
 			}
 			else{
 				//戻り値用の変数の定義
-				sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, pUserProc->ReturnType().ToString().c_str() );
+				sprintf(temporary,"%s%c%c%s",temp,1,ESC_AS, Compiler::TypeToString( pUserProc->ReturnType() ).c_str() );
 			}
 
Index: /trunk/abdev/BasicCompiler64/Compile_Statement.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_Statement.cpp	(revision 198)
@@ -136,5 +136,5 @@
 	if(resultType.IsDouble()){
 		double dbl=0;
-		offset=Compiler::GetNativeCode().GetDataTable().Add( dbl );
+		offset=compiler.GetNativeCode().GetDataTable().Add( dbl );
 
 		//comisd xmm0,qword ptr[data table offset]
@@ -150,5 +150,5 @@
 	else if(resultType.IsSingle()){
 		float flt=0;
-		offset=Compiler::GetNativeCode().GetDataTable().Add( flt );
+		offset=compiler.GetNativeCode().GetDataTable().Add( flt );
 
 		//comiss xmm0,dword ptr[data table offset]
Index: /trunk/abdev/BasicCompiler64/Compile_Var.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/Compile_Var.cpp	(revision 198)
@@ -5,4 +5,5 @@
 #include <CodeGenerator.h>
 #include <Compiler.h>
+#include <VariableImpl.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -395,5 +396,5 @@
 	// 名前空間を分離
 	char namespaceStr[VN_SIZE]="", simpleName[VN_SIZE];
-	Smoothie::GetMeta().namespaceScopesCollection.SplitNamespace( variable, namespaceStr, simpleName );
+	compiler.GetMeta().GetNamespaces().SplitNamespace( variable, namespaceStr, simpleName );
 
 	// 先頭オブジェクトまたはクラス名と入れ子メンバに分割
@@ -488,5 +489,5 @@
 		//Const修飾子のメソッド内でメンバ書き込みアクセスが発生したとき
 		//（コンストラクタ、デストラクタ内を除く）
-		const CMethod *pMethod = Smoothie::GetMeta().GetClasses().GetNowCompilingMethodInfo();
+		const CMethod *pMethod = compiler.GetMeta().GetClasses().GetNowCompilingMethodInfo();
 		if( isWriteAccess &&
 			pMethod->IsConst() &&
@@ -548,8 +549,8 @@
 			}
 
-			int typeDefIndex = Smoothie::GetMeta().typeDefs.GetIndex( VarName );
+			int typeDefIndex = compiler.GetMeta().GetTypeDefs().GetIndex( VarName );
 			if( typeDefIndex != -1 ){
 				// TypeDef後の型名だったとき
-				lstrcpy( VarName, Smoothie::GetMeta().typeDefs[typeDefIndex].GetBaseName().c_str() );
+				lstrcpy( VarName, compiler.GetMeta().GetTypeDefs()[typeDefIndex].GetBaseName().c_str() );
 			}
 
@@ -851,5 +852,5 @@
 			char *temp;
 			temp=(char *)i64data;
-			i2=Compiler::GetNativeCode().GetDataTable().AddString( temp );
+			i2=compiler.GetNativeCode().GetDataTable().AddString( temp );
 			HeapDefaultFree(temp);
 
@@ -1001,5 +1002,5 @@
 			char *temp;
 			temp=(char *)i64data;
-			i2=Compiler::GetNativeCode().GetDataTable().AddString( temp );
+			i2=compiler.GetNativeCode().GetDataTable().AddString( temp );
 			HeapDefaultFree(temp);
 
@@ -1082,5 +1083,5 @@
 		bool isConst = ( dwFlags & DIMFLAG_CONST ) ? true:false;
 
-		Variable *pVar = new Variable( VarName, type, isConst );
+		Variable *pVar = new VariableImpl( VarName, type, isConst );
 
 		if( SubScripts[0] != -1 ){
Index: /trunk/abdev/BasicCompiler64/MakePeHdr.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 198)
@@ -6,4 +6,5 @@
 #include <ClassImpl.h>
 #include <Compiler.h>
+#include <NamespaceSupporter.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -125,7 +126,7 @@
 	//////////////////
 	// データテーブル
-	Compiler::GetNativeCode().GetDataTable().Init();
+	compiler.GetNativeCode().GetDataTable().Init();
 	if(bDebugCompile){
-		Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );
+		compiler.GetNativeCode().GetDataTable().Add( (long)0x00000002 );
 	}
 
@@ -151,10 +152,10 @@
 
 	//関数ポインタ情報を初期化
-	Smoothie::GetMeta().GetProcPointers().clear();
+	compiler.GetMeta().GetProcPointers().clear();
 
 	// 名前空間情報を取得
-	NamespaceScopesCollection::CollectNamespaces(
+	NamespaceSupporter::CollectNamespaces(
 		Smoothie::Lexical::source.GetBuffer(),
-		Smoothie::GetMeta().namespaceScopesCollection
+		compiler.GetMeta().GetNamespaces()
 	);
 
@@ -162,8 +163,8 @@
 	//   GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。
 	//     ※オブジェクトの内容までは取得しない
-	Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
+	compiler.GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
 
 	//TypeDef情報を初期化
-	Smoothie::GetMeta().typeDefs.Init();
+	compiler.GetMeta().GetTypeDefs().Init();
 
 	//定数情報を取得
@@ -175,7 +176,7 @@
 
 	//クラス情報を取得（※注 - GetSubInfoの後に呼び出す）
-	Smoothie::GetMeta().GetClasses().GetAllClassInfo();
-
-	Smoothie::GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" );
+	compiler.GetMeta().GetClasses().GetAllClassInfo();
+
+	compiler.GetMeta().AutoWrite( Jenga::Common::Environment::GetAppDir() + "\\meta_test.xml" );
 
 	//コードと行番号の関係
@@ -318,5 +319,5 @@
 	if(!bDll){
 		// 名前空間が初期化されているかをチェック
-		if( Smoothie::Temp::liveingNamespaceScopes.size() ){
+		if( namespaceSupporter.GetLivingNamespaceScopes().size() ){
 			SetError();
 		}
@@ -369,5 +370,5 @@
 
 		//クラスに属する静的メンバを定義
-		Smoothie::GetMeta().GetClasses().InitStaticMember();
+		compiler.GetMeta().GetClasses().InitStaticMember();
 
 		//グローバル実行領域をコンパイル開始
@@ -433,5 +434,5 @@
 
 		// 名前空間が正しく閉じられているかをチェック
-		if( Smoothie::Temp::liveingNamespaceScopes.size() ){
+		if( namespaceSupporter.GetLivingNamespaceScopes().size() ){
 			SetError(63,NULL,-1);
 		}
@@ -883,6 +884,6 @@
 
 	//データセクションのファイル上のサイズ
-	if(Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-Compiler::GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
-	else FileSize_DataSection=Compiler::GetNativeCode().GetDataTable().GetSize();
+	if(compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT) FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize()+(FILE_ALIGNMENT-compiler.GetNativeCode().GetDataTable().GetSize()%FILE_ALIGNMENT);
+	else FileSize_DataSection=compiler.GetNativeCode().GetDataTable().GetSize();
 	if(FileSize_DataSection) bUse_DataSection=1;
 	else bUse_DataSection=0;
@@ -1073,5 +1074,5 @@
 	////////////////////////////////////////
 	//仮想関数データテーブルスケジュール
-	Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
+	compiler.GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
 
 
@@ -1609,5 +1610,5 @@
 	if(bUse_DataSection){
 		//データ テーブル
-		WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
+		WriteFile(hFile,compiler.GetNativeCode().GetDataTable().GetPtr(),compiler.GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
 		i+=i2;
 	}
@@ -1721,4 +1722,4 @@
 
 	//クラスに関するメモリを解放
-	Smoothie::GetMeta().GetClasses().Clear();
+	compiler.GetMeta().GetClasses().Clear();
 }
Index: /trunk/abdev/BasicCompiler64/NumOpe.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 198)
@@ -23,5 +23,5 @@
 		SetStringQuotes( parameter );
 
-		Operator_New( *Smoothie::GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *Smoothie::GetMeta().GetClasses().GetStringClassPtr() ) );
+		Operator_New( *compiler.GetMeta().GetClasses().GetStringClassPtr(), "", parameter, Type( DEF_OBJECT, *compiler.GetMeta().GetClasses().GetStringClassPtr() ) );
 
 		free( parameter );
@@ -258,5 +258,5 @@
 		Type leftType;
 		if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){
-			if( isClassName == false && Smoothie::GetMeta().blittableTypes.IsExist( leftType ) ){
+			if( isClassName == false && compiler.GetMeta().GetBlittableTypes().IsExist( leftType ) ){
 				// 左側のオブジェクト部分がBlittable型のとき
 
@@ -264,5 +264,5 @@
 				lstrcpy( temporary, termLeft );
 				sprintf( termLeft, "%s(%s)",
-					Smoothie::GetMeta().blittableTypes.Find( leftType ).GetCreateStaticMethodFullName().c_str(),
+					compiler.GetMeta().GetBlittableTypes().Find( leftType ).GetCreateStaticMethodFullName().c_str(),
 					temporary );
 			}
@@ -292,5 +292,5 @@
 
 	if( pIsClassName ){
-		if( Smoothie::GetMeta().GetClasses().Find( termFull ) ){
+		if( compiler.GetMeta().GetClasses().Find( termFull ) ){
 			*pIsClassName = true;
 			return true;
@@ -456,5 +456,5 @@
 	////////////////////////////////
 
-	if( Type::StringToType( termFull, resultType ) ){
+	if( Compiler::StringToType( termFull, resultType ) ){
 		resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST );
 		return true;
@@ -593,5 +593,5 @@
 		}
 
-		i2 = Compiler::GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
+		i2 = compiler.GetNativeCode().GetDataTable().AddBinary( binary, num * tempBaseType.GetSize() );
 
 		//mov reg,i2
@@ -742,5 +742,5 @@
 					// As演算子の右辺値
 					//型名
-					if( Type::StringToType( term, resultType ) ){
+					if( Compiler::StringToType( term, resultType ) ){
 						resultType.SetBasicType( resultType.GetBasicType() | FLAG_CAST );
 					}
@@ -773,5 +773,5 @@
 
 						type_stack[sp]=DEF_OBJECT;
-						index_stack[sp]=(LONG_PTR)Smoothie::GetMeta().GetClasses().GetStringClassPtr();
+						index_stack[sp]=(LONG_PTR)compiler.GetMeta().GetClasses().GetStringClassPtr();
 						bLiteralCalculation=0;
 
@@ -786,5 +786,5 @@
 					bLiteralCalculation=0;
 
-					i2 = Compiler::GetNativeCode().GetDataTable().AddString( term, i3 );
+					i2 = compiler.GetNativeCode().GetDataTable().AddString( term, i3 );
 
 					//mov reg,i2
@@ -882,5 +882,5 @@
 						}
 						else{
-							index_stack[sp] = (LONG_PTR)Smoothie::GetMeta().GetClasses().GetObjectClassPtr();
+							index_stack[sp] = (LONG_PTR)compiler.GetMeta().GetClasses().GetObjectClassPtr();
 						}
 
@@ -971,5 +971,5 @@
 						}
 						else{
-							i3 = Compiler::GetNativeCode().GetDataTable().Add( i64data );
+							i3 = compiler.GetNativeCode().GetDataTable().Add( i64data );
 
 							//movlpd xmm_reg,qword ptr[data table offset]
@@ -1000,5 +1000,5 @@
 						}
 						else{
-							i3=Compiler::GetNativeCode().GetDataTable().Add( i32data );
+							i3=compiler.GetNativeCode().GetDataTable().Add( i32data );
 
 							//movss xmm_reg,dword ptr[data table offset]
@@ -1139,5 +1139,5 @@
 
 			if(resultType.IsDouble()){
-				i3 = Compiler::GetNativeCode().GetDataTable().Add( i64data );
+				i3 = compiler.GetNativeCode().GetDataTable().Add( i64data );
 
 				//movlpd xmm_reg,qword ptr[data table offset]
@@ -1159,5 +1159,5 @@
 				memcpy(&i32data,&flt,sizeof(long));
 
-				i3 = Compiler::GetNativeCode().GetDataTable().Add( i32data );
+				i3 = compiler.GetNativeCode().GetDataTable().Add( i32data );
 
 				//movss xmm_reg,dword ptr[data table offset]
Index: /trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/NumOpe_Arithmetic.cpp	(revision 198)
@@ -454,5 +454,5 @@
 		double dbl;
 		dbl=-1;
-		i32data = Compiler::GetNativeCode().GetDataTable().Add( dbl );
+		i32data = compiler.GetNativeCode().GetDataTable().Add( dbl );
 
 		//mulsd xmm_reg,qword ptr[data table offset]   ※data = -1
@@ -476,5 +476,5 @@
 		float flt;
 		flt=-1;
-		i32data = Compiler::GetNativeCode().GetDataTable().Add( flt );
+		i32data = compiler.GetNativeCode().GetDataTable().Add( flt );
 
 		//mulss xmm_reg,dword ptr[data table offset]   ※data = -1
Index: /trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp
===================================================================
--- /trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler64/NumOpe_TypeOperation.cpp	(revision 198)
@@ -89,5 +89,5 @@
 			int temp;
 			_int64 i64data=0x43f0000000000000;
-			temp=Compiler::GetNativeCode().GetDataTable().Add( i64data );
+			temp=compiler.GetNativeCode().GetDataTable().Add( i64data );
 			OpBuffer[obp++]=(char)0xF2;
 			OpBuffer[obp++]=(char)0x0F;
@@ -148,5 +148,5 @@
 			int temp;
 			long i32data=0x5f800000;
-			temp=Compiler::GetNativeCode().GetDataTable().Add( i32data );
+			temp=compiler.GetNativeCode().GetDataTable().Add( i32data );
 			OpBuffer[obp++]=(char)0xF3;
 			OpBuffer[obp++]=(char)0x0F;
Index: /trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/NumOpe_GetType.cpp	(revision 198)
@@ -286,5 +286,5 @@
 	}
 
-	if( !Compiler::StringToType( TypeName, resultType ) ){
+	if( !compiler.StringToType( TypeName, resultType ) ){
 		return false;
 	}
@@ -637,5 +637,5 @@
 					// As演算子の右辺値
 					//型名
-					if( Compiler::StringToType( term, resultType ) ){
+					if( compiler.StringToType( term, resultType ) ){
 
 						if( resultType.IsObject() ){
Index: /trunk/abdev/BasicCompiler_Common/Object.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/Object.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/Object.cpp	(revision 198)
@@ -116,5 +116,5 @@
 	}
 
-	if( !Compiler::StringToType( typeName, resultType ) ){
+	if( !compiler.StringToType( typeName, resultType ) ){
 		SetError(3,typeName,cp);
 		return false;
Index: /trunk/abdev/BasicCompiler_Common/VariableOpe.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/VariableOpe.cpp	(revision 198)
@@ -873,5 +873,5 @@
 		}
 
-		if( !Compiler::StringToType( temporary, type ) ){
+		if( !compiler.StringToType( temporary, type ) ){
 			SetError(3,temporary,cp);
 			type.SetBasicType( DEF_LONG );
Index: /trunk/abdev/BasicCompiler_Common/calculation.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/calculation.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/calculation.cpp	(revision 198)
@@ -488,5 +488,5 @@
 
 						Type tempType;
-						if( !Compiler::StringToType( temp2, tempType ) ){
+						if( !compiler.StringToType( temp2, tempType ) ){
 							if(enableerror) SetError(3,temp2,cp);
 							return false;
@@ -692,5 +692,5 @@
 						{
 							Type tempType;
-							if( !Compiler::StringToType( Parms, tempType ) ){
+							if( !compiler.StringToType( Parms, tempType ) ){
 								if(bDebuggingWatchList){
 									if( pIsMemoryAccessError ) *pIsMemoryAccessError = true;
Index: /trunk/abdev/BasicCompiler_Common/include/NamespaceSupporter.h
===================================================================
--- /trunk/abdev/BasicCompiler_Common/include/NamespaceSupporter.h	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/include/NamespaceSupporter.h	(revision 198)
@@ -35,4 +35,8 @@
 	{
 		return livingNamespaceScopes;
+	}
+	void SetLivingNamespaceScopes( const NamespaceScopes &namespaceScopes )
+	{
+		this->livingNamespaceScopes = namespaceScopes;
 	}
 	bool IsLiving( const NamespaceScopes &namespaceScopes ) const
Index: /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp	(revision 198)
@@ -590,5 +590,5 @@
 					i+=10;
 					i+=GetStringInPare_RemovePare(temporary,source.GetBuffer()+i)+1;
-					Compiler::StringToType( temporary, blittableType );
+					compiler.StringToType( temporary, blittableType );
 				}
 
Index: /trunk/abdev/BasicCompiler_Common/src/ProcedureImpl.cpp
===================================================================
--- /trunk/abdev/BasicCompiler_Common/src/ProcedureImpl.cpp	(revision 197)
+++ /trunk/abdev/BasicCompiler_Common/src/ProcedureImpl.cpp	(revision 198)
@@ -131,5 +131,5 @@
 			}
 
-			Compiler::StringToType( temporary, type );
+			compiler.StringToType( temporary, type );
 
 			if( type.IsNull() ){
@@ -259,5 +259,5 @@
 				}
 
-				Compiler::StringToType( temporary, type );
+				compiler.StringToType( temporary, type );
 
 				if( type.IsNull() ){
@@ -328,5 +328,5 @@
 					temporary[i3]=sourceOfParams[i2];
 				}
-				Compiler::StringToType( temporary, this->returnType );
+				compiler.StringToType( temporary, this->returnType );
 				if( this->returnType.IsNull() ) SmoothieException::Throw(3,temporary,nowLine);
 
@@ -514,5 +514,5 @@
 			}
 
-			Compiler::StringToType( temporary, type );
+			compiler.StringToType( temporary, type );
 
 			if( type.IsNull() ){
@@ -568,5 +568,5 @@
 					temporary[i3]=sourceOfParams[i2];
 				}
-				Compiler::StringToType( temporary, this->returnType );
+				compiler.StringToType( temporary, this->returnType );
 				if( this->returnType.IsNull() ) SmoothieException::Throw(3,temporary,nowLine);
 
@@ -685,5 +685,5 @@
 			}
 
-			Compiler::StringToType( temporary, type );
+			compiler.StringToType( temporary, type );
 
 			if( type.IsNull() ){
@@ -739,5 +739,5 @@
 					temporary[i3]=sourceOfParams[i2];
 				}
-				Compiler::StringToType( temporary, this->returnType );
+				compiler.StringToType( temporary, this->returnType );
 				if( this->returnType.IsNull() ) SmoothieException::Throw(3,temporary,nowLine);
 
