.. _program_listing_file_src_navtk_utils_IteratorAdapter.hpp: Program Listing for File IteratorAdapter.hpp ============================================ |exhale_lsh| :ref:`Return to documentation for file ` (``src/navtk/utils/IteratorAdapter.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include #include #include namespace navtk { namespace utils { template class IteratorAdapter { private: Iterator it; public: using difference_type = std::ptrdiff_t; using value_type = std::remove_const_t; using pointer = value_type*; using reference = value_type&; using iterator_category = std::random_access_iterator_tag; explicit IteratorAdapter(Iterator it) : it(it) {} operator Iterator() { return it; } bool operator==(const IteratorAdapter& rhs) { return it == rhs.it; } bool operator!=(const IteratorAdapter& rhs) { return !(it == rhs.it); } IteratorAdapter& operator++() { ++it; return *this; } IteratorAdapter operator++(int) { auto t = *this; ++it; return t; } IteratorAdapter operator+(int amount) const { return IteratorAdapter(it + amount); } IteratorAdapter operator-(int amount) const { return IteratorAdapter(it - amount); } IteratorAdapter& operator--() { --it; return *this; } IteratorAdapter operator--(int) { auto t = *this; --it; return t; } std::ptrdiff_t operator-(IteratorAdapter const& rhs) const { return it - rhs.it; } IteratorAdapter& operator+=(int amount) { it += amount; return *this; } IteratorAdapter& operator-=(int amount) { it -= amount; return *this; } bool operator<(IteratorAdapter const& rhs) const { return it < rhs.it; } bool operator<=(IteratorAdapter const& rhs) const { return it <= rhs.it; } bool operator>(IteratorAdapter const& rhs) const { return it > rhs.it; } bool operator>=(IteratorAdapter const& rhs) const { return it >= rhs.it; } auto operator[](int index) const { return get_value(it + index); } auto operator*() const { return get_value(it); } auto operator->() const { return &get_value(it); } }; } // namespace utils } // namespace navtk