Commit bab3a108 authored by neverlord's avatar neverlord

intrusive::iterator -> intrusive::forward_iterator

parent 092a6db1
......@@ -147,7 +147,7 @@ nobase_library_include_HEADERS = \
cppa/fsm_actor.hpp \
cppa/get.hpp \
cppa/group.hpp \
cppa/intrusive/iterator.hpp \
cppa/intrusive/forward_iterator.hpp \
cppa/intrusive/single_reader_queue.hpp \
cppa/intrusive/singly_linked_list.hpp \
cppa/intrusive_ptr.hpp \
......
......@@ -253,6 +253,6 @@ cppa/match.hpp
cppa/partial_function.hpp
src/partial_function.cpp
cppa/intrusive/singly_linked_list.hpp
cppa/intrusive/iterator.hpp
cppa/intrusive/forward_iterator.hpp
unit_testing/test__intrusive_containers.cpp
examples/dancing_kirby.cpp
......@@ -39,7 +39,7 @@ namespace cppa { namespace intrusive {
* @brief A forward iterator for intrusive lists.
*/
template<class T>
class iterator // : std::iterator<forward_iterator_tag, T>
class forward_iterator
{
public:
......@@ -52,20 +52,20 @@ class iterator // : std::iterator<forward_iterator_tag, T>
typedef ptrdiff_t difference_type;
typedef std::forward_iterator_tag iterator_category;
inline iterator(T* ptr) : m_ptr(ptr) { }
inline forward_iterator(T* ptr) : m_ptr(ptr) { }
iterator(iterator const&) = default;
iterator& operator=(iterator const&) = default;
forward_iterator(forward_iterator const&) = default;
forward_iterator& operator=(forward_iterator const&) = default;
inline iterator& operator++()
inline forward_iterator& operator++()
{
m_ptr = m_ptr->next;
return *this;
}
inline iterator operator++(int)
inline forward_iterator operator++(int)
{
iterator tmp{*this};
forward_iterator tmp{*this};
m_ptr = m_ptr->next;
return tmp;
}
......@@ -97,91 +97,93 @@ class iterator // : std::iterator<forward_iterator_tag, T>
};
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator==(iterator<T> const& lhs, iterator<T> const& rhs)
inline bool operator==(forward_iterator<T> const& lhs,
forward_iterator<T> const& rhs)
{
return lhs.ptr() == rhs.ptr();
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator==(iterator<T> const& lhs, T const* rhs)
inline bool operator==(forward_iterator<T> const& lhs, T const* rhs)
{
return lhs.ptr() == rhs;
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator==(T const* lhs, iterator<T> const& rhs)
inline bool operator==(T const* lhs, forward_iterator<T> const& rhs)
{
return lhs == rhs.ptr();
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator==(iterator<T> const& lhs, decltype(nullptr))
inline bool operator==(forward_iterator<T> const& lhs, decltype(nullptr))
{
return lhs.ptr() == nullptr;
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator==(decltype(nullptr), iterator<T> const& rhs)
inline bool operator==(decltype(nullptr), forward_iterator<T> const& rhs)
{
return rhs.ptr() == nullptr;
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator!=(iterator<T> const& lhs, iterator<T> const& rhs)
inline bool operator!=(forward_iterator<T> const& lhs,
forward_iterator<T> const& rhs)
{
return !(lhs == rhs);
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator!=(iterator<T> const& lhs, T const* rhs)
inline bool operator!=(forward_iterator<T> const& lhs, T const* rhs)
{
return !(lhs == rhs);
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator!=(T const* lhs, iterator<T> const& rhs)
inline bool operator!=(T const* lhs, forward_iterator<T> const& rhs)
{
return !(lhs == rhs);
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator!=(iterator<T> const& lhs, decltype(nullptr))
inline bool operator!=(forward_iterator<T> const& lhs, decltype(nullptr))
{
return !(lhs == nullptr);
}
/**
* @relates iterator
* @relates forward_iterator
*/
template<class T>
inline bool operator!=(decltype(nullptr), iterator<T> const& rhs)
inline bool operator!=(decltype(nullptr), forward_iterator<T> const& rhs)
{
return !(nullptr == rhs);
}
......
......@@ -35,13 +35,14 @@
#include <utility>
#include "cppa/config.hpp"
#include "cppa/intrusive/iterator.hpp"
#include "cppa/intrusive/forward_iterator.hpp"
namespace cppa { namespace intrusive {
/**
* @brief A singly linked list similar to std::forward_list
* but intrusive and with push_back() support.
* @tparam T A class providing a @p next pointer and a default constructor.
*/
template<class T>
class singly_linked_list
......@@ -60,8 +61,8 @@ class singly_linked_list
typedef value_type* pointer;
typedef value_type const* const_pointer;
typedef ::cppa::intrusive::iterator<value_type> iterator;
typedef ::cppa::intrusive::iterator<value_type const> const_iterator;
typedef forward_iterator<value_type> iterator;
typedef forward_iterator<value_type const> const_iterator;
singly_linked_list() : m_head(), m_tail(&m_head) { }
......@@ -158,7 +159,7 @@ class singly_linked_list
}
/**
* @brief Inserts @p what after @p i.
* @brief Inserts @p what after @p pos.
* @returns An iterator to the inserted element.
*/
iterator insert_after(iterator pos, pointer what)
......@@ -326,7 +327,7 @@ class singly_linked_list
}
/**
* @brief Removes all elements for which predicate @p returns @p true.
* @brief Removes all elements for which predicate @p p returns @p true.
*/
template<typename UnaryPredicate>
void remove_if(UnaryPredicate p)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment