Index: BasicCompiler32/CParameter.cpp
===================================================================
--- BasicCompiler32/CParameter.cpp	(revision 47)
+++ BasicCompiler32/CParameter.cpp	(revision 50)
@@ -1,328 +1,4 @@
 #include "../BasicCompiler_Common/common.h"
 #include "opcode.h"
-
-CParameter::CParameter(char *buffer){
-	///////////////////////////
-	// パラメータ文字列を整理
-	///////////////////////////
-
-	extern HANDLE hHeap;
-	int i,i2,i3;
-	char temporary[VN_SIZE];
-
-	i=0;
-	ParmsNum=0;
-	while(1){
-		if(buffer[i]=='\0') break;
-
-		for(i2=0;;i2++,i++){
-			if(buffer[i]=='\"'){
-				temporary[i2]=buffer[i];
-				for(i++,i2++;;i++,i2++){
-					temporary[i2]=buffer[i];
-					if(buffer[i]=='\"') break;
-				}
-				continue;
-			}
-
-			if(buffer[i]=='('){
-				i3=GetStringInPare(temporary+i2,buffer+i);
-				i2+=i3-1;
-				i+=i3-1;
-				continue;
-			}
-			if(buffer[i]=='['){
-				i3=GetStringInBracket(temporary+i2,buffer+i);
-				i2+=i3-1;
-				i+=i3-1;
-				continue;
-			}
-
-			if(buffer[i]==','||buffer[i]=='\0'){
-				temporary[i2]=0;
-				break;
-			}
-			temporary[i2]=buffer[i];
-		}
-
-		Parms[ParmsNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
-		lstrcpy(Parms[ParmsNum],temporary);
-		ParmsNum++;
-
-		if(buffer[i]==',') i++;
-	}
-
-	ReturnTypeInfo.type=0;
-	ReturnTypeInfo.u.lpIndex=0;
-}
-CParameter::CParameter(PARAMETER_INFO *pParamInfo,int ParmNum){
-	int i;
-	for(i=0;i<ParmNum;i++){
-		Parms[i]=0;
-		types[i].type=pParamInfo[i].type;
-		types[i].u.lpIndex=pParamInfo[i].u.index;
-	}
-	this->ParmsNum=ParmNum;
-
-	ReturnTypeInfo.type=0;
-	ReturnTypeInfo.u.lpIndex=0;
-}
-CParameter::~CParameter(){
-	int i2;
-
-	//パラメータ文字列を解放
-	for(i2=0;i2<ParmsNum;i2++){
-		if(Parms[i2]==(char *)-1) continue;
-
-		if(Parms[i2]) HeapDefaultFree(Parms[i2]);
-	}
-}
-
-
-void CParameter::SetReturnType(TYPEINFO *pTypeInfo){
-	ReturnTypeInfo=*pTypeInfo;
-}
-
-BOOL CParameter::_overload_check(PARAMETER_INFO *ppi,int pi_num,TYPEINFO *pReturnTypeInfo,int overload_level){
-	//パラメータを識別してオーバーロードを解決
-
-	//パラメータの個数が不一致の場合
-	if(pi_num!=ParmsNum) return 0;
-
-	int i,type;
-	LONG_PTR lpIndex;
-	for(i=0;i<pi_num;i++){
-		if(Parms[i]){
-			TYPEINFO BaseType={ppi[i].type,ppi[i].u.index};
-			type=NumOpe_GetType(Parms[i],&BaseType,&lpIndex);
-		}
-		else{
-			type=types[i].type;
-			lpIndex=types[i].u.lpIndex;
-		}
-
-		if(type!=ppi[i].type){
-			if(overload_level==OVERLOAD_LEVEL1){
-				return 0;
-			}
-			else if(overload_level==OVERLOAD_LEVEL2){
-				if(!(
-					IsWholeNumberType(type)&&IsWholeNumberType(ppi[i].type)||
-					IsRealNumberType(type)&&IsRealNumberType(ppi[i].type)
-					)) return 0;
-			}
-			else if(overload_level==OVERLOAD_LEVEL3){
-				if(type==DEF_OBJECT||ppi[i].type==DEF_OBJECT) return 0;
-			}
-		}
-		else{
-			if(NATURAL_TYPE(type)==DEF_OBJECT){
-				if(lpIndex!=ppi[i].u.index) return 0;
-			}
-		}
-	}
-
-	if(pReturnTypeInfo){
-		//戻り値も比較対象にする
-		if(ReturnTypeInfo.type==pReturnTypeInfo->type){
-			if(NATURAL_TYPE(ReturnTypeInfo.type)==DEF_OBJECT){
-				if(ReturnTypeInfo.u.lpIndex != pReturnTypeInfo->u.lpIndex) return 0;
-			}
-		}
-		else return 0;
-	}
-
-	return 1;
-}
-SUBINFO *CParameter::OverloadSolutionWithReturnType(const char *name,SUBINFO **ppsi,int num){
-	int i,sw=0;
-	SUBINFO *psi;
-	psi=0;
-	for(i=0;i<num;i++){
-		psi=ppsi[i];
-
-		TYPEINFO ReturnTypeInfo;
-		ReturnTypeInfo.type=psi->ReturnType;
-		ReturnTypeInfo.u.lpIndex=psi->u.ReturnIndex;
-
-		//エラーチェック
-		if(_overload_check(psi->pParmInfo,psi->ParmNum,&ReturnTypeInfo,OVERLOAD_LEVEL1)){
-			if(sw){
-				SetError(52,name,cp);
-				return 0;
-			}
-			sw=1;
-			break;
-		}
-	}
-
-	if(!sw){
-		for(i=0;i<num;i++){
-			psi=ppsi[i];
-
-			TYPEINFO ReturnTypeInfo;
-			ReturnTypeInfo.type=psi->ReturnType;
-			ReturnTypeInfo.u.lpIndex=psi->u.ReturnIndex;
-
-			//エラーチェック
-			if(_overload_check(psi->pParmInfo,psi->ParmNum,&ReturnTypeInfo,OVERLOAD_LEVEL2)){
-				if(sw){
-					SetError(52,name,cp);
-					return 0;
-				}
-				sw=1;
-				break;
-			}
-		}
-	}
-
-	if(!sw){
-		for(i=0;i<num;i++){
-			psi=ppsi[i];
-
-			TYPEINFO ReturnTypeInfo;
-			ReturnTypeInfo.type=psi->ReturnType;
-			ReturnTypeInfo.u.lpIndex=psi->u.ReturnIndex;
-
-			//エラーチェック
-			if(_overload_check(psi->pParmInfo,psi->ParmNum,&ReturnTypeInfo,OVERLOAD_LEVEL3)){
-				if(sw){
-					SetError(52,name,cp);
-					return 0;
-				}
-				sw=1;
-				break;
-			}
-		}
-	}
-
-	if(!sw){
-		SetError(52,name,cp);
-		return 0;
-	}
-
-	return psi;
-}
-
-SUBINFO *CParameter::OverloadSolution(const char *name,SUBINFO **ppsi,int num){
-	int i,sw=0;
-	SUBINFO *psi;
-	psi=0;
-
-	for(i=0;i<num;i++){
-		psi=ppsi[i];
-
-		//エラーチェック
-		if(_overload_check(psi->pParmInfo,psi->ParmNum,NULL,OVERLOAD_LEVEL1)){
-			if(sw){
-				return OverloadSolutionWithReturnType(name,ppsi,num);
-			}
-			sw=1;
-			break;
-		}
-	}
-
-	if(!sw){
-		for(i=0;i<num;i++){
-			psi=ppsi[i];
-
-			//エラーチェック
-			if(_overload_check(psi->pParmInfo,psi->ParmNum,NULL,OVERLOAD_LEVEL2)){
-				if(sw){
-					return OverloadSolutionWithReturnType(name,ppsi,num);
-				}
-				sw=1;
-				break;
-			}
-		}
-	}
-
-	if(!sw){
-		for(i=0;i<num;i++){
-			psi=ppsi[i];
-
-			//エラーチェック
-			if(_overload_check(psi->pParmInfo,psi->ParmNum,NULL,OVERLOAD_LEVEL3)){
-				if(sw){
-					return OverloadSolutionWithReturnType(name,ppsi,num);
-				}
-				sw=1;
-				break;
-			}
-		}
-	}
-
-	if(!sw){
-		SUBINFO *temp_psi;
-		for(i=0;i<num;i++){
-			temp_psi=ppsi[i];
-
-			//エラーチェック
-			if(temp_psi->ParmNum==this->ParmsNum){
-				if(sw){
-					sw=0;
-					break;
-				}
-				sw=1;
-
-				psi=temp_psi;
-			}
-		}
-	}
-
-	if(!sw){
-		SetError(52,name,cp);
-		return 0;
-	}
-
-	return psi;
-}
-
-BOOL CParameter::ErrorCheck(const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum){
-	if(ParmsNum>pi_num){
-		if(ppi[pi_num-1].type!=DEF_ELLIPSE){
-			//パラメータが多すぎるとき
-			SetError(10,FuncName,cp);
-			return 0;
-		}
-	}
-	else if(ParmsNum<pi_num){
-		if(ParmsNum<SecondParmNum){
-			if(ppi[ParmsNum].type==DEF_ELLIPSE){
-				return 1;
-			}
-
-			//パラメータが少なすぎるとき
-			SetError(10,FuncName,cp);
-			return 0;
-		}
-
-		//省略パラメータに "0" を指定する
-		for(;ParmsNum < pi_num;ParmsNum++){
-			extern HANDLE hHeap;
-			char temporary[64];
-			if(ppi[ParmsNum].bByVal) lstrcpy(temporary,"0");
-			else sprintf(temporary,"%c%c0",1,ESC_BYVAL);
-			Parms[ParmsNum]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
-			lstrcpy(Parms[ParmsNum],temporary);
-		}
-	}
-
-	return 1;
-}
-void CParameter::MacroParameterSupport(PARAMETER_INFO *ppi){
-	int i;
-	for(i=0;i<ParmsNum;i++){
-		if(Parms[i][0]=='\0'){
-			extern HANDLE hHeap;
-			char temporary[64];
-			if(ppi[i].bByVal) lstrcpy(temporary,"0");
-			else sprintf(temporary,"%c%c0",1,ESC_BYVAL);
-			HeapDefaultFree(Parms[i]);
-			Parms[i]=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1);
-			lstrcpy(Parms[i],temporary);
-		}
-	}
-}
 
 void CParameter::NewTempParameters( const char *FuncName,PARAMETER_INFO *ppi,int pi_num,int SecondParmNum ){
