Changeset 75 in dev for BasicCompiler_Common/hash.cpp
- Timestamp:
- Mar 20, 2007, 4:36:16 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/hash.cpp
r73 r75 7 7 #endif 8 8 9 int hash_default(c har *name){9 int hash_default(const char *name){ 10 10 int key; 11 11 … … 35 35 } 36 36 37 D ECLAREINFO*GetDeclareHash(char *name){37 DllProc *GetDeclareHash(char *name){ 38 38 //ハッシュ値を取得 39 39 int key; … … 41 41 42 42 //格納位置を取得 43 extern DECLAREINFO **ppDeclareHash; 44 DECLAREINFO *pdi; 45 pdi=ppDeclareHash[key]; 46 while(pdi){ 47 if(lstrcmp(pdi->name,name)==0) break; 43 extern DllProc **ppDeclareHash; 44 DllProc *pDllProc; 45 pDllProc=ppDeclareHash[key]; 46 while(pDllProc){ 47 if( pDllProc->GetName() == name ){ 48 break; 49 } 48 50 49 p di=pdi->pNextData;51 pDllProc=pDllProc->pNextData; 50 52 } 51 53 52 return p di;54 return pDllProc; 53 55 } 54 56 55 void GetOverloadSubHash( const char *lpszName, std::vector< SubInfo*> &subs ){57 void GetOverloadSubHash( const char *lpszName, std::vector<UserProc *> &subs ){ 56 58 char name[VN_SIZE]; 57 59 … … 72 74 73 75 bool isStatic = false; 74 CClass *pobj_c;76 const CClass *pobj_c = NULL; 75 77 if(lstrcmpi(ObjName,"Super")==0){ 76 78 //クラスメンバ関数内から基底クラスの呼び出し … … 79 81 else{ 80 82 //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し 81 int type = GetVarType(ObjName,(LONG_PTR *)&pobj_c,0); 82 if(!(NATURAL_TYPE(type)==DEF_OBJECT)){ 83 Type type; 84 GetVarType(ObjName,type,0); 85 pobj_c = &type.GetClass(); 86 if((NATURAL_TYPE(type.GetBasicType())!=DEF_OBJECT)){ 83 87 pobj_c=pobj_DBClass->check(ObjName); 84 88 if( pobj_c ){ … … 123 127 124 128 //格納位置を取得 125 extern SubInfo**ppSubHash;126 SubInfo *psi;127 p si=ppSubHash[key];128 while(p si){129 if(!p si->pobj_ParentClass){130 if( lstrcmp(psi->name,name)==0){131 subs.push_back( p si);129 extern UserProc **ppSubHash; 130 UserProc *pUserProc; 131 pUserProc=ppSubHash[key]; 132 while(pUserProc){ 133 if(!pUserProc->GetParentClassPtr()){ 134 if( pUserProc->GetName() == name ){ 135 subs.push_back( pUserProc ); 132 136 } 133 137 } 134 138 135 p si=psi->pNextData;139 pUserProc=pUserProc->pNextData; 136 140 } 137 141 … … 140 144 141 145 //オーバーロードされていない関数を取得(昔のコンパイラソースコードとの互換性保持) 142 SubInfo*GetSubHash(const char *lpszName,BOOL bError){143 std::vector< SubInfo*> subs;146 UserProc *GetSubHash(const char *lpszName,BOOL bError){ 147 std::vector<UserProc *> subs; 144 148 GetOverloadSubHash(lpszName,subs); 145 149 146 150 //関数が存在しないとき 147 151 if(subs.size() == 0){ 152 if(bError){ 153 SetError(3,lpszName,cp); 154 } 148 155 return 0; 149 156 } … … 154 161 } 155 162 156 SubInfo *psi;157 p si= subs[0];163 UserProc *pUserProc; 164 pUserProc = subs[0]; 158 165 159 return p si;166 return pUserProc; 160 167 } 161 SubInfo *GetMethodHash(char *ObjectName,char *MethodName,char *Parameter,BOOL bError){168 UserProc *GetMethodHash(const char *ObjectName,const char *MethodName,const char *Parameter,BOOL bError){ 162 169 char temporary[VN_SIZE]; 163 170 sprintf(temporary,"%s.%s",ObjectName,MethodName); 164 171 165 std::vector< SubInfo*> subs;166 SubInfo *psi;172 std::vector<UserProc *> subs; 173 UserProc *pUserProc; 167 174 GetOverloadSubHash(temporary,subs); 168 175 … … 173 180 174 181 //オーバーロードを解決 175 p si=OverloadSolutionWithStrParam(temporary,subs,Parameter,ObjectName,NULL);182 pUserProc=OverloadSolutionWithStrParam(temporary,subs,Parameter,ObjectName); 176 183 177 return p si;184 return pUserProc; 178 185 }
Note:
See TracChangeset
for help on using the changeset viewer.