pit-iterator.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014-2018, Regents of the University of California,
4  * Arizona Board of Regents,
5  * Colorado State University,
6  * University Pierre & Marie Curie, Sorbonne University,
7  * Washington University in St. Louis,
8  * Beijing Institute of Technology,
9  * The University of Memphis.
10  *
11  * This file is part of NFD (Named Data Networking Forwarding Daemon).
12  * See AUTHORS.md for complete list of NFD authors and contributors.
13  *
14  * NFD is free software: you can redistribute it and/or modify it under the terms
15  * of the GNU General Public License as published by the Free Software Foundation,
16  * either version 3 of the License, or (at your option) any later version.
17  *
18  * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20  * PURPOSE. See the GNU General Public License for more details.
21  *
22  * You should have received a copy of the GNU General Public License along with
23  * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24  */
25 
26 #ifndef NFD_DAEMON_TABLE_PIT_ITERATOR_HPP
27 #define NFD_DAEMON_TABLE_PIT_ITERATOR_HPP
28 
29 #include "name-tree.hpp"
30 #include "pit-entry.hpp"
31 
32 namespace nfd {
33 namespace pit {
34 
37 class Iterator
38 {
39 public:
40  using iterator_category = std::forward_iterator_tag;
41  using value_type = const Entry;
42  using difference_type = std::ptrdiff_t;
43  using pointer = value_type*;
45 
50  explicit
51  Iterator(const NameTree::const_iterator& ntIt = NameTree::const_iterator(), size_t iPitEntry = 0);
52 
53  const Entry&
54  operator*() const
55  {
56  return *this->operator->();
57  }
58 
59  const shared_ptr<Entry>&
60  operator->() const
61  {
62  BOOST_ASSERT(m_ntIt != NameTree::const_iterator());
63  BOOST_ASSERT(m_iPitEntry < m_ntIt->getPitEntries().size());
64  return m_ntIt->getPitEntries()[m_iPitEntry];
65  }
66 
67  Iterator&
68  operator++();
69 
70  Iterator
71  operator++(int);
72 
73  bool
74  operator==(const Iterator& other) const
75  {
76  return m_ntIt == other.m_ntIt && m_iPitEntry == other.m_iPitEntry;
77  }
78 
79  bool
80  operator!=(const Iterator& other) const
81  {
82  return !this->operator==(other);
83  }
84 
85 private:
87  size_t m_iPitEntry;
88 };
89 
90 } // namespace pit
91 } // namespace nfd
92 
93 #endif // NFD_DAEMON_TABLE_PIT_ITERATOR_HPP
std::ptrdiff_t difference_type
PIT iterator.
bool operator!=(const Iterator &other) const
const std::vector< shared_ptr< pit::Entry > > & getPitEntries() const
An Interest table entry.
Definition: pit-entry.hpp:58
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
Definition: algorithm.hpp:32
Iterator & operator++()
Iterator(const NameTree::const_iterator &ntIt=NameTree::const_iterator(), size_t iPitEntry=0)
constructor
std::forward_iterator_tag iterator_category
const shared_ptr< Entry > & operator->() const
const Entry & operator*() const
bool operator==(const Iterator &other) const