CMS 3D CMS Logo

ConstBranchDescription.h

Go to the documentation of this file.
00001 #ifndef DataFormats_Provenance_ConstBranchDescription_h
00002 #define DataFormats_Provenance_ConstBranchDescription_h
00003 
00004 /*----------------------------------------------------------------------
00005   
00006 ConstBranchDescription: A class containing a constant shareable branch description
00007 that is inexpensive to copy.
00008 This class is not persistable.
00009 
00010 ----------------------------------------------------------------------*/
00011 #include <iosfwd>
00012 #include <string>
00013 #include <set>
00014 
00015 #include "boost/shared_ptr.hpp"
00016 
00017 #include "DataFormats/Provenance/interface/BranchDescription.h"
00018 
00019 #include "Reflex/Type.h"
00020 
00021 /*
00022   ConstBranchDescription
00023 
00024 */
00025 
00026 namespace edm {
00027   class ConstBranchDescription {
00028   public:
00029     explicit ConstBranchDescription(BranchDescription const& bd) :
00030       ptr_(new BranchDescription(bd)) {}
00031 
00032     void init() const {ptr_->init();}
00033 
00034     void write(std::ostream& os) const {ptr_->write(os);}
00035 
00036     std::string const& moduleLabel() const {return ptr_->moduleLabel();}
00037     std::string const& processName() const {return ptr_->processName();}
00038     BranchID const& branchID() const {return ptr_->branchID();}
00039     ProductID const& productIDtoAssign() const {return ptr_->productIDtoAssign();}
00040     std::string const& fullClassName() const {return ptr_->fullClassName();}
00041     std::string const& className() const {return ptr_->fullClassName();}
00042     std::string const& friendlyClassName() const {return ptr_->friendlyClassName();}
00043     std::string const& productInstanceName() const {return ptr_->productInstanceName();} 
00044     bool const& produced() const {return ptr_->produced();}
00045     bool const& present() const {return ptr_->present();}
00046     bool const& transient() const {return ptr_->transient();}
00047     ROOT::Reflex::Type const& type() const {return ptr_->type();}
00048     int const& splitLevel() const {return ptr_->splitLevel();}
00049     int const& basketSize() const {return ptr_->basketSize();}
00050 
00051     ModuleDescriptionID const& moduleDescriptionID() const {return ptr_->moduleDescriptionID();}
00052     std::set<ParameterSetID> const& psetIDs() const {return ptr_->psetIDs();}
00053     ParameterSetID const& psetID() const {return ptr_->psetID();}
00054     bool isPsetIDUnique() const {return ptr_->psetIDs().size() == 1;}
00055     std::set<ProcessConfigurationID> const& processConfigurationIDs() const {return ptr_->processConfigurationIDs();}
00056     std::set<std::string> const& branchAliases() const {return ptr_->branchAliases();}
00057     std::string const& branchName() const {return ptr_->branchName();}
00058     BranchType const& branchType() const {return ptr_->branchType();}
00059     std::string const& wrappedName() const {return ptr_->wrappedName();}
00060 
00061     BranchDescription const& me() const {return *ptr_;}
00062 
00063   private:
00064     boost::shared_ptr<BranchDescription> ptr_;
00065   };
00066   
00067   inline
00068   std::ostream&
00069   operator<<(std::ostream& os, ConstBranchDescription const& p) {
00070     os << p.me();   
00071     return os;
00072   }
00073 
00074   inline
00075   bool operator<(ConstBranchDescription const& a, ConstBranchDescription const& b) {
00076     return a.me() < b.me();
00077   }
00078 
00079   inline
00080   bool operator==(ConstBranchDescription const& a, ConstBranchDescription const& b) {
00081     return a.me() == b.me();
00082   }
00083 
00084   inline
00085   std::string match(ConstBranchDescription const& a,
00086         ConstBranchDescription const& b,
00087         std::string const& fileName,
00088         BranchDescription::MatchMode m) {
00089     return match(a.me(), b.me(), fileName, m);
00090   }
00091 }
00092 #endif

Generated on Tue Jun 9 17:31:33 2009 for CMSSW by  doxygen 1.5.4