11#ifndef STOREGATE_SGITERATOR_H
12#define STOREGATE_SGITERATOR_H
20#include <boost/iterator/iterator_facade.hpp>
32template <
class ITERATOR>
34 std::bidirectional_iterator<ITERATOR> && std::same_as<typename std::iterator_traits<ITERATOR>::value_type,
DataProxy*>;
48 friend class ::SGImplSvc;
78 template <DataProxyIterator ITERATOR>
79 explicit IteratorBase (ITERATOR itr, ITERATOR itrEnd,
bool isConst);
123 template <DataProxyIterator ITERATOR>
124 StatusCode
setState (ITERATOR itr, ITERATOR itrEnd,
bool isConst);
159 const std::string&
key()
const;
189 public boost::iterator_facade<
192 boost::forward_traversal_tag,
223 template <detail::DataProxyIterator ITERATOR>
247 template <detail::DataProxyIterator ITERATOR>
248 StatusCode
setState (ITERATOR itr, ITERATOR itrEnd);
281 public boost::iterator_facade<
284 boost::forward_traversal_tag >
347 public boost::iterator_facade<
350 boost::forward_traversal_tag >
Exceptions that can be thrown from StoreGate.
Helpers for retrieving the payload held by a DataProxy.
The Athena Transient Store API.
ConstIterator()
Default constructor.
const DATA & dereference() const
Dereference the iterator.
friend class boost::iterator_core_access
bool equal(const ConstIterator &rhs) const
Equality check.
ConstIterator(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Constructor from proxy iterator pair.
StatusCode setState(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Reset state of the iterator.
Iterator()
Default constructor.
Iterator(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Constructor from proxy iterator pair.
StatusCode setState(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Reset state of the iterator.
friend class boost::iterator_core_access
bool equal(const Iterator< DATA > &rhs) const
Equality check.
DATA & dereference() const
Dereference the iterator.
StatusCode setState(ITERATOR itr, ITERATOR itrEnd)
Reset state of the iterator.
TypelessIterator()=default
Default constructor.
DataProxy * dereference() const
Dereference the iterator.
bool equal(const TypelessIterator &rhs) const
Equality check.
StatusCode setState(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Reset state of the iterator.
friend class boost::iterator_core_access
TypelessIterator(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd)
Constructor from proxy iterator pair.
TypelessIterator(ITERATOR itr, ITERATOR itrEnd)
Constructor from iterator pair over DataProxy*.
Implementation class, not to be used directly Iterates over valid proxies in the range.
std::vector< SG::DataProxy * > m_proxies
All proxies in our range, in reverse order.
StatusCode setState(ITERATOR itr, ITERATOR itrEnd, bool isConst)
Reset state of the iterator.
IteratorBase(ITERATOR itr, ITERATOR itrEnd, bool isConst)
Constructor from iterator pair over DataProxy*.
const std::string & key() const
Get the key string with which the current object was stored.
DataProxy * proxy() const
The proxy pointed at by this iterator.
void increment()
Move to the next valid proxy.
~IteratorBase()
Destructor.
IteratorBase & operator=(const IteratorBase &other)
Assignment.
void const_check() const
Const check: throw an exception if we're pointing at a const proxy.
void release()
Remove a reference count from all proxies in our range.
friend class boost::iterator_core_access
IteratorBase()=default
Default constructor.
StatusCode setState(SG::ConstProxyIterator itr, SG::ConstProxyIterator itrEnd, bool isConst)
Reset state of the iterator.
bool eql(const IteratorBase &rhs) const
Equality check.
void addRef()
Add a reference count to all proxies in our range.
A bidirectional_iterator over DataProxy*.
ProxyMap::const_iterator ConstProxyIterator