Index: trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
===================================================================
--- trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 148)
+++ trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp	(revision 183)
@@ -1,2 +1,9 @@
+#include <jenga/include/smoothie/Smoothie.h>
+#include <jenga/include/smoothie/LexicalAnalysis.h>
+
+#include <Program.h>
+#include <LexicalScopingImpl.h>
+#include <ClassImpl.h>
+
 #include "../BasicCompiler_Common/common.h"
 #include "Opcode.h"
@@ -48,5 +55,5 @@
 
 		//クラスに属する静的メンバを定義
-		CMember::InitStaticMember();
+		Smoothie::GetMeta().GetClasses().InitStaticMember();
 
 		GetGlobalDataForDll();
@@ -61,5 +68,5 @@
 		//静的ローカルオブジェクトのコンストラクタ呼び出し
 
-		foreach( Variable *pVar, globalVars ){
+		BOOST_FOREACH( Variable *pVar, globalVars ){
 			if(memicmp(pVar->GetName().c_str(),"Static%",7)==0){
 				//コンストラクタ呼び出し
@@ -87,5 +94,5 @@
 		UserProc::CompileStartForGlobalArea();
 
-		obj_LexScopes.CallDestructorsOfScopeEnd();
+		GetLexicalScopes().CallDestructorsOfScopeEnd();
 
 		UserProc::CompileStartForUserProc( pBackUserProc );
@@ -217,5 +224,5 @@
 		&& userProc.GetParentClass().GetName() == "_System_TypeBase" ){
 
-			pobj_DBClass->Compile_System_InitializeUserTypes();
+			Smoothie::GetMeta().GetClasses().Compile_System_InitializeUserTypes();
 	}
 	else if( userProc.GetName() == "RegisterGlobalRoots"
@@ -263,8 +270,8 @@
 
 	//コンパイル中の関数が属するクラス
-	pobj_CompilingClass=pUserProc->GetParentClassPtr();
+	Smoothie::Temp::pCompilingClass=pUserProc->GetParentClassPtr();
 
 	//コンパイルスタートをクラス管理クラスに追加
-	pobj_DBClass->StartCompile( pUserProc );
+	Smoothie::GetMeta().GetClasses().StartCompile( pUserProc );
 
 	//コンパイル中の関数
@@ -272,5 +279,5 @@
 
 	// コンパイル中の関数が属する名前空間
-	Smoothie::Lexical::liveingNamespaceScopes = pUserProc->GetNamespaceScopes();
+	Smoothie::Temp::liveingNamespaceScopes = pUserProc->GetNamespaceScopes();
 
 	// コンパイル中の関数でImportsされている名前空間
@@ -335,6 +342,6 @@
 
 		//レキシカルスコープ情報
-		pVar->ScopeLevel=obj_LexScopes.GetNowLevel();
-		pVar->ScopeStartAddress=obj_LexScopes.GetStartAddress();
+		pVar->ScopeLevel=GetLexicalScopes().GetNowLevel();
+		pVar->ScopeStartAddress=GetLexicalScopes().GetStartAddress();
 		pVar->bLiving=TRUE;
 
@@ -450,6 +457,6 @@
 	}
 
-	if(pobj_CompilingClass){
-		if( pUserProc->GetName() == pobj_CompilingClass->GetName() ){
+	if(Smoothie::Temp::pCompilingClass){
+		if( pUserProc->GetName() == Smoothie::Temp::pCompilingClass->GetName() ){
 			////////////////////////////////////
 			// コンストラクタをコンパイルするとき
@@ -457,11 +464,11 @@
 
 			//コンストラクタのコンパイル開始を通知
-			pobj_CompilingClass->NotifyStartConstructorCompile();
+			Smoothie::Temp::pCompilingClass->NotifyStartConstructorCompile();
 
 			//基底クラスかどうかの識別
 			//（継承元がインターフェイスの場合も基底クラスと見なす）
 			BOOL bThisIsSuperClass;
-			if(pobj_CompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
-			else if( pobj_CompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
+			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
+			else if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
 				//インターフェイスを継承したときはコンストラクタを持たない
 				bThisIsSuperClass=1;
@@ -482,5 +489,5 @@
 					temporary[i4]=basbuf[i3];
 				}
-				if( pobj_CompilingClass->pobj_InheritsClass->GetName() == temporary ){
+				if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetName() == temporary ){
 					//基底クラスのコンストラクタを呼び出す
 					cp=i3;
@@ -499,6 +506,6 @@
 					Type dummyType;
 					CallProc( PROC_DEFAULT
-						, pobj_CompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
-						, pobj_CompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
+						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
+						, Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
 						, temporary
 						, dummyType );
@@ -507,5 +514,5 @@
 					//基底クラスのコンストラクタを暗黙的に呼び出す
 					Opcode_CallProc("",
-						pobj_CompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
+						Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
 						0,
 						"",
@@ -515,8 +522,8 @@
 
 			//仮想関数テーブルを初期化
-			if( pobj_CompilingClass->IsExistVirtualFunctions()
-				&& !pobj_CompilingClass->IsAbstract() ){
+			if( Smoothie::Temp::pCompilingClass->IsExistVirtualFunctions()
+				&& !Smoothie::Temp::pCompilingClass->IsAbstract() ){
 					//関数テーブルに値をセット
-					int offset = (int)pobj_CompilingClass->GetVtblGlobalOffset();
+					int offset = (int)Smoothie::Temp::pCompilingClass->GetVtblGlobalOffset();
 
 					//mov eax,offset
@@ -538,5 +545,5 @@
 
 			//デストラクタのコンパイル開始を通知
-			pobj_CompilingClass->NotifyStartDestructorCompile();
+			Smoothie::Temp::pCompilingClass->NotifyStartDestructorCompile();
 		}
 	}
@@ -564,11 +571,11 @@
 	//////////////////////////////////////////
 
-	if( pobj_CompilingClass ){
-
-		if( pobj_CompilingClass->IsCompilingConstructor() ){
+	if( Smoothie::Temp::pCompilingClass ){
+
+		if( Smoothie::Temp::pCompilingClass->IsCompilingConstructor() ){
 			// コンストラクタをコンパイルしていたとき
 
 			// コンストラクタのコンパイルが完了したことを通知
-			pobj_CompilingClass->NotifyFinishConstructorCompile();
+			Smoothie::Temp::pCompilingClass->NotifyFinishConstructorCompile();
 		}
 		else if( pUserProc->IsDestructor() ){
@@ -578,11 +585,11 @@
 
 			// デストラクタのコンパイルが完了したことを通知
-			pobj_CompilingClass->NotifyFinishDestructorCompile();
-
-			if(pobj_CompilingClass->pobj_InheritsClass){
+			Smoothie::Temp::pCompilingClass->NotifyFinishDestructorCompile();
+
+			if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass){
 				/* サブクラスのデストラクタをコンパイルしているときは、
 					基底クラスのデストラクタを呼び出す */
 
-				const CMethod *method = pobj_CompilingClass->pobj_InheritsClass->GetDestructorMethod();
+				const CMethod *method = Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
@@ -627,5 +634,5 @@
 
 	//ローカルオブジェクトの解放処理
-	obj_LexScopes.CallDestructorsOfScopeEnd();
+	GetLexicalScopes().CallDestructorsOfScopeEnd();
 
 	//プロシージャ抜け出しスケジュール（Exit Sub/Function）
@@ -702,5 +709,5 @@
 			obp+=sizeof(long);
 		}
-		else if(i3==DEF_INTEGER||i3==DEF_WORD || (isUnicode&&i3==DEF_CHAR)){
+		else if(i3==DEF_INTEGER||i3==DEF_WORD || (Smoothie::IsUnicode()&&i3==DEF_CHAR)){
 			//xor eax,eax（eaxを0に初期化する）
 			op_zero_reg(REG_EAX);
@@ -714,5 +721,5 @@
 			obp+=sizeof(long);
 		}
-		else if(i3==DEF_SBYTE||i3==DEF_BYTE||i3==DEF_BOOLEAN || (isUnicode==false&&i3==DEF_CHAR)){
+		else if(i3==DEF_SBYTE||i3==DEF_BYTE||i3==DEF_BOOLEAN || (Smoothie::IsUnicode()==false&&i3==DEF_CHAR)){
 			//xor eax,eax（eaxを0に初期化する）
 			op_zero_reg(REG_EAX);
@@ -732,5 +739,5 @@
 	}
 	HeapDefaultFree(pLocalVarAddrSchedule);
-	foreach( Variable *pVar, pUserProc->localVars ){
+	BOOST_FOREACH( Variable *pVar, pUserProc->localVars ){
 		//後にデバッグで利用する
 		pVar->offset = AllLocalVarSize - pVar->offset;
