mirror of
https://github.com/boostorg/container.git
synced 2026-07-08 02:40:53 +02:00
Add BOOST_CONTAINER_FORCEINLINE to basic iterator operations
This commit is contained in:
@@ -169,15 +169,15 @@ class vec_iterator
|
||||
, nat>::type nonconst_iterator;
|
||||
|
||||
public:
|
||||
inline
|
||||
BOOST_CONTAINER_FORCEINLINE
|
||||
const Pointer &get_ptr() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return m_ptr; }
|
||||
|
||||
inline
|
||||
BOOST_CONTAINER_FORCEINLINE
|
||||
Pointer &get_ptr() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return m_ptr; }
|
||||
|
||||
inline explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE explicit vec_iterator(Pointer ptr) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
: m_ptr(ptr)
|
||||
{}
|
||||
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||
@@ -185,93 +185,93 @@ class vec_iterator
|
||||
public:
|
||||
|
||||
//Constructors
|
||||
inline vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
: m_ptr() //Value initialization to achieve "null iterators" (N3644)
|
||||
{}
|
||||
|
||||
inline vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
: m_ptr(other.get_ptr())
|
||||
{}
|
||||
|
||||
inline vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator(const nonconst_iterator &other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
: m_ptr(other.get_ptr())
|
||||
{}
|
||||
|
||||
inline vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator & operator=(const vec_iterator& other) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ m_ptr = other.get_ptr(); return *this; }
|
||||
|
||||
//Pointer like operators
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); return *m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); return m_ptr[off]; }
|
||||
|
||||
//Increment / Decrement
|
||||
inline vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); ++m_ptr; return *this; }
|
||||
|
||||
inline vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr++); }
|
||||
|
||||
inline vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); --m_ptr; return *this; }
|
||||
|
||||
inline vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(!!m_ptr); return vec_iterator(m_ptr--); }
|
||||
|
||||
//Arithmetic
|
||||
inline vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(m_ptr || !off); m_ptr += off; return *this; }
|
||||
|
||||
inline vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE vec_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(m_ptr || !off); m_ptr -= off; return *this; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend vec_iterator operator+(const vec_iterator &x, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(x.m_ptr || !off); return vec_iterator(x.m_ptr+off); }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend vec_iterator operator+(difference_type off, vec_iterator right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(right.m_ptr || !off); right.m_ptr += off; return right; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend vec_iterator operator-(vec_iterator left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ BOOST_ASSERT(left.m_ptr || !off); left.m_ptr -= off; return left; }
|
||||
|
||||
//Difference
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend difference_type operator-(const vec_iterator &left, const vec_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return left.m_ptr - right.m_ptr; }
|
||||
|
||||
//Comparison operators
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator== (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr == r.m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator!= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr != r.m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator< (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr < r.m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator<= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr <= r.m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator> (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr > r.m_ptr; }
|
||||
|
||||
BOOST_CONTAINER_NODISCARD inline
|
||||
BOOST_CONTAINER_NODISCARD BOOST_CONTAINER_FORCEINLINE
|
||||
friend bool operator>= (const vec_iterator& l, const vec_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return l.m_ptr >= r.m_ptr; }
|
||||
};
|
||||
@@ -282,7 +282,7 @@ struct vector_insert_ordered_cursor
|
||||
typedef typename iterator_traits<BiDirPosConstIt>::value_type size_type;
|
||||
typedef typename iterator_traits<BiDirValueIt>::reference reference;
|
||||
|
||||
inline vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
|
||||
BOOST_CONTAINER_FORCEINLINE vector_insert_ordered_cursor(BiDirPosConstIt posit, BiDirValueIt valueit)
|
||||
: last_position_it(posit), last_value_it(valueit)
|
||||
{}
|
||||
|
||||
@@ -296,10 +296,10 @@ struct vector_insert_ordered_cursor
|
||||
}
|
||||
}
|
||||
|
||||
inline size_type get_pos() const
|
||||
BOOST_CONTAINER_FORCEINLINE size_type get_pos() const
|
||||
{ return *last_position_it; }
|
||||
|
||||
inline reference get_val()
|
||||
BOOST_CONTAINER_FORCEINLINE reference get_val()
|
||||
{ return *last_value_it; }
|
||||
|
||||
BiDirPosConstIt last_position_it;
|
||||
@@ -307,11 +307,11 @@ struct vector_insert_ordered_cursor
|
||||
};
|
||||
|
||||
template<class Pointer, bool IsConst>
|
||||
inline const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE const Pointer &vector_iterator_get_ptr(const vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return it.get_ptr(); }
|
||||
|
||||
template<class Pointer, bool IsConst>
|
||||
inline Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
BOOST_CONTAINER_FORCEINLINE Pointer &get_ptr(vec_iterator<Pointer, IsConst> &it) BOOST_NOEXCEPT_OR_NOTHROW
|
||||
{ return it.get_ptr(); }
|
||||
|
||||
struct initial_capacity_t {};
|
||||
|
||||
Reference in New Issue
Block a user