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 00034 bool isTracked() const {return tracked;} 00035 00038 std::vector<ParameterSet> const& vpset() const; 00039 std::vector<ParameterSet>& vpset(); 00040 ParameterSet& psetInVector(int i); 00041 00042 std::vector<ParameterSet>::size_type size() const { return vpset().size(); } 00043 00044 void registerPsetsAndUpdateIDs(); 00045 00046 friend std::ostream& operator<<(std::ostream& os, VParameterSetEntry const& vpsetEntry); 00047 00048 private: 00049 00050 bool tracked; 00051 mutable value_ptr<std::vector<ParameterSet> > theVPSet; 00052 mutable value_ptr<std::vector<ParameterSetID> > theIDs; 00053 }; 00054 } 00055 #endif