Changeset 51 in dev for BasicCompiler_Common/hash.cpp
- Timestamp:
- Feb 10, 2007, 8:30:19 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
BasicCompiler_Common/hash.cpp
r50 r51 57 57 extern int SubInfoNum; 58 58 extern int cp; 59 int i;60 59 61 60 char name[VN_SIZE]; … … 97 96 98 97 if( isStatic ){ 99 // 静的メソッドから 取得98 // 静的メソッドから列挙 100 99 pobj_c->EnumStaticMethod( NestMember, subs ); 101 100 } 102 101 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 ); 111 104 } 112 105 } … … 117 110 //自身のオブジェクトのメンバ関数を検索 118 111 112 // 静的メソッド 113 pobj_CompilingClass->EnumStaticMethod( name, subs ); 119 114 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 ); 151 117 } 152 118
Note:
See TracChangeset
for help on using the changeset viewer.