ROOT logo
// @(#)root/reflex:$Id: Scope.cxx 27509 2009-02-19 03:32:22Z pcanal $
// Author: Stefan Roiser 2004

// Copyright CERN, CH-1211 Geneva 23, 2004-2006, All rights reserved.
//
// Permission to use, copy, modify, and distribute this software for any
// purpose is hereby granted without fee, provided that this copyright and
// permissions notice appear in all copies and derivatives.
//
// This software is provided "as is" without express or implied warranty.

#ifndef REFLEX_BUILD
#define REFLEX_BUILD
#endif

#include "Reflex/Scope.h"

#include "Reflex/internal/ScopeBase.h"
#include "Reflex/Member.h"
#include "Reflex/Type.h"
#include "Reflex/TypeTemplate.h"
#include "Reflex/MemberTemplate.h"
#include "Reflex/Base.h"

#include "Reflex/Tools.h"
#include "Class.h"

//-------------------------------------------------------------------------------
Reflex::Scope & Reflex::Scope::__NIRVANA__() {
//-------------------------------------------------------------------------------
// static wraper around NIRVANA, the base of the top scope.
   static Scope s = Scope( new ScopeName( "@N@I@R@V@A@N@A@", 0 ));
   return s;
}


//-------------------------------------------------------------------------------
Reflex::Scope::operator Reflex::Type () const {
//-------------------------------------------------------------------------------
// Conversion operator to Type. If this scope is not a Type, returns the empty type.
   if ( * this ) return *(fScopeName->fScopeBase);
   return Dummy::Type();
}



