66 Commits

Author SHA1 Message Date
joaquintides
a52810fc3d
implemented merge operations (#49)
* initial draft

* modified appveyor.yml for this branch

* dropped BOOST_RV_REF
as it doesn't handle lvalue refs

* befriended index_base from all indices
so as to be grant access to final_extract_for_merge_ from an external container

* added rvalue ref merge
(test expected to fail in C++03)

* added explicit boost::move on rvalue ref
for the benefit of C++03 compilers

* fixed previous workaround

* refactored merge algorithm into multi_index_container

* added hashed_index::merge

* reimplemented sequenced_index::splice(position,x)

* added missing this->'s

* refactored SFINAEing code

* made sequenced_index::splice(position,x) exception robust

* reimplemented random_access_index::splice(position,x)

* micro-optimized legacy code in random_access_index::splice(position,x)

* added missing #include

* reimplemented sequenced_index::splice(position,x,i)

* reimplemented random_access_index::splice(position,x,i)

* reimplemented sequenced_index::splice(position,x,first,last)

* reimplemented random_access_index::splice(position,x,first,last)

* re-engineered sequenced_index::splice(position,x,i)
so that it works when source and destination belong to the same container

* stylistic

* re-engineered random_access_index::splice(position,x,i)
so that it works when source and destination belong to the same container

* re-engineered sequenced_index::splice(position,x,first,last)
so that it works when source and destination belong to the same container

* stylistic

* fixed bug in rvalue ref overload of sequenced_index::splice(position,x,first,last)

* fixed internal sequenced_index::splice(position,x,first,last) across different indices

* re-engineered random_access_index::splice(position,x,first,last)
the same way as done with sequenced_index

* replaced multi_index_container::merge_ with transfer_range_
so as to refactor some code in non-key-based indices

* fixed safe mode check for different-type containers

* hardened merge/splice tests

* s/BOOST_RV_REF/BOOST_FWD_REF

* called the right merge_different overload

* fixed problem with Boost.Move C++03 perfect fwd emulation

* updated (C) year

* allowed intra-container full splice

* required position==end() in intra-container full splice

* made pointwise splice return a pair<iterator,bool>

* added partial merge functionality to key-based indices
plus fixed a compile-time error with legacy splice code when applied to different-type indices

* suppressed unused variable

* fixed wrong signature in splice memfun

* made safe-mode iterators SCARY

* refactored any_container_view

* implemented safe iterator transfer in merge/splice

* reorganized internal deps

* stylistic

* automatically checked iterator invalidation upon merge/splice

* removed commented-out code

* checked allocator equality

* reimplemented random_access_index internal, cross-index splice in linear time

* updated docs

* reverted appveyor.yml
2021-08-19 10:41:03 +02:00
joaquintides
4a109e99e5 avoided deprecated #includes, fixed Boost.Move headers 2020-05-10 12:17:55 +02:00
joaquintides
e69466039d implemented node extraction/insertion (#27) 2020-05-09 20:25:41 +02:00
joaquintides
a766a08573 replaced erase_ backbone function with extract:_ 2020-05-01 20:36:38 +02:00
joaquintides
3a47a82947 simplified delete_node_ 2020-05-01 13:22:03 +02:00
joaquintides
382e41fa99 renamed internal typedefs to make room for public node_type 2020-05-01 11:46:51 +02:00
joaquintides
d7ad9185e8 spared one equal allocator swap 2020-01-27 12:14:03 +01:00
joaquintides
81dbe86f25 suppressed VS warnings 2020-01-26 13:24:55 +01:00
joaquintides
a8d34a56f7 made multi_index_container AllocatorAware (#30) 2020-01-26 11:52:23 +01:00
joaquintides
dc1ac9d879 added/trimmed #include's 2018-12-31 10:59:06 +01:00
joaquintides
adbd496248 stylistic 2018-12-31 10:13:37 +01:00
joaquintides
008b1a5ed6 completed previous fix 2018-12-31 10:06:27 +01:00
joaquintides
ac377a6e7d fixed wrong copy construction as emplacement construction 2018-12-31 09:48:09 +01:00
joaquintides
131e3427ae farewelled boost/detail/allocator_utilities.hpp 2018-12-31 01:50:12 +01:00
joaquintides
c57a6771fd refactored 91f21167118564daedafb0224132f7b2b6651e05 2018-12-30 14:59:14 +01:00
joaquintides
18cea285e2 inherited size_type and difference_type from the allocator 2018-12-29 13:06:57 +01:00
joaquintides
9623bf0a7d addressed https://svn.boost.org/trac10/ticket/13518 2018-04-13 18:06:55 +02:00
joaquintides
4d21e89621 addressed https://svn.boost.org/trac10/ticket/13478 2018-03-13 22:05:01 +01:00
joaquintides
2f21af1751 documented previous commit 2018-01-01 11:36:34 +01:00
Daniela Engert
58c42a46c1
Most members of std::allocate are deprecated in C++17
Replace them by their cousins from std::allocator_traits.

Signed-off-by: Daniela Engert <dani@ngrt.de>
2017-12-31 14:39:35 +01:00
joaquintides
5744230acf protected against overloaded operator& 2017-11-23 23:26:53 +01:00
joaquintides
b9a4467f34 addressed https://svn.boost.org/trac/boost/ticket/12542 2017-08-24 23:41:35 +02:00
joaquintides
c389bd462f std::initializer_list<T>::iterator --> const T* to cope with old versions of libstdc++ 2014-07-21 19:18:12 +02:00
joaquintides
86d7b3ef6e copied content from develop after wrongly made merge 2013-12-25 12:36:32 +01:00
Joaquín M López Muñoz
590e3d1511 merged [85497] from trunk
[SVN r85509]
2013-08-29 06:10:38 +00:00
Joaquín M López Muñoz
0bc802ad7d merged [85001], [85004], [85005], [85016], [85017], [85018], [85022], [85028], [85099] and [85100] from trunk
[SVN r85146]
2013-07-24 07:52:40 +00:00
Joaquín M López Muñoz
b35a722129 merged [75643] from trunk
[SVN r75691]
2011-11-27 13:52:14 +00:00
Joaquín M López Muñoz
e4771a0fae merged [64312] from trunk
[SVN r64313]
2010-07-24 09:20:29 +00:00
Joaquín M López Muñoz
215d795984 merged [58485] and [59443] from trunk
[SVN r59525]
2010-02-06 14:38:28 +00:00
Joaquín M López Muñoz
efce67f27b reverted [58517]
[SVN r58847]
2010-01-09 18:17:59 +00:00
Joaquín M López Muñoz
5fd288b095 merged [58485] from trunk
[SVN r58517]
2009-12-23 18:01:35 +00:00
Joaquín M López Muñoz
718559b87f merged [55994] and [55995] from trunk
[SVN r56111]
2009-09-08 20:20:35 +00:00
Joaquín M López Muñoz
3199ff1b44 merged up to [53676] from trunk
[SVN r53730]
2009-06-07 18:44:00 +00:00
Joaquín M López Muñoz
8c5ac57c6a merged rev. 48728 from trunk
[SVN r48774]
2008-09-14 16:36:06 +00:00
Joaquín M López Muñoz
bd8ea1bc86 merged up to rev. 47041 from trunk
[SVN r47045]
2008-07-03 16:51:53 +00:00
Joaquín M López Muñoz
faf18a55f0 merged rev. 41397 from trunk
[SVN r41513]
2007-11-30 21:09:14 +00:00
Beman Dawes
9b4c07478c Full merge from trunk at revision 41356 of entire boost-root tree.
[SVN r41369]
2007-11-25 18:07:19 +00:00
Joaquín M. López Muñoz
543fbad471 merged from trunk to branch
[SVN r37079]
2007-02-26 09:16:36 +00:00
Joaquín M. López Muñoz
a1944a19a2 extended workaround from MSVC 6.0 to 7.0
[SVN r33142]
2006-02-27 14:06:06 +00:00
Joaquín M. López Muñoz
9c61f94492 MSVC 6.0 workaround for index_type_list; node values are now accessed through a memfun
[SVN r32629]
2006-02-06 14:49:58 +00:00
Joaquín M. López Muñoz
95d44a6109 fixed a call to reset_object_address (previous version did work, though)
[SVN r30810]
2005-09-05 08:37:35 +00:00
Joaquín M. López Muñoz
f1ad358bff fixed an invariant unsafe flow path
[SVN r30767]
2005-09-01 08:00:57 +00:00
Joaquín M. López Muñoz
6e33d0ef2a adapted to serialization stricter rules on saving and constness
[SVN r28405]
2005-04-22 08:07:47 +00:00
Joaquín M. López Muñoz
10a8ae1037 used serialization reset_object_address facility
[SVN r28332]
2005-04-20 06:19:12 +00:00
Joaquín M. López Muñoz
3c21273b61 added internal machinery for faster cleanup; removed BOOST_MULTI_INDEX_NO_MEMBER_TEMPLATE_FRIENDS; added #pragma once
[SVN r27836]
2005-03-28 12:30:11 +00:00
Joaquín M. López Muñoz
980b11f00e added iterator serialization
[SVN r26690]
2005-01-13 14:00:55 +00:00
Joaquín M. López Muñoz
1869a8827d added serialization support
[SVN r26501]
2004-12-14 18:24:21 +00:00
Joaquín M. López Muñoz
d5b5b1924a fixed bug
[SVN r24886]
2004-09-03 08:36:43 +00:00
Aleksey Gurtovoy
3954c2f22e merge new MPL version from 'mplbook' branch
[SVN r24874]
2004-09-02 15:41:37 +00:00
Joaquín M. López Muñoz
a143eaa27c qualified a symbol causing ambiguity problems in Compaq C++ for Tru64 Unix
[SVN r24671]
2004-08-23 14:40:34 +00:00