Ignore:
Timestamp:
Jul 12, 2007, 2:58:26 AM (17 years ago)
Author:
dai_9181
Message:

コード全体のリファクタリングを実施

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/hash.cpp

    r193 r206  
     1#include "stdafx.h"
     2
    13#include <jenga/include/smoothie/Smoothie.h>
    24
     
    2123}
    2224
    23 CONSTINFO *GetConstHash(const char *name){
    24     //ハッシュ値を取得
    25     int key;
    26     key=hash_default(name);
    27 
    28     //格納位置を取得
    29     extern CONSTINFO **ppConstHash;
    30     CONSTINFO *pci;
    31     pci=ppConstHash[key];
    32     while(pci){
    33         if(lstrcmp(pci->name,name)==0) break;
    34 
    35         pci=pci->pNextData;
    36     }
    37 
    38     return pci;
    39 }
    40 
    4125DllProc *GetDeclareHash(char *fullName){
    4226    char ObjName[VN_SIZE];      //オブジェクト変数
    4327    char NestMember[VN_SIZE];   //入れ子メンバ
    44     bool isObjectMember = CClass::SplitName( fullName, ObjName, NestMember );
     28    bool isObjectMember = SplitMemberName( fullName, ObjName, NestMember );
    4529
    4630    //ハッシュ値を取得
     
    6448}
    6549
    66 void GetOverloadSubHash( const char *lpszName, std::vector<UserProc *> &subs ){
     50void GetOverloadSubHash( const char *lpszName, std::vector<const UserProc *> &subs ){
    6751    char name[VN_SIZE];
    6852
     
    7559    char ObjName[VN_SIZE];      //オブジェクト変数
    7660    char NestMember[VN_SIZE];   //入れ子メンバ
    77     bool isObjectMember = CClass::SplitName( name, ObjName, NestMember );
     61    bool isObjectMember = SplitMemberName( name, ObjName, NestMember );
    7862
    7963    if(isObjectMember){
     
    8468        if(lstrcmpi(ObjName,"Super")==0){
    8569            //クラスメンバ関数内から基底クラスの呼び出し
    86             pobj_c=Smoothie::Temp::pCompilingClass;
     70            pobj_c=compiler.pCompilingClass;
    8771        }
    8872        else{
     
    11498
    11599
    116     if(Smoothie::Temp::pCompilingClass){
     100    if(compiler.pCompilingClass){
    117101        //自身のオブジェクトのメンバ関数を検索
    118102
    119103        // 静的メソッド
    120         Smoothie::Temp::pCompilingClass->GetStaticMethods().Enum( name, subs );
     104        compiler.pCompilingClass->GetStaticMethods().Enum( name, subs );
    121105
    122106        // 動的メソッド
    123         Smoothie::Temp::pCompilingClass->GetMethods().Enum( name, subs );
     107        compiler.pCompilingClass->GetMethods().Enum( name, subs );
    124108    }
    125109
    126110
    127     ///////////////////////////
    128111    // グローバル関数を検索
    129     ///////////////////////////
    130 
    131     //ハッシュ値を取得
    132     int key;
    133     key=hash_default(NestMember);
    134 
    135     //格納位置を取得
    136     extern GlobalProc **ppSubHash;
    137     GlobalProc *pUserProc;
    138     pUserProc=ppSubHash[key];
    139     while(pUserProc){
    140         if(!pUserProc->GetParentClassPtr()){
    141             if( pUserProc->IsEqualSymbol( name ) ){
    142                 subs.push_back( pUserProc );
    143             }
    144         }
    145 
    146         pUserProc=pUserProc->pNextData;
    147     }
     112    compiler.GetMeta().GetUserProcs().EnumGlobalProcs( NestMember, name, subs );
    148113}
    149114
    150115//オーバーロードされていない関数を取得(昔のコンパイラソースコードとの互換性保持)
    151 UserProc *GetSubHash(const char *lpszName,BOOL bError){
    152     std::vector<UserProc *> subs;
     116const UserProc *GetSubHash(const char *lpszName,BOOL bError){
     117    std::vector<const UserProc *> subs;
    153118    GetOverloadSubHash(lpszName,subs);
    154119
     
    166131    }
    167132
    168     UserProc *pUserProc;
    169     pUserProc = subs[0];
     133    const UserProc *pUserProc = subs[0];
    170134
    171135    return pUserProc;
    172136}
    173 UserProc *GetMethodHash(const char *ObjectName,const char *MethodName,const char *Parameter,BOOL bError){
     137const UserProc *GetMethodHash(const char *ObjectName,const char *MethodName,const char *Parameter,BOOL bError){
    174138    char temporary[VN_SIZE];
    175139    sprintf(temporary,"%s.%s",ObjectName,MethodName);
    176140
    177     std::vector<UserProc *> subs;
    178     UserProc *pUserProc;
     141    std::vector<const UserProc *> subs;
    179142    GetOverloadSubHash(temporary,subs);
    180143
     
    185148
    186149    //オーバーロードを解決
    187     pUserProc=OverloadSolutionWithStrParam(temporary,subs,Parameter,ObjectName);
     150    const UserProc *pUserProc = OverloadSolutionWithStrParam(temporary,subs,Parameter,ObjectName);
    188151
    189152    return pUserProc;
    190153}
    191154
    192 UserProc *GetClassMethod( const char *className, const char *methodName ){
     155const UserProc *GetClassMethod( const char *className, const char *methodName ){
    193156    const CClass *pClass = compiler.GetMeta().GetClasses().Find( className );
    194157    if( pClass ){
    195         vector<UserProc *> userProcs;
     158        vector<const UserProc *> userProcs;
    196159        pClass->GetMethods().Enum( methodName, userProcs );
    197160        if( userProcs.size() == 1 ){
Note: See TracChangeset for help on using the changeset viewer.