Changeset 536 in dev for trunk/ab5.0/abdev/BasicCompiler_Common
- Timestamp:
- May 3, 2008, 6:32:50 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev/BasicCompiler_Common
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/BasicCompiler_Common/DebugMiddleFile.cpp
r485 r536 162 162 int i2,i3; 163 163 164 compiler. pCompilingClass = NULL;164 compiler.ClearCompilingUserProcAndClass(); 165 165 166 166 i2=0; -
trunk/ab5.0/abdev/BasicCompiler_Common/NumOpe_GetType.cpp
r523 r536 480 480 481 481 482 if(lstrcmpi(termFull,"This")==0){ 483 if( compiler.pCompilingClass == NULL ) 482 if(lstrcmpi(termFull,"This")==0) 483 { 484 if( !compiler.IsCompilingClass() ) 484 485 { 485 486 return false; … … 487 488 488 489 //Thisオブジェクト 489 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass);490 resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() ); 490 491 isLiteral = false; 491 492 return true; -
trunk/ab5.0/abdev/BasicCompiler_Common/VarList.cpp
r508 r536 778 778 779 779 if(pUserProc){ 780 compiler. pCompilingClass = pUserProc->GetParentClassPtr();780 compiler.StartProcedureCompile( pUserProc ); 781 781 UserProc::CompileStartForUserProc( pUserProc ); 782 782 } -
trunk/ab5.0/abdev/BasicCompiler_Common/VariableOpe.cpp
r508 r536 457 457 458 458 //アクセシビリティをチェック 459 if( &objClass == compiler.pCompilingClass){459 if( compiler.IsCompilingClass() && &objClass == &compiler.GetCompilingClass() ){ 460 460 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 461 461 if( pMember->IsNoneAccess() ){ … … 571 571 } 572 572 573 if( compiler.pCompilingClass){573 if( compiler.IsCompilingClass() ){ 574 574 /////////////////////// 575 575 // クラスメンバの参照 … … 578 578 if(lstrcmpi(variable,"This")==0){ 579 579 //Thisオブジェクト 580 resultType.SetType( DEF_OBJECT, compiler.pCompilingClass);580 resultType.SetType( DEF_OBJECT, &compiler.GetCompilingClass() ); 581 581 return true; 582 582 } … … 590 590 //クラス内の動的メンバを参照するとき(通常) 591 591 592 if( !compiler. pCompilingClass->HasDynamicMember( VarName ) )592 if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) ) 593 593 { 594 594 goto NonClassMember; … … 597 597 598 598 return GetMemberType( 599 Type( DEF_OBJECT, *compiler.pCompilingClass),599 Type( DEF_OBJECT, compiler.GetCompilingClass() ), 600 600 variable, 601 601 resultType, … … 653 653 } 654 654 655 if( compiler.pCompilingClass){655 if( compiler.IsCompilingClass() ){ 656 656 //自身のクラスから静的メンバを参照する場合 657 657 char temp2[VN_SIZE]; 658 sprintf(temp2,"%s.%s",compiler. pCompilingClass->GetName().c_str(),VarName);658 sprintf(temp2,"%s.%s",compiler.GetCompilingClass().GetName().c_str(),VarName); 659 659 660 660 pVar = compiler.GetObjectModule().meta.GetGlobalVars().Find( LexicalAnalyzer::FullNameToSymbol( temp2 ) ); … … 916 916 917 917 //クラス名 918 if( compiler.pCompilingClass){919 lstrcat(FullName,compiler. pCompilingClass->GetName().c_str());918 if( compiler.IsCompilingClass() ){ 919 lstrcat(FullName,compiler.GetCompilingClass().GetName().c_str()); 920 920 lstrcat(FullName,"%"); 921 921 } -
trunk/ab5.0/abdev/BasicCompiler_Common/WatchList.cpp
r508 r536 379 379 } 380 380 381 if(compiler.pCompilingClass){ 381 if( compiler.IsCompilingClass() ) 382 { 382 383 /////////////////////// 383 384 // クラスメンバの参照 … … 392 393 //クラス内の動的メンバを参照するとき(通常) 393 394 394 if( !compiler. pCompilingClass->HasDynamicMember( VarName ) )395 if( !compiler.GetCompilingClass().HasDynamicMember( VarName ) ) 395 396 { 396 397 goto NonClassMember; … … 418 419 pRelativeVar->dwKind=VAR_DIRECTMEM; 419 420 420 i3=Debugging_GetMember( *compiler.pCompilingClass,variable,pRelativeVar,resultType,1);421 i3=Debugging_GetMember( compiler.GetCompilingClass(),variable,pRelativeVar,resultType,1); 421 422 if(i3==0){ 422 423 //式エラー -
trunk/ab5.0/abdev/BasicCompiler_Common/hash.cpp
r523 r536 66 66 { 67 67 //クラスメンバ関数内から基底クラスの呼び出し 68 pobj_c=&compiler. pCompilingClass->GetSuperClass();68 pobj_c=&compiler.GetCompilingClass().GetSuperClass(); 69 69 } 70 70 else … … 104 104 105 105 106 if( compiler.pCompilingClass){106 if( compiler.IsCompilingClass() ){ 107 107 //自身のオブジェクトのメンバ関数を検索 108 108 109 109 // 静的メソッド 110 compiler. pCompilingClass->GetStaticMethods().Enum( name, subs );110 compiler.GetCompilingClass().GetStaticMethods().Enum( name, subs ); 111 111 112 112 // 動的メソッド 113 compiler. pCompilingClass->EnumDynamicMethodsOrInterfaceMethods( name, subs );113 compiler.GetCompilingClass().EnumDynamicMethodsOrInterfaceMethods( name, subs ); 114 114 } 115 115 -
trunk/ab5.0/abdev/BasicCompiler_Common/include/Compiler.h
r533 r536 30 30 // 名前空間サポート 31 31 NamespaceSupporter namespaceSupporter; 32 33 // コンパイル中のUserProc/CClass 34 const UserProc *pCompilingUserProc; 35 const CClass *pCompilingClass; 32 36 33 37 // オブジェクトモジュール … … 187 191 const std::string TypeToString( const Type &type ); 188 192 189 // コンパイル中のクラス 190 const CClass *pCompilingClass; 191 193 void ClearCompilingUserProcAndClass(); 194 void SetCompilingClass( const CClass *pClass ); 192 195 void StartProcedureCompile( const UserProc *pUserProc ); 193 196 void FinishProcedureCompile(); 197 198 bool IsGlobalAreaCompiling(); 199 const UserProc &GetCompilingUserProc(); 200 bool IsCompilingClass(); 201 const CClass &GetCompilingClass(); 194 202 }; 195 203 -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Class.cpp
r523 r536 942 942 943 943 // コンパイル中クラスとしてセット 944 compiler. pCompilingClass = &objClass;944 compiler.SetCompilingClass( &objClass ); 945 945 946 946 const EnumInfo *pEnumInfo = NULL; … … 971 971 } 972 972 973 compiler. pCompilingClass = NULL;973 compiler.SetCompilingClass( NULL ); 974 974 } 975 975 -
trunk/ab5.0/abdev/BasicCompiler_Common/src/Compiler.cpp
r533 r536 145 145 146 146 // 型パラメータ 147 if( this-> pCompilingClass)147 if( this->IsCompilingClass() ) 148 148 { 149 149 // クラスに属するメソッドをコンパイルしているとき 150 int formalTypeIndex = this-> pCompilingClass->GetFormalGenericTypeParameterIndex( typeName );150 int formalTypeIndex = this->GetCompilingClass().GetFormalGenericTypeParameterIndex( typeName ); 151 151 if( formalTypeIndex != -1 ) 152 152 { 153 153 // コンパイル中クラスにおけるジェネリクス用の型パラメータのとき 154 154 type.SetBasicType( DEF_TYPE_PARAMETER ); 155 type.SetClassPtr( &this-> pCompilingClass->GetFormalGenericTypes()[formalTypeIndex].GetType().GetClass() );155 type.SetClassPtr( &this->GetCompilingClass().GetFormalGenericTypes()[formalTypeIndex].GetType().GetClass() ); 156 156 type.SetFormalTypeName( typeName ); 157 157 type.SetFormalTypeIndex( formalTypeIndex ); … … 211 211 } 212 212 213 void Compiler::ClearCompilingUserProcAndClass() 214 { 215 this->pCompilingUserProc = NULL; 216 this->pCompilingClass = NULL; 217 } 218 219 void Compiler::SetCompilingClass( const CClass *pClass ) 220 { 221 this->pCompilingClass = pClass; 222 } 223 213 224 void Compiler::StartProcedureCompile( const UserProc *pUserProc ) 214 225 { 226 //コンパイル中の関数 227 this->pCompilingUserProc = pUserProc; 228 215 229 //コンパイル中の関数が属するクラス 216 this-> pCompilingClass = pUserProc->GetParentClassPtr();230 this->SetCompilingClass( pUserProc->GetParentClassPtr() ); 217 231 218 232 //コンパイルスタートをクラス管理クラスに追加 … … 233 247 void Compiler::FinishProcedureCompile() 234 248 { 235 } 249 this->pCompilingUserProc = NULL; 250 this->pCompilingClass = NULL; 251 } 252 253 bool Compiler::IsGlobalAreaCompiling() 254 { 255 return ( pCompilingUserProc == NULL ); 256 } 257 const UserProc &Compiler::GetCompilingUserProc() 258 { 259 if( !this->IsGlobalAreaCompiling() ) 260 { 261 return *pCompilingUserProc; 262 } 263 264 throw; 265 } 266 267 bool Compiler::IsCompilingClass() 268 { 269 return ( pCompilingClass != NULL ); 270 } 271 const CClass &Compiler::GetCompilingClass() 272 { 273 if( this->IsCompilingClass() ) 274 { 275 return *pCompilingClass; 276 } 277 278 throw; 279 } -
trunk/ab5.0/abdev/BasicCompiler_Common/src/LexicalAnalyzer_Class.cpp
r512 r536 391 391 392 392 // 呼び出し元でコンパイル中のクラスポインタをバックアップ 393 const CClass *pBackCompilingClass = compiler.pCompilingClass; 393 const CClass *pBackCompilingClass = compiler.IsCompilingClass() 394 ? &compiler.GetCompilingClass() 395 : NULL; 394 396 395 397 for(i=0;;i++){ … … 464 466 if(!pobj_c) continue; 465 467 466 compiler. pCompilingClass = pobj_c;468 compiler.SetCompilingClass( pobj_c ); 467 469 468 470 if(lpszInheritsClass){ … … 688 690 if(!pobj_c) continue; 689 691 690 compiler. pCompilingClass = pobj_c;692 compiler.SetCompilingClass( pobj_c ); 691 693 692 694 if(lpszInheritsClass){ … … 981 983 982 984 // 呼び出し元でコンパイル中のクラスポインタを元に戻す 983 compiler. pCompilingClass = pBackCompilingClass;985 compiler.SetCompilingClass( pBackCompilingClass ); 984 986 985 987 // 名前空間を元に戻す
Note:
See TracChangeset
for help on using the changeset viewer.