Changeset 536 in dev for trunk/ab5.0/abdev/BasicCompiler_Common/src
- Timestamp:
- May 3, 2008, 6:32:50 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev/BasicCompiler_Common/src
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
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.