Changeset 204 in dev


Ignore:
Timestamp:
Jul 3, 2007, 3:49:56 AM (17 years ago)
Author:
dai_9181
Message:

pobj_InheritsClassメンバをprivateにした

Location:
trunk/abdev
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_ProcOp.cpp

    r199 r204  
    472472            //(継承元がインターフェイスの場合も基底クラスと見なす)
    473473            BOOL bThisIsSuperClass;
    474             if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
    475             else if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
     474            if( !Smoothie::Temp::pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
     475            else if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
    476476                //インターフェイスを継承したときはコンストラクタを持たない
    477477                bThisIsSuperClass=1;
     
    492492                    temporary[i4]=basbuf[i3];
    493493                }
    494                 if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetName() == temporary ){
     494                if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetName() == temporary ){
    495495                    //基底クラスのコンストラクタを呼び出す
    496496                    cp=i3;
     
    509509                    Type dummyType;
    510510                    CallProc( PROC_DEFAULT
    511                         , Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
    512                         , Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
     511                        , Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc
     512                        , Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc->GetName().c_str()
    513513                        , temporary
    514514                        , dummyType );
     
    517517                    //基底クラスのコンストラクタを暗黙的に呼び出す
    518518                    Opcode_CallProc("",
    519                         Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
     519                        Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc,
    520520                        0,
    521521                        "",
     
    590590            Smoothie::Temp::pCompilingClass->NotifyFinishDestructorCompile();
    591591
    592             if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass){
     592            if( Smoothie::Temp::pCompilingClass->HasSuperClass() ){
    593593                /* サブクラスのデストラクタをコンパイルしているときは、
    594594                    基底クラスのデストラクタを呼び出す */
    595595
    596                 const CMethod *method = Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetDestructorMethod();
     596                const CMethod *method = Smoothie::Temp::pCompilingClass->GetSuperClass().GetDestructorMethod();
    597597                if( method ){
    598598                    Opcode_CallProc("",
  • trunk/abdev/BasicCompiler64/Compile_ProcOp.cpp

    r202 r204  
    523523            //(継承元がインターフェイスの場合も基底クラスと見なす)
    524524            BOOL bThisIsSuperClass;
    525             if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass==0) bThisIsSuperClass=1;
    526             else if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod() == NULL ){
     525            if( !Smoothie::Temp::pCompilingClass->HasSuperClass() ) bThisIsSuperClass=1;
     526            else if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod() == NULL ){
    527527                //インターフェイスを継承したときはコンストラクタを持たない
    528528                bThisIsSuperClass=1;
     
    543543                    temporary[i4]=basbuf[i3];
    544544                }
    545                 if( Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetName() == temporary ){
     545                if( Smoothie::Temp::pCompilingClass->GetSuperClass().GetName() == temporary ){
    546546                    //基底クラスのコンストラクタを呼び出す
    547547                    cp=i3;
     
    560560                    Type dummyType;
    561561                    CallProc( PROC_DEFAULT
    562                         , Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc
    563                         , Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc->GetName().c_str()
     562                        , Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc
     563                        , Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc->GetName().c_str()
    564564                        , temporary
    565565                        , dummyType );
     
    568568                    //基底クラスのコンストラクタを暗黙的に呼び出す
    569569                    Opcode_CallProc("",
    570                         Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetConstructorMethod()->pUserProc,
     570                        Smoothie::Temp::pCompilingClass->GetSuperClass().GetConstructorMethod()->pUserProc,
    571571                        0,
    572572                        "",
     
    640640            Smoothie::Temp::pCompilingClass->NotifyFinishDestructorCompile();
    641641
    642             if(Smoothie::Temp::pCompilingClass->pobj_InheritsClass){
     642            if( Smoothie::Temp::pCompilingClass->HasSuperClass() ){
    643643                /* サブクラスのデストラクタをコンパイルしているときは、
    644644                    基底クラスのデストラクタを呼び出す */
    645645
    646                 const CMethod *method = Smoothie::Temp::pCompilingClass->pobj_InheritsClass->GetDestructorMethod();
     646                const CMethod *method = Smoothie::Temp::pCompilingClass->GetSuperClass().GetDestructorMethod();
    647647                if( method ){
    648648                    Opcode_CallProc("",
  • trunk/abdev/BasicCompiler_Common/error.cpp

    r182 r204  
    480480                pobj_tempClass=(CClass *)lpCalcIndex;
    481481                while(pobj_tempClass&&(!IS_LITERAL((LONG_PTR)pobj_tempClass))){
    482                     pobj_tempClass=pobj_tempClass->pobj_InheritsClass;
     482                    pobj_tempClass=&pobj_tempClass->GetSuperClass();
    483483
    484484                    if(lpVarIndex==(LONG_PTR)pobj_tempClass){
  • trunk/abdev/BasicCompiler_Common/src/ClassImpl.cpp

    r199 r204  
    241241
    242242    //継承先のクラスをメンバとして保持する
    243     pobj_InheritsClass = &inheritsClass;
     243    SetSuperClass( &inheritsClass );
    244244
    245245    return true;
     
    807807            else{
    808808                //継承無し
    809                 pobj_c->pobj_InheritsClass=0;
    810 
    811                 //仮想関数の数を初期化
    812                 pobj_c->SetVtblNum( 0 );
     809                if( &pobj_c->GetSuperClass() || pobj_c->GetVtblNum() )
     810                {
     811                    // TODO: ここに来ないことが実証できたらこの分岐は消す
     812                    throw;
     813                }
    813814            }
    814815Interface_InheritsError:
     
    939940
    940941            if( pobj_c->GetName() == "Object" || dwClassType == ESC_TYPE ){
    941                 // 継承無し
    942                 pobj_c->pobj_InheritsClass = NULL;
    943 
    944                 // 仮想関数の数を初期化
    945                 pobj_c->SetVtblNum( 0 );
     942                if( &pobj_c->GetSuperClass() || pobj_c->GetVtblNum() )
     943                {
     944                    // TODO: ここに来ないことが実証できたらこの分岐は消す
     945                    throw;
     946                }
    946947            }
    947948            else{
     
    12431244        }
    12441245
    1245         if( objClass.pobj_InheritsClass ){
     1246        if( objClass.HasSuperClass() ){
    12461247            sprintf( temporary
    12471248                , "tempType=Search(\"%s\",\"%s\")"
     
    12561257                , "tempType.SetBaseType(Search(\"%s\",\"%s\"))"
    12571258                , ""                                // 名前空間 (TODO: 実装)
    1258                 , objClass.pobj_InheritsClass->GetName().c_str()    // 基底クラス名
     1259                , objClass.GetSuperClass().GetName().c_str()    // 基底クラス名
    12591260                );
    12601261
Note: See TracChangeset for help on using the changeset viewer.