- Timestamp:
- Aug 26, 2007, 2:54:38 AM (17 years ago)
- Location:
- trunk/abdev
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/Compile_CallProc.cpp
r301 r304 105 105 const CMethod *pMethod = NULL; 106 106 Type leftType; 107 bool isFixedClass = false; 107 108 if( pUserProc->GetParentClassPtr() ){ 108 109 //クラスのメンバ関数を呼び出す場合はアクセスチェックを行う 109 if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0){ 110 if(lstrcmpi(ObjectName,"Super")==0){ 110 if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0) 111 { 112 if(lstrcmpi(ObjectName,"Super")==0) 113 { 111 114 //クラスメンバ関数内から基底クラスの呼び出し 112 pobj_c=compiler.pCompilingClass; 113 } 114 else{ 115 pobj_c=&compiler.pCompilingClass->GetSuperClass(); 116 117 isFixedClass = true; 118 } 119 else 120 { 115 121 //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し 116 122 Type varType; … … 313 319 } 314 320 315 if( pUserProc->IsVirtual() ){321 if( pUserProc->IsVirtual() && !isFixedClass ){ 316 322 //仮想関数(オブジェクトメソッド)呼び出し 317 323 //pObj->func_table->func1 -
trunk/abdev/BasicCompiler64/Compile_CallProc.cpp
r266 r304 113 113 const CClass *pobj_c = NULL; 114 114 const CMethod *pMethod = NULL; 115 Type leftType; 116 bool isFixedClass = false; 115 117 if( pUserProc->GetParentClassPtr() ){ 116 118 //クラスのメンバ関数を呼び出す場合はアクセスチェックを行う 117 if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0){ 118 if(lstrcmpi(ObjectName,"Super")==0){ 119 if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0) 120 { 121 if(lstrcmpi(ObjectName,"Super")==0) 122 { 119 123 //クラスメンバ関数内から基底クラスの呼び出し 120 pobj_c=compiler.pCompilingClass; 121 } 122 else{ 124 pobj_c=&compiler.pCompilingClass->GetSuperClass(); 125 126 isFixedClass = true; 127 } 128 else 129 { 123 130 //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し 124 131 Type varType; … … 336 343 } 337 344 338 if( pUserProc->IsVirtual() ){345 if( pUserProc->IsVirtual() && !isFixedClass ){ 339 346 //仮想関数(オブジェクトメソッド)呼び出し 340 347 //pObj->func_table->func1 -
trunk/abdev/BasicCompiler_Common/MakeExe.cpp
r299 r304 119 119 120 120 ChangeCommandToCode(basbuf); 121 compiler.GetObjectModule().GetSources()[0]._ResetLength(); 121 122 122 123 //重複エラー情報管理のメモリを解放 -
trunk/abdev/BasicCompiler_Common/hash.cpp
r265 r304 63 63 bool isStatic = false; 64 64 const CClass *pobj_c = NULL; 65 if(lstrcmpi(ObjName,"Super")==0){ 65 if(lstrcmpi(ObjName,"Super")==0) 66 { 66 67 //クラスメンバ関数内から基底クラスの呼び出し 67 pobj_c= compiler.pCompilingClass;68 pobj_c=&compiler.pCompilingClass->GetSuperClass(); 68 69 } 69 else{ 70 else 71 { 70 72 //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し 71 73 Type type; … … 90 92 pobj_c->GetMethods().Enum( NestMember, subs ); 91 93 } 94 92 95 return; 93 96 } -
trunk/abdev/BasicCompiler_Common/include/Source.h
r282 r304 222 222 return length-2; 223 223 } 224 void _ResetLength() 225 { 226 length = lstrlen( buffer ); 227 } 224 228 225 229 const IncludedFilesRelation &GetIncludedFilesRelation() const -
trunk/abdev/BasicCompiler_Common/include/option.h
r302 r304 14 14 // バージョン付加文字列 15 15 #ifdef _AMD64_ 16 #define VER_INFO "(x64) (rev. 299)"16 #define VER_INFO "(x64) (rev.306)" 17 17 #else 18 #define VER_INFO "(rev. 299)"18 #define VER_INFO "(rev.306)" 19 19 #endif 20 20
Note:
See TracChangeset
for help on using the changeset viewer.