CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/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     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