Index: trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp	(revision 536)
@@ -113,5 +113,5 @@
 			{
 				//クラスメンバ関数内から基底クラスの呼び出し
-				pobj_c=&compiler.pCompilingClass->GetSuperClass();
+				pobj_c=&compiler.GetCompilingClass().GetSuperClass();
 
 				isFixedClass = true;
@@ -147,9 +147,9 @@
 
 				//New演算子によるコンストラクタ呼び出し
-				pobj_c=pUserProc->GetParentClassPtr();
+				pobj_c = pUserProc->GetParentClassPtr();
 			}
 			else{
 				//クラスメンバ関数内から同一クラスのメンバ関数の呼び出し
-				pobj_c=compiler.pCompilingClass;
+				pobj_c = &compiler.GetCompilingClass();
 			}
 		}
@@ -180,18 +180,23 @@
 		if(ObjectName[0]){
 			//外部からの呼び出し
-			if(pobj_c==compiler.pCompilingClass){
+			if( compiler.IsCompilingClass() && pobj_c == &compiler.GetCompilingClass() )
+			{
 				//同一クラスオブジェクトの場合はプライベートアクセスを容認する
-				if( pMethod->IsNoneAccess() ){
+				if( pMethod->IsNoneAccess() )
+				{
 					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
 			}
-			else{
+			else
+			{
 				if( pMethod->IsPrivate()
-					|| pMethod->IsNoneAccess() ){
+					|| pMethod->IsNoneAccess() )
+				{
 					compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
 					return false;
 				}
-				if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){
+				if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() )
+				{
 					compiler.errorMessenger.Output(110,pUserProc->GetName(),cp);
 					return false;
Index: trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp	(revision 536)
@@ -273,5 +273,5 @@
 			SetThisPtrToReg(REG_RCX);
 
-			pobj_c=compiler.pCompilingClass;
+			pobj_c = &compiler.GetCompilingClass();
 		}
 
@@ -611,5 +611,5 @@
 		}
 
-		Opcode_CallDelegate( compiler.pCompilingClass->GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
+		Opcode_CallDelegate( compiler.GetCompilingClass().GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
 	}
 
Index: trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp	(revision 536)
@@ -471,6 +471,6 @@
 	}
 
-	if(compiler.pCompilingClass){
-		if( pUserProc->GetName() == compiler.pCompilingClass->GetName() ){
+	if( compiler.IsCompilingClass() ){
+		if( pUserProc->GetName() == compiler.GetCompilingClass().GetName() ){
 			////////////////////////////////////
 			// コンストラクタをコンパイルするとき
@@ -478,11 +478,11 @@
 
 			//コンストラクタのコンパイル開始を通知
-			compiler.pCompilingClass->NotifyStartConstructorCompile();
+			compiler.GetCompilingClass().NotifyStartConstructorCompile();
 
 			//基底クラスかどうかの識別
 			//（継承元がインターフェイスの場合も基底クラスと見なす）
 			BOOL bThisIsSuperClass;
-			if( !compiler.pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
-			else if( compiler.pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
+			if( !compiler.GetCompilingClass().HasSuperClass() ) bThisIsSuperClass=1;
+			else if( compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod() == NULL ){
 				//インターフェイスを継承したときはコンストラクタを持たない
 				bThisIsSuperClass=1;
@@ -503,5 +503,5 @@
 					temporary[i4]=basbuf[i3];
 				}
-				if( compiler.pCompilingClass->GetSuperClass().GetName() == temporary ){
+				if( compiler.GetCompilingClass().GetSuperClass().GetName() == temporary ){
 					//基底クラスのコンストラクタを呼び出す
 					cp=i3;
@@ -520,6 +520,6 @@
 					Type dummyType;
 					CallProc( PROC_DEFAULT
-						, &compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc()
-						, compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str()
+						, &compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc()
+						, compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str()
 						, temporary
 						, Type()		// baseTypeはなし
@@ -530,5 +530,5 @@
 					//基底クラスのコンストラクタを暗黙的に呼び出す
 					Opcode_CallProc("",
-						&compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc(),
+						&compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc(),
 						0,
 						""
@@ -541,5 +541,5 @@
 
 			//デストラクタのコンパイル開始を通知
-			compiler.pCompilingClass->NotifyStartDestructorCompile();
+			compiler.GetCompilingClass().NotifyStartDestructorCompile();
 		}
 	}
@@ -567,11 +567,11 @@
 	//////////////////////////////////////////
 
-	if( compiler.pCompilingClass ){
-
-		if( compiler.pCompilingClass->IsCompilingConstructor() ){
+	if( compiler.IsCompilingClass() ){
+
+		if( compiler.GetCompilingClass().IsCompilingConstructor() ){
 			// コンストラクタをコンパイルしていたとき
 
 			// コンストラクタのコンパイルが完了したことを通知
-			compiler.pCompilingClass->NotifyFinishConstructorCompile();
+			compiler.GetCompilingClass().NotifyFinishConstructorCompile();
 		}
 		else if( pUserProc->IsDestructor() ){
@@ -581,11 +581,11 @@
 
 			// デストラクタのコンパイルが完了したことを通知
-			compiler.pCompilingClass->NotifyFinishDestructorCompile();
-
-			if( compiler.pCompilingClass->HasSuperClass() ){
+			compiler.GetCompilingClass().NotifyFinishDestructorCompile();
+
+			if( compiler.GetCompilingClass().HasSuperClass() ){
 				/* サブクラスのデストラクタをコンパイルしているときは、
 					基底クラスのデストラクタを呼び出す */
 
-				const CMethod *method = compiler.pCompilingClass->GetSuperClass().GetDestructorMethod();
+				const CMethod *method = compiler.GetCompilingClass().GetSuperClass().GetDestructorMethod();
 				if( method ){
 					Opcode_CallProc("",
Index: trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp	(revision 536)
@@ -194,5 +194,5 @@
 
 	//アクセシビリティをチェック
-	if(&objClass==compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){
 		//同一クラスオブジェクトの場合はプライベートアクセスを容認する
 		if(pMember->IsNoneAccess()){
@@ -447,5 +447,5 @@
 	}
 
-	if(compiler.pCompilingClass){
+	if( compiler.IsCompilingClass() ){
 		//////////////////////
 		// クラスメンバの参照
@@ -460,5 +460,5 @@
 			pRelativeVar->dwKind=VAR_DIRECTMEM;
 
-			resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+			resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 			return true;
 		}
@@ -472,5 +472,5 @@
 			//クラス内の動的メンバを参照するとき（通常）
 
-			if( !compiler.pCompilingClass->HasDynamicMember( VarName ) )
+			if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) )
 			{
 				goto NonClassMember;
@@ -483,6 +483,6 @@
 		if( isWriteAccess &&
 			pMethod->IsConst() &&
-			compiler.pCompilingClass->IsCompilingConstructor() == false &&
-			compiler.pCompilingClass->IsCompilingDestructor() == false
+			compiler.GetCompilingClass().IsCompilingConstructor() == false &&
+			compiler.GetCompilingClass().IsCompilingDestructor() == false
 			){
 				compiler.errorMessenger.Output(131, NULL, cp );
@@ -499,5 +499,5 @@
 			isErrorEnabled,
 			isWriteAccess,
-			Type( DEF_OBJECT, *compiler.pCompilingClass ),
+			Type( DEF_OBJECT, compiler.GetCompilingClass() ),
 			variable,
 			pRelativeVar,
@@ -559,8 +559,8 @@
 		}
 
-		if(compiler.pCompilingClass){
+		if( compiler.IsCompilingClass() ){
 			//自身のクラスから静的メンバを参照する場合
 			char temp2[VN_SIZE];
-			sprintf(temp2,"%s.%s",compiler.pCompilingClass->GetName().c_str(),VarName);
+			sprintf(temp2,"%s.%s",compiler.GetCompilingClass().GetName().c_str(),VarName);
 			pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) );
 			if( pVar ){
Index: trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp	(revision 536)
@@ -193,5 +193,5 @@
 
 	// サブルーチン（ユーザー定義、DLL関数）の識別子、アドレスを取得
-	compiler.pCompilingClass = NULL;
+	compiler.SetCompilingClass( NULL );
 	ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures(
 		compiler.GetObjectModule().GetCurrentSource(),
Index: trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp
===================================================================
--- trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp	(revision 533)
+++ trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp	(revision 536)
@@ -430,5 +430,5 @@
 
 	if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
-		if( compiler.pCompilingClass == NULL )
+		if( !compiler.IsCompilingClass() )
 		{
 			compiler.errorMessenger.Output(142,NULL,cp);
@@ -437,5 +437,5 @@
 
 		//Thisオブジェクト
-		resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
+		resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
 
 		SetThisPtrToReg( useReg );
