PrincipalBase.h
Go to the documentation of this file.
1 #ifndef canvas_Persistency_Common_PrincipalBase_h
2 #define canvas_Persistency_Common_PrincipalBase_h
3 // vim: set sw=2 expandtab :
4 
5 // The RefCoreStreamer uses the interface defined here to find the
6 // EDProductGetter corresponding to the current event and the
7 // ProductID. A pointer to the EDProductGetter is then written into
8 // the RefCore and will get used the first time the Ptr containing the
9 // RefCore is dereferenced. This base class breaks the dependence of
10 // the RefCoreStreamer on the classes that derive from this class. In
11 // the full framework this will be a base class for the
12 // art::EventPrincipal and in gallery this will be a base class for
13 // the gallery::Event.
14 
15 namespace art {
16 
17  class EDProductGetter;
18  class ProductID;
19 
20  class PrincipalBase {
21 
22  public:
23  virtual ~PrincipalBase() = 0;
24 
25  PrincipalBase();
26 
27  // Note: Used only by canvas RefCoreStreamer.cc
28  EDProductGetter const* getEDProductGetter(ProductID const& pid) const;
29 
30  private:
31  // Note: Used only by canvas RefCoreStreamer.cc through
32  // PrincipalBase::getEDProductGetter!
33  virtual EDProductGetter const* getEDProductGetter_(
34  ProductID const&) const = 0;
35  };
36 
37 } // namespace art
38 
39 #endif /* canvas_Persistency_Common_PrincipalBase_h */
40 
41 // Local Variables:
42 // mode: c++
43 // End:
virtual ~PrincipalBase()=0
Definition: PrincipalBase.cc:6
EDProductGetter const * getEDProductGetter(ProductID const &pid) const
virtual EDProductGetter const * getEDProductGetter_(ProductID const &) const =0