//-------------------------------------------------------------------------------
Reflex::Base Reflex::Scope::BaseAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return nth base class info.
   if ( * this ) return fScopeName->fScopeBase->BaseAt( nth );
   return Dummy::Base();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::BaseSize() const {
//-------------------------------------------------------------------------------
// Return number of base classes.
   if ( * this ) return fScopeName->fScopeBase->BaseSize();
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::Scope Reflex::Scope::ByName( const std::string & name ) {
//-------------------------------------------------------------------------------
// Lookup a Scope by it's fully qualified name.
   return ScopeName::ByName( name );
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::DataMemberAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth data member of this scope.
   if ( * this ) return fScopeName->fScopeBase->DataMemberAt( nth ); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::DataMemberByName( const std::string & name ) const {
//-------------------------------------------------------------------------------
// Return a data member by it's name.
   if ( * this ) return fScopeName->fScopeBase->DataMemberByName( name ); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::DataMemberSize() const {
//-------------------------------------------------------------------------------
// Return number of data mebers of this scope.
   if ( * this ) return fScopeName->fScopeBase->DataMemberSize(); 
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::FunctionMemberAt( size_t nth ) const {
//------------------------------------------------------------------------------- 
// Return nth function member of this socpe.
   if ( * this ) return fScopeName->fScopeBase->FunctionMemberAt(nth); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::FunctionMemberByName( const std::string & name ) const {
//------------------------------------------------------------------------------- 
// Return a function member by it's name.
   if ( * this ) return fScopeName->fScopeBase->FunctionMemberByName( name, Type(), 0 ); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::FunctionMemberByName( const std::string & name,
                                                    const Type & signature,
                                                    unsigned int modifiers_mask) const {
//------------------------------------------------------------------------------- 
// Return a function member by it's name, qualified by it's signature type.
   if ( * this ) return fScopeName->fScopeBase->FunctionMemberByName( name, signature, modifiers_mask ); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::FunctionMemberByNameAndSignature( const std::string & name,
                                                                const Type & signature,
                                                                unsigned int modifiers_mask) const {
//------------------------------------------------------------------------------- 
// Return a function member by it's name, qualified by it's signature type.
   if ( * this ) return fScopeName->fScopeBase->FunctionMemberByNameAndSignature( name, signature, modifiers_mask ); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::FunctionMemberSize() const {
//-------------------------------------------------------------------------------
// Return number of function members of this scope.
   if ( * this ) return fScopeName->fScopeBase->FunctionMemberSize(); 
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::Member 
Reflex::Scope::LookupMember( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Lookup a member from this scope.
   if ( * this ) return fScopeName->fScopeBase->LookupMember( nam, *this );
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Type
Reflex::Scope::LookupType( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Lookup a type from this scope.
   if ( * this ) return fScopeName->fScopeBase->LookupType( nam, *this );
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
Reflex::Scope
Reflex::Scope::LookupScope( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Lookup a scope from this scope.
   if ( * this ) return fScopeName->fScopeBase->LookupScope( nam, *this );
   return Dummy::Scope();
}


//-------------------------------------------------------------------------------
Reflex::Member 
Reflex::Scope::MemberByName( const std::string & name ) const {
//-------------------------------------------------------------------------------
// Return a member from this scope, by name.
   if ( * this ) return fScopeName->fScopeBase->MemberByName(name, Type()); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member 
Reflex::Scope::MemberByName( const std::string & name,
                             const Type & signature ) const {
//-------------------------------------------------------------------------------
// Return a member in this scope, looked up by name and signature (for functions)
   if ( * this ) return fScopeName->fScopeBase->MemberByName(name, signature); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::Member_Iterator Reflex::Scope::Member_Begin() const {
//-------------------------------------------------------------------------------
// Return the begin iterator of member container.
   if ( * this ) return fScopeName->fScopeBase->Member_Begin();
   return Dummy::MemberCont().begin();
}


//-------------------------------------------------------------------------------
Reflex::Member_Iterator Reflex::Scope::Member_End() const {
//-------------------------------------------------------------------------------
// Return the end iterator of member container.
   if ( * this ) return fScopeName->fScopeBase->Member_End();
   return Dummy::MemberCont().end();
}


//-------------------------------------------------------------------------------
Reflex::Reverse_Member_Iterator Reflex::Scope::Member_RBegin() const {
//-------------------------------------------------------------------------------
// Return the rbegin iterator of member container.
   if ( * this ) return fScopeName->fScopeBase->Member_RBegin();
   return Dummy::MemberCont().rbegin();
}


//-------------------------------------------------------------------------------
Reflex::Reverse_Member_Iterator Reflex::Scope::Member_REnd() const {
//-------------------------------------------------------------------------------
// Return the rend iterator of member container.
   if ( * this ) return fScopeName->fScopeBase->Member_REnd();
   return Dummy::MemberCont().rend();
}


//-------------------------------------------------------------------------------
Reflex::Member Reflex::Scope::MemberAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth member of this scope.
   if ( * this ) return fScopeName->fScopeBase->MemberAt(nth); 
   return Dummy::Member();
}


//-------------------------------------------------------------------------------
Reflex::MemberTemplate Reflex::Scope::MemberTemplateAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth memer template in this scope.
   if ( * this ) return fScopeName->fScopeBase->MemberTemplateAt( nth );
   return Dummy::MemberTemplate();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::MemberTemplateSize() const {
//-------------------------------------------------------------------------------
// Return the number of member templates in this scope.
   if ( * this ) return fScopeName->fScopeBase->MemberTemplateSize();
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::MemberTemplate Reflex::Scope::MemberTemplateByName( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Look up a member template in this scope by name and return it.
   if ( * this ) return fScopeName->fScopeBase->MemberTemplateByName( nam );
   return Dummy::MemberTemplate();
}


//-------------------------------------------------------------------------------
std::string Reflex::Scope::Name( unsigned int mod ) const {
//-------------------------------------------------------------------------------
// Return the name of this scope, scoped if requested.
   if ( * this ) return fScopeName->fScopeBase->Name( mod );
   else if ( fScopeName ) {
      if ( 0 != ( mod & ( SCOPED | S ))) return fScopeName->Name();
      else                               return Tools::GetBaseName( fScopeName->Name());
   }
   else {
      return "";
   }
}


//-------------------------------------------------------------------------------
Reflex::Scope Reflex::Scope::ScopeAt( size_t nth ) {
//-------------------------------------------------------------------------------
// Return the nth scope in the Reflex database.
   return ScopeName::ScopeAt( nth );
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::ScopeSize() {
//-------------------------------------------------------------------------------
// Return the number of scopes defined.
   return ScopeName::ScopeSize();
}


//-------------------------------------------------------------------------------
Reflex::Type Reflex::Scope::SubTypeAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth sub type of this scope.
   if ( * this ) return fScopeName->fScopeBase->SubTypeAt( nth ); 
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::SubTypeSize() const {
//-------------------------------------------------------------------------------
// Return the number of sub types.
   if ( * this ) return fScopeName->fScopeBase->SubTypeSize(); 
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::Type Reflex::Scope::SubTypeByName( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Look up a sub type by name and return it.
   if ( * this ) return fScopeName->fScopeBase->SubTypeByName( nam );
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
Reflex::Type Reflex::Scope::TemplateArgumentAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth template argument of this scope (ie. class).
   if ( * this ) return fScopeName->fScopeBase->TemplateArgumentAt( nth );
   return Dummy::Type();
}


//-------------------------------------------------------------------------------
Reflex::TypeTemplate Reflex::Scope::TemplateFamily() const {
//-------------------------------------------------------------------------------
// Return the template family related to this scope.
   if ( * this ) return fScopeName->fScopeBase->TemplateFamily();
   return Dummy::TypeTemplate();
}


//-------------------------------------------------------------------------------
Reflex::TypeTemplate Reflex::Scope::SubTypeTemplateAt( size_t nth ) const {
//-------------------------------------------------------------------------------
// Return the nth sub type template.
   if ( * this ) return fScopeName->fScopeBase->SubTypeTemplateAt( nth ); 
   return Dummy::TypeTemplate();
}


//-------------------------------------------------------------------------------
size_t Reflex::Scope::SubTypeTemplateSize() const {
//-------------------------------------------------------------------------------
// Return the number of type templates in this scope.
   if ( * this ) return fScopeName->fScopeBase->SubTypeTemplateSize();
   return 0;
}


//-------------------------------------------------------------------------------
Reflex::TypeTemplate Reflex::Scope::SubTypeTemplateByName( const std::string & nam ) const {
//-------------------------------------------------------------------------------
// Lookup a sub type template by string and return it.
   if ( * this ) return fScopeName->fScopeBase->SubTypeTemplateByName( nam );
   return Dummy::TypeTemplate();
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddDataMember( const Member & dm ) const {
//-------------------------------------------------------------------------------
// Add data member dm to this scope.
   if ( * this) fScopeName->fScopeBase->AddDataMember( dm );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddDataMember( const char * name,
                                   const Type & type,
                                   size_t offset,
                                   unsigned int modifiers ) const {
//-------------------------------------------------------------------------------
// Add data member to this scope.
   if ( * this ) fScopeName->fScopeBase->AddDataMember( name, 
                                                       type, 
                                                       offset, 
                                                       modifiers );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddDataMember(Member& output, const char* name, const Type& type, size_t offset, unsigned int modifiers, char* interpreterOffset) const
{
   // Add data member to this scope.
   if (*this) fScopeName->fScopeBase->AddDataMember(output, name, type, offset, modifiers, interpreterOffset);
}

//-------------------------------------------------------------------------------
void Reflex::Scope::RemoveDataMember( const Member & dm ) const {
//-------------------------------------------------------------------------------
// Remove data member dm from this scope.
   if ( * this) fScopeName->fScopeBase->RemoveDataMember( dm );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddFunctionMember( const Member & fm ) const {
//-------------------------------------------------------------------------------
// Add function member fm to this scope.
   if ( * this) fScopeName->fScopeBase->AddFunctionMember( fm );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddFunctionMember( const char * nam,
                                             const Type & typ,
                                             StubFunction stubFP,
                                             void * stubCtx,
                                             const char * params,
                                             unsigned int modifiers ) const {
//-------------------------------------------------------------------------------
// Add function member to this scope.
   if ( * this ) fScopeName->fScopeBase->AddFunctionMember( nam, 
                                                            typ, 
                                                            stubFP, 
                                                            stubCtx, 
                                                            params, 
                                                            modifiers );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::RemoveFunctionMember( const Member & fm ) const {
//-------------------------------------------------------------------------------
// Remove function member fm from this scope.
   if ( * this) fScopeName->fScopeBase->RemoveFunctionMember( fm );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddSubType( const Type & ty ) const {
//-------------------------------------------------------------------------------
// Add sub type ty to this scope.
   if ( * this) fScopeName->fScopeBase->AddSubType( ty );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddSubType( const char * type,
                                size_t size,
                                TYPE typeType,
                                const std::type_info & typeInfo,
                                unsigned int modifiers ) const {
//-------------------------------------------------------------------------------
// Add sub type to this scope.
   if ( * this ) fScopeName->fScopeBase->AddSubType( type, 
                                                     size, 
                                                     typeType, 
                                                     typeInfo, 
                                                     modifiers );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::RemoveSubType( const Type & ty ) const {
//-------------------------------------------------------------------------------
// Remove sub type ty from this scope.
   if ( * this) fScopeName->fScopeBase->RemoveSubType( ty );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddMemberTemplate( const MemberTemplate & mt ) const {
//-------------------------------------------------------------------------------
// Add member template mt to this scope.
   if ( * this ) fScopeName->fScopeBase->AddMemberTemplate( mt );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::RemoveMemberTemplate( const MemberTemplate & mt ) const {
//-------------------------------------------------------------------------------
// Remove member template mt from this scope.
   if ( * this ) fScopeName->fScopeBase->RemoveMemberTemplate( mt );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::AddSubTypeTemplate( const TypeTemplate & tt ) const {
//-------------------------------------------------------------------------------
// Add type template tt to this scope.
   if ( * this ) fScopeName->fScopeBase->AddSubTypeTemplate( tt );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::RemoveSubTypeTemplate( const TypeTemplate & tt ) const {
//-------------------------------------------------------------------------------
// Remove type template tt from this scope.
   if ( * this ) fScopeName->fScopeBase->RemoveSubTypeTemplate( tt );
}


//-------------------------------------------------------------------------------
void Reflex::Scope::GenerateDict( DictionaryGenerator & generator) const {
//-------------------------------------------------------------------------------
// Generate Dictionary information about itself.
   if ( * this ) fScopeName->fScopeBase->GenerateDict(generator);
}


//-------------------------------------------------------------------------------
void Reflex::Scope::Unload() const {
//-------------------------------------------------------------------------------
// Unload a scope, i.e. delete the ScopeName's ScopeBase object.
   if ( * this ) delete fScopeName->fScopeBase;
}


#ifdef REFLEX_CINT_MERGE
bool Reflex::Scope::operator&&(const Scope &right) const
{ return operator bool() && (bool)right; }
bool Reflex::Scope::operator&&(const Type &right) const 
{ return operator bool() && (bool)right; }
bool Reflex::Scope::operator&&(const Member &right) const 
{ return operator bool() && (bool)right; }
bool Reflex::Scope::operator||(const Scope &right) const 
{ return operator bool() && (bool)right; }
bool Reflex::Scope::operator||(const Type &right) const 
{ return operator bool() && (bool)right; }
bool Reflex::Scope::operator||(const Member &right) const 
{ return operator bool() || (bool)right; }
#endif
 Scope.cxx:1
 Scope.cxx:2
 Scope.cxx:3
 Scope.cxx:4
 Scope.cxx:5
 Scope.cxx:6
 Scope.cxx:7
 Scope.cxx:8
 Scope.cxx:9
 Scope.cxx:10
 Scope.cxx:11
 Scope.cxx:12
 Scope.cxx:13
 Scope.cxx:14
 Scope.cxx:15
 Scope.cxx:16
 Scope.cxx:17
 Scope.cxx:18
 Scope.cxx:19
 Scope.cxx:20
 Scope.cxx:21
 Scope.cxx:22
 Scope.cxx:23
 Scope.cxx:24
 Scope.cxx:25
 Scope.cxx:26
 Scope.cxx:27
 Scope.cxx:28
 Scope.cxx:29
 Scope.cxx:30
 Scope.cxx:31
 Scope.cxx:32
 Scope.cxx:33
 Scope.cxx:34
 Scope.cxx:35
 Scope.cxx:36
 Scope.cxx:37
 Scope.cxx:38
 Scope.cxx:39
 Scope.cxx:40
 Scope.cxx:41
 Scope.cxx:42
 Scope.cxx:43
 Scope.cxx:44
 Scope.cxx:45
 Scope.cxx:46
 Scope.cxx:47
 Scope.cxx:48
 Scope.cxx:49
 Scope.cxx:50
 Scope.cxx:51
 Scope.cxx:52
 Scope.cxx:53
 Scope.cxx:54
 Scope.cxx:55
 Scope.cxx:56
 Scope.cxx:57
 Scope.cxx:58
 Scope.cxx:59
 Scope.cxx:60
 Scope.cxx:61
 Scope.cxx:62
 Scope.cxx:63
 Scope.cxx:64
 Scope.cxx:65
 Scope.cxx:66
 Scope.cxx:67
 Scope.cxx:68
 Scope.cxx:69
 Scope.cxx:70
 Scope.cxx:71
 Scope.cxx:72
 Scope.cxx:73
 Scope.cxx:74
 Scope.cxx:75
 Scope.cxx:76
 Scope.cxx:77
 Scope.cxx:78
 Scope.cxx:79
 Scope.cxx:80
 Scope.cxx:81
 Scope.cxx:82
 Scope.cxx:83
 Scope.cxx:84
 Scope.cxx:85
 Scope.cxx:86
 Scope.cxx:87
 Scope.cxx:88
 Scope.cxx:89
 Scope.cxx:90
 Scope.cxx:91
 Scope.cxx:92
 Scope.cxx:93
 Scope.cxx:94
 Scope.cxx:95
 Scope.cxx:96
 Scope.cxx:97
 Scope.cxx:98
 Scope.cxx:99
 Scope.cxx:100
 Scope.cxx:101
 Scope.cxx:102
 Scope.cxx:103
 Scope.cxx:104
 Scope.cxx:105
 Scope.cxx:106
 Scope.cxx:107
 Scope.cxx:108
 Scope.cxx:109
 Scope.cxx:110
 Scope.cxx:111
 Scope.cxx:112
 Scope.cxx:113
 Scope.cxx:114
 Scope.cxx:115
 Scope.cxx:116
 Scope.cxx:117
 Scope.cxx:118
 Scope.cxx:119
 Scope.cxx:120
 Scope.cxx:121
 Scope.cxx:122
 Scope.cxx:123
 Scope.cxx:124
 Scope.cxx:125
 Scope.cxx:126
 Scope.cxx:127
 Scope.cxx:128
 Scope.cxx:129
 Scope.cxx:130
 Scope.cxx:131
 Scope.cxx:132
 Scope.cxx:133
 Scope.cxx:134
 Scope.cxx:135
 Scope.cxx:136
 Scope.cxx:137
 Scope.cxx:138
 Scope.cxx:139
 Scope.cxx:140
 Scope.cxx:141
 Scope.cxx:142
 Scope.cxx:143
 Scope.cxx:144
 Scope.cxx:145
 Scope.cxx:146
 Scope.cxx:147
 Scope.cxx:148
 Scope.cxx:149
 Scope.cxx:150
 Scope.cxx:151
 Scope.cxx:152
 Scope.cxx:153
 Scope.cxx:154
 Scope.cxx:155
 Scope.cxx:156
 Scope.cxx:157
 Scope.cxx:158
 Scope.cxx:159
 Scope.cxx:160
 Scope.cxx:161
 Scope.cxx:162
 Scope.cxx:163
 Scope.cxx:164
 Scope.cxx:165
 Scope.cxx:166
 Scope.cxx:167
 Scope.cxx:168
 Scope.cxx:169
 Scope.cxx:170
 Scope.cxx:171
 Scope.cxx:172
 Scope.cxx:173
 Scope.cxx:174
 Scope.cxx:175
 Scope.cxx:176
 Scope.cxx:177
 Scope.cxx:178
 Scope.cxx:179
 Scope.cxx:180
 Scope.cxx:181
 Scope.cxx:182
 Scope.cxx:183
 Scope.cxx:184
 Scope.cxx:185
 Scope.cxx:186
 Scope.cxx:187
 Scope.cxx:188
 Scope.cxx:189
 Scope.cxx:190
 Scope.cxx:191
 Scope.cxx:192
 Scope.cxx:193
 Scope.cxx:194
 Scope.cxx:195
 Scope.cxx:196
 Scope.cxx:197
 Scope.cxx:198
 Scope.cxx:199
 Scope.cxx:200
 Scope.cxx:201
 Scope.cxx:202
 Scope.cxx:203
 Scope.cxx:204
 Scope.cxx:205
 Scope.cxx:206
 Scope.cxx:207
 Scope.cxx:208
 Scope.cxx:209
 Scope.cxx:210
 Scope.cxx:211
 Scope.cxx:212
 Scope.cxx:213
 Scope.cxx:214
 Scope.cxx:215
 Scope.cxx:216
 Scope.cxx:217
 Scope.cxx:218
 Scope.cxx:219
 Scope.cxx:220
 Scope.cxx:221
 Scope.cxx:222
 Scope.cxx:223
 Scope.cxx:224
 Scope.cxx:225
 Scope.cxx:226
 Scope.cxx:227
 Scope.cxx:228
 Scope.cxx:229
 Scope.cxx:230
 Scope.cxx:231
 Scope.cxx:232
 Scope.cxx:233
 Scope.cxx:234
 Scope.cxx:235
 Scope.cxx:236
 Scope.cxx:237
 Scope.cxx:238
 Scope.cxx:239
 Scope.cxx:240
 Scope.cxx:241
 Scope.cxx:242
 Scope.cxx:243
 Scope.cxx:244
 Scope.cxx:245
 Scope.cxx:246
 Scope.cxx:247
 Scope.cxx:248
 Scope.cxx:249
 Scope.cxx:250
 Scope.cxx:251
 Scope.cxx:252
 Scope.cxx:253
 Scope.cxx:254
 Scope.cxx:255
 Scope.cxx:256
 Scope.cxx:257
 Scope.cxx:258
 Scope.cxx:259
 Scope.cxx:260
 Scope.cxx:261
 Scope.cxx:262
 Scope.cxx:263
 Scope.cxx:264
 Scope.cxx:265
 Scope.cxx:266
 Scope.cxx:267
 Scope.cxx:268
 Scope.cxx:269
 Scope.cxx:270
 Scope.cxx:271
 Scope.cxx:272
 Scope.cxx:273
 Scope.cxx:274
 Scope.cxx:275
 Scope.cxx:276
 Scope.cxx:277
 Scope.cxx:278
 Scope.cxx:279
 Scope.cxx:280
 Scope.cxx:281
 Scope.cxx:282
 Scope.cxx:283
 Scope.cxx:284
 Scope.cxx:285
 Scope.cxx:286
 Scope.cxx:287
 Scope.cxx:288
 Scope.cxx:289
 Scope.cxx:290
 Scope.cxx:291
 Scope.cxx:292
 Scope.cxx:293
 Scope.cxx:294
 Scope.cxx:295
 Scope.cxx:296
 Scope.cxx:297
 Scope.cxx:298
 Scope.cxx:299
 Scope.cxx:300
 Scope.cxx:301
 Scope.cxx:302
 Scope.cxx:303
 Scope.cxx:304
 Scope.cxx:305
 Scope.cxx:306
 Scope.cxx:307
 Scope.cxx:308
 Scope.cxx:309
 Scope.cxx:310
 Scope.cxx:311
 Scope.cxx:312
 Scope.cxx:313
 Scope.cxx:314
 Scope.cxx:315
 Scope.cxx:316
 Scope.cxx:317
 Scope.cxx:318
 Scope.cxx:319
 Scope.cxx:320
 Scope.cxx:321
 Scope.cxx:322
 Scope.cxx:323
 Scope.cxx:324
 Scope.cxx:325
 Scope.cxx:326
 Scope.cxx:327
 Scope.cxx:328
 Scope.cxx:329
 Scope.cxx:330
 Scope.cxx:331
 Scope.cxx:332
 Scope.cxx:333
 Scope.cxx:334
 Scope.cxx:335
 Scope.cxx:336
 Scope.cxx:337
 Scope.cxx:338
 Scope.cxx:339
 Scope.cxx:340
 Scope.cxx:341
 Scope.cxx:342
 Scope.cxx:343
 Scope.cxx:344
 Scope.cxx:345
 Scope.cxx:346
 Scope.cxx:347
 Scope.cxx:348
 Scope.cxx:349
 Scope.cxx:350
 Scope.cxx:351
 Scope.cxx:352
 Scope.cxx:353
 Scope.cxx:354
 Scope.cxx:355
 Scope.cxx:356
 Scope.cxx:357
 Scope.cxx:358
 Scope.cxx:359
 Scope.cxx:360
 Scope.cxx:361
 Scope.cxx:362
 Scope.cxx:363
 Scope.cxx:364
 Scope.cxx:365
 Scope.cxx:366
 Scope.cxx:367
 Scope.cxx:368
 Scope.cxx:369
 Scope.cxx:370
 Scope.cxx:371
 Scope.cxx:372
 Scope.cxx:373
 Scope.cxx:374
 Scope.cxx:375
 Scope.cxx:376
 Scope.cxx:377
 Scope.cxx:378
 Scope.cxx:379
 Scope.cxx:380
 Scope.cxx:381
 Scope.cxx:382
 Scope.cxx:383
 Scope.cxx:384
 Scope.cxx:385
 Scope.cxx:386
 Scope.cxx:387
 Scope.cxx:388
 Scope.cxx:389
 Scope.cxx:390
 Scope.cxx:391
 Scope.cxx:392
 Scope.cxx:393
 Scope.cxx:394
 Scope.cxx:395
 Scope.cxx:396
 Scope.cxx:397
 Scope.cxx:398
 Scope.cxx:399
 Scope.cxx:400
 Scope.cxx:401
 Scope.cxx:402
 Scope.cxx:403
 Scope.cxx:404
 Scope.cxx:405
 Scope.cxx:406
 Scope.cxx:407
 Scope.cxx:408
 Scope.cxx:409
 Scope.cxx:410
 Scope.cxx:411
 Scope.cxx:412
 Scope.cxx:413
 Scope.cxx:414
 Scope.cxx:415
 Scope.cxx:416
 Scope.cxx:417
 Scope.cxx:418
 Scope.cxx:419
 Scope.cxx:420
 Scope.cxx:421
 Scope.cxx:422
 Scope.cxx:423
 Scope.cxx:424
 Scope.cxx:425
 Scope.cxx:426
 Scope.cxx:427
 Scope.cxx:428
 Scope.cxx:429
 Scope.cxx:430
 Scope.cxx:431
 Scope.cxx:432
 Scope.cxx:433
 Scope.cxx:434
 Scope.cxx:435
 Scope.cxx:436
 Scope.cxx:437
 Scope.cxx:438
 Scope.cxx:439
 Scope.cxx:440
 Scope.cxx:441
 Scope.cxx:442
 Scope.cxx:443
 Scope.cxx:444
 Scope.cxx:445
 Scope.cxx:446
 Scope.cxx:447
 Scope.cxx:448
 Scope.cxx:449
 Scope.cxx:450
 Scope.cxx:451
 Scope.cxx:452
 Scope.cxx:453
 Scope.cxx:454
 Scope.cxx:455
 Scope.cxx:456
 Scope.cxx:457
 Scope.cxx:458
 Scope.cxx:459
 Scope.cxx:460
 Scope.cxx:461
 Scope.cxx:462
 Scope.cxx:463
 Scope.cxx:464
 Scope.cxx:465
 Scope.cxx:466
 Scope.cxx:467
 Scope.cxx:468
 Scope.cxx:469
 Scope.cxx:470
 Scope.cxx:471
 Scope.cxx:472
 Scope.cxx:473
 Scope.cxx:474
 Scope.cxx:475
 Scope.cxx:476
 Scope.cxx:477
 Scope.cxx:478
 Scope.cxx:479
 Scope.cxx:480
 Scope.cxx:481
 Scope.cxx:482
 Scope.cxx:483
 Scope.cxx:484
 Scope.cxx:485
 Scope.cxx:486
 Scope.cxx:487
 Scope.cxx:488
 Scope.cxx:489
 Scope.cxx:490
 Scope.cxx:491
 Scope.cxx:492
 Scope.cxx:493
 Scope.cxx:494
 Scope.cxx:495
 Scope.cxx:496
 Scope.cxx:497
 Scope.cxx:498
 Scope.cxx:499
 Scope.cxx:500
 Scope.cxx:501
 Scope.cxx:502
 Scope.cxx:503
 Scope.cxx:504
 Scope.cxx:505
 Scope.cxx:506
 Scope.cxx:507
 Scope.cxx:508
 Scope.cxx:509
 Scope.cxx:510
 Scope.cxx:511
 Scope.cxx:512
 Scope.cxx:513
 Scope.cxx:514
 Scope.cxx:515
 Scope.cxx:516
 Scope.cxx:517
 Scope.cxx:518
 Scope.cxx:519
 Scope.cxx:520
 Scope.cxx:521
 Scope.cxx:522
 Scope.cxx:523
 Scope.cxx:524
 Scope.cxx:525
 Scope.cxx:526
 Scope.cxx:527
 Scope.cxx:528
 Scope.cxx:529
 Scope.cxx:530
 Scope.cxx:531
 Scope.cxx:532
 Scope.cxx:533
 Scope.cxx:534
 Scope.cxx:535
 Scope.cxx:536
 Scope.cxx:537
 Scope.cxx:538
 Scope.cxx:539