text: // @(#)root/reflex:$Id$
  // Author: Axel Naumann, 2009
  
  // Copyright CERN, CH-1211 Geneva 23, 2004-2009, 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_OnDemandBuilderForScope
  #define Reflex_OnDemandBuilderForScope
  
  #include "Reflex/Kernel.h"
  #include "Reflex/Builder/OnDemandBuilder.h"
  
  namespace Reflex {
  // not part of the interface
  class BuilderContainer;
  class ScopeBase;
  
  class RFLX_API OnDemandBuilderForScope: public OnDemandBuilder {
  public:
  
     OnDemandBuilderForScope() {}
     OnDemandBuilderForScope(ScopeBase* scope): fContext(scope) {}
     virtual ~OnDemandBuilderForScope() {}
  
     // return whether the builder has changed reflection data
     virtual void BuildAll() = 0;
  
     void SetContext(ScopeBase* scope) { fContext = scope; }
     ScopeBase* Context() const { return fContext; }
  
  private:
     ScopeBase* fContext; // which scope to build for
  };
  } // namespace Reflex
  
  #endif // Reflex_OnDemandBuilderForScope
  