Changeset 31 in dev for BasicCompiler64/Compile_CallProc.cpp
- Timestamp:
- Jan 13, 2007, 4:26:50 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Compile_CallProc.cpp
r29 r31 68 68 69 69 70 ret_type=Opcode_CallProc(Parameter,psi,plpRetIndex,0,ObjectName,RefType); 70 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 71 if( plpRetIndex ){ 72 *plpRetIndex = psi->u.ReturnIndex; 73 } 74 return psi->ReturnType; 71 75 } 72 76 else if(idProc==PROC_DLL){ … … 139 143 if(psi){ 140 144 //呼び出し 141 int type; 142 LONG_PTR lpIndex; 143 type=Opcode_CallProc(Parameter,psi,&lpIndex,0,ObjectName,RefType); 144 145 if(pRetTypeInfo){ 146 pRetTypeInfo->type=type; 147 pRetTypeInfo->u.lpIndex=lpIndex; 145 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 146 147 if( pRetTypeInfo ){ 148 pRetTypeInfo->type = psi->ReturnType; 149 pRetTypeInfo->u.lpIndex = psi->u.ReturnIndex; 148 150 } 149 151 } … … 175 177 176 178 //エラーチェック 177 pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum); 179 if( !pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum) ){ 180 //パラメータにエラーがあるときは処理を終える 181 return pi->ReturnType; 182 } 178 183 179 184 //スタックフレームに存在する既存のパラメータをバックアップ … … 213 218 delete pobj_parameter; 214 219 215 if(plpIndex) *plpIndex=pi->u.ReturnIndex;216 217 220 return pi->ReturnType; 218 221 } 219 222 220 int Opcode_CallProc(char *Parameter,SUBINFO *psi,LONG_PTR *plpIndex,DWORD dwFlags,char *ObjectName,int RefType){223 void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType){ 221 224 int i,i2; 222 225 … … 224 227 if(lstrcmpi(psi->name,"Print")==0){ 225 228 Opcode_Print(Parameter,0); 226 return -1;229 return; 227 230 } 228 231 if(lstrcmpi(psi->name,"Input")==0){ 229 232 Opcode_Input(Parameter); 230 return -1;233 return; 231 234 } 232 235 if(lstrcmpi(psi->name,"Write")==0){ 233 236 Opcode_Print(Parameter,1); 234 return -1;237 return; 235 238 } 236 239 } … … 282 285 if( !pMethod ){ 283 286 SetError(300,NULL,cp); 284 return -1;287 return; 285 288 } 286 289 … … 301 304 if(dwAccess==ACCESS_NON){ 302 305 SetError(109,psi->name,cp); 303 return -1;306 return; 304 307 } 305 308 } … … 308 311 dwAccess==ACCESS_NON){ 309 312 SetError(109,psi->name,cp); 310 return -1;313 return; 311 314 } 312 315 if(dwAccess==ACCESS_PROTECTED){ 313 316 SetError(110,psi->name,cp); 314 return -1;317 return; 315 318 } 316 319 } … … 320 323 if(dwAccess==ACCESS_NON){ 321 324 SetError(109,psi->name,cp); 322 return -1;325 return; 323 326 } 324 327 } … … 355 358 356 359 //エラーチェック 357 pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum); 360 if( !pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->SecondParmNum) ){ 361 //パラメータにエラーがあるときは処理を終える 362 return; 363 } 358 364 359 365 if(psi->dwType==SUBTYPE_MACRO){ … … 425 431 if( pMethod->isConst ){ 426 432 //Constアクセスが可能なメソッドの場合 427 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;433 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return; 428 434 } 429 435 else{ 430 436 //Constアクセスが不可能なメソッドの場合 431 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;437 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return; 432 438 } 433 439 … … 509 515 //パラメータオブジェクトを破棄 510 516 delete pobj_parameter; 511 512 if(plpIndex) *plpIndex=psi->u.ReturnIndex;513 514 return psi->ReturnType;515 517 } 516 518 … … 536 538 537 539 //エラーチェック 538 pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum); 540 if( !pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum) ){ 541 //パラメータにエラーがあるときは処理を終える 542 return pdi->ReturnType; 543 } 539 544 540 545 //スタックフレームに存在する既存のパラメータをバックアップ
Note:
See TracChangeset
for help on using the changeset viewer.