Changeset 27 in dev for BasicCompiler64
- Timestamp:
- Jan 7, 2007, 6:51:20 AM (18 years ago)
- Location:
- BasicCompiler64
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler64/Compile_CallProc.cpp
r26 r27 245 245 if(ObjectName[0]){ 246 246 if(lstrcmpi(ObjectName,"Super")==0){ 247 //クラスメンバ関数内から スーパークラスの呼び出し247 //クラスメンバ関数内から基底クラスの呼び出し 248 248 pobj_c=pobj_CompilingClass; 249 249 } … … 275 275 // メソッド情報を取得 276 276 ///////////////////////////////// 277 pMethod = pobj_c->GetMethodInfo( psi ); 278 if( !pMethod ){ 277 pMethod = NULL; 278 if( ! bStatic ) pMethod = pobj_c->GetMethodInfo( psi ); 279 if( ! pMethod ){ 279 280 //動的メソッドが取得できなかったときは静的メソッドを当たる 280 281 pMethod = pobj_c->GetStaticMethodInfo( psi ); -
BasicCompiler64/Compile_ProcOp.cpp
r19 r27 504 504 pobj_CompilingClass->NotifyStartConstructorCompile(); 505 505 506 // スーパークラスかどうかの識別507 //(継承元がインターフェイスの場合も スーパークラスと見なす)506 //基底クラスかどうかの識別 507 //(継承元がインターフェイスの場合も基底クラスと見なす) 508 508 BOOL bThisIsSuperClass; 509 509 if(pobj_CompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1; … … 516 516 if(!bThisIsSuperClass){ 517 517 /* サブクラスコンストラクタをコンパイルしているときは、 518 スーパークラスのコンストラクタを呼び出す */518 基底クラスのコンストラクタを呼び出す */ 519 519 520 520 i3=cp+1; … … 529 529 if(lstrcmp(temporary, 530 530 pobj_CompilingClass->pobj_InheritsClass->name)==0){ 531 // スーパークラスのコンストラクタを呼び出す531 //基底クラスのコンストラクタを呼び出す 532 532 cp=i3; 533 533 for(i4=0;;cp++,i4++){ … … 552 552 } 553 553 else{ 554 // スーパークラスのコンストラクタを暗黙的に呼び出す554 //基底クラスのコンストラクタを暗黙的に呼び出す 555 555 i3=pobj_CompilingClass->pobj_InheritsClass->ConstructorMemberSubIndex; 556 556 Opcode_CallProc("", … … 656 656 if(pobj_CompilingClass->pobj_InheritsClass){ 657 657 /* サブクラスのデストラクタをコンパイルしているときは、 658 スーパークラスのデストラクタを呼び出す */658 基底クラスのデストラクタを呼び出す */ 659 659 660 660 i3=pobj_CompilingClass->pobj_InheritsClass->DestructorMemberSubIndex; -
BasicCompiler64/Compile_Set_Var.cpp
r3 r27 77 77 78 78 79 79 //TODO: 継承・派生関係にある場合は許容する 80 80 if(CalcType==DEF_OBJECT&&lpVarIndex==lpCalcIndex){ 81 81 //双方のオブジェクト型が完全に一致したとき -
BasicCompiler64/Compile_Var.cpp
r20 r27 520 520 } 521 521 522 /////////////////////523 // グローバル変数524 /////////////////////525 526 for(i=MaxGlobalVarNum-1;i>=0;i--){ //レキシカルスコープを考慮してバックサーチ527 if(GlobalVar[i].bLiving){528 if(lstrcmp(VarName,GlobalVar[i].name)==0) break;529 }530 }531 if(i>=0){532 goto GlobalOk;533 }534 535 522 536 523 ////////////////////////// … … 540 527 if(member[0]){ 541 528 lstrcpy(temporary,member); 542 GetVarFormatString(temporary,array,lpPtrOffset,member,&i); 529 530 char tempMember[VN_SIZE]; 531 char tempArray[VN_SIZE]; 532 GetVarFormatString(temporary,tempArray,lpPtrOffset,tempMember,&i); 543 533 544 534 char temp2[VN_SIZE]; … … 549 539 550 540 if(i!=MaxGlobalVarNum){ 541 lstrcpy(member,tempMember); 542 lstrcpy(array,tempArray); 551 543 goto GlobalOk; 552 544 } … … 564 556 goto GlobalOk; 565 557 } 558 } 559 560 561 ///////////////////// 562 // グローバル変数 563 ///////////////////// 564 565 for(i=MaxGlobalVarNum-1;i>=0;i--){ //レキシカルスコープを考慮してバックサーチ 566 if(GlobalVar[i].bLiving){ 567 if(lstrcmp(VarName,GlobalVar[i].name)==0) break; 568 } 569 } 570 if(i>=0){ 571 goto GlobalOk; 566 572 } 567 573
Note:
See TracChangeset
for help on using the changeset viewer.