Changeset 50 in dev for BasicCompiler_Common/Overload.cpp


Ignore:
Timestamp:
Feb 10, 2007, 5:44:58 PM (17 years ago)
Author:
dai_9181
Message:

オーバーロード解決用の関数保持リストを "SUBINFO " ではなく、"vector<SUBINFO *>" に変更した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/Overload.cpp

    r46 r50  
    77#endif
    88
    9 SUBINFO *OverloadSolutionWithStrParam(char *name,SUBINFO **ppsi,int num,char *Parameter,char *ObjectName,TYPEINFO *pReturnTypeInfo){
    10     // オーバーロードの解決
     9SUBINFO *OverloadSolutionWithStrParam(
     10    const char *name,
     11    std::vector<SUBINFO *> &subs,
     12    const char *Parameter,
     13    const char *ObjectName,
     14    TYPEINFO *pReturnTypeInfo){
    1115
    12     //オーバーロードされていないとき
    13     if(num==1) return ppsi[0];
     16        // オーバーロードの解決
     17
     18        //オーバーロードされていないとき
     19        if( subs.size() == 1 ) return subs[0];
    1420
    1521
    16     ////////////////////////
    17     // パラメータをセット
    18     ////////////////////////
     22        ////////////////////////
     23        // パラメータをセット
     24        ////////////////////////
    1925
    20     CParameter *pobj_parameter=0;
     26        CParameter *pobj_parameter=0;
    2127
    22     char MethodName[VN_SIZE];
    23     if( !SplitMemberName( name, NULL, MethodName ) ) lstrcpy( MethodName, name );
     28        char MethodName[VN_SIZE];
     29        if( !SplitMemberName( name, NULL, MethodName ) ) lstrcpy( MethodName, name );
    2430
    25     //メソッドの場合は静的かどうかを調べる
    26     bool isStatic = false;
    27     CClass *pClass = ppsi[0]->pobj_ParentClass;
    28     if( pClass ){
    29         isStatic = pClass->IsExistStaticMethod( MethodName );
    30     }
     31        //メソッドの場合は静的かどうかを調べる
     32        bool isStatic = false;
     33        CClass *pClass = subs[0]->pobj_ParentClass;
     34        if( pClass ){
     35            isStatic = pClass->IsExistStaticMethod( MethodName );
     36        }
    3137
    32     //パラメータオブジェクトを生成
    33     pobj_parameter=new CParameter(Parameter);
    34     if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo);
     38        //パラメータオブジェクトを生成
     39        pobj_parameter=new CParameter(Parameter);
     40        if(pReturnTypeInfo) pobj_parameter->SetReturnType(pReturnTypeInfo);
    3541
    3642
    37     SUBINFO *psi;
    38     psi=pobj_parameter->OverloadSolution(name,ppsi,num);
     43        SUBINFO *psi;
     44        psi=pobj_parameter->OverloadSolution(name,subs);
    3945
    4046
    41     //パラメータオブジェクトを破棄
    42     delete pobj_parameter;
    43     pobj_parameter=0;
     47        //パラメータオブジェクトを破棄
     48        delete pobj_parameter;
     49        pobj_parameter=0;
    4450
    45     return psi;
     51        return psi;
    4652}
    4753
    48 SUBINFO *OverloadSolution(const char *name,SUBINFO **ppsi,int num,PARAMETER_INFO *ppi,int ParmNum,TYPEINFO *pReturnTypeInfo){
    49     // オーバーロードの解決
     54SUBINFO *OverloadSolution(
     55    const char *name,
     56    std::vector<SUBINFO *> &subs,
     57    const PARAMETER_INFO *ppi,
     58    const int ParmNum,
     59    TYPEINFO *pReturnTypeInfo){
    5060
    51     //オーバーロードされていないとき
    52     if(num==1) return ppsi[0];
     61        // オーバーロードの解決
     62
     63        //オーバーロードされていないとき
     64        if( subs.size() == 1 ) return subs[0];
    5365
    5466
    55     CParameter *pobj_Parameter=new CParameter(ppi,ParmNum);
    56     if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo);
     67        CParameter *pobj_Parameter=new CParameter(ppi,ParmNum);
     68        if(pReturnTypeInfo) pobj_Parameter->SetReturnType(pReturnTypeInfo);
    5769
    58     SUBINFO *psi;
    59     psi=pobj_Parameter->OverloadSolution(name,ppsi,num);
     70        SUBINFO *psi;
     71        psi=pobj_Parameter->OverloadSolution(name,subs);
    6072
    61     delete pobj_Parameter;
     73        delete pobj_Parameter;
    6274
    63     return psi;
     75        return psi;
    6476}
Note: See TracChangeset for help on using the changeset viewer.