CMS 3D CMS Logo

IOVIteratorImpl.cc

Go to the documentation of this file.
00001 #include "IOVIteratorImpl.h"
00002 
00003 cond::IOVIteratorImpl::IOVIteratorImpl( cond::PoolTransaction& pooldb,
00004                                         const std::string & token)
00005   : m_pooldb(pooldb),m_token(token), m_count(0), m_isInit(false), m_isOpen(false){
00006 } 
00007 cond::IOVIteratorImpl::~IOVIteratorImpl(){
00008 }
00009 
00010 void cond::IOVIteratorImpl::open() const{
00011   if (m_isOpen) return;
00012   const_cast<cond::IOVIteratorImpl*>(this)->m_iov=
00013     cond::TypedRef<cond::IOV>(m_pooldb, m_token);
00014   const_cast<cond::IOVIteratorImpl*>(this)->m_isOpen=true;
00015 }
00016 void cond::IOVIteratorImpl::init(){
00017   open();
00018   m_isInit=true;
00019   m_pos=m_iov->iov.begin();
00020   m_count = 0;
00021   m_since=m_iov->firstsince;
00022 }
00023 
00024 
00025 bool cond::IOVIteratorImpl::rewind() {
00026   init();
00027   return !empty();
00028 }
00029 
00030 bool cond::IOVIteratorImpl::empty() const {
00031   open();
00032   return m_iov->iov.empty();
00033 }
00034 size_t cond::IOVIteratorImpl::size() const {
00035   open();
00036   return m_iov->iov.size();
00037 }
00038 size_t cond::IOVIteratorImpl::position() const {
00039   return m_count;
00040 }
00041 
00042 
00043 bool  cond::IOVIteratorImpl::atEnd() const {
00044   return m_isInit && m_pos==m_iov->iov.end();
00045 }
00046 
00047 bool cond::IOVIteratorImpl::next(){
00048   if(!m_isInit){
00049     init();
00050     return !empty();
00051   }
00052   if (atEnd() ) return false;
00053 
00054   m_since = m_pos->first+1;
00055   ++m_pos;
00056   if (atEnd() ) return false;
00057   ++m_count;
00058   return true;
00059 }
00060 
00061 std::string 
00062 cond::IOVIteratorImpl::payloadToken() const{
00063   if(!m_isInit) return std::string("");
00064   
00065   return atEnd() ? std::string("") : m_pos->second;
00066 
00067 }
00068 
00069 cond::ValidityInterval
00070 cond::IOVIteratorImpl::validity() const{
00071   cond::Time_t since=0;
00072   cond::Time_t till=0;
00073   if (m_isInit && !atEnd()) {
00074     since = m_since;
00075     till =  m_pos->first;
00076   }
00077   return cond::ValidityInterval(since,till);
00078 }

Generated on Tue Jun 9 17:26:08 2009 for CMSSW by  doxygen 1.5.4