Changeset 51 in dev for BasicCompiler_Common/hash.cpp


Ignore:
Timestamp:
Feb 10, 2007, 8:30:19 PM (17 years ago)
Author:
dai_9181
Message:

ppobj_Member及びppobj_StaticMemberを廃止し、vectorに統一した(methods及びstaticMethods)。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/hash.cpp

    r50 r51  
    5757    extern int SubInfoNum;
    5858    extern int cp;
    59     int i;
    6059
    6160    char name[VN_SIZE];
     
    9796
    9897        if( isStatic ){
    99             // 静的メソッドから取得
     98            // 静的メソッドから列挙
    10099            pobj_c->EnumStaticMethod( NestMember, subs );
    101100        }
    102101        else{
    103             //動的メソッドから取得
    104 
    105             //※オーバーライドされた関数を先にサーチする必要があるため、バックサーチを行う
    106             for(i=pobj_c->iMethodNum-1;i>=0;i--){
    107                 if(lstrcmp(NestMember,pobj_c->ppobj_Method[i]->psi->name)==0){
    108                     subs.push_back( pobj_c->ppobj_Method[i]->psi );
    109                 }
    110             }
     102            //動的メソッドから列挙
     103            pobj_c->EnumMethod( NestMember, subs );
    111104        }
    112105    }
     
    117110            //自身のオブジェクトのメンバ関数を検索
    118111
     112            // 静的メソッド
     113            pobj_CompilingClass->EnumStaticMethod( name, subs );
    119114
    120             //////////////////////////////////////////////
    121             // 静的メソッド
    122             //////////////////////////////////////////////
    123 
    124             CClass *pobj_c = pobj_CompilingClass;
    125 
    126             pobj_c->EnumStaticMethod( NestMember, subs );
    127 
    128 
    129             ///////////////////////
    130             // 動的メソッド(一般)
    131             ///////////////////////
    132             for(i=0;i<pobj_CompilingClass->iMethodNum;i++){
    133                 //オーバーライドされた関数を飛び越す
    134                 if(pobj_CompilingClass->ppobj_Method[i]->pobj_InheritsClass==0) break;
    135             }
    136             for(;i<pobj_CompilingClass->iMethodNum;i++){
    137                 if(lstrcmp(name,pobj_CompilingClass->ppobj_Method[i]->psi->name)==0){
    138                     subs.push_back( pobj_CompilingClass->ppobj_Method[i]->psi );
    139                 }
    140             }
    141 
    142             //オーバーライドされたメンバ関数
    143             for(i=0;i<pobj_CompilingClass->iMethodNum;i++){
    144                 //オーバーライドされた関数を飛び越す
    145                 if(pobj_CompilingClass->ppobj_Method[i]->pobj_InheritsClass){
    146                     if(lstrcmp(name,pobj_CompilingClass->ppobj_Method[i]->psi->name)==0){
    147                         subs.push_back( pobj_CompilingClass->ppobj_Method[i]->psi );
    148                     }
    149                 }
    150             }
     115            // 動的メソッド
     116            pobj_CompilingClass->EnumMethod( name, subs );
    151117        }
    152118
Note: See TracChangeset for help on using the changeset viewer.