Changeset 31 in dev for BasicCompiler32/Compile_CallProc.cpp
- Timestamp:
- Jan 13, 2007, 4:26:50 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler32/Compile_CallProc.cpp
r29 r31 67 67 68 68 69 ret_type=Opcode_CallProc(Parameter,psi,plpRetIndex,0,ObjectName,RefType); 69 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 70 if( plpRetIndex ){ 71 *plpRetIndex = psi->u.ReturnIndex; 72 } 73 return psi->ReturnType; 70 74 } 71 75 else if(idProc==PROC_DLL){ … … 138 142 if(psi){ 139 143 //呼び出し 140 int type; 141 LONG_PTR lpIndex; 142 type=Opcode_CallProc(Parameter,psi,&lpIndex,0,ObjectName,RefType); 144 Opcode_CallProc(Parameter,psi,0,ObjectName,RefType); 143 145 144 146 if(pRetTypeInfo){ 145 pRetTypeInfo->type =type;146 pRetTypeInfo->u.lpIndex =lpIndex;147 pRetTypeInfo->type = psi->ReturnType; 148 pRetTypeInfo->u.lpIndex = psi->u.ReturnIndex; 147 149 } 148 150 } … … 174 176 175 177 //エラーチェック 176 pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum); 178 if( !pobj_parameter->ErrorCheck(variable,pi->pParmInfo,pi->ParmNum,pi->ParmNum) ){ 179 //パラメータにエラーがあるときは処理を終える 180 return pi->ReturnType; 181 } 177 182 178 183 //一時オブジェクトを生成 … … 213 218 } 214 219 215 int Opcode_CallProc(char *Parameter,SUBINFO *psi,LONG_PTR *plpIndex,DWORD dwFlags,char *ObjectName,int RefType){220 void Opcode_CallProc(char *Parameter,SUBINFO *psi,DWORD dwFlags,char *ObjectName,int RefType){ 216 221 int i,i2; 217 222 … … 219 224 if(lstrcmpi(psi->name,"Print")==0){ 220 225 Opcode_Print(Parameter,0); 221 return -1;226 return; 222 227 } 223 228 if(lstrcmpi(psi->name,"Input")==0){ 224 229 Opcode_Input(Parameter); 225 return -1;230 return; 226 231 } 227 232 if(lstrcmpi(psi->name,"Write")==0){ 228 233 Opcode_Print(Parameter,1); 229 return -1;234 return; 230 235 } 231 236 } … … 277 282 if( !pMethod ){ 278 283 SetError(300,NULL,cp); 279 return -1;284 return; 280 285 } 281 286 … … 296 301 if(dwAccess==ACCESS_NON){ 297 302 SetError(109,psi->name,cp); 298 return -1;303 return; 299 304 } 300 305 } … … 303 308 dwAccess==ACCESS_NON){ 304 309 SetError(109,psi->name,cp); 305 return -1;310 return; 306 311 } 307 312 if(dwAccess==ACCESS_PROTECTED){ 308 313 SetError(110,psi->name,cp); 309 return -1;314 return; 310 315 } 311 316 } … … 315 320 if(dwAccess==ACCESS_NON){ 316 321 SetError(109,psi->name,cp); 317 return -1;322 return; 318 323 } 319 324 } … … 352 357 353 358 //エラーチェック 354 pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->RealSecondParmNum); 359 if( !pobj_parameter->ErrorCheck(psi->name,psi->pRealParmInfo,psi->RealParmNum,psi->RealSecondParmNum) ){ 360 //パラメータにエラーがあるときは処理を終える 361 return; 362 } 355 363 356 364 if(psi->dwType==SUBTYPE_MACRO){ … … 401 409 if( pMethod->isConst ){ 402 410 //Constアクセスが可能なメソッドの場合 403 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;411 if( !GetVarOffsetReadOnly( ObjectName, &i2, &RelativeVar, 0 ) ) return; 404 412 } 405 413 else{ 406 414 //Constアクセスが不可能なメソッドの場合 407 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return -1;415 if( !GetVarOffsetReadWrite( ObjectName, &i2, &RelativeVar, 0 ) ) return; 408 416 } 409 417 … … 488 496 //パラメータオブジェクトを破棄 489 497 delete pobj_parameter; 490 491 if(plpIndex) *plpIndex=psi->u.ReturnIndex;492 493 return psi->ReturnType;494 498 } 495 499 … … 516 520 517 521 //エラーチェック 518 pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum); 522 if( !pobj_parameter->ErrorCheck(pdi->name,pdi->pParmInfo,pdi->ParmNum,pdi->ParmNum) ){ 523 //パラメータにエラーがあるときは処理を終える 524 return pdi->ReturnType; 525 } 519 526 520 527 //レジスタ、スタックフレームにセット
Note:
See TracChangeset
for help on using the changeset viewer.