CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/FWCore/ParameterSet/interface/VParameterSetEntry.h

Go to the documentation of this file.
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