Index: trunk/abdev/BasicCompiler64/MakePeHdr.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 169)
+++ trunk/abdev/BasicCompiler64/MakePeHdr.cpp	(revision 183)
@@ -1,3 +1,9 @@
 #include <jenga/include/common/Environment.h>
+
+#include <jenga/include/smoothie/Smoothie.h>
+
+#include <LexicalScopingImpl.h>
+#include <ClassImpl.h>
+#include <Compiler.h>
 
 #include "../BasicCompiler_Common/common.h"
@@ -119,7 +125,7 @@
 	//////////////////
 	// データテーブル
-	dataTable.Init();
+	Compiler::GetNativeCode().GetDataTable().Init();
 	if(bDebugCompile){
-		dataTable.Add( (long)0x00000002 );
+		Compiler::GetNativeCode().GetDataTable().Add( (long)0x00000002 );
 	}
 
@@ -145,10 +151,10 @@
 
 	//関数ポインタ情報を初期化
-	Smoothie::meta.procPointers.clear();
+	Smoothie::GetMeta().GetProcPointers().clear();
 
 	// 名前空間情報を取得
 	NamespaceScopesCollection::CollectNamespaces(
 		Smoothie::Lexical::source.GetBuffer(),
-		Smoothie::meta.namespaceScopesCollection
+		Smoothie::GetMeta().namespaceScopesCollection
 	);
 
@@ -156,9 +162,8 @@
 	//   GetSubInfo関数の中で参照されるオブジェクト名を事前に取得する。
 	//     ※オブジェクトの内容までは取得しない
-	pobj_DBClass=new Classes();
-	pobj_DBClass->InitNames();
+	Smoothie::GetMeta().GetClasses().CollectClassesForNameOnly( Smoothie::Lexical::source );
 
 	//TypeDef情報を初期化
-	Smoothie::meta.typeDefs.Init();
+	Smoothie::GetMeta().typeDefs.Init();
 
 	//定数情報を取得
@@ -166,9 +171,9 @@
 
 	//サブルーチン（ユーザー定義、DLL関数）の識別子、アドレスを取得
-	pobj_CompilingClass=0;
+	Smoothie::Temp::pCompilingClass = NULL;
 	GetSubInfo();
 
 	//クラス情報を取得（※注 - GetSubInfoの後に呼び出す）
-	pobj_DBClass->GetAllClassInfo();
+	Smoothie::GetMeta().GetClasses().GetAllClassInfo();
 
 	//コードと行番号の関係
@@ -280,5 +285,5 @@
 
 	obp_AllocSize=8192*2;
-	OpBuffer=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,obp_AllocSize);
+	OpBuffer=(char *)calloc(obp_AllocSize,1);
 	obp=0;
 
@@ -287,5 +292,5 @@
 
 	//レキシカルスコープ情報を初期化
-	obj_LexScopes.Init(obp);
+	GetLexicalScopes().Init(obp);
 
 
@@ -311,5 +316,5 @@
 	if(!bDll){
 		// 名前空間が初期化されているかをチェック
-		if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
+		if( Smoothie::Temp::liveingNamespaceScopes.size() ){
 			SetError();
 		}
@@ -362,5 +367,5 @@
 
 		//クラスに属する静的メンバを定義
-		CMember::InitStaticMember();
+		Smoothie::GetMeta().GetClasses().InitStaticMember();
 
 		//グローバル実行領域をコンパイル開始
@@ -426,5 +431,5 @@
 
 		// 名前空間が正しく閉じられているかをチェック
-		if( Smoothie::Lexical::liveingNamespaceScopes.size() ){
+		if( Smoothie::Temp::liveingNamespaceScopes.size() ){
 			SetError(63,NULL,-1);
 		}
@@ -793,5 +798,5 @@
 	//（デバッグ情報で利用される）
 	extern int AllInitGlobalVarSize;
-	foreach( Variable *pVar, globalVars ){
+	BOOST_FOREACH( Variable *pVar, globalVars ){
 		if(pVar->offset&0x80000000){
 			pVar->offset=(pVar->offset&0x7FFFFFFF)+AllInitGlobalVarSize;
@@ -876,6 +881,6 @@
 
 	//データセクションのファイル上のサイズ
-	if(dataTable.GetSize()%FILE_ALIGNMENT) FileSize_DataSection=dataTable.GetSize()+(FILE_ALIGNMENT-dataTable.GetSize()%FILE_ALIGNMENT);
-	else FileSize_DataSection=dataTable.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;
@@ -1066,5 +1071,5 @@
 	////////////////////////////////////////
 	//仮想関数データテーブルスケジュール
-	pobj_DBClass->ActionVtblSchedule(ImageBase,MemPos_CodeSection);
+	Smoothie::GetMeta().GetClasses().ActionVtblSchedule(ImageBase,MemPos_CodeSection);
 
 
@@ -1602,5 +1607,5 @@
 	if(bUse_DataSection){
 		//データ テーブル
-		WriteFile(hFile,dataTable.GetPtr(),dataTable.GetSize(),(DWORD *)&i2,NULL);
+		WriteFile(hFile,Compiler::GetNativeCode().GetDataTable().GetPtr(),Compiler::GetNativeCode().GetDataTable().GetSize(),(DWORD *)&i2,NULL);
 		i+=i2;
 	}
@@ -1698,5 +1703,5 @@
 
 	//コードバッファを解放
-	HeapDefaultFree(OpBuffer);
+	free(OpBuffer);
 	OpBuffer=0;
 
@@ -1714,5 +1719,4 @@
 
 	//クラスに関するメモリを解放
-	delete pobj_DBClass;
-	pobj_DBClass=0;
+	Smoothie::GetMeta().GetClasses().Clear();
 }
