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