CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/CondFormats/Common/interface/IOVElement.h

Go to the documentation of this file.
00001 #ifndef Cond_IOVElement_h
00002 #define Cond_IOVElement_h
00003 #include "CondFormats/Common/interface/Time.h"
00004 #include "CondCore/ORA/interface/OId.h"
00005 #include <string>
00006 
00007 namespace cond {
00008 
00012   class IOVElement {
00013     public:
00014     IOVElement():
00015       m_sinceTime(0),
00016       m_wrapper(""),
00017       m_oid(){}
00018 
00019     explicit IOVElement(cond::Time_t it) : 
00020       m_sinceTime(it),
00021       m_wrapper(""),
00022       m_oid(){}
00023 
00024     IOVElement(cond::Time_t it,
00025                std::string const& itoken):
00026       m_sinceTime(it),
00027       m_wrapper(""),
00028       m_oid(){
00029       m_oid.fromString( itoken );
00030     }
00031 
00032     cond::Time_t sinceTime() const {return m_sinceTime;}
00033 
00034     std::string token() const {
00035       return m_oid.toString();
00036     }
00037 
00038     bool operator==(IOVElement const & rh) const {
00039       return sinceTime()==rh.sinceTime()
00040         &&  token()==rh.token();
00041     }
00042     
00043     void swapToken( ora::ITokenParser& parser ) const {
00044       if( !m_wrapper.empty() ){
00045         const_cast<IOVElement*>(this)->m_oid = parser.parse( m_wrapper );
00046         const_cast<IOVElement*>(this)->m_wrapper.clear();
00047       }
00048     }
00049 
00050     void swapOId( ora::ITokenWriter& writer ) const {
00051       if( !m_oid.isInvalid() ){
00052         const_cast<IOVElement*>(this)->m_wrapper = writer.write( m_oid );
00053         const_cast<IOVElement*>(this)->m_oid.reset();
00054       }
00055     }
00056 
00057     private:
00058     cond::Time_t m_sinceTime;
00059     std::string m_wrapper;
00060     ora::OId m_oid;
00061     
00062   };
00063   
00064   
00065 } // ns cond
00066 
00067 
00068 #endif