Changeset 536 in dev for trunk/ab5.0/abdev/compiler_x86


Ignore:
Timestamp:
May 3, 2008, 6:32:50 PM (17 years ago)
Author:
dai_9181
Message:

Compiler::pCompilingClassメンバをprivateにし、setter/getterにあたるメソッドを用意した。

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  
    113113            {
    114114                //クラスメンバ関数内から基底クラスの呼び出し
    115                 pobj_c=&compiler.pCompilingClass->GetSuperClass();
     115                pobj_c=&compiler.GetCompilingClass().GetSuperClass();
    116116
    117117                isFixedClass = true;
     
    147147
    148148                //New演算子によるコンストラクタ呼び出し
    149                 pobj_c=pUserProc->GetParentClassPtr();
     149                pobj_c = pUserProc->GetParentClassPtr();
    150150            }
    151151            else{
    152152                //クラスメンバ関数内から同一クラスのメンバ関数の呼び出し
    153                 pobj_c=compiler.pCompilingClass;
     153                pobj_c = &compiler.GetCompilingClass();
    154154            }
    155155        }
     
    180180        if(ObjectName[0]){
    181181            //外部からの呼び出し
    182             if(pobj_c==compiler.pCompilingClass){
     182            if( compiler.IsCompilingClass() && pobj_c == &compiler.GetCompilingClass() )
     183            {
    183184                //同一クラスオブジェクトの場合はプライベートアクセスを容認する
    184                 if( pMethod->IsNoneAccess() ){
     185                if( pMethod->IsNoneAccess() )
     186                {
    185187                    compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
    186188                    return false;
    187189                }
    188190            }
    189             else{
     191            else
     192            {
    190193                if( pMethod->IsPrivate()
    191                     || pMethod->IsNoneAccess() ){
     194                    || pMethod->IsNoneAccess() )
     195                {
    192196                    compiler.errorMessenger.Output(109,pUserProc->GetName(),cp);
    193197                    return false;
    194198                }
    195                 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){
     199                if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() )
     200                {
    196201                    compiler.errorMessenger.Output(110,pUserProc->GetName(),cp);
    197202                    return false;
  • trunk/ab5.0/abdev/compiler_x86/Compile_Func.cpp

    r523 r536  
    273273            SetThisPtrToReg(REG_RCX);
    274274
    275             pobj_c=compiler.pCompilingClass;
     275            pobj_c = &compiler.GetCompilingClass();
    276276        }
    277277
     
    611611        }
    612612
    613         Opcode_CallDelegate( compiler.pCompilingClass->GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
     613        Opcode_CallDelegate( compiler.GetCompilingClass().GetDelegate(), methodPtrParamStr, objPtrValueStr, paramsStr + i );
    614614    }
    615615
  • trunk/ab5.0/abdev/compiler_x86/Compile_ProcOp.cpp

    r533 r536  
    471471    }
    472472
    473     if(compiler.pCompilingClass){
    474         if( pUserProc->GetName() == compiler.pCompilingClass->GetName() ){
     473    if( compiler.IsCompilingClass() ){
     474        if( pUserProc->GetName() == compiler.GetCompilingClass().GetName() ){
    475475            ////////////////////////////////////
    476476            // コンストラクタをコンパイルするとき
     
    478478
    479479            //コンストラクタのコンパイル開始を通知
    480             compiler.pCompilingClass->NotifyStartConstructorCompile();
     480            compiler.GetCompilingClass().NotifyStartConstructorCompile();
    481481
    482482            //基底クラスかどうかの識別
    483483            //(継承元がインターフェイスの場合も基底クラスと見なす)
    484484            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 ){
    487487                //インターフェイスを継承したときはコンストラクタを持たない
    488488                bThisIsSuperClass=1;
     
    503503                    temporary[i4]=basbuf[i3];
    504504                }
    505                 if( compiler.pCompilingClass->GetSuperClass().GetName() == temporary ){
     505                if( compiler.GetCompilingClass().GetSuperClass().GetName() == temporary ){
    506506                    //基底クラスのコンストラクタを呼び出す
    507507                    cp=i3;
     
    520520                    Type dummyType;
    521521                    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()
    524524                        , temporary
    525525                        , Type()        // baseTypeはなし
     
    530530                    //基底クラスのコンストラクタを暗黙的に呼び出す
    531531                    Opcode_CallProc("",
    532                         &compiler.pCompilingClass->GetSuperClass().GetConstructorMethod()->GetUserProc(),
     532                        &compiler.GetCompilingClass().GetSuperClass().GetConstructorMethod()->GetUserProc(),
    533533                        0,
    534534                        ""
     
    541541
    542542            //デストラクタのコンパイル開始を通知
    543             compiler.pCompilingClass->NotifyStartDestructorCompile();
     543            compiler.GetCompilingClass().NotifyStartDestructorCompile();
    544544        }
    545545    }
     
    567567    //////////////////////////////////////////
    568568
    569     if( compiler.pCompilingClass ){
    570 
    571         if( compiler.pCompilingClass->IsCompilingConstructor() ){
     569    if( compiler.IsCompilingClass() ){
     570
     571        if( compiler.GetCompilingClass().IsCompilingConstructor() ){
    572572            // コンストラクタをコンパイルしていたとき
    573573
    574574            // コンストラクタのコンパイルが完了したことを通知
    575             compiler.pCompilingClass->NotifyFinishConstructorCompile();
     575            compiler.GetCompilingClass().NotifyFinishConstructorCompile();
    576576        }
    577577        else if( pUserProc->IsDestructor() ){
     
    581581
    582582            // デストラクタのコンパイルが完了したことを通知
    583             compiler.pCompilingClass->NotifyFinishDestructorCompile();
    584 
    585             if( compiler.pCompilingClass->HasSuperClass() ){
     583            compiler.GetCompilingClass().NotifyFinishDestructorCompile();
     584
     585            if( compiler.GetCompilingClass().HasSuperClass() ){
    586586                /* サブクラスのデストラクタをコンパイルしているときは、
    587587                    基底クラスのデストラクタを呼び出す */
    588588
    589                 const CMethod *method = compiler.pCompilingClass->GetSuperClass().GetDestructorMethod();
     589                const CMethod *method = compiler.GetCompilingClass().GetSuperClass().GetDestructorMethod();
    590590                if( method ){
    591591                    Opcode_CallProc("",
  • trunk/ab5.0/abdev/compiler_x86/Compile_Var.cpp

    r508 r536  
    194194
    195195    //アクセシビリティをチェック
    196     if(&objClass==compiler.pCompilingClass){
     196    if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){
    197197        //同一クラスオブジェクトの場合はプライベートアクセスを容認する
    198198        if(pMember->IsNoneAccess()){
     
    447447    }
    448448
    449     if(compiler.pCompilingClass){
     449    if( compiler.IsCompilingClass() ){
    450450        //////////////////////
    451451        // クラスメンバの参照
     
    460460            pRelativeVar->dwKind=VAR_DIRECTMEM;
    461461
    462             resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
     462            resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
    463463            return true;
    464464        }
     
    472472            //クラス内の動的メンバを参照するとき(通常)
    473473
    474             if( !compiler.pCompilingClass->HasDynamicMember( VarName ) )
     474            if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) )
    475475            {
    476476                goto NonClassMember;
     
    483483        if( isWriteAccess &&
    484484            pMethod->IsConst() &&
    485             compiler.pCompilingClass->IsCompilingConstructor() == false &&
    486             compiler.pCompilingClass->IsCompilingDestructor() == false
     485            compiler.GetCompilingClass().IsCompilingConstructor() == false &&
     486            compiler.GetCompilingClass().IsCompilingDestructor() == false
    487487            ){
    488488                compiler.errorMessenger.Output(131, NULL, cp );
     
    499499            isErrorEnabled,
    500500            isWriteAccess,
    501             Type( DEF_OBJECT, *compiler.pCompilingClass ),
     501            Type( DEF_OBJECT, compiler.GetCompilingClass() ),
    502502            variable,
    503503            pRelativeVar,
     
    559559        }
    560560
    561         if(compiler.pCompilingClass){
     561        if( compiler.IsCompilingClass() ){
    562562            //自身のクラスから静的メンバを参照する場合
    563563            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);
    565565            pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) );
    566566            if( pVar ){
  • trunk/ab5.0/abdev/compiler_x86/MakePeHdr.cpp

    r525 r536  
    193193
    194194    // サブルーチン(ユーザー定義、DLL関数)の識別子、アドレスを取得
    195     compiler.pCompilingClass = NULL;
     195    compiler.SetCompilingClass( NULL );
    196196    ActiveBasic::Compiler::LexicalAnalyzer::CollectProcedures(
    197197        compiler.GetObjectModule().GetCurrentSource(),
  • trunk/ab5.0/abdev/compiler_x86/NumOpe.cpp

    r523 r536  
    430430
    431431    if(lstrcmpi(termFull,"This")==0 && isProcedureCallOnly == false ){
    432         if( compiler.pCompilingClass == NULL )
     432        if( !compiler.IsCompilingClass() )
    433433        {
    434434            compiler.errorMessenger.Output(142,NULL,cp);
     
    437437
    438438        //Thisオブジェクト
    439         resultType.SetType( DEF_OBJECT, compiler.pCompilingClass );
     439        resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() );
    440440
    441441        SetThisPtrToReg( useReg );
Note: See TracChangeset for help on using the changeset viewer.