Index: trunk/abdev/BasicCompiler64/NumOpe.cpp
===================================================================
--- trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 198)
+++ trunk/abdev/BasicCompiler64/NumOpe.cpp	(revision 206)
@@ -1,2 +1,4 @@
+#include "stdafx.h"
+
 #include <jenga/include/smoothie/Smoothie.h>
 #include <jenga/include/smoothie/LexicalAnalysis.h>
@@ -164,16 +166,15 @@
 	// 動的メソッドを検索
 	///////////////////////////////////////////////////////////////////
-	vector<UserProc *> userProcs;
+	vector<const UserProc *> userProcs;
 
 	char methodName[VN_SIZE], lpPtrOffset[VN_SIZE], parameter[VN_SIZE], dummy[1];
-	CClass::RefType refType;
+	ReferenceKind refType;
 	lstrcpy( methodName, member );
 	GetVarFormatString(methodName,parameter,lpPtrOffset,dummy,refType);
 
 	objClass.GetMethods().Enum( methodName, userProcs );
-	UserProc *pUserProc;
 	if(userProcs.size()){
 		//オーバーロードを解決
-		pUserProc=OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);
+		const UserProc *pUserProc = OverloadSolutionWithStrParam(termFull,userProcs,parameter,termLeft);
 
 		if( pUserProc ){
@@ -245,6 +246,6 @@
 	// パース
 	char member[VN_SIZE];
-	CClass::RefType refType;
-	if( CClass::SplitName( termFull, termLeft, member, refType ) ){
+	ReferenceKind refType;
+	if( SplitMemberName( termFull, termLeft, member, refType ) ){
 		///////////////////////////////////////////////////////////////////
 		// オブジェクトとメンバに分解できるとき
@@ -309,5 +310,5 @@
 	if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
 		//Thisオブジェクト
-		resultType.SetType( DEF_OBJECT, Smoothie::Temp::pCompilingClass );
+		resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
 
 		SetThisPtrToReg( UseReg );
@@ -385,21 +386,27 @@
 			return true;
 		}
-		else if(GetConstCalcBuffer(procName,parameter,temporary)){
-			/////////////////////////
-			// マクロ関数
-			/////////////////////////
-
-			//閉じカッコ")"に続く文字がNULLでないときはエラーにする
-			if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
-
-			//マクロ関数の場合
-			NumOpe(&UseReg,temporary,Type(),resultType);
-
-			if(!IS_LITERAL(resultType.GetIndex())){
-				//リテラル値ではなかったとき
-				isLiteral = false;
-			}
-
-			return true;
+
+		ConstMacro *pConstMacro = compiler.GetMeta().GetGlobalConstMacros().Find( procName );
+		if( pConstMacro )
+		{
+			if( pConstMacro->GetCalcBuffer( parameter, temporary ) )
+			{
+				/////////////////////////
+				// マクロ関数
+				/////////////////////////
+
+				//閉じカッコ")"に続く文字がNULLでないときはエラーにする
+				if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
+
+				//マクロ関数の場合
+				NumOpe(&UseReg, temporary,Type(),resultType);
+
+				if(!IS_LITERAL(resultType.GetIndex())){
+					//リテラル値ではなかったとき
+					isLiteral = false;
+				}
+
+				return true;
+			}
 		}
 	}
@@ -905,10 +912,10 @@
 					//////////////
 
-					i3 = CDBConst::obj.GetBasicType(term);
+					i3 = compiler.GetMeta().GetGlobalConsts().GetBasicType(term);
 					if(i3){
-						if( CDBConst::obj.IsStringPtr( term ) ){
+						if( compiler.GetMeta().GetGlobalConsts().IsStringPtr( term ) ){
 							//リテラル文字列
 
-							double dbl = CDBConst::obj.GetDoubleData(term);
+							double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
 							memcpy(&i64data,&dbl,sizeof(double));
 
@@ -924,5 +931,5 @@
 						if(IsRealNumberType(i3)){
 							//実数
-							double dbl = CDBConst::obj.GetDoubleData(term);
+							double dbl = compiler.GetMeta().GetGlobalConsts().GetDoubleData(term);
 							memcpy(&i64data,&dbl,sizeof(double));
 							goto Literal;
@@ -930,5 +937,5 @@
 						else if(IsWholeNumberType(i3)){
 							//整数
-							i64data = CDBConst::obj.GetWholeData(term);
+							i64data = compiler.GetMeta().GetGlobalConsts().GetWholeData(term);
 							goto Literal;
 						}
