Changeset 536 in dev for trunk/ab5.0/abdev/compiler_x86
- Timestamp:
- May 3, 2008, 6:32:50 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev/compiler_x86
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/compiler_x86/Compile_CallProc.cpp
r509 r536 113 113 { 114 114 //クラスメンバ関数内から基底クラスの呼び出し 115 pobj_c=&compiler. pCompilingClass->GetSuperClass();115 pobj_c=&compiler.GetCompilingClass().GetSuperClass(); 116 116 117 117 isFixedClass = true; … … 147 147 148 148 //New演算子によるコンストラクタ呼び出し 149 pobj_c =pUserProc->GetParentClassPtr();149 pobj_c = pUserProc->GetParentClassPtr(); 150 150 } 151 151 else{ 152 152 //クラスメンバ関数内から同一クラスのメンバ関数の呼び出し 153 pobj_c =compiler.pCompilingClass;153 pobj_c = &compiler.GetCompilingClass(); 154 154 } 155 155 } … … 180 180 if(ObjectName[0]){ 181 181 //外部からの呼び出し 182 if(pobj_c==compiler.pCompilingClass){ 182 if( compiler.IsCompilingClass() && pobj_c == &compiler.GetCompilingClass() ) 183 { 183 184 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 184 if( pMethod->IsNoneAccess() ){ 185 if( pMethod->IsNoneAccess() ) 186 { 185 187 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 186 188 return false; 187 189 } 188 190 } 189 else{ 191 else 192 { 190 193 if( pMethod->IsPrivate() 191 || pMethod->IsNoneAccess() ){ 194 || pMethod->IsNoneAccess() ) 195 { 192 196 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 193 197 return false; 194 198 } 195 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){ 199 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ) 200 { 196 201 compiler.errorMessenger.Output(110,pUserProc->GetName(),cp); 197 202 return false; -
trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp
r523 r536 273 273 SetThisPtrToReg(REG_RCX); 274 274 275 pobj_c =compiler.pCompilingClass;275 pobj_c = &compiler.GetCompilingClass(); 276 276 } 277 277 … … 611 611 } 612 612 613 Opcode_CallDelegate( compiler. pCompilingClass->GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );613 Opcode_CallDelegate( compiler.GetCompilingClass().GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i ); 614 614 } 615 615 -
trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp
r533 r536 471 471 } 472 472 473 if( compiler.pCompilingClass){474 if( pUserProc->GetName() == compiler. pCompilingClass->GetName() ){473 if( compiler.IsCompilingClass() ){ 474 if( pUserProc->GetName() == compiler.GetCompilingClass().GetName() ){ 475 475 //////////////////////////////////// 476 476 // コンストラクタをコンパイルするとき … … 478 478 479 479 //コンストラクタのコンパイル開始を通知 480 compiler. pCompilingClass->NotifyStartConstructorCompile();480 compiler.GetCompilingClass().NotifyStartConstructorCompile(); 481 481 482 482 //基底クラスかどうかの識別 483 483 //(継承元がインターフェイスの場合も基底クラスと見なす) 484 484 BOOL bThisIsSuperClass; 485 if( !compiler. pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;486 else if( compiler. pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){485 if( !compiler.GetCompilingClass().HasSuperClass() ) bThisIsSuperClass=1; 486 else if( compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod() == NULL ){ 487 487 //インターフェイスを継承したときはコンストラクタを持たない 488 488 bThisIsSuperClass=1; … … 503 503 temporary[i4]=basbuf[i3]; 504 504 } 505 if( compiler. pCompilingClass->GetSuperClass().GetName() == temporary ){505 if( compiler.GetCompilingClass().GetSuperClass().GetName() == temporary ){ 506 506 //基底クラスのコンストラクタを呼び出す 507 507 cp=i3; … … 520 520 Type dummyType; 521 521 CallProc( PROC_DEFAULT 522 , &compiler. pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc()523 , compiler. pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str()522 , &compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc() 523 , compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc().GetName().c_str() 524 524 , temporary 525 525 , Type() // baseTypeはなし … … 530 530 //基底クラスのコンストラクタを暗黙的に呼び出す 531 531 Opcode_CallProc("", 532 &compiler. pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc(),532 &compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc(), 533 533 0, 534 534 "" … … 541 541 542 542 //デストラクタのコンパイル開始を通知 543 compiler. pCompilingClass->NotifyStartDestructorCompile();543 compiler.GetCompilingClass().NotifyStartDestructorCompile(); 544 544 } 545 545 } … … 567 567 ////////////////////////////////////////// 568 568 569 if( compiler. pCompilingClass){570 571 if( compiler. pCompilingClass->IsCompilingConstructor() ){569 if( compiler.IsCompilingClass() ){ 570 571 if( compiler.GetCompilingClass().IsCompilingConstructor() ){ 572 572 // コンストラクタをコンパイルしていたとき 573 573 574 574 // コンストラクタのコンパイルが完了したことを通知 575 compiler. pCompilingClass->NotifyFinishConstructorCompile();575 compiler.GetCompilingClass().NotifyFinishConstructorCompile(); 576 576 } 577 577 else if( pUserProc->IsDestructor() ){ … … 581 581 582 582 // デストラクタのコンパイルが完了したことを通知 583 compiler. pCompilingClass->NotifyFinishDestructorCompile();584 585 if( compiler. pCompilingClass->HasSuperClass() ){583 compiler.GetCompilingClass().NotifyFinishDestructorCompile(); 584 585 if( compiler.GetCompilingClass().HasSuperClass() ){ 586 586 /* サブクラスのデストラクタをコンパイルしているときは、 587 587 基底クラスのデストラクタを呼び出す */ 588 588 589 const CMethod *method = compiler. pCompilingClass->GetSuperClass().GetDestructorMethod();589 const CMethod *method = compiler.GetCompilingClass().GetSuperClass().GetDestructorMethod(); 590 590 if( method ){ 591 591 Opcode_CallProc("", -
trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp
r508 r536 194 194 195 195 //アクセシビリティをチェック 196 if( &objClass==compiler.pCompilingClass){196 if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){ 197 197 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 198 198 if(pMember->IsNoneAccess()){ … … 447 447 } 448 448 449 if( compiler.pCompilingClass){449 if( compiler.IsCompilingClass() ){ 450 450 ////////////////////// 451 451 // クラスメンバの参照 … … 460 460 pRelativeVar->dwKind=VAR_DIRECTMEM; 461 461 462 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass);462 resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() ); 463 463 return true; 464 464 } … … 472 472 //クラス内の動的メンバを参照するとき(通常) 473 473 474 if( !compiler. pCompilingClass->HasDynamicMember( VarName ) )474 if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) ) 475 475 { 476 476 goto NonClassMember; … … 483 483 if( isWriteAccess && 484 484 pMethod->IsConst() && 485 compiler. pCompilingClass->IsCompilingConstructor() == false &&486 compiler. pCompilingClass->IsCompilingDestructor() == false485 compiler.GetCompilingClass().IsCompilingConstructor() == false && 486 compiler.GetCompilingClass().IsCompilingDestructor() == false 487 487 ){ 488 488 compiler.errorMessenger.Output(131, NULL, cp ); … … 499 499 isErrorEnabled, 500 500 isWriteAccess, 501 Type( DEF_OBJECT, *compiler.pCompilingClass),501 Type( DEF_OBJECT, compiler.GetCompilingClass() ), 502 502 variable, 503 503 pRelativeVar, … … 559 559 } 560 560 561 if( compiler.pCompilingClass){561 if( compiler.IsCompilingClass() ){ 562 562 //自身のクラスから静的メンバを参照する場合 563 563 char temp2[VN_SIZE]; 564 sprintf(temp2,"%s.%s",compiler. pCompilingClass->GetName().c_str(),VarName);564 sprintf(temp2,"%s.%s",compiler.GetCompilingClass().GetName().c_str(),VarName); 565 565 pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) ); 566 566 if( pVar ){ -
trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp
r525 r536 193 193 194 194 // サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得 195 compiler. pCompilingClass = NULL;195 compiler.SetCompilingClass( NULL ); 196 196 ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures( 197 197 compiler.GetObjectModule().GetCurrentSource(), -
trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp
r523 r536 430 430 431 431 if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){ 432 if( compiler.pCompilingClass == NULL)432 if( !compiler.IsCompilingClass() ) 433 433 { 434 434 compiler.errorMessenger.Output(142,NULL,cp); … … 437 437 438 438 //Thisオブジェクト 439 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass);439 resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() ); 440 440 441 441 SetThisPtrToReg( useReg );
Note:
See TracChangeset
for help on using the changeset viewer.