Go to the documentation of this file.
36 #ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_IMPL_HPP
37 #define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_IMPL_HPP
72 #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
73 #include <initializer_list>
76 #if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
83 #if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
84 #define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x) \
85 detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \
86 detail::make_obj_guard(x,&ordered_index_impl::check_invariant_); \
87 BOOST_JOIN(check_invariant_,__LINE__).touch();
88 #define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT \
89 BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(*this)
91 #define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x)
92 #define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
97 namespace multi_index{
114 typename KeyFromValue,
typename Compare,
115 typename SuperMeta,
typename TagList,
typename Category,
typename AugmentPolicy
120 typename KeyFromValue,
typename Compare,
121 typename SuperMeta,
typename TagList,
typename Category,
typename AugmentPolicy
126 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
127 ,
public safe_mode::safe_container<
129 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy> >
133 #if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
134 BOOST_WORKAROUND(__MWERKS__,<=0x3003)
140 #pragma parse_mfunc_templ off
143 typedef typename SuperMeta::type
super;
167 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
168 typedef safe_mode::safe_iterator<
179 typedef typename allocator_type::pointer
pointer;
193 typename super::index_type_list,
195 KeyFromValue,Compare,
196 SuperMeta,TagList,Category,AugmentPolicy
199 typename super::iterator_type_list,
202 typename super::const_iterator_type_list,
206 #if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
212 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
213 typedef safe_mode::safe_container<
295 std::pair<final_node_type*,bool> p=this->final_insert_(x);
296 return std::pair<iterator,bool>(
make_iterator(p.first),p.second);
302 std::pair<final_node_type*,bool> p=this->final_insert_rv_(x);
303 return std::pair<iterator,bool>(
make_iterator(p.first),p.second);
311 std::pair<final_node_type*,bool> p=this->final_insert_(
321 std::pair<final_node_type*,bool> p=this->final_insert_rv_(
326 template<
typename InputIterator>
327 void insert(InputIterator first,InputIterator last)
331 for(;first!=last;++first){
332 hint=this->final_insert_ref_(
338 #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
339 void insert(std::initializer_list<value_type> list)
341 insert(list.begin(),list.end());
351 this->final_erase_(
static_cast<final_node_type*
>(position++.get_node()));
360 while(p.first!=p.second){
361 p.first=
erase(p.first);
387 return this->final_replace_(
397 return this->final_replace_rv_(
401 template<
typename Modifier>
409 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
418 return this->final_modify_(
422 template<
typename Modifier,
typename Rollback>
430 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
439 return this->final_modify_(
443 template<
typename Modifier>
454 template<
typename Modifier,
typename Rollback>
469 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x)
473 this->final_swap_(x.final());
479 this->final_clear_();
494 template<
typename CompatibleKey>
500 template<
typename CompatibleKey,
typename CompatibleCompare>
502 const CompatibleKey& x,
const CompatibleCompare& comp)
const
507 template<
typename CompatibleKey>
513 template<
typename CompatibleKey,
typename CompatibleCompare>
516 std::pair<iterator,iterator> p=
equal_range(x,comp);
517 size_type n=std::distance(p.first,p.second);
521 template<
typename CompatibleKey>
528 template<
typename CompatibleKey,
typename CompatibleCompare>
530 const CompatibleKey& x,
const CompatibleCompare& comp)
const
536 template<
typename CompatibleKey>
543 template<
typename CompatibleKey,
typename CompatibleCompare>
545 const CompatibleKey& x,
const CompatibleCompare& comp)
const
551 template<
typename CompatibleKey>
553 const CompatibleKey& x)
const
555 std::pair<node_type*,node_type*> p=
557 return std::pair<iterator,iterator>(
561 template<
typename CompatibleKey,
typename CompatibleCompare>
563 const CompatibleKey& x,
const CompatibleCompare& comp)
const
565 std::pair<node_type*,node_type*> p=
567 return std::pair<iterator,iterator>(
573 template<
typename LowerBounder,
typename UpperBounder>
574 std::pair<iterator,iterator>
575 range(LowerBounder lower,UpperBounder upper)
const
597 key(tuples::
get<0>(args_list.get_head())),
605 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x):
608 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
622 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x,
626 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
641 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
653 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x,
661 AugmentPolicy::copy(x.header()->impl(),
header()->impl());
674 typedef typename copy_map_type::const_iterator copy_map_iterator;
675 for(copy_map_iterator it=map.begin(),it_end=map.end();it!=it_end;++it){
680 AugmentPolicy::copy(org->
impl(),cpy->
impl());
688 if(parent_org->left()==org->
impl()){
691 else if(parent_org->right()==org->
impl()){
707 template<
typename Variant>
724 template<
typename Variant>
747 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
762 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
763 safe_super::detach_dereferenceable_iterators();
769 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x)
774 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
783 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x)
785 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
789 super::swap_elements_(x);
792 template<
typename Variant>
796 return super::replace_(v,x,variant);
807 if(
link_point(
key(v),inf,Category())&&super::replace_(v,x,variant)){
825 b=
in_place(x->value(),x,Category());
840 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
850 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
860 if(!super::modify_(x)){
864 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
876 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
887 if(
in_place(x->value(),x,Category())){
888 return super::modify_rollback_(x);
900 super::modify_rollback_(x)){
914 #if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
917 template<
typename Archive>
921 save_(ar,version,sm,Category());
924 template<
typename Archive>
927 load_(ar,version,lm,Category());
931 #if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
934 bool invariant_()
const
944 std::size_t len=node_impl_type::black_count(
952 if((left_x&&left_x->color()==
red)||
953 (right_x&&right_x->color()==
red))
return false;
955 if(left_x&&
comp_(
key(x->value()),
key(left_x->value())))
return false;
956 if(right_x&&
comp_(
key(right_x->value()),
key(x->value())))
return false;
957 if(!left_x&&!right_x&&
958 node_impl_type::black_count(x->impl(),
root()->impl())!=len)
960 if(!AugmentPolicy::invariant(x->impl()))
return false;
969 return super::invariant_();
978 void check_invariant_()
const{this->final_check_invariant_();}
1079 else if(position==
header()){
1117 else if(position==
header()){
1128 if(!
comp_(k,
key(before->value()))){
1129 if(!
comp_(
key(position->value()),k)){
1184 #if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
1188 safe_mode::detach_equivalent_iterators(it);
1192 template<BOOST_MULTI_INDEX_TEMPLATE_PARAM_PACK>
1196 std::pair<final_node_type*,bool>p=
1198 return std::pair<iterator,bool>(
make_iterator(p.first),p.second);
1201 template<BOOST_MULTI_INDEX_TEMPLATE_PARAM_PACK>
1208 std::pair<final_node_type*,bool>p=
1209 this->final_emplace_hint_(
1215 template<
typename LowerBounder,
typename UpperBounder>
1216 std::pair<iterator,iterator>
1231 return std::pair<iterator,iterator>(
1242 template<
typename LowerBounder,
typename UpperBounder>
1243 std::pair<iterator,iterator>
1246 return std::pair<iterator,iterator>(
1251 template<
typename LowerBounder,
typename UpperBounder>
1252 std::pair<iterator,iterator>
1255 return std::pair<iterator,iterator>(
1260 template<
typename LowerBounder,
typename UpperBounder>
1261 std::pair<iterator,iterator>
1264 return std::pair<iterator,iterator>(
begin(),
end());
1267 template<
typename LowerBounder>
1281 template<
typename UpperBounder>
1295 #if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
1296 template<
typename Archive>
1301 super::save_(ar,version,sm);
1304 template<
typename Archive>
1309 super::load_(ar,version,lm);
1312 template<
typename Archive>
1323 super::save_(ar,version,sm);
1326 template<
typename Archive>
1336 super::load_(ar,version,lm);
1341 if(!position||
comp_(
key(position->value()),
key(x->value()))){
1344 else if(
comp_(
key(x->value()),
key(position->value()))){
1365 #if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
1366 BOOST_WORKAROUND(__MWERKS__,<=0x3003)
1367 #pragma parse_mfunc_templ reset
1372 typename KeyFromValue,
typename Compare,
1373 typename SuperMeta,
typename TagList,
typename Category,
typename AugmentPolicy
1376 public AugmentPolicy::template augmented_interface<
1378 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy
1382 typedef typename AugmentPolicy::template
1383 augmented_interface<
1385 KeyFromValue,Compare,
1386 SuperMeta,TagList,Category,AugmentPolicy
1401 this->
final()=x.final();
1405 #if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
1407 std::initializer_list<BOOST_DEDUCED_TYPENAME super::value_type> list)
1417 super(args_list,al){}
1428 typename KeyFromValue1,
typename Compare1,
1429 typename SuperMeta1,
typename TagList1,
typename Category1,
1430 typename AugmentPolicy1,
1431 typename KeyFromValue2,
typename Compare2,
1432 typename SuperMeta2,
typename TagList2,
typename Category2,
1433 typename AugmentPolicy2
1437 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1439 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1441 return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin());
1445 typename KeyFromValue1,
typename Compare1,
1446 typename SuperMeta1,
typename TagList1,
typename Category1,
1447 typename AugmentPolicy1,
1448 typename KeyFromValue2,
typename Compare2,
1449 typename SuperMeta2,
typename TagList2,
typename Category2,
1450 typename AugmentPolicy2
1454 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1456 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1458 return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
1462 typename KeyFromValue1,
typename Compare1,
1463 typename SuperMeta1,
typename TagList1,
typename Category1,
1464 typename AugmentPolicy1,
1465 typename KeyFromValue2,
typename Compare2,
1466 typename SuperMeta2,
typename TagList2,
typename Category2,
1467 typename AugmentPolicy2
1471 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1473 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1479 typename KeyFromValue1,
typename Compare1,
1480 typename SuperMeta1,
typename TagList1,
typename Category1,
1481 typename AugmentPolicy1,
1482 typename KeyFromValue2,
typename Compare2,
1483 typename SuperMeta2,
typename TagList2,
typename Category2,
1484 typename AugmentPolicy2
1488 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1490 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1496 typename KeyFromValue1,
typename Compare1,
1497 typename SuperMeta1,
typename TagList1,
typename Category1,
1498 typename AugmentPolicy1,
1499 typename KeyFromValue2,
typename Compare2,
1500 typename SuperMeta2,
typename TagList2,
typename Category2,
1501 typename AugmentPolicy2
1505 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1507 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1513 typename KeyFromValue1,
typename Compare1,
1514 typename SuperMeta1,
typename TagList1,
typename Category1,
1515 typename AugmentPolicy1,
1516 typename KeyFromValue2,
typename Compare2,
1517 typename SuperMeta2,
typename TagList2,
typename Category2,
1518 typename AugmentPolicy2
1522 KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1,AugmentPolicy1>& x,
1524 KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2,AugmentPolicy2>& y)
1532 typename KeyFromValue,
typename Compare,
1533 typename SuperMeta,
typename TagList,
typename Category,
typename AugmentPolicy
1537 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& x,
1539 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>& y)
1553 typename KeyFromValue,
typename Compare,
1554 typename SuperMeta,
typename TagList,
typename Category,
typename AugmentPolicy
1558 KeyFromValue,Compare,SuperMeta,TagList,Category,AugmentPolicy>*&,
1564 #undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
1565 #undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF
super::final_node_type final_node_type
std::pair< iterator, iterator > equal_range(const CompatibleKey &x) const
value_comparison< value_type, KeyFromValue, Compare > value_compare
bool modify(iterator position, Modifier mod)
bool in_place(value_param_type v, node_type *x, ordered_unique_tag)
iterator lower_bound(const CompatibleKey &x, const CompatibleCompare &comp) const
final_node_type * insert_(value_param_type v, final_node_type *&x, Variant variant)
const_iterator begin() const BOOST_NOEXCEPT
boost::reverse_iterator< const_iterator > const_reverse_iterator
const_reverse_iterator rbegin() const BOOST_NOEXCEPT
node_type::value_type value_type
const_iterator cbegin() const BOOST_NOEXCEPT
void save_(Archive &ar, const unsigned int version, const index_saver_type &sm) const
reverse_iterator rend() BOOST_NOEXCEPT
std::pair< iterator, iterator > range(LowerBounder lower, UpperBounder upper, none_unbounded_tag) const
iterator upper_bound(const CompatibleKey &x, const CompatibleCompare &comp) const
#define BOOST_MULTI_INDEX_CHECK_IS_OWNER(it, cont)
std::pair< iterator, bool > insert(BOOST_RV_REF(value_type) x)
nth_index< multi_index_container< Value, IndexSpecifierList, Allocator >, N >::type & get(multi_index_container< Value, IndexSpecifierList, Allocator > &m) BOOST_NOEXCEPT
KeyFromValue key_from_value
void swap(ordered_index< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x, ordered_index< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &y)
iterator find(const CompatibleKey &x, const CompatibleCompare &comp) const
boost::mpl::true_ * boost_foreach_is_noncopyable(boost::multi_index::detail::ordered_index< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > *&, boost_foreach_argument_dependent_lookup_hack)
static pointer maximum(pointer x)
#define BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS
allocator_type get_allocator() const BOOST_NOEXCEPT
iterator emplace_hint_impl(iterator position, BOOST_MULTI_INDEX_FUNCTION_PARAM_PACK)
result_traits< R, F >::type result_type
bool modify_key(iterator position, Modifier mod, Rollback back_)
iterator erase(iterator position)
BOOST_NORETURN void throw_exception(E const &e)
bool link_point(key_param_type k, link_info &inf, ordered_unique_tag)
iterator upper_bound(const CompatibleKey &x) const
void clear() BOOST_NOEXCEPT
const_iterator make_iterator(node_type *node) const
call_traits< value_type >::param_type value_param_type
iterator insert(iterator position, BOOST_RV_REF(value_type) x)
iterator begin() BOOST_NOEXCEPT
const_iterator iterator_to(const value_type &x) const
ordered_index(const ordered_index &x)
void delete_all_nodes(node_type *x)
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL(emplace_return_type, emplace, emplace_impl) BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL_EXTRA_ARG(iterator
const_iterator end() const BOOST_NOEXCEPT
static void restore(pointer x, pointer position, pointer header)
node_type * lower_range(node_type *top, node_type *y, LowerBounder lower) const
size_type max_size() const BOOST_NOEXCEPT
bool replace(iterator position, const value_type &x)
iterator iterator_to(const value_type &x)
std::pair< iterator, iterator > range(LowerBounder, UpperBounder upper, lower_unbounded_tag) const
#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT_OF(x)
bool replace(iterator position, BOOST_RV_REF(value_type) x)
std::pair< iterator, iterator > range(LowerBounder, UpperBounder, both_unbounded_tag) const
std::pair< Node *, Node * > ordered_index_equal_range(Node *top, Node *y, const KeyFromValue &key, const CompatibleKey &x, const CompatibleCompare &comp)
bool operator==(const bidir_node_iterator< Node > &x, const bidir_node_iterator< Node > &y)
static void link(pointer x, ordered_index_side side, pointer position, pointer header)
static pointer minimum(pointer x)
node_type * rightmost() const
AugmentPolicy::template augmented_interface< ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > >::type super
iterator find(const CompatibleKey &x) const
allocator_type::pointer pointer
iterator lower_bound(const CompatibleKey &x) const
static pointer rebalance_for_erase(pointer z, parent_ref root, pointer &leftmost, pointer &rightmost)
size_type erase(key_param_type x)
mpl::push_front< typename super::index_type_list, ordered_index< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > >::type index_type_list
boost::reverse_iterator< iterator > reverse_iterator
std::pair< iterator, iterator > equal_range(const CompatibleKey &x, const CompatibleCompare &comp) const
call_traits< key_type >::param_type key_param_type
#define BOOST_MULTI_INDEX_OVERLOADS_TO_VARTEMPL_EXTRA_ARG( ret, name_from, name_to, extra_arg_type, extra_arg_name)
void erase_(node_type *x)
node_type * leftmost() const
reverse_iterator< BidirectionalIterator > make_reverse_iterator(BidirectionalIterator x)
key_from_value key_extractor() const
super::allocator_type allocator_type
void swap(ordered_index< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x)
void swap_(ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x)
Node * ordered_index_find(Node *top, Node *y, const KeyFromValue &key, const CompatibleKey &x, const CompatibleCompare &comp)
bool modify_key(iterator position, Modifier mod)
tuples::cons< ctor_args, typename super::ctor_args_list > ctor_args_list
bool operator<=(const ordered_index< KeyFromValue1, Compare1, SuperMeta1, TagList1, Category1, AugmentPolicy1 > &x, const ordered_index< KeyFromValue2, Compare2, SuperMeta2, TagList2, Category2, AugmentPolicy2 > &y)
boost_foreach_argument_dependent_lookup_hack
iterator erase(iterator first, iterator last)
iterator end() BOOST_NOEXCEPT
mpl::push_front< typename super::iterator_type_list, iterator >::type iterator_type_list
super::index_loader_type index_loader_type
void copy_(const ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x, const copy_map_type &map)
iterator make_iterator(node_type *node)
void load_(Archive &ar, const unsigned int version, const index_loader_type &lm, ordered_unique_tag)
static void increment(ordered_index_node *&x)
static ordered_index_node * from_impl(impl_pointer x)
bool empty() const BOOST_NOEXCEPT
void load_(Archive &ar, const unsigned int version, const index_loader_type &lm)
ordered_index & operator=(std::initializer_list< BOOST_DEDUCED_TYPENAME super::value_type > list)
BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS const allocator_type & al
const_iterator cend() const BOOST_NOEXCEPT
std::pair< iterator, iterator > range(LowerBounder lower, UpperBounder upper) const
bool link_point(key_param_type k, link_info &inf, ordered_non_unique_tag)
bool operator>=(const ordered_index< KeyFromValue1, Compare1, SuperMeta1, TagList1, Category1, AugmentPolicy1 > &x, const ordered_index< KeyFromValue2, Compare2, SuperMeta2, TagList2, Category2, AugmentPolicy2 > &y)
allocator_type::reference reference
size_type size() const BOOST_NOEXCEPT
bool operator!=(const duplicates_iterator< Node, Predicate > &x, const duplicates_iterator< Node, Predicate > &y)
#define BOOST_RV_REF(TYPE)
bool lower_link_point(key_param_type k, link_info &inf, ordered_non_unique_tag)
void insert(std::initializer_list< value_type > list)
#define BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it)
final_node_type * insert_(value_param_type v, node_type *position, final_node_type *&x, Variant variant)
void save_(Archive &ar, const unsigned int version, const index_saver_type &sm, ordered_non_unique_tag) const
#define BOOST_MULTI_INDEX_FUNCTION_PARAM_PACK
mpl::push_front< typename super::const_iterator_type_list, const_iterator >::type const_iterator_type_list
bool modify_(node_type *x)
node_type * upper_range(node_type *top, node_type *y, UpperBounder upper) const
tuple< key_from_value, key_compare > ctor_args
iterator insert(iterator position, const value_type &x)
position std::pair< iterator, bool > insert(const value_type &x)
#define BOOST_DEDUCED_TYPENAME
ordered_index(const ctor_args_list &args_list, const allocator_type &al)
void load_(Archive &ar, const unsigned int version, const index_loader_type &lm, ordered_non_unique_tag)
ordered_index_impl(const ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x)
key_compare key_comp() const
size_type count(const CompatibleKey &x, const CompatibleCompare &comp) const
bool hinted_link_point(key_param_type k, node_type *position, link_info &inf, ordered_non_unique_tag)
const_reverse_iterator rend() const BOOST_NOEXCEPT
std::ptrdiff_t difference_type
super::final_allocator_type allocator_type
std::pair< iterator, iterator > range(LowerBounder lower, UpperBounder, upper_unbounded_tag) const
bool modify(iterator position, Modifier mod, Rollback back_)
ordered_index & operator=(const ordered_index &x)
void insert(InputIterator first, InputIterator last)
static void decrement(ordered_index_node *&x)
std::pair< iterator, bool > emplace_impl(BOOST_MULTI_INDEX_FUNCTION_PARAM_PACK)
#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
void swap(auto_space< T, Allocator > &x, auto_space< T, Allocator > &y)
bidir_node_iterator< node_type > iterator
super::index_saver_type index_saver_type
Node * ordered_index_upper_bound(Node *top, Node *y, const KeyFromValue &key, const CompatibleKey &x, const CompatibleCompare &comp)
reverse_iterator rbegin() BOOST_NOEXCEPT
const_reverse_iterator crend() const BOOST_NOEXCEPT
value_compare value_comp() const
std::pair< iterator, bool > emplace_return_type
bool operator>(const ordered_index< KeyFromValue1, Compare1, SuperMeta1, TagList1, Category1, AugmentPolicy1 > &x, const ordered_index< KeyFromValue2, Compare2, SuperMeta2, TagList2, Category2, AugmentPolicy2 > &y)
node_type * header() const
bool modify_rollback_(node_type *x)
void rearranger(node_type *position, node_type *x)
#define BOOST_MULTI_INDEX_CHECK_VALID_RANGE(it0, it1)
KeyFromValue::result_type key_type
super::copy_map_type copy_map_type
ordered_index(const ordered_index &x, do_not_copy_elements_tag)
node_type::impl_type node_impl_type
allocator_type::const_reference const_reference
const_reverse_iterator crbegin() const BOOST_NOEXCEPT
ordered_index_node< AugmentPolicy, typename super::node_type > node_type
void save_(Archive &ar, const unsigned int version, const index_saver_type &sm, ordered_unique_tag) const
ordered_index_impl(const ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x, do_not_copy_elements_tag)
bool in_place(value_param_type v, node_type *x, ordered_non_unique_tag)
void swap_elements_(ordered_index_impl< KeyFromValue, Compare, SuperMeta, TagList, Category, AugmentPolicy > &x)
super::ctor_args_list ctor_args_list
bool hinted_link_point(key_param_type k, node_type *position, link_info &inf, ordered_unique_tag)
#define BOOST_MULTI_INDEX_FORWARD_PARAM_PACK
size_type count(const CompatibleKey &x) const
#define BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(it)
allocator_type::const_pointer const_pointer
node_impl_type::pointer node_impl_pointer
bool operator<(const random_access_iter_adaptor_base< Derived, Base > &x, const random_access_iter_adaptor_base< Derived, Base > &y)
bool replace_(value_param_type v, node_type *x, Variant variant)
Node * ordered_index_lower_bound(Node *top, Node *y, const KeyFromValue &key, const CompatibleKey &x, const CompatibleCompare &comp)
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:45:35