ATLAS Offline Software
Loading...
Searching...
No Matches
RangeIterator.h
Go to the documentation of this file.
1
2/*
3 Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
4*/
5
6#ifndef Identifier_RangeIterator_h
7#define Identifier_RangeIterator_h
8
10#include <vector>
11class Range;
12
20 public:
21 using iterator_category = std::forward_iterator_tag;
22 using difference_type = std::ptrdiff_t;
24 using pointer = ExpandedIdentifier*; // or also value_type*
25 using reference = ExpandedIdentifier&; // or also value_type&
26
27 RangeIterator() = default;
28 RangeIterator(Range& range);
30
31 RangeIterator begin() const;
32 RangeIterator end() const;
33
34 pointer operator->() { return &m_id; }
36 bool operator == (const RangeIterator& other) const;
37
38 private:
39 std::vector<std::size_t> m_indices;
43 const Range* m_range{};
44};
45
47 public:
48 using iterator_category = std::forward_iterator_tag;
49 using difference_type = std::ptrdiff_t;
51 using pointer = ExpandedIdentifier*; // or also value_type*
52 using reference = ExpandedIdentifier&; // or also value_type&
53
54 ConstRangeIterator () = default;
55 ConstRangeIterator (const Range& range);
57 ConstRangeIterator end() const;
58
60
61 const ExpandedIdentifier& operator *() const;
62 bool operator == (const ConstRangeIterator& other) const;
63
64 private:
65 std::vector<std::size_t> m_indices;
69 const Range* m_range{};
70};
71
72#endif
bool operator==(const ConstRangeIterator &other) const
const ExpandedIdentifier & operator*() const
ExpandedIdentifier * pointer
ExpandedIdentifier & reference
ConstRangeIterator operator++()
std::ptrdiff_t difference_type
ConstRangeIterator()=default
const Range * m_range
ExpandedIdentifier m_max
ConstRangeIterator end() const
ExpandedIdentifier m_id
std::vector< std::size_t > m_indices
ExpandedIdentifier m_min
std::forward_iterator_tag iterator_category
ConstRangeIterator begin() const
ExpandedIdentifier value_type
This iterator is able to generate all possible identifiers, from a fully bounded Range.
ExpandedIdentifier m_min
const Range * m_range
ExpandedIdentifier m_max
std::vector< std::size_t > m_indices
RangeIterator()=default
ExpandedIdentifier * pointer
RangeIterator & operator++()
RangeIterator end() const
ExpandedIdentifier & operator*()
bool operator==(const RangeIterator &other) const
std::ptrdiff_t difference_type
ExpandedIdentifier value_type
pointer operator->()
ExpandedIdentifier m_id
RangeIterator begin() const
std::forward_iterator_tag iterator_category
ExpandedIdentifier & reference
A Range describes the possible ranges for the field values of an ExpandedIdentifier.