14#ifndef ATHCONTAINERS_TOOLS_DVLITERATOR_H
15#define ATHCONTAINERS_TOOLS_DVLITERATOR_H
22#include <boost/iterator/iterator_adaptor.hpp>
23#include <boost/version.hpp>
28#if BOOST_VERSION < 105000
43template <
class T,
class U>
44struct operator_arrow_result<T*,
88 typedef typename DVL::BaseContainer::const_iterator::difference_type
difference_type;
144 typename BaseContainer::const_iterator
m_it;
172 :
public boost::iterator_adaptor<iterator<DVL>,
173 typename DVL::BaseContainer::iterator,
174 typename DVL::value_type,
181 typename DVL::BaseContainer::
182 const_iterator::iterator_category,
183 typename DVL::ElementProxy>
187 typedef boost::iterator_adaptor<
iterator,
188 typename DVL::BaseContainer::iterator,
189 typename DVL::value_type,
191 typename DVL::BaseContainer::
192 const_iterator::iterator_category,
311 typename iterator_adaptor_::difference_type
313 {
return this->
base() - i.base(); }
319 typename iterator_adaptor_::difference_type
328 friend class boost::iterator_core_access;
357 return i1 ==
typename DVL::const_iterator (i2);
364 return i1 !=
typename DVL::const_iterator (i2);
371 return i1 <
typename DVL::const_iterator (i2);
378 return i1 >
typename DVL::const_iterator (i2);
385 return i1 <=
typename DVL::const_iterator (i2);
392 return i1 >=
typename DVL::const_iterator (i2);
398typename DVL::const_iterator::difference_type
402 return i1 -
typename DVL::const_iterator (i2);
casting operations for DataVector/DataList.
bool operator!=(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
bool operator<=(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
bool operator>(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
bool operator>=(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
bool operator<(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
bool operator==(const typename DVL::const_iterator &i1, const DataModel_detail::iterator< DVL > &i2)
DVL::const_iterator::difference_type operator-(typename DVL::const_iterator i1, DataModel_detail::iterator< DVL > i2)
Proxy for lvalue access to DataVector/DataList elements.
Define macros for attributes used to control the static checker.
Proxy for lvalue access to DataVector/DataList elements.
bool operator>(const const_iterator &other) const
bool operator>=(const const_iterator &other) const
DataVector::BaseContainer::const_iterator::iterator_category iterator_category
const_iterator()
Default constructor.
DataVector::BaseContainer BaseContainer
reference operator*() const
Dereference. Operator-> doesn't make sense here.
const_iterator operator-(difference_type n) const
bool operator==(const const_iterator &other) const
Comparisons.
const DVL::value_type dereference() const
Dereference the iterator.
bool operator!=(const const_iterator &other) const
const_iterator(typename BaseContainer::const_iterator it)
Constructor.
DataVector::const_value_type value_type
BaseContainer::const_iterator m_it
const_iterator operator--(int)
DataVector::BaseContainer::const_iterator::difference_type difference_type
const_iterator & operator+=(difference_type n)
Arithmetic.
const_iterator & operator-=(difference_type n)
const_iterator & operator++()
Increment / decrement.
const_iterator operator+(difference_type n) const
const_iterator operator++(int)
bool operator<=(const const_iterator &other) const
const_iterator & operator--()
reference operator[](difference_type n) const
bool operator<(const const_iterator &other) const
(Non-const) Iterator class for DataVector/DataList.
bool operator>=(const iterator &i) const
ConstDataVector::BaseContainer BaseContainer
bool operator==(const iterator &i) const
ConstDataVector::ElementProxy ElementProxy
iterator(typename BaseContainer::iterator it, DVL *container)
Constructor.
ConstDataVector Container
boost::iterator_adaptor< iterator, typename ConstDataVector::BaseContainer::iterator, typename ConstDataVector::value_type, typename ConstDataVector::BaseContainer::const_iterator::iterator_category, typename ConstDataVector::ElementProxy > iterator_adaptor_
DVL::pointer operator->()
bool operator<=(const iterator &i) const
const DVL * container() const
Return the container holding the referenced element.
ConstDataVector * container()
ConstDataVector::const_iterator const_iterator
void testInsert(const char *op)
Test if we can insert; raise an exception if not.
ElementProxy operator[](int n) const
Element access.
SG::OwnershipPolicy ownPolicy() const
Return the ownership policy of the container from which this iterator was created.
ElementProxy dereference() const
Dereference the iterator.
ConstDataVector * m_container
bool operator<(const iterator &i) const
iterator()
Default constructor.
bool operator!=(const iterator &i) const
iterator_adaptor_::difference_type operator-(const iterator &i) const
bool operator>(const iterator &i) const
dvl_tinfo_map_t *s_dvl_tinfo_map ATLAS_THREAD_SAFE
casting operations for DataVector/DataList.
DataModel_detail::ElementProxy< U > Reference
static type make(Reference)