00001 #ifndef FWCore_ParameterSet_VParameterSetEntry_h 00002 #define FWCore_ParameterSet_VParameterSetEntry_h 00003 00010 #include "FWCore/ParameterSet/interface/ParameterSetEntry.h" 00011 #include "FWCore/Utilities/interface/value_ptr.h" 00012 00013 #include <iosfwd> 00014 #include <string> 00015 #include <vector> 00016 00017 namespace edm { 00018 00019 // forward declaration 00020 class ParameterSet; 00021 00022 class VParameterSetEntry { 00023 public: 00024 // default ctor for serialization 00025 VParameterSetEntry(); 00026 VParameterSetEntry(std::vector<ParameterSet> const& vpset, bool isTracked); 00027 VParameterSetEntry(std::string const& rep); 00028 00029 ~VParameterSetEntry(); 00030 00031 std::string toString() const; 00032 void toString(std::string& result) const; 00033 void toDigest(cms::Digest &digest) const; 00034 00035 bool isTracked() const {return tracked;} 00036 00039 std::vector<ParameterSet> const& vpset() const; 00040 std::vector<ParameterSet>& vpset(); 00041 ParameterSet& psetInVector(int i); 00042 00043 std::vector<ParameterSet>::size_type size() const { return vpset().size(); } 00044 00045 void registerPsetsAndUpdateIDs(); 00046 00047 friend std::ostream& operator<<(std::ostream& os, VParameterSetEntry const& vpsetEntry); 00048 00049 private: 00050 00051 bool tracked; 00052 mutable value_ptr<std::vector<ParameterSet> > theVPSet; 00053 mutable value_ptr<std::vector<ParameterSetID> > theIDs; 00054 }; 00055 } 00056 #endif