diff options
Diffstat (limited to 'boost/intrusive/detail/slist_iterator.hpp')
-rw-r--r-- | boost/intrusive/detail/slist_iterator.hpp | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/boost/intrusive/detail/slist_iterator.hpp b/boost/intrusive/detail/slist_iterator.hpp index 1699064ec1..63ce5c3fef 100644 --- a/boost/intrusive/detail/slist_iterator.hpp +++ b/boost/intrusive/detail/slist_iterator.hpp @@ -23,6 +23,7 @@ #endif #include <boost/intrusive/detail/config_begin.hpp> +#include <boost/intrusive/detail/workaround.hpp> #include <boost/intrusive/detail/std_fwd.hpp> #include <boost/intrusive/detail/iiterator.hpp> #include <boost/intrusive/detail/mpl.hpp> @@ -50,67 +51,67 @@ class slist_iterator typedef typename types_t::const_value_traits_ptr const_value_traits_ptr; public: - typedef typename types_t::iterator_traits::difference_type difference_type; - typedef typename types_t::iterator_traits::value_type value_type; - typedef typename types_t::iterator_traits::pointer pointer; - typedef typename types_t::iterator_traits::reference reference; - typedef typename types_t::iterator_traits::iterator_category iterator_category; + typedef typename types_t::iterator_type::difference_type difference_type; + typedef typename types_t::iterator_type::value_type value_type; + typedef typename types_t::iterator_type::pointer pointer; + typedef typename types_t::iterator_type::reference reference; + typedef typename types_t::iterator_type::iterator_category iterator_category; - slist_iterator() + BOOST_INTRUSIVE_FORCEINLINE slist_iterator() {} - explicit slist_iterator(const node_ptr & nodeptr, const const_value_traits_ptr &traits_ptr) + BOOST_INTRUSIVE_FORCEINLINE explicit slist_iterator(const node_ptr & nodeptr, const const_value_traits_ptr &traits_ptr) : members_(nodeptr, traits_ptr) {} - slist_iterator(slist_iterator<ValueTraits, false> const& other) + BOOST_INTRUSIVE_FORCEINLINE slist_iterator(slist_iterator<ValueTraits, false> const& other) : members_(other.pointed_node(), other.get_value_traits()) {} - const node_ptr &pointed_node() const + BOOST_INTRUSIVE_FORCEINLINE const node_ptr &pointed_node() const { return members_.nodeptr_; } - slist_iterator &operator=(const node_ptr &node) + BOOST_INTRUSIVE_FORCEINLINE slist_iterator &operator=(const node_ptr &node) { members_.nodeptr_ = node; return static_cast<slist_iterator&>(*this); } - const_value_traits_ptr get_value_traits() const + BOOST_INTRUSIVE_FORCEINLINE const_value_traits_ptr get_value_traits() const { return members_.get_ptr(); } public: - slist_iterator& operator++() + BOOST_INTRUSIVE_FORCEINLINE slist_iterator& operator++() { members_.nodeptr_ = node_traits::get_next(members_.nodeptr_); return static_cast<slist_iterator&> (*this); } - slist_iterator operator++(int) + BOOST_INTRUSIVE_FORCEINLINE slist_iterator operator++(int) { slist_iterator result (*this); members_.nodeptr_ = node_traits::get_next(members_.nodeptr_); return result; } - friend bool operator== (const slist_iterator& l, const slist_iterator& r) + BOOST_INTRUSIVE_FORCEINLINE friend bool operator== (const slist_iterator& l, const slist_iterator& r) { return l.pointed_node() == r.pointed_node(); } - friend bool operator!= (const slist_iterator& l, const slist_iterator& r) + BOOST_INTRUSIVE_FORCEINLINE friend bool operator!= (const slist_iterator& l, const slist_iterator& r) { return !(l == r); } - reference operator*() const + BOOST_INTRUSIVE_FORCEINLINE reference operator*() const { return *operator->(); } - pointer operator->() const + BOOST_INTRUSIVE_FORCEINLINE pointer operator->() const { return this->operator_arrow(detail::bool_<stateful_value_traits>()); } - slist_iterator<ValueTraits, false> unconst() const + BOOST_INTRUSIVE_FORCEINLINE slist_iterator<ValueTraits, false> unconst() const { return slist_iterator<ValueTraits, false>(this->pointed_node(), this->get_value_traits()); } private: - pointer operator_arrow(detail::false_) const + BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::false_) const { return ValueTraits::to_value_ptr(members_.nodeptr_); } - pointer operator_arrow(detail::true_) const + BOOST_INTRUSIVE_FORCEINLINE pointer operator_arrow(detail::true_) const { return this->get_value_traits()->to_value_ptr(members_.nodeptr_); } iiterator_members<node_ptr, const_value_traits_ptr, stateful_value_traits> members_; |