CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
IOVSequence.cc
Go to the documentation of this file.
3 #include <algorithm>
4 #include <boost/bind.hpp>
5 
6 
7 namespace cond {
8 
9 
10  IOVSequence::IOVSequence() : m_notOrdered(false), m_sorted(0) {}
11 
13  m_timetype(ttype), m_lastTill(timeTypeSpecs[ttype].endValue),
14  m_notOrdered(false), m_metadata(" "), m_sorted(0) {}
15 
16 
17 
19  std::string const& imetadata) :
20  m_timetype(type), m_lastTill(till),m_notOrdered(false),
21  m_metadata(imetadata), m_sorted(0) {}
22 
24  delete m_sorted;
25  }
26 
28  UpdateStamp(rh),
29  m_iovs(rh.m_iovs),
30  m_timetype(rh.m_timetype),
31  m_lastTill(rh.m_lastTill),
32  m_notOrdered(rh.m_notOrdered),
33  m_metadata(rh.m_metadata),
34  m_sorted(0) {}
35 
37  delete m_sorted; m_sorted=0;
38 
39  m_iovs = rh.m_iovs;
44  return *this;
45  }
46 
47 
48  void IOVSequence::loadAll() const {
49  // m_provenance.get();
50  // m_description.get();
51  // m_userMetadata.get();
52  }
53 
55  if (m_sorted) return *m_sorted;
56  if (m_notOrdered) return sortMe();
57  return m_iovs;
58  }
59 
61  delete m_sorted; // shall not be necessary;
62  Container * local = new Container(m_iovs);
63  std::sort(local->begin(), local->end(), boost::bind(std::less<cond::Time_t>(),
64  boost::bind(&Item::sinceTime,_1),
65  boost::bind(&Item::sinceTime,_2)
66  ) );
67  m_sorted = local;
68  return *m_sorted;
69  }
70 
71 
73  std::string const & wrapperToken) {
74  if (!piovs().empty() && ( m_notOrdered || time<piovs().back().sinceTime())) disorder();
75  piovs().push_back(Item(time, wrapperToken));
76  return piovs().size()-1;
77  }
78 
80  if (m_notOrdered) disorder();
81  piovs().pop_back();
82  return piovs().size()-1;
83  }
84 
86  if (time>lastTill()) return iovs().end();
87  IOVSequence::const_iterator p = std::upper_bound(iovs().begin(),iovs().end(),Item(time),
88  boost::bind(std::less<cond::Time_t>(),
89  boost::bind(&Item::sinceTime,_1),
90  boost::bind(&Item::sinceTime,_2)
91  )
92  );
93  return (p!=iovs().begin()) ? p-1 : iovs().end();
94  }
95 
96 
99  return (p!=iovs().end() && (*p).sinceTime()==time) ? p : iovs().end();
100  }
101 
103  return findSince(time)!=iovs().end();
104  }
105 
106 
108  m_notOrdered=true;
109  delete m_sorted; m_sorted=0;
110  }
111 
112 }
const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:22
void push_back(const Tp &x)
Definition: PVector.h:177
type
Definition: HCALResponse.h:22
cond::Time_t lastTill() const
Definition: IOVSequence.h:63
size_t add(cond::Time_t time, std::string const &wrapperToken)
Definition: IOVSequence.cc:72
iterator end()
Definition: PVector.h:67
Container & piovs()
Definition: IOVSequence.h:87
std::string m_metadata
Definition: IOVSequence.h:106
const_iterator find(cond::Time_t time) const
Definition: IOVSequence.cc:85
iterator begin()
Definition: PVector.h:62
Container const & iovs() const
Definition: IOVSequence.cc:54
IOVSequence & operator=(IOVSequence const &rh)
Definition: IOVSequence.cc:36
Container m_iovs
Definition: IOVSequence.h:100
Container::const_iterator const_iterator
Definition: IOVSequence.h:27
Container const & sortMe() const
Definition: IOVSequence.cc:60
TimeType
Definition: Time.h:21
void pop_back()
Definition: PVector.h:182
bool exist(cond::Time_t time) const
Definition: IOVSequence.cc:102
unsigned long long Time_t
Definition: Time.h:16
void loadAll() const
Definition: IOVSequence.cc:48
#define end
Definition: vmac.h:38
const_iterator findSince(cond::Time_t time) const
Definition: IOVSequence.cc:97
cond::IOVElement Item
Definition: IOVSequence.h:24
cond::Time_t sinceTime() const
Definition: IOVElement.h:21
ora::PVector< Item > Container
Definition: IOVSequence.h:25
size_type size() const
Definition: PVector.h:102
#define begin
Definition: vmac.h:31
Container * m_sorted
Definition: IOVSequence.h:117
cond::Time_t m_lastTill
Definition: IOVSequence.h:102