forked from boostorg/container
Add BOOST_CONTAINER_FORCEINLINE
This commit is contained in:
@@ -190,17 +190,17 @@ class allocator
|
|||||||
|
|
||||||
//!Deallocates previously allocated memory.
|
//!Deallocates previously allocated memory.
|
||||||
//!Never throws
|
//!Never throws
|
||||||
void deallocate(pointer ptr, size_type) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void deallocate(pointer ptr, size_type) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ dlmalloc_free(ptr); }
|
{ dlmalloc_free(ptr); }
|
||||||
|
|
||||||
//!Returns the maximum number of elements that could be allocated.
|
//!Returns the maximum number of elements that could be allocated.
|
||||||
//!Never throws
|
//!Never throws
|
||||||
size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return size_type(-1)/sizeof(T); }
|
{ return size_type(-1)/sizeof(T); }
|
||||||
|
|
||||||
//!Swaps two allocators, does nothing
|
//!Swaps two allocators, does nothing
|
||||||
//!because this allocator is stateless
|
//!because this allocator is stateless
|
||||||
friend void swap(self_t &, self_t &) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend void swap(self_t &, self_t &) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{}
|
{}
|
||||||
|
|
||||||
//!An allocator always compares to true, as memory allocated with one
|
//!An allocator always compares to true, as memory allocated with one
|
||||||
@@ -210,7 +210,7 @@ class allocator
|
|||||||
|
|
||||||
//!An allocator always compares to false, as memory allocated with one
|
//!An allocator always compares to false, as memory allocated with one
|
||||||
//!instance can be deallocated by another instance
|
//!instance can be deallocated by another instance
|
||||||
friend bool operator!=(const allocator &, const allocator &) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const allocator &, const allocator &) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return false; }
|
{ return false; }
|
||||||
|
|
||||||
//!An advanced function that offers in-place expansion shrink to fit and new allocation
|
//!An advanced function that offers in-place expansion shrink to fit and new allocation
|
||||||
@@ -246,7 +246,7 @@ class allocator
|
|||||||
//!must be deallocated only with deallocate_one().
|
//!must be deallocated only with deallocate_one().
|
||||||
//!Throws bad_alloc if there is no enough memory
|
//!Throws bad_alloc if there is no enough memory
|
||||||
//!This function is available only with Version == 2
|
//!This function is available only with Version == 2
|
||||||
pointer allocate_one()
|
BOOST_CONTAINER_FORCEINLINE pointer allocate_one()
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT(( Version > 1 ));
|
BOOST_STATIC_ASSERT(( Version > 1 ));
|
||||||
return this->allocate(1);
|
return this->allocate(1);
|
||||||
@@ -255,7 +255,7 @@ class allocator
|
|||||||
//!Allocates many elements of size == 1.
|
//!Allocates many elements of size == 1.
|
||||||
//!Elements must be individually deallocated with deallocate_one()
|
//!Elements must be individually deallocated with deallocate_one()
|
||||||
//!This function is available only with Version == 2
|
//!This function is available only with Version == 2
|
||||||
void allocate_individual(std::size_t num_elements, multiallocation_chain &chain)
|
BOOST_CONTAINER_FORCEINLINE void allocate_individual(std::size_t num_elements, multiallocation_chain &chain)
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT(( Version > 1 ));
|
BOOST_STATIC_ASSERT(( Version > 1 ));
|
||||||
this->allocate_many(1, num_elements, chain);
|
this->allocate_many(1, num_elements, chain);
|
||||||
@@ -273,7 +273,7 @@ class allocator
|
|||||||
|
|
||||||
//!Deallocates memory allocated with allocate_one() or allocate_individual().
|
//!Deallocates memory allocated with allocate_one() or allocate_individual().
|
||||||
//!This function is available only with Version == 2
|
//!This function is available only with Version == 2
|
||||||
void deallocate_individual(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void deallocate_individual(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT(( Version > 1 ));
|
BOOST_STATIC_ASSERT(( Version > 1 ));
|
||||||
return this->deallocate_many(chain);
|
return this->deallocate_many(chain);
|
||||||
|
@@ -141,16 +141,16 @@ class deque_iterator
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
Pointer get_cur() const { return m_cur; }
|
BOOST_CONTAINER_FORCEINLINE Pointer get_cur() const { return m_cur; }
|
||||||
Pointer get_first() const { return m_first; }
|
BOOST_CONTAINER_FORCEINLINE Pointer get_first() const { return m_first; }
|
||||||
Pointer get_last() const { return m_last; }
|
BOOST_CONTAINER_FORCEINLINE Pointer get_last() const { return m_last; }
|
||||||
index_pointer get_node() const { return m_node; }
|
BOOST_CONTAINER_FORCEINLINE index_pointer get_node() const { return m_node; }
|
||||||
|
|
||||||
deque_iterator(val_alloc_ptr x, index_pointer y) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator(val_alloc_ptr x, index_pointer y) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: m_cur(x), m_first(*y), m_last(*y + s_buffer_size()), m_node(y)
|
: m_cur(x), m_first(*y), m_last(*y + s_buffer_size()), m_node(y)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
deque_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: m_cur(), m_first(), m_last(), m_node() //Value initialization to achieve "null iterators" (N3644)
|
: m_cur(), m_first(), m_last(), m_node() //Value initialization to achieve "null iterators" (N3644)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -167,10 +167,10 @@ class deque_iterator
|
|||||||
return deque_iterator<Pointer, false>(this->get_cur(), this->get_first(), this->get_last(), this->get_node());
|
return deque_iterator<Pointer, false>(this->get_cur(), this->get_first(), this->get_last(), this->get_node());
|
||||||
}
|
}
|
||||||
|
|
||||||
reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return *this->m_cur; }
|
{ return *this->m_cur; }
|
||||||
|
|
||||||
pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->m_cur; }
|
{ return this->m_cur; }
|
||||||
|
|
||||||
difference_type operator-(const deque_iterator& x) const BOOST_NOEXCEPT_OR_NOTHROW
|
difference_type operator-(const deque_iterator& x) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
@@ -192,7 +192,7 @@ class deque_iterator
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
deque_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
deque_iterator tmp(*this);
|
deque_iterator tmp(*this);
|
||||||
++*this;
|
++*this;
|
||||||
@@ -209,7 +209,7 @@ class deque_iterator
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
deque_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
deque_iterator tmp(*this);
|
deque_iterator tmp(*this);
|
||||||
--*this;
|
--*this;
|
||||||
@@ -232,44 +232,44 @@ class deque_iterator
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
deque_iterator operator+(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator operator+(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ deque_iterator tmp(*this); return tmp += n; }
|
{ deque_iterator tmp(*this); return tmp += n; }
|
||||||
|
|
||||||
deque_iterator& operator-=(difference_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator& operator-=(difference_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return *this += -n; }
|
{ return *this += -n; }
|
||||||
|
|
||||||
deque_iterator operator-(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque_iterator operator-(difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ deque_iterator tmp(*this); return tmp -= n; }
|
{ deque_iterator tmp(*this); return tmp -= n; }
|
||||||
|
|
||||||
reference operator[](difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return *(*this + n); }
|
{ return *(*this + n); }
|
||||||
|
|
||||||
friend bool operator==(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_cur == r.m_cur; }
|
{ return l.m_cur == r.m_cur; }
|
||||||
|
|
||||||
friend bool operator!=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_cur != r.m_cur; }
|
{ return l.m_cur != r.m_cur; }
|
||||||
|
|
||||||
friend bool operator<(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return (l.m_node == r.m_node) ? (l.m_cur < r.m_cur) : (l.m_node < r.m_node); }
|
{ return (l.m_node == r.m_node) ? (l.m_cur < r.m_cur) : (l.m_node < r.m_node); }
|
||||||
|
|
||||||
friend bool operator>(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return r < l; }
|
{ return r < l; }
|
||||||
|
|
||||||
friend bool operator<=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return !(r < l); }
|
{ return !(r < l); }
|
||||||
|
|
||||||
friend bool operator>=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const deque_iterator& l, const deque_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return !(l < r); }
|
{ return !(l < r); }
|
||||||
|
|
||||||
void priv_set_node(index_pointer new_node) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void priv_set_node(index_pointer new_node) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
this->m_node = new_node;
|
this->m_node = new_node;
|
||||||
this->m_first = *new_node;
|
this->m_first = *new_node;
|
||||||
this->m_last = this->m_first + this->s_buffer_size();
|
this->m_last = this->m_first + this->s_buffer_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
friend deque_iterator operator+(difference_type n, deque_iterator x) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend deque_iterator operator+(difference_type n, deque_iterator x) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return x += n; }
|
{ return x += n; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -308,37 +308,37 @@ class deque_base
|
|||||||
typedef deque_value_traits<val_alloc_val> traits_t;
|
typedef deque_value_traits<val_alloc_val> traits_t;
|
||||||
typedef ptr_alloc_t map_allocator_type;
|
typedef ptr_alloc_t map_allocator_type;
|
||||||
|
|
||||||
static size_type s_buffer_size() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE static size_type s_buffer_size() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return deque_buf_size<val_alloc_val>::value; }
|
{ return deque_buf_size<val_alloc_val>::value; }
|
||||||
|
|
||||||
val_alloc_ptr priv_allocate_node()
|
BOOST_CONTAINER_FORCEINLINE val_alloc_ptr priv_allocate_node()
|
||||||
{ return this->alloc().allocate(s_buffer_size()); }
|
{ return this->alloc().allocate(s_buffer_size()); }
|
||||||
|
|
||||||
void priv_deallocate_node(val_alloc_ptr p) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void priv_deallocate_node(val_alloc_ptr p) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ this->alloc().deallocate(p, s_buffer_size()); }
|
{ this->alloc().deallocate(p, s_buffer_size()); }
|
||||||
|
|
||||||
ptr_alloc_ptr priv_allocate_map(size_type n)
|
BOOST_CONTAINER_FORCEINLINE ptr_alloc_ptr priv_allocate_map(size_type n)
|
||||||
{ return this->ptr_alloc().allocate(n); }
|
{ return this->ptr_alloc().allocate(n); }
|
||||||
|
|
||||||
void priv_deallocate_map(ptr_alloc_ptr p, size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void priv_deallocate_map(ptr_alloc_ptr p, size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ this->ptr_alloc().deallocate(p, n); }
|
{ this->ptr_alloc().deallocate(p, n); }
|
||||||
|
|
||||||
typedef dtl::deque_iterator<val_alloc_ptr, false> iterator;
|
typedef dtl::deque_iterator<val_alloc_ptr, false> iterator;
|
||||||
typedef dtl::deque_iterator<val_alloc_ptr, true > const_iterator;
|
typedef dtl::deque_iterator<val_alloc_ptr, true > const_iterator;
|
||||||
|
|
||||||
deque_base(size_type num_elements, const allocator_type& a)
|
BOOST_CONTAINER_FORCEINLINE deque_base(size_type num_elements, const allocator_type& a)
|
||||||
: members_(a)
|
: members_(a)
|
||||||
{ this->priv_initialize_map(num_elements); }
|
{ this->priv_initialize_map(num_elements); }
|
||||||
|
|
||||||
explicit deque_base(const allocator_type& a)
|
BOOST_CONTAINER_FORCEINLINE explicit deque_base(const allocator_type& a)
|
||||||
: members_(a)
|
: members_(a)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
deque_base()
|
BOOST_CONTAINER_FORCEINLINE deque_base()
|
||||||
: members_()
|
: members_()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
explicit deque_base(BOOST_RV_REF(deque_base) x)
|
BOOST_CONTAINER_FORCEINLINE explicit deque_base(BOOST_RV_REF(deque_base) x)
|
||||||
: members_( boost::move(x.ptr_alloc())
|
: members_( boost::move(x.ptr_alloc())
|
||||||
, boost::move(x.alloc()) )
|
, boost::move(x.alloc()) )
|
||||||
{}
|
{}
|
||||||
@@ -459,16 +459,16 @@ class deque_base
|
|||||||
iterator m_finish;
|
iterator m_finish;
|
||||||
} members_;
|
} members_;
|
||||||
|
|
||||||
ptr_alloc_t &ptr_alloc() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE ptr_alloc_t &ptr_alloc() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return members_; }
|
{ return members_; }
|
||||||
|
|
||||||
const ptr_alloc_t &ptr_alloc() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const ptr_alloc_t &ptr_alloc() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return members_; }
|
{ return members_; }
|
||||||
|
|
||||||
allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE allocator_type &alloc() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return members_; }
|
{ return members_; }
|
||||||
|
|
||||||
const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const allocator_type &alloc() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return members_; }
|
{ return members_; }
|
||||||
};
|
};
|
||||||
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||||
@@ -518,7 +518,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
private: // Internal typedefs
|
private: // Internal typedefs
|
||||||
BOOST_COPYABLE_AND_MOVABLE(deque)
|
BOOST_COPYABLE_AND_MOVABLE(deque)
|
||||||
typedef typename Base::ptr_alloc_ptr index_pointer;
|
typedef typename Base::ptr_alloc_ptr index_pointer;
|
||||||
static size_type s_buffer_size()
|
BOOST_CONTAINER_FORCEINLINE static size_type s_buffer_size()
|
||||||
{ return Base::s_buffer_size(); }
|
{ return Base::s_buffer_size(); }
|
||||||
typedef allocator_traits<ValAllocator> allocator_traits_type;
|
typedef allocator_traits<ValAllocator> allocator_traits_type;
|
||||||
|
|
||||||
@@ -536,7 +536,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
deque() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<ValAllocator>::value)
|
BOOST_CONTAINER_FORCEINLINE deque() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<ValAllocator>::value)
|
||||||
: Base()
|
: Base()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -545,7 +545,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing
|
//! <b>Throws</b>: Nothing
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
explicit deque(const allocator_type& a) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE explicit deque(const allocator_type& a) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: Base(a)
|
: Base(a)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -556,7 +556,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! throws or T's value initialization throws.
|
//! throws or T's value initialization throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
explicit deque(size_type n)
|
BOOST_CONTAINER_FORCEINLINE explicit deque(size_type n)
|
||||||
: Base(n, allocator_type())
|
: Base(n, allocator_type())
|
||||||
{
|
{
|
||||||
dtl::insert_value_initialized_n_proxy<ValAllocator, iterator> proxy;
|
dtl::insert_value_initialized_n_proxy<ValAllocator, iterator> proxy;
|
||||||
@@ -573,7 +573,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
deque(size_type n, default_init_t)
|
BOOST_CONTAINER_FORCEINLINE deque(size_type n, default_init_t)
|
||||||
: Base(n, allocator_type())
|
: Base(n, allocator_type())
|
||||||
{
|
{
|
||||||
dtl::insert_default_initialized_n_proxy<ValAllocator, iterator> proxy;
|
dtl::insert_default_initialized_n_proxy<ValAllocator, iterator> proxy;
|
||||||
@@ -588,7 +588,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! throws or T's value initialization throws.
|
//! throws or T's value initialization throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
explicit deque(size_type n, const allocator_type &a)
|
BOOST_CONTAINER_FORCEINLINE explicit deque(size_type n, const allocator_type &a)
|
||||||
: Base(n, a)
|
: Base(n, a)
|
||||||
{
|
{
|
||||||
dtl::insert_value_initialized_n_proxy<ValAllocator, iterator> proxy;
|
dtl::insert_value_initialized_n_proxy<ValAllocator, iterator> proxy;
|
||||||
@@ -605,7 +605,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
deque(size_type n, default_init_t, const allocator_type &a)
|
BOOST_CONTAINER_FORCEINLINE deque(size_type n, default_init_t, const allocator_type &a)
|
||||||
: Base(n, a)
|
: Base(n, a)
|
||||||
{
|
{
|
||||||
dtl::insert_default_initialized_n_proxy<ValAllocator, iterator> proxy;
|
dtl::insert_default_initialized_n_proxy<ValAllocator, iterator> proxy;
|
||||||
@@ -620,7 +620,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! throws or T's copy constructor throws.
|
//! throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
deque(size_type n, const value_type& value)
|
BOOST_CONTAINER_FORCEINLINE deque(size_type n, const value_type& value)
|
||||||
: Base(n, allocator_type())
|
: Base(n, allocator_type())
|
||||||
{ this->priv_fill_initialize(value); }
|
{ this->priv_fill_initialize(value); }
|
||||||
|
|
||||||
@@ -631,7 +631,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! throws or T's copy constructor throws.
|
//! throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
deque(size_type n, const value_type& value, const allocator_type& a)
|
BOOST_CONTAINER_FORCEINLINE deque(size_type n, const value_type& value, const allocator_type& a)
|
||||||
: Base(n, a)
|
: Base(n, a)
|
||||||
{ this->priv_fill_initialize(value); }
|
{ this->priv_fill_initialize(value); }
|
||||||
|
|
||||||
@@ -643,7 +643,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the range [first, last).
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
||||||
template <class InIt>
|
template <class InIt>
|
||||||
deque(InIt first, InIt last
|
BOOST_CONTAINER_FORCEINLINE deque(InIt first, InIt last
|
||||||
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||||
, typename dtl::disable_if_convertible
|
, typename dtl::disable_if_convertible
|
||||||
<InIt, size_type>::type * = 0
|
<InIt, size_type>::type * = 0
|
||||||
@@ -662,7 +662,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the range [first, last).
|
//! <b>Complexity</b>: Linear to the range [first, last).
|
||||||
template <class InIt>
|
template <class InIt>
|
||||||
deque(InIt first, InIt last, const allocator_type& a
|
BOOST_CONTAINER_FORCEINLINE deque(InIt first, InIt last, const allocator_type& a
|
||||||
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||||
, typename dtl::disable_if_convertible
|
, typename dtl::disable_if_convertible
|
||||||
<InIt, size_type>::type * = 0
|
<InIt, size_type>::type * = 0
|
||||||
@@ -681,7 +681,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! throws or T's constructor taking a dereferenced std::initializer_list iterator throws.
|
//! throws or T's constructor taking a dereferenced std::initializer_list iterator throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
|
//! <b>Complexity</b>: Linear to the range [il.begin(), il.end()).
|
||||||
deque(std::initializer_list<value_type> il, const allocator_type& a = allocator_type())
|
BOOST_CONTAINER_FORCEINLINE deque(std::initializer_list<value_type> il, const allocator_type& a = allocator_type())
|
||||||
: Base(a)
|
: Base(a)
|
||||||
{
|
{
|
||||||
this->priv_range_initialize(il.begin(), il.end());
|
this->priv_range_initialize(il.begin(), il.end());
|
||||||
@@ -693,7 +693,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Postcondition</b>: x == *this.
|
//! <b>Postcondition</b>: x == *this.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the elements x contains.
|
//! <b>Complexity</b>: Linear to the elements x contains.
|
||||||
deque(const deque& x)
|
BOOST_CONTAINER_FORCEINLINE deque(const deque& x)
|
||||||
: Base(allocator_traits_type::select_on_container_copy_construction(x.alloc()))
|
: Base(allocator_traits_type::select_on_container_copy_construction(x.alloc()))
|
||||||
{
|
{
|
||||||
if(x.size()){
|
if(x.size()){
|
||||||
@@ -708,7 +708,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
deque(BOOST_RV_REF(deque) x) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE deque(BOOST_RV_REF(deque) x) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: Base(BOOST_MOVE_BASE(Base, x))
|
: Base(BOOST_MOVE_BASE(Base, x))
|
||||||
{ this->swap_members(x); }
|
{ this->swap_members(x); }
|
||||||
|
|
||||||
@@ -759,7 +759,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements.
|
//! <b>Complexity</b>: Linear to the number of elements.
|
||||||
~deque() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE ~deque() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
this->priv_destroy_range(this->members_.m_start, this->members_.m_finish);
|
this->priv_destroy_range(this->members_.m_start, this->members_.m_finish);
|
||||||
}
|
}
|
||||||
@@ -837,7 +837,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in il.
|
//! <b>Complexity</b>: Linear to the number of elements in il.
|
||||||
deque& operator=(std::initializer_list<value_type> il)
|
BOOST_CONTAINER_FORCEINLINE deque& operator=(std::initializer_list<value_type> il)
|
||||||
{
|
{
|
||||||
this->assign(il.begin(), il.end());
|
this->assign(il.begin(), il.end());
|
||||||
return *this;
|
return *this;
|
||||||
@@ -849,7 +849,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
void assign(size_type n, const T& val)
|
BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const T& val)
|
||||||
{
|
{
|
||||||
typedef constant_iterator<value_type, difference_type> c_it;
|
typedef constant_iterator<value_type, difference_type> c_it;
|
||||||
this->assign(c_it(val, n), c_it());
|
this->assign(c_it(val, n), c_it());
|
||||||
@@ -914,7 +914,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! T's constructor from dereferencing std::initializer_list iterator throws.
|
//! T's constructor from dereferencing std::initializer_list iterator throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to il.size().
|
//! <b>Complexity</b>: Linear to il.size().
|
||||||
void assign(std::initializer_list<value_type> il)
|
BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<value_type> il)
|
||||||
{ this->assign(il.begin(), il.end()); }
|
{ this->assign(il.begin(), il.end()); }
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -923,7 +923,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If allocator's copy constructor throws.
|
//! <b>Throws</b>: If allocator's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return Base::alloc(); }
|
{ return Base::alloc(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
||||||
@@ -933,7 +933,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension.
|
//! <b>Note</b>: Non-standard extension.
|
||||||
const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return Base::alloc(); }
|
{ return Base::alloc(); }
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
@@ -949,7 +949,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension.
|
//! <b>Note</b>: Non-standard extension.
|
||||||
stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return Base::alloc(); }
|
{ return Base::alloc(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns an iterator to the first element contained in the deque.
|
//! <b>Effects</b>: Returns an iterator to the first element contained in the deque.
|
||||||
@@ -957,7 +957,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_start; }
|
{ return this->members_.m_start; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
||||||
@@ -965,7 +965,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_start; }
|
{ return this->members_.m_start; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns an iterator to the end of the deque.
|
//! <b>Effects</b>: Returns an iterator to the end of the deque.
|
||||||
@@ -973,7 +973,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
iterator end() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_finish; }
|
{ return this->members_.m_finish; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
||||||
@@ -981,7 +981,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_finish; }
|
{ return this->members_.m_finish; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
||||||
@@ -990,7 +990,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return reverse_iterator(this->members_.m_finish); }
|
{ return reverse_iterator(this->members_.m_finish); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||||
@@ -999,7 +999,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->members_.m_finish); }
|
{ return const_reverse_iterator(this->members_.m_finish); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
||||||
@@ -1008,7 +1008,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return reverse_iterator(this->members_.m_start); }
|
{ return reverse_iterator(this->members_.m_start); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||||
@@ -1017,7 +1017,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->members_.m_start); }
|
{ return const_reverse_iterator(this->members_.m_start); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the deque.
|
||||||
@@ -1025,7 +1025,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_start; }
|
{ return this->members_.m_start; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
//! <b>Effects</b>: Returns a const_iterator to the end of the deque.
|
||||||
@@ -1033,7 +1033,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_finish; }
|
{ return this->members_.m_finish; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||||
@@ -1042,7 +1042,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->members_.m_finish); }
|
{ return const_reverse_iterator(this->members_.m_finish); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||||
@@ -1051,7 +1051,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->members_.m_start); }
|
{ return const_reverse_iterator(this->members_.m_start); }
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
@@ -1065,7 +1065,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_finish == this->members_.m_start; }
|
{ return this->members_.m_finish == this->members_.m_start; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns the number of the elements contained in the deque.
|
//! <b>Effects</b>: Returns the number of the elements contained in the deque.
|
||||||
@@ -1073,7 +1073,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->members_.m_finish - this->members_.m_start; }
|
{ return this->members_.m_finish - this->members_.m_start; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns the largest possible size of the deque.
|
//! <b>Effects</b>: Returns the largest possible size of the deque.
|
||||||
@@ -1081,7 +1081,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return allocator_traits_type::max_size(this->alloc()); }
|
{ return allocator_traits_type::max_size(this->alloc()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
||||||
@@ -1168,7 +1168,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference front() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference front() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return *this->members_.m_start;
|
return *this->members_.m_start;
|
||||||
@@ -1182,7 +1182,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return *this->members_.m_start;
|
return *this->members_.m_start;
|
||||||
@@ -1196,7 +1196,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference back() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference back() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return *(end()-1);
|
return *(end()-1);
|
||||||
@@ -1210,7 +1210,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return *(cend()-1);
|
return *(cend()-1);
|
||||||
@@ -1224,7 +1224,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() > n);
|
BOOST_ASSERT(this->size() > n);
|
||||||
return this->members_.m_start[difference_type(n)];
|
return this->members_.m_start[difference_type(n)];
|
||||||
@@ -1238,7 +1238,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() > n);
|
BOOST_ASSERT(this->size() > n);
|
||||||
return this->members_.m_start[difference_type(n)];
|
return this->members_.m_start[difference_type(n)];
|
||||||
@@ -1255,7 +1255,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() >= n);
|
BOOST_ASSERT(this->size() >= n);
|
||||||
return iterator(this->begin()+n);
|
return iterator(this->begin()+n);
|
||||||
@@ -1272,7 +1272,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() >= n);
|
BOOST_ASSERT(this->size() >= n);
|
||||||
return const_iterator(this->cbegin()+n);
|
return const_iterator(this->cbegin()+n);
|
||||||
@@ -1288,7 +1288,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
//Range checked priv_index_of
|
//Range checked priv_index_of
|
||||||
return this->priv_index_of(p);
|
return this->priv_index_of(p);
|
||||||
@@ -1304,7 +1304,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
//Range checked priv_index_of
|
//Range checked priv_index_of
|
||||||
return this->priv_index_of(p);
|
return this->priv_index_of(p);
|
||||||
@@ -1318,7 +1318,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: std::range_error if n >= size()
|
//! <b>Throws</b>: std::range_error if n >= size()
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference at(size_type n)
|
BOOST_CONTAINER_FORCEINLINE reference at(size_type n)
|
||||||
{
|
{
|
||||||
this->priv_throw_if_out_of_range(n);
|
this->priv_throw_if_out_of_range(n);
|
||||||
return (*this)[n];
|
return (*this)[n];
|
||||||
@@ -1332,7 +1332,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: std::range_error if n >= size()
|
//! <b>Throws</b>: std::range_error if n >= size()
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference at(size_type n) const
|
BOOST_CONTAINER_FORCEINLINE const_reference at(size_type n) const
|
||||||
{
|
{
|
||||||
this->priv_throw_if_out_of_range(n);
|
this->priv_throw_if_out_of_range(n);
|
||||||
return (*this)[n];
|
return (*this)[n];
|
||||||
@@ -1564,7 +1564,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
iterator insert(const_iterator pos, size_type n, const value_type& x)
|
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, size_type n, const value_type& x)
|
||||||
{
|
{
|
||||||
//Range check of p is done by insert()
|
//Range check of p is done by insert()
|
||||||
typedef constant_iterator<value_type, difference_type> c_it;
|
typedef constant_iterator<value_type, difference_type> c_it;
|
||||||
@@ -1614,7 +1614,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! dereferenced std::initializer_list throws or T's copy constructor throws.
|
//! dereferenced std::initializer_list throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to distance [il.begin(), il.end()).
|
//! <b>Complexity</b>: Linear to distance [il.begin(), il.end()).
|
||||||
iterator insert(const_iterator pos, std::initializer_list<value_type> il)
|
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator pos, std::initializer_list<value_type> il)
|
||||||
{
|
{
|
||||||
//Range check os pos is done in insert()
|
//Range check os pos is done in insert()
|
||||||
return insert(pos, il.begin(), il.end());
|
return insert(pos, il.begin(), il.end());
|
||||||
@@ -1623,7 +1623,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
|
|
||||||
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||||
template <class FwdIt>
|
template <class FwdIt>
|
||||||
iterator insert(const_iterator p, FwdIt first, FwdIt last
|
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator p, FwdIt first, FwdIt last
|
||||||
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
#if !defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
||||||
, typename dtl::disable_if_or
|
, typename dtl::disable_if_or
|
||||||
< void
|
< void
|
||||||
@@ -1744,7 +1744,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
void swap(deque &x)
|
BOOST_CONTAINER_FORCEINLINE void swap(deque &x)
|
||||||
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_swap::value
|
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_swap::value
|
||||||
|| allocator_traits_type::is_always_equal::value)
|
|| allocator_traits_type::is_always_equal::value)
|
||||||
{
|
{
|
||||||
@@ -1782,49 +1782,49 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
//! <b>Effects</b>: Returns true if x and y are equal
|
//! <b>Effects</b>: Returns true if x and y are equal
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator==(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const deque& x, const deque& y)
|
||||||
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x and y are unequal
|
//! <b>Effects</b>: Returns true if x and y are unequal
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator!=(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const deque& x, const deque& y)
|
||||||
{ return !(x == y); }
|
{ return !(x == y); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is less than y
|
//! <b>Effects</b>: Returns true if x is less than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator<(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const deque& x, const deque& y)
|
||||||
{ return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
{ return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is greater than y
|
//! <b>Effects</b>: Returns true if x is greater than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator>(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const deque& x, const deque& y)
|
||||||
{ return y < x; }
|
{ return y < x; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is equal or less than y
|
//! <b>Effects</b>: Returns true if x is equal or less than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator<=(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const deque& x, const deque& y)
|
||||||
{ return !(y < x); }
|
{ return !(y < x); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is equal or greater than y
|
//! <b>Effects</b>: Returns true if x is equal or greater than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator>=(const deque& x, const deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const deque& x, const deque& y)
|
||||||
{ return !(x < y); }
|
{ return !(x < y); }
|
||||||
|
|
||||||
//! <b>Effects</b>: x.swap(y)
|
//! <b>Effects</b>: x.swap(y)
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
friend void swap(deque& x, deque& y)
|
BOOST_CONTAINER_FORCEINLINE friend void swap(deque& x, deque& y)
|
||||||
{ x.swap(y); }
|
{ x.swap(y); }
|
||||||
|
|
||||||
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||||
private:
|
private:
|
||||||
|
|
||||||
size_type priv_index_of(const_iterator p) const
|
BOOST_CONTAINER_FORCEINLINE size_type priv_index_of(const_iterator p) const
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->cbegin() <= p);
|
BOOST_ASSERT(this->cbegin() <= p);
|
||||||
BOOST_ASSERT(p <= this->cend());
|
BOOST_ASSERT(p <= this->cend());
|
||||||
@@ -1850,12 +1850,12 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
throw_out_of_range("deque::at out of range");
|
throw_out_of_range("deque::at out of range");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_in_range(const_iterator pos) const
|
BOOST_CONTAINER_FORCEINLINE bool priv_in_range(const_iterator pos) const
|
||||||
{
|
{
|
||||||
return (this->begin() <= pos) && (pos < this->end());
|
return (this->begin() <= pos) && (pos < this->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_in_range_or_end(const_iterator pos) const
|
BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
|
||||||
{
|
{
|
||||||
return (this->begin() <= pos) && (pos <= this->end());
|
return (this->begin() <= pos) && (pos <= this->end());
|
||||||
}
|
}
|
||||||
@@ -1909,32 +1909,32 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_push_back_simple_available() const
|
BOOST_CONTAINER_FORCEINLINE bool priv_push_back_simple_available() const
|
||||||
{
|
{
|
||||||
return this->members_.m_map &&
|
return this->members_.m_map &&
|
||||||
(this->members_.m_finish.m_cur != (this->members_.m_finish.m_last - 1));
|
(this->members_.m_finish.m_cur != (this->members_.m_finish.m_last - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
T *priv_push_back_simple_pos() const
|
BOOST_CONTAINER_FORCEINLINE T *priv_push_back_simple_pos() const
|
||||||
{
|
{
|
||||||
return boost::movelib::to_raw_pointer(this->members_.m_finish.m_cur);
|
return boost::movelib::to_raw_pointer(this->members_.m_finish.m_cur);
|
||||||
}
|
}
|
||||||
|
|
||||||
void priv_push_back_simple_commit()
|
BOOST_CONTAINER_FORCEINLINE void priv_push_back_simple_commit()
|
||||||
{
|
{
|
||||||
++this->members_.m_finish.m_cur;
|
++this->members_.m_finish.m_cur;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_push_front_simple_available() const
|
BOOST_CONTAINER_FORCEINLINE bool priv_push_front_simple_available() const
|
||||||
{
|
{
|
||||||
return this->members_.m_map &&
|
return this->members_.m_map &&
|
||||||
(this->members_.m_start.m_cur != this->members_.m_start.m_first);
|
(this->members_.m_start.m_cur != this->members_.m_start.m_first);
|
||||||
}
|
}
|
||||||
|
|
||||||
T *priv_push_front_simple_pos() const
|
BOOST_CONTAINER_FORCEINLINE T *priv_push_front_simple_pos() const
|
||||||
{ return boost::movelib::to_raw_pointer(this->members_.m_start.m_cur) - 1; }
|
{ return boost::movelib::to_raw_pointer(this->members_.m_start.m_cur) - 1; }
|
||||||
|
|
||||||
void priv_push_front_simple_commit()
|
BOOST_CONTAINER_FORCEINLINE void priv_push_front_simple_commit()
|
||||||
{ --this->members_.m_start.m_cur; }
|
{ --this->members_.m_start.m_cur; }
|
||||||
|
|
||||||
void priv_destroy_range(iterator p, iterator p2)
|
void priv_destroy_range(iterator p, iterator p2)
|
||||||
@@ -2061,7 +2061,7 @@ class deque : protected deque_base<typename real_allocator<T, Allocator>::type>
|
|||||||
return new_start;
|
return new_start;
|
||||||
}
|
}
|
||||||
|
|
||||||
iterator priv_fill_insert(const_iterator pos, size_type n, const value_type& x)
|
BOOST_CONTAINER_FORCEINLINE iterator priv_fill_insert(const_iterator pos, size_type n, const value_type& x)
|
||||||
{
|
{
|
||||||
typedef constant_iterator<value_type, difference_type> c_it;
|
typedef constant_iterator<value_type, difference_type> c_it;
|
||||||
return this->insert(pos, c_it(x, n), c_it());
|
return this->insert(pos, c_it(x, n), c_it());
|
||||||
|
@@ -49,106 +49,106 @@ class constant_iterator
|
|||||||
typedef constant_iterator<T, Difference> this_type;
|
typedef constant_iterator<T, Difference> this_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit constant_iterator(const T &ref, Difference range_size)
|
BOOST_CONTAINER_FORCEINLINE explicit constant_iterator(const T &ref, Difference range_size)
|
||||||
: m_ptr(&ref), m_num(range_size){}
|
: m_ptr(&ref), m_num(range_size){}
|
||||||
|
|
||||||
//Constructors
|
//Constructors
|
||||||
constant_iterator()
|
BOOST_CONTAINER_FORCEINLINE constant_iterator()
|
||||||
: m_ptr(0), m_num(0){}
|
: m_ptr(0), m_num(0){}
|
||||||
|
|
||||||
constant_iterator& operator++()
|
BOOST_CONTAINER_FORCEINLINE constant_iterator& operator++()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
constant_iterator operator++(int)
|
BOOST_CONTAINER_FORCEINLINE constant_iterator operator++(int)
|
||||||
{
|
{
|
||||||
constant_iterator result (*this);
|
constant_iterator result (*this);
|
||||||
increment();
|
increment();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
constant_iterator& operator--()
|
BOOST_CONTAINER_FORCEINLINE constant_iterator& operator--()
|
||||||
{ decrement(); return *this; }
|
{ decrement(); return *this; }
|
||||||
|
|
||||||
constant_iterator operator--(int)
|
BOOST_CONTAINER_FORCEINLINE constant_iterator operator--(int)
|
||||||
{
|
{
|
||||||
constant_iterator result (*this);
|
constant_iterator result (*this);
|
||||||
decrement();
|
decrement();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator== (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return i.equal(i2); }
|
{ return i.equal(i2); }
|
||||||
|
|
||||||
friend bool operator!= (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return !(i == i2); }
|
{ return !(i == i2); }
|
||||||
|
|
||||||
friend bool operator< (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return i.less(i2); }
|
{ return i.less(i2); }
|
||||||
|
|
||||||
friend bool operator> (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator> (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return i2 < i; }
|
{ return i2 < i; }
|
||||||
|
|
||||||
friend bool operator<= (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return !(i > i2); }
|
{ return !(i > i2); }
|
||||||
|
|
||||||
friend bool operator>= (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return !(i < i2); }
|
{ return !(i < i2); }
|
||||||
|
|
||||||
friend Difference operator- (const constant_iterator& i, const constant_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend Difference operator- (const constant_iterator& i, const constant_iterator& i2)
|
||||||
{ return i2.distance_to(i); }
|
{ return i2.distance_to(i); }
|
||||||
|
|
||||||
//Arithmetic
|
//Arithmetic
|
||||||
constant_iterator& operator+=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE constant_iterator& operator+=(Difference off)
|
||||||
{ this->advance(off); return *this; }
|
{ this->advance(off); return *this; }
|
||||||
|
|
||||||
constant_iterator operator+(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE constant_iterator operator+(Difference off) const
|
||||||
{
|
{
|
||||||
constant_iterator other(*this);
|
constant_iterator other(*this);
|
||||||
other.advance(off);
|
other.advance(off);
|
||||||
return other;
|
return other;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend constant_iterator operator+(Difference off, const constant_iterator& right)
|
BOOST_CONTAINER_FORCEINLINE friend constant_iterator operator+(Difference off, const constant_iterator& right)
|
||||||
{ return right + off; }
|
{ return right + off; }
|
||||||
|
|
||||||
constant_iterator& operator-=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE constant_iterator& operator-=(Difference off)
|
||||||
{ this->advance(-off); return *this; }
|
{ this->advance(-off); return *this; }
|
||||||
|
|
||||||
constant_iterator operator-(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE constant_iterator operator-(Difference off) const
|
||||||
{ return *this + (-off); }
|
{ return *this + (-off); }
|
||||||
|
|
||||||
const T& operator*() const
|
BOOST_CONTAINER_FORCEINLINE const T& operator*() const
|
||||||
{ return dereference(); }
|
{ return dereference(); }
|
||||||
|
|
||||||
const T& operator[] (Difference ) const
|
BOOST_CONTAINER_FORCEINLINE const T& operator[] (Difference ) const
|
||||||
{ return dereference(); }
|
{ return dereference(); }
|
||||||
|
|
||||||
const T* operator->() const
|
BOOST_CONTAINER_FORCEINLINE const T* operator->() const
|
||||||
{ return &(dereference()); }
|
{ return &(dereference()); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const T * m_ptr;
|
const T * m_ptr;
|
||||||
Difference m_num;
|
Difference m_num;
|
||||||
|
|
||||||
void increment()
|
BOOST_CONTAINER_FORCEINLINE void increment()
|
||||||
{ --m_num; }
|
{ --m_num; }
|
||||||
|
|
||||||
void decrement()
|
BOOST_CONTAINER_FORCEINLINE void decrement()
|
||||||
{ ++m_num; }
|
{ ++m_num; }
|
||||||
|
|
||||||
bool equal(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
|
||||||
{ return m_num == other.m_num; }
|
{ return m_num == other.m_num; }
|
||||||
|
|
||||||
bool less(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
|
||||||
{ return other.m_num < m_num; }
|
{ return other.m_num < m_num; }
|
||||||
|
|
||||||
const T & dereference() const
|
BOOST_CONTAINER_FORCEINLINE const T & dereference() const
|
||||||
{ return *m_ptr; }
|
{ return *m_ptr; }
|
||||||
|
|
||||||
void advance(Difference n)
|
BOOST_CONTAINER_FORCEINLINE void advance(Difference n)
|
||||||
{ m_num -= n; }
|
{ m_num -= n; }
|
||||||
|
|
||||||
Difference distance_to(const this_type &other)const
|
BOOST_CONTAINER_FORCEINLINE Difference distance_to(const this_type &other)const
|
||||||
{ return m_num - other.m_num; }
|
{ return m_num - other.m_num; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -160,72 +160,72 @@ class value_init_construct_iterator
|
|||||||
typedef value_init_construct_iterator<T, Difference> this_type;
|
typedef value_init_construct_iterator<T, Difference> this_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit value_init_construct_iterator(Difference range_size)
|
BOOST_CONTAINER_FORCEINLINE explicit value_init_construct_iterator(Difference range_size)
|
||||||
: m_num(range_size){}
|
: m_num(range_size){}
|
||||||
|
|
||||||
//Constructors
|
//Constructors
|
||||||
value_init_construct_iterator()
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator()
|
||||||
: m_num(0){}
|
: m_num(0){}
|
||||||
|
|
||||||
value_init_construct_iterator& operator++()
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator++()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
value_init_construct_iterator operator++(int)
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator++(int)
|
||||||
{
|
{
|
||||||
value_init_construct_iterator result (*this);
|
value_init_construct_iterator result (*this);
|
||||||
increment();
|
increment();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
value_init_construct_iterator& operator--()
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator--()
|
||||||
{ decrement(); return *this; }
|
{ decrement(); return *this; }
|
||||||
|
|
||||||
value_init_construct_iterator operator--(int)
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator--(int)
|
||||||
{
|
{
|
||||||
value_init_construct_iterator result (*this);
|
value_init_construct_iterator result (*this);
|
||||||
decrement();
|
decrement();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return i.equal(i2); }
|
{ return i.equal(i2); }
|
||||||
|
|
||||||
friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return !(i == i2); }
|
{ return !(i == i2); }
|
||||||
|
|
||||||
friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return i.less(i2); }
|
{ return i.less(i2); }
|
||||||
|
|
||||||
friend bool operator> (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator> (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return i2 < i; }
|
{ return i2 < i; }
|
||||||
|
|
||||||
friend bool operator<= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return !(i > i2); }
|
{ return !(i > i2); }
|
||||||
|
|
||||||
friend bool operator>= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return !(i < i2); }
|
{ return !(i < i2); }
|
||||||
|
|
||||||
friend Difference operator- (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend Difference operator- (const value_init_construct_iterator& i, const value_init_construct_iterator& i2)
|
||||||
{ return i2.distance_to(i); }
|
{ return i2.distance_to(i); }
|
||||||
|
|
||||||
//Arithmetic
|
//Arithmetic
|
||||||
value_init_construct_iterator& operator+=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator+=(Difference off)
|
||||||
{ this->advance(off); return *this; }
|
{ this->advance(off); return *this; }
|
||||||
|
|
||||||
value_init_construct_iterator operator+(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator+(Difference off) const
|
||||||
{
|
{
|
||||||
value_init_construct_iterator other(*this);
|
value_init_construct_iterator other(*this);
|
||||||
other.advance(off);
|
other.advance(off);
|
||||||
return other;
|
return other;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend value_init_construct_iterator operator+(Difference off, const value_init_construct_iterator& right)
|
BOOST_CONTAINER_FORCEINLINE friend value_init_construct_iterator operator+(Difference off, const value_init_construct_iterator& right)
|
||||||
{ return right + off; }
|
{ return right + off; }
|
||||||
|
|
||||||
value_init_construct_iterator& operator-=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator& operator-=(Difference off)
|
||||||
{ this->advance(-off); return *this; }
|
{ this->advance(-off); return *this; }
|
||||||
|
|
||||||
value_init_construct_iterator operator-(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE value_init_construct_iterator operator-(Difference off) const
|
||||||
{ return *this + (-off); }
|
{ return *this + (-off); }
|
||||||
|
|
||||||
//This pseudo-iterator's dereference operations have no sense since value is not
|
//This pseudo-iterator's dereference operations have no sense since value is not
|
||||||
@@ -238,28 +238,28 @@ class value_init_construct_iterator
|
|||||||
private:
|
private:
|
||||||
Difference m_num;
|
Difference m_num;
|
||||||
|
|
||||||
void increment()
|
BOOST_CONTAINER_FORCEINLINE void increment()
|
||||||
{ --m_num; }
|
{ --m_num; }
|
||||||
|
|
||||||
void decrement()
|
BOOST_CONTAINER_FORCEINLINE void decrement()
|
||||||
{ ++m_num; }
|
{ ++m_num; }
|
||||||
|
|
||||||
bool equal(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
|
||||||
{ return m_num == other.m_num; }
|
{ return m_num == other.m_num; }
|
||||||
|
|
||||||
bool less(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
|
||||||
{ return other.m_num < m_num; }
|
{ return other.m_num < m_num; }
|
||||||
|
|
||||||
const T & dereference() const
|
BOOST_CONTAINER_FORCEINLINE const T & dereference() const
|
||||||
{
|
{
|
||||||
static T dummy;
|
static T dummy;
|
||||||
return dummy;
|
return dummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void advance(Difference n)
|
BOOST_CONTAINER_FORCEINLINE void advance(Difference n)
|
||||||
{ m_num -= n; }
|
{ m_num -= n; }
|
||||||
|
|
||||||
Difference distance_to(const this_type &other)const
|
BOOST_CONTAINER_FORCEINLINE Difference distance_to(const this_type &other)const
|
||||||
{ return m_num - other.m_num; }
|
{ return m_num - other.m_num; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -271,72 +271,72 @@ class default_init_construct_iterator
|
|||||||
typedef default_init_construct_iterator<T, Difference> this_type;
|
typedef default_init_construct_iterator<T, Difference> this_type;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit default_init_construct_iterator(Difference range_size)
|
BOOST_CONTAINER_FORCEINLINE explicit default_init_construct_iterator(Difference range_size)
|
||||||
: m_num(range_size){}
|
: m_num(range_size){}
|
||||||
|
|
||||||
//Constructors
|
//Constructors
|
||||||
default_init_construct_iterator()
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator()
|
||||||
: m_num(0){}
|
: m_num(0){}
|
||||||
|
|
||||||
default_init_construct_iterator& operator++()
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator++()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
default_init_construct_iterator operator++(int)
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator++(int)
|
||||||
{
|
{
|
||||||
default_init_construct_iterator result (*this);
|
default_init_construct_iterator result (*this);
|
||||||
increment();
|
increment();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
default_init_construct_iterator& operator--()
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator--()
|
||||||
{ decrement(); return *this; }
|
{ decrement(); return *this; }
|
||||||
|
|
||||||
default_init_construct_iterator operator--(int)
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator--(int)
|
||||||
{
|
{
|
||||||
default_init_construct_iterator result (*this);
|
default_init_construct_iterator result (*this);
|
||||||
decrement();
|
decrement();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return i.equal(i2); }
|
{ return i.equal(i2); }
|
||||||
|
|
||||||
friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return !(i == i2); }
|
{ return !(i == i2); }
|
||||||
|
|
||||||
friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return i.less(i2); }
|
{ return i.less(i2); }
|
||||||
|
|
||||||
friend bool operator> (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator> (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return i2 < i; }
|
{ return i2 < i; }
|
||||||
|
|
||||||
friend bool operator<= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return !(i > i2); }
|
{ return !(i > i2); }
|
||||||
|
|
||||||
friend bool operator>= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return !(i < i2); }
|
{ return !(i < i2); }
|
||||||
|
|
||||||
friend Difference operator- (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
BOOST_CONTAINER_FORCEINLINE friend Difference operator- (const default_init_construct_iterator& i, const default_init_construct_iterator& i2)
|
||||||
{ return i2.distance_to(i); }
|
{ return i2.distance_to(i); }
|
||||||
|
|
||||||
//Arithmetic
|
//Arithmetic
|
||||||
default_init_construct_iterator& operator+=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator+=(Difference off)
|
||||||
{ this->advance(off); return *this; }
|
{ this->advance(off); return *this; }
|
||||||
|
|
||||||
default_init_construct_iterator operator+(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator+(Difference off) const
|
||||||
{
|
{
|
||||||
default_init_construct_iterator other(*this);
|
default_init_construct_iterator other(*this);
|
||||||
other.advance(off);
|
other.advance(off);
|
||||||
return other;
|
return other;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend default_init_construct_iterator operator+(Difference off, const default_init_construct_iterator& right)
|
BOOST_CONTAINER_FORCEINLINE friend default_init_construct_iterator operator+(Difference off, const default_init_construct_iterator& right)
|
||||||
{ return right + off; }
|
{ return right + off; }
|
||||||
|
|
||||||
default_init_construct_iterator& operator-=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator& operator-=(Difference off)
|
||||||
{ this->advance(-off); return *this; }
|
{ this->advance(-off); return *this; }
|
||||||
|
|
||||||
default_init_construct_iterator operator-(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE default_init_construct_iterator operator-(Difference off) const
|
||||||
{ return *this + (-off); }
|
{ return *this + (-off); }
|
||||||
|
|
||||||
//This pseudo-iterator's dereference operations have no sense since value is not
|
//This pseudo-iterator's dereference operations have no sense since value is not
|
||||||
@@ -349,28 +349,28 @@ class default_init_construct_iterator
|
|||||||
private:
|
private:
|
||||||
Difference m_num;
|
Difference m_num;
|
||||||
|
|
||||||
void increment()
|
BOOST_CONTAINER_FORCEINLINE void increment()
|
||||||
{ --m_num; }
|
{ --m_num; }
|
||||||
|
|
||||||
void decrement()
|
BOOST_CONTAINER_FORCEINLINE void decrement()
|
||||||
{ ++m_num; }
|
{ ++m_num; }
|
||||||
|
|
||||||
bool equal(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
|
||||||
{ return m_num == other.m_num; }
|
{ return m_num == other.m_num; }
|
||||||
|
|
||||||
bool less(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
|
||||||
{ return other.m_num < m_num; }
|
{ return other.m_num < m_num; }
|
||||||
|
|
||||||
const T & dereference() const
|
BOOST_CONTAINER_FORCEINLINE const T & dereference() const
|
||||||
{
|
{
|
||||||
static T dummy;
|
static T dummy;
|
||||||
return dummy;
|
return dummy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void advance(Difference n)
|
BOOST_CONTAINER_FORCEINLINE void advance(Difference n)
|
||||||
{ m_num -= n; }
|
{ m_num -= n; }
|
||||||
|
|
||||||
Difference distance_to(const this_type &other)const
|
BOOST_CONTAINER_FORCEINLINE Difference distance_to(const this_type &other) const
|
||||||
{ return m_num - other.m_num; }
|
{ return m_num - other.m_num; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -382,106 +382,106 @@ class repeat_iterator
|
|||||||
{
|
{
|
||||||
typedef repeat_iterator<T, Difference> this_type;
|
typedef repeat_iterator<T, Difference> this_type;
|
||||||
public:
|
public:
|
||||||
explicit repeat_iterator(T &ref, Difference range_size)
|
BOOST_CONTAINER_FORCEINLINE explicit repeat_iterator(T &ref, Difference range_size)
|
||||||
: m_ptr(&ref), m_num(range_size){}
|
: m_ptr(&ref), m_num(range_size){}
|
||||||
|
|
||||||
//Constructors
|
//Constructors
|
||||||
repeat_iterator()
|
BOOST_CONTAINER_FORCEINLINE repeat_iterator()
|
||||||
: m_ptr(0), m_num(0){}
|
: m_ptr(0), m_num(0){}
|
||||||
|
|
||||||
this_type& operator++()
|
BOOST_CONTAINER_FORCEINLINE this_type& operator++()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
this_type operator++(int)
|
BOOST_CONTAINER_FORCEINLINE this_type operator++(int)
|
||||||
{
|
{
|
||||||
this_type result (*this);
|
this_type result (*this);
|
||||||
increment();
|
increment();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
this_type& operator--()
|
BOOST_CONTAINER_FORCEINLINE this_type& operator--()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
this_type operator--(int)
|
BOOST_CONTAINER_FORCEINLINE this_type operator--(int)
|
||||||
{
|
{
|
||||||
this_type result (*this);
|
this_type result (*this);
|
||||||
increment();
|
increment();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend bool operator== (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const this_type& i, const this_type& i2)
|
||||||
{ return i.equal(i2); }
|
{ return i.equal(i2); }
|
||||||
|
|
||||||
friend bool operator!= (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const this_type& i, const this_type& i2)
|
||||||
{ return !(i == i2); }
|
{ return !(i == i2); }
|
||||||
|
|
||||||
friend bool operator< (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const this_type& i, const this_type& i2)
|
||||||
{ return i.less(i2); }
|
{ return i.less(i2); }
|
||||||
|
|
||||||
friend bool operator> (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator> (const this_type& i, const this_type& i2)
|
||||||
{ return i2 < i; }
|
{ return i2 < i; }
|
||||||
|
|
||||||
friend bool operator<= (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const this_type& i, const this_type& i2)
|
||||||
{ return !(i > i2); }
|
{ return !(i > i2); }
|
||||||
|
|
||||||
friend bool operator>= (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const this_type& i, const this_type& i2)
|
||||||
{ return !(i < i2); }
|
{ return !(i < i2); }
|
||||||
|
|
||||||
friend Difference operator- (const this_type& i, const this_type& i2)
|
BOOST_CONTAINER_FORCEINLINE friend Difference operator- (const this_type& i, const this_type& i2)
|
||||||
{ return i2.distance_to(i); }
|
{ return i2.distance_to(i); }
|
||||||
|
|
||||||
//Arithmetic
|
//Arithmetic
|
||||||
this_type& operator+=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE this_type& operator+=(Difference off)
|
||||||
{ this->advance(off); return *this; }
|
{ this->advance(off); return *this; }
|
||||||
|
|
||||||
this_type operator+(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE this_type operator+(Difference off) const
|
||||||
{
|
{
|
||||||
this_type other(*this);
|
this_type other(*this);
|
||||||
other.advance(off);
|
other.advance(off);
|
||||||
return other;
|
return other;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend this_type operator+(Difference off, const this_type& right)
|
BOOST_CONTAINER_FORCEINLINE friend this_type operator+(Difference off, const this_type& right)
|
||||||
{ return right + off; }
|
{ return right + off; }
|
||||||
|
|
||||||
this_type& operator-=(Difference off)
|
BOOST_CONTAINER_FORCEINLINE this_type& operator-=(Difference off)
|
||||||
{ this->advance(-off); return *this; }
|
{ this->advance(-off); return *this; }
|
||||||
|
|
||||||
this_type operator-(Difference off) const
|
BOOST_CONTAINER_FORCEINLINE this_type operator-(Difference off) const
|
||||||
{ return *this + (-off); }
|
{ return *this + (-off); }
|
||||||
|
|
||||||
T& operator*() const
|
BOOST_CONTAINER_FORCEINLINE T& operator*() const
|
||||||
{ return dereference(); }
|
{ return dereference(); }
|
||||||
|
|
||||||
T& operator[] (Difference ) const
|
BOOST_CONTAINER_FORCEINLINE T& operator[] (Difference ) const
|
||||||
{ return dereference(); }
|
{ return dereference(); }
|
||||||
|
|
||||||
T *operator->() const
|
BOOST_CONTAINER_FORCEINLINE T *operator->() const
|
||||||
{ return &(dereference()); }
|
{ return &(dereference()); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T * m_ptr;
|
T * m_ptr;
|
||||||
Difference m_num;
|
Difference m_num;
|
||||||
|
|
||||||
void increment()
|
BOOST_CONTAINER_FORCEINLINE void increment()
|
||||||
{ --m_num; }
|
{ --m_num; }
|
||||||
|
|
||||||
void decrement()
|
BOOST_CONTAINER_FORCEINLINE void decrement()
|
||||||
{ ++m_num; }
|
{ ++m_num; }
|
||||||
|
|
||||||
bool equal(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool equal(const this_type &other) const
|
||||||
{ return m_num == other.m_num; }
|
{ return m_num == other.m_num; }
|
||||||
|
|
||||||
bool less(const this_type &other) const
|
BOOST_CONTAINER_FORCEINLINE bool less(const this_type &other) const
|
||||||
{ return other.m_num < m_num; }
|
{ return other.m_num < m_num; }
|
||||||
|
|
||||||
T & dereference() const
|
BOOST_CONTAINER_FORCEINLINE T & dereference() const
|
||||||
{ return *m_ptr; }
|
{ return *m_ptr; }
|
||||||
|
|
||||||
void advance(Difference n)
|
BOOST_CONTAINER_FORCEINLINE void advance(Difference n)
|
||||||
{ m_num -= n; }
|
{ m_num -= n; }
|
||||||
|
|
||||||
Difference distance_to(const this_type &other)const
|
BOOST_CONTAINER_FORCEINLINE Difference distance_to(const this_type &other)const
|
||||||
{ return m_num - other.m_num; }
|
{ return m_num - other.m_num; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -503,7 +503,7 @@ class emplace_iterator
|
|||||||
BOOST_CONTAINER_FORCEINLINE this_type& operator++()
|
BOOST_CONTAINER_FORCEINLINE this_type& operator++()
|
||||||
{ increment(); return *this; }
|
{ increment(); return *this; }
|
||||||
|
|
||||||
this_type operator++(int)
|
BOOST_CONTAINER_FORCEINLINE this_type operator++(int)
|
||||||
{
|
{
|
||||||
this_type result (*this);
|
this_type result (*this);
|
||||||
increment();
|
increment();
|
||||||
@@ -513,7 +513,7 @@ class emplace_iterator
|
|||||||
BOOST_CONTAINER_FORCEINLINE this_type& operator--()
|
BOOST_CONTAINER_FORCEINLINE this_type& operator--()
|
||||||
{ decrement(); return *this; }
|
{ decrement(); return *this; }
|
||||||
|
|
||||||
this_type operator--(int)
|
BOOST_CONTAINER_FORCEINLINE this_type operator--(int)
|
||||||
{
|
{
|
||||||
this_type result (*this);
|
this_type result (*this);
|
||||||
decrement();
|
decrement();
|
||||||
@@ -545,7 +545,7 @@ class emplace_iterator
|
|||||||
BOOST_CONTAINER_FORCEINLINE this_type& operator+=(difference_type off)
|
BOOST_CONTAINER_FORCEINLINE this_type& operator+=(difference_type off)
|
||||||
{ this->advance(off); return *this; }
|
{ this->advance(off); return *this; }
|
||||||
|
|
||||||
this_type operator+(difference_type off) const
|
BOOST_CONTAINER_FORCEINLINE this_type operator+(difference_type off) const
|
||||||
{
|
{
|
||||||
this_type other(*this);
|
this_type other(*this);
|
||||||
other.advance(off);
|
other.advance(off);
|
||||||
@@ -571,11 +571,11 @@ class emplace_iterator
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
template<class Allocator>
|
template<class Allocator>
|
||||||
void construct_in_place(Allocator &a, T* ptr)
|
BOOST_CONTAINER_FORCEINLINE void construct_in_place(Allocator &a, T* ptr)
|
||||||
{ (*m_pe)(a, ptr); }
|
{ (*m_pe)(a, ptr); }
|
||||||
|
|
||||||
template<class DestIt>
|
template<class DestIt>
|
||||||
void assign_in_place(DestIt dest)
|
BOOST_CONTAINER_FORCEINLINE void assign_in_place(DestIt dest)
|
||||||
{ (*m_pe)(dest); }
|
{ (*m_pe)(dest); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -614,7 +614,7 @@ struct emplace_functor
|
|||||||
{
|
{
|
||||||
typedef typename dtl::build_number_seq<sizeof...(Args)>::type index_tuple_t;
|
typedef typename dtl::build_number_seq<sizeof...(Args)>::type index_tuple_t;
|
||||||
|
|
||||||
emplace_functor(BOOST_FWD_REF(Args)... args)
|
BOOST_CONTAINER_FORCEINLINE emplace_functor(BOOST_FWD_REF(Args)... args)
|
||||||
: args_(args...)
|
: args_(args...)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -661,15 +661,15 @@ struct emplace_functor_type;
|
|||||||
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
BOOST_MOVE_TMPL_LT##N BOOST_MOVE_CLASS##N BOOST_MOVE_GT##N \
|
||||||
struct emplace_functor##N\
|
struct emplace_functor##N\
|
||||||
{\
|
{\
|
||||||
explicit emplace_functor##N( BOOST_MOVE_UREF##N )\
|
BOOST_CONTAINER_FORCEINLINE explicit emplace_functor##N( BOOST_MOVE_UREF##N )\
|
||||||
BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N{}\
|
BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N{}\
|
||||||
\
|
\
|
||||||
template<class Allocator, class T>\
|
template<class Allocator, class T>\
|
||||||
void operator()(Allocator &a, T *ptr)\
|
BOOST_CONTAINER_FORCEINLINE void operator()(Allocator &a, T *ptr)\
|
||||||
{ allocator_traits<Allocator>::construct(a, ptr BOOST_MOVE_I##N BOOST_MOVE_MFWD##N); }\
|
{ allocator_traits<Allocator>::construct(a, ptr BOOST_MOVE_I##N BOOST_MOVE_MFWD##N); }\
|
||||||
\
|
\
|
||||||
template<class DestIt>\
|
template<class DestIt>\
|
||||||
void operator()(DestIt dest)\
|
BOOST_CONTAINER_FORCEINLINE void operator()(DestIt dest)\
|
||||||
{\
|
{\
|
||||||
typedef typename boost::container::iterator_traits<DestIt>::value_type value_type;\
|
typedef typename boost::container::iterator_traits<DestIt>::value_type value_type;\
|
||||||
BOOST_MOVE_IF(N, value_type tmp(BOOST_MOVE_MFWD##N), dtl::value_init<value_type> tmp) ;\
|
BOOST_MOVE_IF(N, value_type tmp(BOOST_MOVE_MFWD##N), dtl::value_init<value_type> tmp) ;\
|
||||||
|
@@ -202,19 +202,19 @@ class list
|
|||||||
//
|
//
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
|
|
||||||
typedef T value_type;
|
typedef T value_type;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::pointer pointer;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::pointer pointer;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::const_pointer const_pointer;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::const_pointer const_pointer;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::reference reference;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::reference reference;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::const_reference const_reference;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::const_reference const_reference;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::size_type size_type;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::size_type size_type;
|
||||||
typedef typename ::boost::container::allocator_traits<ValueAllocator>::difference_type difference_type;
|
typedef typename ::boost::container::allocator_traits<ValueAllocator>::difference_type difference_type;
|
||||||
typedef ValueAllocator allocator_type;
|
typedef ValueAllocator allocator_type;
|
||||||
typedef BOOST_CONTAINER_IMPDEF(NodeAlloc) stored_allocator_type;
|
typedef BOOST_CONTAINER_IMPDEF(NodeAlloc) stored_allocator_type;
|
||||||
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
typedef BOOST_CONTAINER_IMPDEF(iterator_impl) iterator;
|
||||||
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
typedef BOOST_CONTAINER_IMPDEF(const_iterator_impl) const_iterator;
|
||||||
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
|
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<iterator>) reverse_iterator;
|
||||||
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
|
typedef BOOST_CONTAINER_IMPDEF(boost::container::reverse_iterator<const_iterator>) const_reverse_iterator;
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@@ -80,14 +80,14 @@ template <class C>
|
|||||||
class clear_on_destroy
|
class clear_on_destroy
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
clear_on_destroy(C &c)
|
BOOST_CONTAINER_FORCEINLINE clear_on_destroy(C &c)
|
||||||
: c_(c), do_clear_(true)
|
: c_(c), do_clear_(true)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
void release()
|
BOOST_CONTAINER_FORCEINLINE void release()
|
||||||
{ do_clear_ = false; }
|
{ do_clear_ = false; }
|
||||||
|
|
||||||
~clear_on_destroy()
|
BOOST_CONTAINER_FORCEINLINE ~clear_on_destroy()
|
||||||
{
|
{
|
||||||
if(do_clear_){
|
if(do_clear_){
|
||||||
c_.clear();
|
c_.clear();
|
||||||
@@ -121,11 +121,11 @@ struct node_base
|
|||||||
<node_base_ptr>::type node_base_ptr_ptr;
|
<node_base_ptr>::type node_base_ptr_ptr;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit node_base(const node_base_ptr_ptr &n)
|
BOOST_CONTAINER_FORCEINLINE explicit node_base(const node_base_ptr_ptr &n)
|
||||||
: up(n)
|
: up(n)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
node_base()
|
BOOST_CONTAINER_FORCEINLINE node_base()
|
||||||
: up()
|
: up()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -220,7 +220,7 @@ struct index_traits
|
|||||||
// Node cache first is *(this->index.end() - 2);
|
// Node cache first is *(this->index.end() - 2);
|
||||||
// Node cache last is this->index.back();
|
// Node cache last is this->index.back();
|
||||||
|
|
||||||
static node_base_ptr_ptr ptr_to_node_base_ptr(node_base_ptr &n)
|
BOOST_CONTAINER_FORCEINLINE static node_base_ptr_ptr ptr_to_node_base_ptr(node_base_ptr &n)
|
||||||
{ return node_base_ptr_ptr_traits::pointer_to(n); }
|
{ return node_base_ptr_ptr_traits::pointer_to(n); }
|
||||||
|
|
||||||
static void fix_up_pointers(index_iterator first, index_iterator last)
|
static void fix_up_pointers(index_iterator first, index_iterator last)
|
||||||
@@ -233,10 +233,10 @@ struct index_traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static index_iterator get_fix_up_end(index_type &index)
|
BOOST_CONTAINER_FORCEINLINE static index_iterator get_fix_up_end(index_type &index)
|
||||||
{ return index.end() - (ExtraPointers - 1); }
|
{ return index.end() - (ExtraPointers - 1); }
|
||||||
|
|
||||||
static void fix_up_pointers_from(index_type & index, index_iterator first)
|
BOOST_CONTAINER_FORCEINLINE static void fix_up_pointers_from(index_type & index, index_iterator first)
|
||||||
{ index_traits::fix_up_pointers(first, index_traits::get_fix_up_end(index)); }
|
{ index_traits::fix_up_pointers(first, index_traits::get_fix_up_end(index)); }
|
||||||
|
|
||||||
static void readjust_end_node(index_type &index, node_base_type &end_node)
|
static void readjust_end_node(index_type &index, node_base_type &end_node)
|
||||||
@@ -316,11 +316,11 @@ class stable_vector_iterator
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
explicit stable_vector_iterator(node_base_ptr p) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE explicit stable_vector_iterator(node_base_ptr p) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: m_pn(p)
|
: m_pn(p)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
stable_vector_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: m_pn() //Value initialization to achieve "null iterators" (N3644)
|
: m_pn() //Value initialization to achieve "null iterators" (N3644)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
@@ -333,86 +333,86 @@ class stable_vector_iterator
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
//Pointer like operators
|
//Pointer like operators
|
||||||
reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return node_pointer()->get_data(); }
|
{ return node_pointer()->get_data(); }
|
||||||
|
|
||||||
pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return ptr_traits::pointer_to(this->operator*()); }
|
{ return ptr_traits::pointer_to(this->operator*()); }
|
||||||
|
|
||||||
//Increment / Decrement
|
//Increment / Decrement
|
||||||
stable_vector_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator& operator++() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
node_base_ptr_ptr p(this->m_pn->up);
|
node_base_ptr_ptr p(this->m_pn->up);
|
||||||
this->m_pn = *(++p);
|
this->m_pn = *(++p);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
stable_vector_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator operator++(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ stable_vector_iterator tmp(*this); ++*this; return stable_vector_iterator(tmp); }
|
{ stable_vector_iterator tmp(*this); ++*this; return stable_vector_iterator(tmp); }
|
||||||
|
|
||||||
stable_vector_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator& operator--() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
node_base_ptr_ptr p(this->m_pn->up);
|
node_base_ptr_ptr p(this->m_pn->up);
|
||||||
this->m_pn = *(--p);
|
this->m_pn = *(--p);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
stable_vector_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator operator--(int) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ stable_vector_iterator tmp(*this); --*this; return stable_vector_iterator(tmp); }
|
{ stable_vector_iterator tmp(*this); --*this; return stable_vector_iterator(tmp); }
|
||||||
|
|
||||||
reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return node_ptr_traits::static_cast_from(this->m_pn->up[off])->get_data(); }
|
{ return node_ptr_traits::static_cast_from(this->m_pn->up[off])->get_data(); }
|
||||||
|
|
||||||
stable_vector_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
if(off) this->m_pn = this->m_pn->up[off];
|
if(off) this->m_pn = this->m_pn->up[off];
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend stable_vector_iterator operator+(const stable_vector_iterator &left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend stable_vector_iterator operator+(const stable_vector_iterator &left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
stable_vector_iterator tmp(left);
|
stable_vector_iterator tmp(left);
|
||||||
tmp += off;
|
tmp += off;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend stable_vector_iterator operator+(difference_type off, const stable_vector_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend stable_vector_iterator operator+(difference_type off, const stable_vector_iterator& right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
stable_vector_iterator tmp(right);
|
stable_vector_iterator tmp(right);
|
||||||
tmp += off;
|
tmp += off;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
stable_vector_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector_iterator& operator-=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ *this += -off; return *this; }
|
{ *this += -off; return *this; }
|
||||||
|
|
||||||
friend stable_vector_iterator operator-(const stable_vector_iterator &left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend stable_vector_iterator operator-(const stable_vector_iterator &left, difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
stable_vector_iterator tmp(left);
|
stable_vector_iterator tmp(left);
|
||||||
tmp -= off;
|
tmp -= off;
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
friend difference_type operator-(const stable_vector_iterator &left, const stable_vector_iterator &right) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend difference_type operator-(const stable_vector_iterator &left, const stable_vector_iterator &right) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return left.m_pn->up - right.m_pn->up; }
|
{ return left.m_pn->up - right.m_pn->up; }
|
||||||
|
|
||||||
//Comparison operators
|
//Comparison operators
|
||||||
friend bool operator== (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator== (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn == r.m_pn; }
|
{ return l.m_pn == r.m_pn; }
|
||||||
|
|
||||||
friend bool operator!= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn != r.m_pn; }
|
{ return l.m_pn != r.m_pn; }
|
||||||
|
|
||||||
friend bool operator< (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator< (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn->up < r.m_pn->up; }
|
{ return l.m_pn->up < r.m_pn->up; }
|
||||||
|
|
||||||
friend bool operator<= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn->up <= r.m_pn->up; }
|
{ return l.m_pn->up <= r.m_pn->up; }
|
||||||
|
|
||||||
friend bool operator> (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator> (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn->up > r.m_pn->up; }
|
{ return l.m_pn->up > r.m_pn->up; }
|
||||||
|
|
||||||
friend bool operator>= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>= (const stable_vector_iterator& l, const stable_vector_iterator& r) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return l.m_pn->up >= r.m_pn->up; }
|
{ return l.m_pn->up >= r.m_pn->up; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -520,16 +520,16 @@ class stable_vector
|
|||||||
allocator_version_traits<node_allocator_type> allocator_version_traits_t;
|
allocator_version_traits<node_allocator_type> allocator_version_traits_t;
|
||||||
typedef typename allocator_version_traits_t::multiallocation_chain multiallocation_chain;
|
typedef typename allocator_version_traits_t::multiallocation_chain multiallocation_chain;
|
||||||
|
|
||||||
node_ptr allocate_one()
|
BOOST_CONTAINER_FORCEINLINE node_ptr allocate_one()
|
||||||
{ return allocator_version_traits_t::allocate_one(this->priv_node_alloc()); }
|
{ return allocator_version_traits_t::allocate_one(this->priv_node_alloc()); }
|
||||||
|
|
||||||
void deallocate_one(const node_ptr &p)
|
BOOST_CONTAINER_FORCEINLINE void deallocate_one(const node_ptr &p)
|
||||||
{ allocator_version_traits_t::deallocate_one(this->priv_node_alloc(), p); }
|
{ allocator_version_traits_t::deallocate_one(this->priv_node_alloc(), p); }
|
||||||
|
|
||||||
void allocate_individual(typename allocator_traits_type::size_type n, multiallocation_chain &m)
|
BOOST_CONTAINER_FORCEINLINE void allocate_individual(typename allocator_traits_type::size_type n, multiallocation_chain &m)
|
||||||
{ allocator_version_traits_t::allocate_individual(this->priv_node_alloc(), n, m); }
|
{ allocator_version_traits_t::allocate_individual(this->priv_node_alloc(), n, m); }
|
||||||
|
|
||||||
void deallocate_individual(multiallocation_chain &holder)
|
BOOST_CONTAINER_FORCEINLINE void deallocate_individual(multiallocation_chain &holder)
|
||||||
{ allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder); }
|
{ allocator_version_traits_t::deallocate_individual(this->priv_node_alloc(), holder); }
|
||||||
|
|
||||||
friend class stable_vector_detail::clear_on_destroy<stable_vector>;
|
friend class stable_vector_detail::clear_on_destroy<stable_vector>;
|
||||||
@@ -585,7 +585,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
//! <b>Throws</b>: If allocator_type's default constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
stable_vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<ValueAllocator>::value)
|
BOOST_CONTAINER_FORCEINLINE stable_vector() BOOST_NOEXCEPT_IF(dtl::is_nothrow_default_constructible<ValueAllocator>::value)
|
||||||
: internal_data(), index()
|
: internal_data(), index()
|
||||||
{
|
{
|
||||||
STABLE_VECTOR_CHECK_INVARIANT;
|
STABLE_VECTOR_CHECK_INVARIANT;
|
||||||
@@ -596,7 +596,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing
|
//! <b>Throws</b>: Nothing
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
explicit stable_vector(const allocator_type& al) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE explicit stable_vector(const allocator_type& al) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: internal_data(al), index(al)
|
: internal_data(al), index(al)
|
||||||
{
|
{
|
||||||
STABLE_VECTOR_CHECK_INVARIANT;
|
STABLE_VECTOR_CHECK_INVARIANT;
|
||||||
@@ -743,7 +743,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
//! <b>Throws</b>: If allocator_type's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
stable_vector(BOOST_RV_REF(stable_vector) x) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stable_vector(BOOST_RV_REF(stable_vector) x) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
: internal_data(boost::move(x.priv_node_alloc())), index(boost::move(x.index))
|
: internal_data(boost::move(x.priv_node_alloc())), index(boost::move(x.index))
|
||||||
{
|
{
|
||||||
this->priv_swap_members(x);
|
this->priv_swap_members(x);
|
||||||
@@ -883,7 +883,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
//! <b>Throws</b>: If memory allocation throws or T's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to n.
|
//! <b>Complexity</b>: Linear to n.
|
||||||
void assign(size_type n, const T& t)
|
BOOST_CONTAINER_FORCEINLINE void assign(size_type n, const T& t)
|
||||||
{
|
{
|
||||||
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
typedef constant_iterator<value_type, difference_type> cvalue_iterator;
|
||||||
this->assign(cvalue_iterator(t, n), cvalue_iterator());
|
this->assign(cvalue_iterator(t, n), cvalue_iterator());
|
||||||
@@ -922,7 +922,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: If memory allocation throws or
|
//! <b>Throws</b>: If memory allocation throws or
|
||||||
//! T's constructor from dereferencing initializer_list iterator throws.
|
//! T's constructor from dereferencing initializer_list iterator throws.
|
||||||
//!
|
//!
|
||||||
void assign(std::initializer_list<value_type> il)
|
BOOST_CONTAINER_FORCEINLINE void assign(std::initializer_list<value_type> il)
|
||||||
{
|
{
|
||||||
STABLE_VECTOR_CHECK_INVARIANT;
|
STABLE_VECTOR_CHECK_INVARIANT;
|
||||||
assign(il.begin(), il.end());
|
assign(il.begin(), il.end());
|
||||||
@@ -934,7 +934,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: If allocator's copy constructor throws.
|
//! <b>Throws</b>: If allocator's copy constructor throws.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
allocator_type get_allocator() const
|
BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const
|
||||||
{ return this->priv_node_alloc(); }
|
{ return this->priv_node_alloc(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
||||||
@@ -944,7 +944,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension.
|
//! <b>Note</b>: Non-standard extension.
|
||||||
const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->priv_node_alloc(); }
|
{ return this->priv_node_alloc(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
//! <b>Effects</b>: Returns a reference to the internal allocator.
|
||||||
@@ -954,7 +954,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension.
|
//! <b>Note</b>: Non-standard extension.
|
||||||
stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->priv_node_alloc(); }
|
{ return this->priv_node_alloc(); }
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
@@ -968,7 +968,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator begin() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return (this->index.empty()) ? this->end(): iterator(node_ptr_traits::static_cast_from(this->index.front())); }
|
{ return (this->index.empty()) ? this->end(): iterator(node_ptr_traits::static_cast_from(this->index.front())); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
||||||
@@ -976,7 +976,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator begin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return (this->index.empty()) ? this->cend() : const_iterator(node_ptr_traits::static_cast_from(this->index.front())) ; }
|
{ return (this->index.empty()) ? this->cend() : const_iterator(node_ptr_traits::static_cast_from(this->index.front())) ; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns an iterator to the end of the stable_vector.
|
//! <b>Effects</b>: Returns an iterator to the end of the stable_vector.
|
||||||
@@ -984,7 +984,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
iterator end() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator end() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return iterator(this->priv_get_end_node()); }
|
{ return iterator(this->priv_get_end_node()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
||||||
@@ -992,7 +992,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator end() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_iterator(this->priv_get_end_node()); }
|
{ return const_iterator(this->priv_get_end_node()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a reverse_iterator pointing to the beginning
|
||||||
@@ -1001,7 +1001,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return reverse_iterator(this->end()); }
|
{ return reverse_iterator(this->end()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||||
@@ -1010,7 +1010,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->end()); }
|
{ return const_reverse_iterator(this->end()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a reverse_iterator pointing to the end
|
||||||
@@ -1019,7 +1019,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reverse_iterator rend() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return reverse_iterator(this->begin()); }
|
{ return reverse_iterator(this->begin()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||||
@@ -1028,7 +1028,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return const_reverse_iterator(this->begin()); }
|
{ return const_reverse_iterator(this->begin()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the stable_vector.
|
||||||
@@ -1036,7 +1036,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->begin(); }
|
{ return this->begin(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
//! <b>Effects</b>: Returns a const_iterator to the end of the stable_vector.
|
||||||
@@ -1044,7 +1044,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->end(); }
|
{ return this->end(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
||||||
@@ -1053,7 +1053,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->rbegin(); }
|
{ return this->rbegin(); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
||||||
@@ -1062,7 +1062,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reverse_iterator crend()const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend()const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->rend(); }
|
{ return this->rend(); }
|
||||||
|
|
||||||
//////////////////////////////////////////////
|
//////////////////////////////////////////////
|
||||||
@@ -1076,7 +1076,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE bool empty() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->index.size() <= ExtraPointers; }
|
{ return this->index.size() <= ExtraPointers; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns the number of the elements contained in the stable_vector.
|
//! <b>Effects</b>: Returns the number of the elements contained in the stable_vector.
|
||||||
@@ -1084,7 +1084,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type size() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
const size_type index_size = this->index.size();
|
const size_type index_size = this->index.size();
|
||||||
return (index_size - ExtraPointers) & (size_type(0u) -size_type(index_size != 0));
|
return (index_size - ExtraPointers) & (size_type(0u) -size_type(index_size != 0));
|
||||||
@@ -1095,7 +1095,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->index.max_size() - ExtraPointers; }
|
{ return this->index.max_size() - ExtraPointers; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
//! <b>Effects</b>: Inserts or erases elements at the end such that
|
||||||
@@ -1240,7 +1240,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference front() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference front() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return static_cast<node_reference>(*this->index.front()).get_data();
|
return static_cast<node_reference>(*this->index.front()).get_data();
|
||||||
@@ -1254,7 +1254,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return static_cast<const_node_reference>(*this->index.front()).get_data();
|
return static_cast<const_node_reference>(*this->index.front()).get_data();
|
||||||
@@ -1268,7 +1268,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference back() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference back() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
return static_cast<node_reference>(*this->index[this->size()-1u]).get_data();
|
return static_cast<node_reference>(*this->index[this->size()-1u]).get_data();
|
||||||
@@ -1296,7 +1296,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() > n);
|
BOOST_ASSERT(this->size() > n);
|
||||||
return static_cast<node_reference>(*this->index[n]).get_data();
|
return static_cast<node_reference>(*this->index[n]).get_data();
|
||||||
@@ -1310,7 +1310,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() > n);
|
BOOST_ASSERT(this->size() > n);
|
||||||
return static_cast<const_node_reference>(*this->index[n]).get_data();
|
return static_cast<const_node_reference>(*this->index[n]).get_data();
|
||||||
@@ -1327,7 +1327,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() >= n);
|
BOOST_ASSERT(this->size() >= n);
|
||||||
return (this->index.empty()) ? this->end() : iterator(node_ptr_traits::static_cast_from(this->index[n]));
|
return (this->index.empty()) ? this->end() : iterator(node_ptr_traits::static_cast_from(this->index[n]));
|
||||||
@@ -1344,7 +1344,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->size() >= n);
|
BOOST_ASSERT(this->size() >= n);
|
||||||
return (this->index.empty()) ? this->cend() : iterator(node_ptr_traits::static_cast_from(this->index[n]));
|
return (this->index.empty()) ? this->cend() : iterator(node_ptr_traits::static_cast_from(this->index[n]));
|
||||||
@@ -1360,7 +1360,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->priv_index_of(p.node_pointer()); }
|
{ return this->priv_index_of(p.node_pointer()); }
|
||||||
|
|
||||||
//! <b>Requires</b>: begin() <= p <= end().
|
//! <b>Requires</b>: begin() <= p <= end().
|
||||||
@@ -1373,7 +1373,7 @@ class stable_vector
|
|||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
//!
|
//!
|
||||||
//! <b>Note</b>: Non-standard extension
|
//! <b>Note</b>: Non-standard extension
|
||||||
size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ return this->priv_index_of(p.node_pointer()); }
|
{ return this->priv_index_of(p.node_pointer()); }
|
||||||
|
|
||||||
//! <b>Requires</b>: size() > n.
|
//! <b>Requires</b>: size() > n.
|
||||||
@@ -1559,7 +1559,7 @@ class stable_vector
|
|||||||
//! <b>Returns</b>: an iterator to the first inserted element or p if first == last.
|
//! <b>Returns</b>: an iterator to the first inserted element or p if first == last.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to distance [il.begin(), il.end()).
|
//! <b>Complexity</b>: Linear to distance [il.begin(), il.end()).
|
||||||
iterator insert(const_iterator p, std::initializer_list<value_type> il)
|
BOOST_CONTAINER_FORCEINLINE iterator insert(const_iterator p, std::initializer_list<value_type> il)
|
||||||
{
|
{
|
||||||
//Position checks done by insert()
|
//Position checks done by insert()
|
||||||
STABLE_VECTOR_CHECK_INVARIANT;
|
STABLE_VECTOR_CHECK_INVARIANT;
|
||||||
@@ -1646,7 +1646,7 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant time.
|
//! <b>Complexity</b>: Constant time.
|
||||||
void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void pop_back() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(!this->empty());
|
BOOST_ASSERT(!this->empty());
|
||||||
this->erase(--this->cend());
|
this->erase(--this->cend());
|
||||||
@@ -1658,7 +1658,7 @@ class stable_vector
|
|||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the elements between p and the
|
//! <b>Complexity</b>: Linear to the elements between p and the
|
||||||
//! last element. Constant if p is the last element.
|
//! last element. Constant if p is the last element.
|
||||||
iterator erase(const_iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE iterator erase(const_iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{
|
{
|
||||||
BOOST_ASSERT(this->priv_in_range(p));
|
BOOST_ASSERT(this->priv_in_range(p));
|
||||||
STABLE_VECTOR_CHECK_INVARIANT;
|
STABLE_VECTOR_CHECK_INVARIANT;
|
||||||
@@ -1729,49 +1729,49 @@ class stable_vector
|
|||||||
//! <b>Throws</b>: Nothing.
|
//! <b>Throws</b>: Nothing.
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the stable_vector.
|
//! <b>Complexity</b>: Linear to the number of elements in the stable_vector.
|
||||||
void clear() BOOST_NOEXCEPT_OR_NOTHROW
|
BOOST_CONTAINER_FORCEINLINE void clear() BOOST_NOEXCEPT_OR_NOTHROW
|
||||||
{ this->erase(this->cbegin(),this->cend()); }
|
{ this->erase(this->cbegin(),this->cend()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x and y are equal
|
//! <b>Effects</b>: Returns true if x and y are equal
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator==(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const stable_vector& x, const stable_vector& y)
|
||||||
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x and y are unequal
|
//! <b>Effects</b>: Returns true if x and y are unequal
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator!=(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const stable_vector& x, const stable_vector& y)
|
||||||
{ return !(x == y); }
|
{ return !(x == y); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is less than y
|
//! <b>Effects</b>: Returns true if x is less than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator<(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const stable_vector& x, const stable_vector& y)
|
||||||
{ return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
{ return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is greater than y
|
//! <b>Effects</b>: Returns true if x is greater than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator>(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const stable_vector& x, const stable_vector& y)
|
||||||
{ return y < x; }
|
{ return y < x; }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is equal or less than y
|
//! <b>Effects</b>: Returns true if x is equal or less than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator<=(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const stable_vector& x, const stable_vector& y)
|
||||||
{ return !(y < x); }
|
{ return !(y < x); }
|
||||||
|
|
||||||
//! <b>Effects</b>: Returns true if x is equal or greater than y
|
//! <b>Effects</b>: Returns true if x is equal or greater than y
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
//! <b>Complexity</b>: Linear to the number of elements in the container.
|
||||||
friend bool operator>=(const stable_vector& x, const stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const stable_vector& x, const stable_vector& y)
|
||||||
{ return !(x < y); }
|
{ return !(x < y); }
|
||||||
|
|
||||||
//! <b>Effects</b>: x.swap(y)
|
//! <b>Effects</b>: x.swap(y)
|
||||||
//!
|
//!
|
||||||
//! <b>Complexity</b>: Constant.
|
//! <b>Complexity</b>: Constant.
|
||||||
friend void swap(stable_vector& x, stable_vector& y)
|
BOOST_CONTAINER_FORCEINLINE friend void swap(stable_vector& x, stable_vector& y)
|
||||||
{ x.swap(y); }
|
{ x.swap(y); }
|
||||||
|
|
||||||
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
||||||
@@ -1782,12 +1782,12 @@ class stable_vector
|
|||||||
return (this->begin() <= pos) && (pos < this->end());
|
return (this->begin() <= pos) && (pos < this->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_in_range_or_end(const_iterator pos) const
|
BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
|
||||||
{
|
{
|
||||||
return (this->begin() <= pos) && (pos <= this->end());
|
return (this->begin() <= pos) && (pos <= this->end());
|
||||||
}
|
}
|
||||||
|
|
||||||
size_type priv_index_of(node_ptr p) const
|
BOOST_CONTAINER_FORCEINLINE size_type priv_index_of(node_ptr p) const
|
||||||
{
|
{
|
||||||
//Check range
|
//Check range
|
||||||
BOOST_ASSERT(this->index.empty() || (this->index.data() <= p->up));
|
BOOST_ASSERT(this->index.empty() || (this->index.data() <= p->up));
|
||||||
@@ -1821,18 +1821,18 @@ class stable_vector
|
|||||||
class push_back_rollback
|
class push_back_rollback
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
push_back_rollback(stable_vector &sv, const node_ptr &p)
|
BOOST_CONTAINER_FORCEINLINE push_back_rollback(stable_vector &sv, const node_ptr &p)
|
||||||
: m_sv(sv), m_p(p)
|
: m_sv(sv), m_p(p)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
~push_back_rollback()
|
BOOST_CONTAINER_FORCEINLINE ~push_back_rollback()
|
||||||
{
|
{
|
||||||
if(m_p){
|
if(m_p){
|
||||||
m_sv.priv_put_in_pool(m_p);
|
m_sv.priv_put_in_pool(m_p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void release()
|
BOOST_CONTAINER_FORCEINLINE void release()
|
||||||
{ m_p = node_ptr(); }
|
{ m_p = node_ptr(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -1862,7 +1862,7 @@ class stable_vector
|
|||||||
return index_beg + idx;
|
return index_beg + idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool priv_capacity_bigger_than_size() const
|
BOOST_CONTAINER_FORCEINLINE bool priv_capacity_bigger_than_size() const
|
||||||
{
|
{
|
||||||
return this->index.capacity() > this->index.size() &&
|
return this->index.capacity() > this->index.size() &&
|
||||||
this->internal_data.pool_size > 0;
|
this->internal_data.pool_size > 0;
|
||||||
@@ -1995,16 +1995,16 @@ class stable_vector
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
node_base_ptr priv_get_end_node() const
|
BOOST_CONTAINER_FORCEINLINE node_base_ptr priv_get_end_node() const
|
||||||
{ return node_base_ptr_traits::pointer_to(const_cast<node_base_type&>(this->internal_data.end_node)); }
|
{ return node_base_ptr_traits::pointer_to(const_cast<node_base_type&>(this->internal_data.end_node)); }
|
||||||
|
|
||||||
void priv_destroy_node(const node_type &n)
|
BOOST_CONTAINER_FORCEINLINE void priv_destroy_node(const node_type &n)
|
||||||
{
|
{
|
||||||
allocator_traits<node_allocator_type>::
|
allocator_traits<node_allocator_type>::
|
||||||
destroy(this->priv_node_alloc(), &n);
|
destroy(this->priv_node_alloc(), &n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void priv_delete_node(const node_ptr &n)
|
BOOST_CONTAINER_FORCEINLINE void priv_delete_node(const node_ptr &n)
|
||||||
{
|
{
|
||||||
this->priv_destroy_node(*n);
|
this->priv_destroy_node(*n);
|
||||||
this->priv_put_in_pool(n);
|
this->priv_put_in_pool(n);
|
||||||
|
Reference in New Issue
Block a user