Changeset 331 in dev for trunk/abdev/BasicCompiler32
- Timestamp:
- Sep 27, 2007, 1:47:46 AM (17 years ago)
- Location:
- trunk/abdev/BasicCompiler32
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/CParameter.cpp
r301 r331 233 233 } 234 234 235 extern LONG_PTR ProcPtr_BaseIndex;236 LONG_PTR back_ProcPtr_BaseIndex = ProcPtr_BaseIndex;237 if( dummyType.IsProcPtr() ){238 ProcPtr_BaseIndex = dummyType.GetIndex();239 }240 else{241 ProcPtr_BaseIndex=-1;242 }243 244 235 BOOL bCalcUseHeap; 245 236 Type calcType; … … 247 238 break; 248 239 } 249 250 ProcPtr_BaseIndex=back_ProcPtr_BaseIndex;251 240 252 241 if( calcType.IsObject() ){ -
trunk/abdev/BasicCompiler32/Compile_Calc.cpp
r324 r331 517 517 void *pProc; 518 518 idProc=GetProc(temporary,(void **)&pProc); 519 if(idProc){ 520 CallProc(idProc,pProc,temporary,temp2,Type()); 519 if( idProc ) 520 { 521 CallProc( 522 idProc, 523 pProc, 524 temporary, 525 temp2, 526 Type(), // ベースタイプはなし 527 Type() 528 ); 521 529 return; 522 530 } … … 548 556 return; 549 557 } 550 551 extern LONG_PTR ProcPtr_BaseIndex;552 if(varType.IsProcPtr()) ProcPtr_BaseIndex=varType.GetIndex();553 else ProcPtr_BaseIndex=-1;554 558 555 559 RELATIVE_VAR VarRelativeVar; -
trunk/abdev/BasicCompiler32/Compile_Func.cpp
r325 r331 221 221 compiler.codeGenerator.op_mov_RV( REG_EAX, typeSize ); 222 222 } 223 void Opcode_Func_AddressOf( const char *name ){223 void Opcode_Func_AddressOf( const char *name, const Type &baseType ){ 224 224 extern int cp; 225 225 const UserProc *pUserProc; 226 226 227 extern LONG_PTR ProcPtr_BaseIndex;228 if(ProcPtr_BaseIndex!=-1){227 if( baseType.IsProcPtr() ) 228 { 229 229 //左辺の型にのっとり、オーバーロードを解決 230 230 … … 237 237 238 238 //オーバーロードを解決 239 pUserProc=OverloadSolution(name,subs,compiler.GetObjectModule().meta.GetProcPointers()[ ProcPtr_BaseIndex]->Params(), Type() );239 pUserProc=OverloadSolution(name,subs,compiler.GetObjectModule().meta.GetProcPointers()[baseType.GetIndex()]->Params(), Type() ); 240 240 241 241 if(!pUserProc){ … … 477 477 } 478 478 479 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &resultType, bool isCallOn ){ 479 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, const Type &baseType, Type &resultType, bool isCallOn ) 480 { 480 481 switch(FuncNum){ 481 482 case FUNC_FIX: … … 492 493 break; 493 494 case FUNC_ADDRESSOF: 494 if( isCallOn ) Opcode_Func_AddressOf( Parameter);495 if( isCallOn ) Opcode_Func_AddressOf( Parameter, baseType ); 495 496 resultType.SetBasicType( DEF_PTR_VOID ); 496 497 break; -
trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp
r319 r331 525 525 , compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str() 526 526 , temporary 527 , dummyType ); 527 , Type() // baseTypeはなし 528 , dummyType 529 ); 528 530 } 529 531 else{ -
trunk/abdev/BasicCompiler32/NumOpe.cpp
r327 r331 258 258 bool isClassName = false; 259 259 Type leftType; 260 if( GetTermType( termLeft, leftType, isLiteral, &isClassName ) ){260 if( GetTermType( termLeft, Type(), leftType, isLiteral, &isClassName ) ){ 261 261 if( isClassName == false && compiler.GetObjectModule().meta.GetBlittableTypes().IsExist( leftType ) ){ 262 262 // 左側のオブジェクト部分がBlittable型のとき … … 347 347 //////////////// 348 348 349 CallProc(idProc,pInfo,procName,parameter, resultType);349 CallProc(idProc,pInfo,procName,parameter, baseType,resultType); 350 350 351 351 -
trunk/abdev/BasicCompiler32/Opcode.h
r327 r331 216 216 //Compile_Func.cpp 217 217 int GetFunctionFromName(char *FuncName); 218 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, Type &resultType, bool isCallOn = true );218 bool Opcode_CallFunc( const char *Parameter, const int FuncNum, const Type &baseType, Type &resultType, bool isCallOn = true ); 219 219 220 220 //OperatorProc.cpp
Note:
See TracChangeset
for help on using the changeset viewer.