passenger 5.1.4 → 5.1.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.editorconfig +9 -0
- data/CHANGELOG +9 -0
- data/build/cxx_tests.rb +11 -1
- data/build/documentation.rb +0 -32
- data/build/support/cxx_dependency_map.rb +602 -2
- data/build/test_basics.rb +3 -3
- data/dev/boost-patches/0001-Patch-boost-thread-so-that-oxt-thread-can-use-it.patch +48 -0
- data/dev/boost-patches/0002-Make-boost-thread_interrupted-derive-from-oxt-tracab.patch +33 -0
- data/dev/boost-patches/0003-Disable-a-Clang-pragma-to-prevent-warnings-on-OS-X.patch +25 -0
- data/dev/ci/README.md +121 -0
- data/dev/ci/lib/functions.sh +129 -0
- data/dev/ci/lib/set-container-envvars.sh +46 -0
- data/dev/ci/lib/setup-container.sh +43 -0
- data/dev/ci/run-tests-natively +24 -0
- data/dev/ci/run-tests-with-docker +42 -0
- data/dev/ci/scripts/debug-console-wrapper.sh +27 -0
- data/dev/ci/scripts/docker-entrypoint-stage2.sh +17 -0
- data/dev/ci/scripts/docker-entrypoint.sh +17 -0
- data/dev/ci/scripts/inituidgid +17 -0
- data/dev/ci/scripts/run-tests-natively-stage2.sh +17 -0
- data/dev/ci/scripts/setup-host-natively.sh +11 -0
- data/dev/ci/setup-host +50 -0
- data/dev/ci/tests/apache2/run +6 -0
- data/dev/ci/tests/apache2/setup +4 -0
- data/dev/ci/tests/cxx/run +9 -0
- data/dev/ci/tests/cxx/setup +4 -0
- data/dev/ci/tests/nginx-dynamic/run +20 -0
- data/dev/ci/tests/nginx-dynamic/setup +4 -0
- data/dev/ci/tests/nginx/run +5 -0
- data/dev/ci/tests/nginx/setup +4 -0
- data/dev/ci/tests/nodejs/run +4 -0
- data/dev/ci/tests/nodejs/setup +4 -0
- data/dev/ci/tests/ruby/run +4 -0
- data/dev/ci/tests/ruby/setup +4 -0
- data/dev/ci/tests/source-packaging/run +4 -0
- data/dev/ci/tests/source-packaging/setup +4 -0
- data/dev/ci/tests/standalone/run +4 -0
- data/dev/ci/tests/standalone/setup +4 -0
- data/dev/copy_boost_headers +8 -2
- data/src/agent/Core/ApiServer.h +11 -5
- data/src/agent/Core/Controller.h +12 -46
- data/src/agent/Core/Controller/CheckoutSession.cpp +1 -1
- data/src/agent/Core/Controller/Config.h +369 -0
- data/src/agent/Core/Controller/ForwardResponse.cpp +4 -4
- data/src/agent/Core/Controller/Hooks.cpp +15 -3
- data/src/agent/Core/Controller/Implementation.cpp +1 -1
- data/src/agent/Core/Controller/InitRequest.cpp +28 -39
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +25 -60
- data/src/agent/Core/Controller/InternalUtils.cpp +0 -16
- data/src/agent/Core/Controller/Miscellaneous.cpp +0 -17
- data/src/agent/Core/Controller/Request.h +2 -0
- data/src/agent/Core/Controller/SendRequest.cpp +4 -4
- data/src/agent/Core/Controller/{StateInspectionAndConfiguration.cpp → StateInspection.cpp} +0 -22
- data/src/agent/Core/Controller/TurboCaching.h +11 -10
- data/src/agent/Core/CoreMain.cpp +16 -6
- data/src/agent/Core/ResponseCache.h +3 -3
- data/src/agent/Core/SpawningKit/SmartSpawner.h +9 -3
- data/src/agent/Core/SpawningKit/Spawner.h +7 -3
- data/src/agent/UstRouter/ApiServer.h +3 -2
- data/src/agent/UstRouter/Controller.h +66 -32
- data/src/agent/UstRouter/UstRouterMain.cpp +10 -2
- data/src/agent/Watchdog/ApiServer.h +3 -2
- data/src/agent/Watchdog/WatchdogMain.cpp +3 -1
- data/src/apache2_module/ConfigurationCommands.cpp +1 -1
- data/src/cxx_supportlib/ConfigKit/Common.h +125 -0
- data/src/cxx_supportlib/ConfigKit/ConfigKit.h +34 -0
- data/src/cxx_supportlib/ConfigKit/README.md +895 -0
- data/src/cxx_supportlib/ConfigKit/Schema.h +331 -0
- data/src/cxx_supportlib/ConfigKit/Store.h +385 -0
- data/src/cxx_supportlib/ConfigKit/TableTranslator.h +185 -0
- data/src/cxx_supportlib/ConfigKit/Utils.h +141 -0
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +81 -0
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Crypto.cpp +2 -2
- data/src/cxx_supportlib/Logging.h +0 -35
- data/src/cxx_supportlib/ServerKit/HttpServer.h +35 -16
- data/src/cxx_supportlib/ServerKit/Server.h +65 -25
- data/src/cxx_supportlib/oxt/macros.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/replace.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +53 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +23 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_msvc_x86.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +28 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/arg.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +90 -18
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +35 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/compaq_cxx.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +29 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sgi_mipspro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +44 -16
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/select_compiler_config.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/suffix.hpp +33 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +34 -27
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +62 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +39 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +49 -32
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +175 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +223 -98
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +4 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +45 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +205 -26
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +290 -181
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +24 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +320 -46
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +91 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +491 -120
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +399 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/deque.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/list.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/slist.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/small_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/stable_vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/string.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/vector.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +19 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +117 -59
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +33 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +414 -70
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +134 -117
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +202 -99
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +217 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +29 -27
- data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_names_put.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day_of_year.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +27 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/posix_time_zone.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_parsers.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +25 -3
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +114 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +116 -142
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +57 -69
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/detail/hash_float.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/extensions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash/hash.hpp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/any_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +99 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +35 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +37 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +209 -72
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algo_type.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +58 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +27 -26
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/equal_to_value.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/has_member_function_callable_with.hpp +83 -57
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iiterator.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +70 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +22 -21
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/parent_from_member.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +29 -28
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +33 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/size_holder.hpp +19 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +21 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/transform_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -22
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +103 -29
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +295 -211
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +20 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/parent_from_member.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +22 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +43 -13
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/set_hook.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +96 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +102 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +48 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +20 -11
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist_hook.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +95 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +36 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +167 -23
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +100 -46
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +37 -27
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +30 -14
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +35 -36
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +6 -28
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +20 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/fpclassify.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +40 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +2437 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +121 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +127 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +637 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +139 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +155 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -116
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/move/default_delete.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +227 -32
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +30 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/move_helpers.hpp +84 -80
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/placement_new.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +14 -20
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +32 -33
- data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/unique_ptr.hpp +49 -49
- data/src/cxx_supportlib/vendor-modified/boost/move/utility.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/mpl/print.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/none.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/none_t.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +197 -255
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +1059 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +116 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_factory_support.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +196 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_swap.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +372 -554
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional_fwd.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +15 -7
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool_alloc.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +16 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/cat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/to_list_msvc.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/to_list.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/const_iterator.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +102 -87
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +45 -21
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +14 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +5 -14
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +116 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +1004 -159
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +4 -58
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +28 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +52 -144
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +120 -450
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +70 -8
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/barrier.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/completion_latch.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_views.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +22 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +163 -55
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/launch.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_all.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_types.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/locks.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/thread/synchronized_value.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_functors.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +265 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +272 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +300 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/mp_defer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_assign.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_copy.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_destructor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_abstract.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +21 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pod.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +40 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4986 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +1814 -1255
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1498 -1161
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -44
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/utility/compare_pointees.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +39 -22
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +690 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view_fwd.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/helper-scripts/crash-watch.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/packaging.rb +2 -12
- metadata +77 -38
- data/dev/ci/inituidgid +0 -24
- data/dev/ci/run_jenkins.sh +0 -70
- data/dev/ci/run_travis.sh +0 -314
- data/doc/Design and Architecture.html +0 -2421
- data/doc/Design and Architecture.txt +0 -511
- data/doc/Security of user switching support.html +0 -1833
- data/doc/Users guide Apache.html +0 -3101
- data/doc/Users guide Apache.idmap.txt +0 -451
- data/doc/Users guide Apache.txt +0 -534
- data/doc/Users guide Nginx.html +0 -3026
- data/doc/Users guide Nginx.idmap.txt +0 -431
- data/doc/Users guide Nginx.txt +0 -451
- data/doc/Users guide Standalone.html +0 -2092
- data/doc/Users guide Standalone.idmap.txt +0 -137
- data/doc/Users guide Standalone.txt +0 -81
- data/doc/Users guide.html +0 -1606
- data/doc/Users guide.txt +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/address.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -22
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +0 -383
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_allocator.hpp +0 -318
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_count_impl.hpp +0 -67
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_traits.hpp +0 -60
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/array_utility.hpp +0 -214
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_if_array.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/allocate.hpp +0 -1128
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/buckets.hpp +0 -928
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/equivalent.hpp +0 -686
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/extract_key.hpp +0 -188
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/table.hpp +0 -873
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/unique.hpp +0 -628
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/util.hpp +0 -266
@@ -28,15 +28,74 @@
|
|
28
28
|
#include <boost/container/detail/type_traits.hpp>
|
29
29
|
#include <boost/container/detail/mpl.hpp>
|
30
30
|
#include <boost/container/detail/std_fwd.hpp>
|
31
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
32
|
+
# include <boost/container/detail/variadic_templates_tools.hpp>
|
33
|
+
#endif
|
31
34
|
#include <boost/move/adl_move_swap.hpp> //swap
|
32
35
|
|
33
36
|
#include <boost/intrusive/detail/minimal_pair_header.hpp> //pair
|
34
37
|
#include <boost/move/utility_core.hpp>
|
38
|
+
#include<boost/move/detail/fwd_macros.hpp>
|
39
|
+
|
40
|
+
namespace boost {
|
41
|
+
namespace tuples {
|
42
|
+
|
43
|
+
struct null_type;
|
44
|
+
|
45
|
+
} //namespace tuples {
|
46
|
+
} //namespace boost {
|
47
|
+
|
48
|
+
#if defined(BOOST_MSVC) && (_CPPLIB_VER == 520)
|
49
|
+
//MSVC 2010 tuple marker
|
50
|
+
namespace std { namespace tr1 { struct _Nil; }}
|
51
|
+
#elif defined(BOOST_MSVC) && (_CPPLIB_VER == 540)
|
52
|
+
//MSVC 2012 tuple marker
|
53
|
+
namespace std { struct _Nil; }
|
54
|
+
#endif
|
55
|
+
|
35
56
|
|
36
57
|
namespace boost {
|
37
58
|
namespace container {
|
59
|
+
|
60
|
+
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
61
|
+
|
62
|
+
template <int Dummy = 0>
|
63
|
+
struct std_piecewise_construct_holder
|
64
|
+
{
|
65
|
+
static ::std::piecewise_construct_t *dummy;
|
66
|
+
};
|
67
|
+
|
68
|
+
template <int Dummy>
|
69
|
+
::std::piecewise_construct_t *std_piecewise_construct_holder<Dummy>::dummy =
|
70
|
+
reinterpret_cast< ::std::piecewise_construct_t *>(0x01234); //Avoid sanitizer errors on references to null pointers
|
71
|
+
|
72
|
+
typedef const std::piecewise_construct_t & piecewise_construct_t;
|
73
|
+
|
74
|
+
struct try_emplace_t{};
|
75
|
+
|
76
|
+
#else
|
77
|
+
|
78
|
+
//! The piecewise_construct_t struct is an empty structure type used as a unique type to
|
79
|
+
//! disambiguate used to disambiguate between different functions that take two tuple arguments.
|
80
|
+
typedef unspecified piecewise_construct_t;
|
81
|
+
|
82
|
+
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
83
|
+
|
84
|
+
//! A instance of type
|
85
|
+
//! piecewise_construct_t
|
86
|
+
static piecewise_construct_t piecewise_construct = BOOST_CONTAINER_DOC1ST(unspecified, *std_piecewise_construct_holder<>::dummy);
|
87
|
+
|
88
|
+
///@cond
|
89
|
+
|
38
90
|
namespace container_detail {
|
39
91
|
|
92
|
+
struct piecewise_construct_use
|
93
|
+
{
|
94
|
+
//Avoid warnings of unused "piecewise_construct"
|
95
|
+
piecewise_construct_use()
|
96
|
+
{ (void)&::boost::container::piecewise_construct; }
|
97
|
+
};
|
98
|
+
|
40
99
|
template <class T1, class T2>
|
41
100
|
struct pair;
|
42
101
|
|
@@ -78,6 +137,11 @@ struct is_std_pair< std::pair<T1, T2> >
|
|
78
137
|
|
79
138
|
struct pair_nat;
|
80
139
|
|
140
|
+
template<typename T, typename U, typename V>
|
141
|
+
void get(T); //to enable ADL
|
142
|
+
|
143
|
+
///@endcond
|
144
|
+
|
81
145
|
template <class T1, class T2>
|
82
146
|
struct pair
|
83
147
|
{
|
@@ -147,11 +211,105 @@ struct pair
|
|
147
211
|
: first(::boost::move(p.first)), second(::boost::move(p.second))
|
148
212
|
{}
|
149
213
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
214
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
215
|
+
template< class KeyType, class ...Args>
|
216
|
+
pair(try_emplace_t, BOOST_FWD_REF(KeyType) k, Args && ...args)
|
217
|
+
: first(boost::forward<KeyType>(k)), second(::boost::forward<Args>(args)...)\
|
218
|
+
{}
|
219
|
+
#else
|
220
|
+
|
221
|
+
//piecewise construction from boost::tuple
|
222
|
+
#define BOOST_PAIR_TRY_EMPLACE_CONSTRUCT_CODE(N)\
|
223
|
+
template< class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N > \
|
224
|
+
pair( try_emplace_t, BOOST_FWD_REF(KeyType) k BOOST_MOVE_I##N BOOST_MOVE_UREF##N )\
|
225
|
+
: first(boost::forward<KeyType>(k)), second(BOOST_MOVE_FWD##N)\
|
226
|
+
{}\
|
227
|
+
//
|
228
|
+
BOOST_MOVE_ITERATE_0TO9(BOOST_PAIR_TRY_EMPLACE_CONSTRUCT_CODE)
|
229
|
+
#undef BOOST_PAIR_TRY_EMPLACE_CONSTRUCT_CODE
|
230
|
+
|
231
|
+
#endif //BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
232
|
+
|
233
|
+
//piecewise construction from boost::tuple
|
234
|
+
#define BOOST_PAIR_PIECEWISE_CONSTRUCT_BOOST_TUPLE_CODE(N,M)\
|
235
|
+
template< template<class, class, class, class, class, class, class, class, class, class> class BoostTuple \
|
236
|
+
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
237
|
+
pair( piecewise_construct_t\
|
238
|
+
, BoostTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::boost::tuples::null_type)> p\
|
239
|
+
, BoostTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::boost::tuples::null_type)> q)\
|
240
|
+
: first(BOOST_MOVE_TMPL_GET##N), second(BOOST_MOVE_TMPL_GETQ##M)\
|
241
|
+
{ (void)p; (void)q; }\
|
242
|
+
//
|
243
|
+
BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_PAIR_PIECEWISE_CONSTRUCT_BOOST_TUPLE_CODE)
|
244
|
+
#undef BOOST_PAIR_PIECEWISE_CONSTRUCT_BOOST_TUPLE_CODE
|
245
|
+
|
246
|
+
//piecewise construction from variadic tuple (with delegating constructors)
|
247
|
+
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
248
|
+
# if !defined(BOOST_CONTAINER_NO_CXX11_DELEGATING_CONSTRUCTORS)
|
249
|
+
private:
|
250
|
+
template<template<class ...> class Tuple, class... Args1, class... Args2, size_t... Indexes1, size_t... Indexes2>
|
251
|
+
pair(Tuple<Args1...>& t1, Tuple<Args2...>& t2, index_tuple<Indexes1...>, index_tuple<Indexes2...>)
|
252
|
+
: first (::boost::forward<Args1>(get<Indexes1>(t1))...)
|
253
|
+
, second(::boost::forward<Args2>(get<Indexes2>(t2))...)
|
254
|
+
{ (void) t1; (void)t2; }
|
255
|
+
|
256
|
+
public:
|
257
|
+
template<template<class ...> class Tuple, class... Args1, class... Args2>
|
258
|
+
pair(piecewise_construct_t, Tuple<Args1...> t1, Tuple<Args2...> t2)
|
259
|
+
: pair(t1, t2, typename build_number_seq<sizeof...(Args1)>::type(), typename build_number_seq<sizeof...(Args2)>::type())
|
260
|
+
{}
|
261
|
+
# else
|
262
|
+
//piecewise construction from variadic tuple (suboptimal, without delegating constructors)
|
263
|
+
private:
|
264
|
+
template<typename T, template<class ...> class Tuple, typename... Args>
|
265
|
+
static T build_from_args(Tuple<Args...>&& t)
|
266
|
+
{ return do_build_from_args<T>(::boost::move(t), typename build_number_seq<sizeof...(Args)>::type()); }
|
267
|
+
|
268
|
+
template<typename T, template<class ...> class Tuple, typename... Args, std::size_t... Indexes>
|
269
|
+
static T do_build_from_args(Tuple<Args...> && t, const index_tuple<Indexes...>&)
|
270
|
+
{ (void)t; return T(::boost::forward<Args>(get<Indexes>(t))...); }
|
271
|
+
|
272
|
+
public:
|
273
|
+
template<template<class ...> class Tuple, class... Args1, class... Args2>
|
274
|
+
pair(piecewise_construct_t, Tuple<Args1...> t1, Tuple<Args2...> t2)
|
275
|
+
: first (build_from_args<first_type> (::boost::move(t1)))
|
276
|
+
, second (build_from_args<second_type>(::boost::move(t2)))
|
277
|
+
{}
|
278
|
+
# endif //BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
279
|
+
#elif defined(BOOST_MSVC) && (_CPPLIB_VER == 520)
|
280
|
+
//MSVC 2010 tuple implementation
|
281
|
+
#define BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE(N,M)\
|
282
|
+
template< template<class, class, class, class, class, class, class, class, class, class> class StdTuple \
|
283
|
+
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
284
|
+
pair( piecewise_construct_t\
|
285
|
+
, StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,N),::std::tr1::_Nil)> p\
|
286
|
+
, StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(10,M),::std::tr1::_Nil)> q)\
|
287
|
+
: first(BOOST_MOVE_GET_IDX##N), second(BOOST_MOVE_GET_IDXQ##M)\
|
288
|
+
{ (void)p; (void)q; }\
|
289
|
+
//
|
290
|
+
BOOST_MOVE_ITER2D_0TOMAX(9, BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE)
|
291
|
+
#undef BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE
|
292
|
+
#elif defined(BOOST_MSVC) && (_CPPLIB_VER == 540)
|
293
|
+
#if _VARIADIC_MAX >= 9
|
294
|
+
#define BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT 9
|
295
|
+
#else
|
296
|
+
#define BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT BOOST_MOVE_ADD(_VARIADIC_MAX, 1)
|
297
|
+
#endif
|
298
|
+
|
299
|
+
//MSVC 2012 tuple implementation
|
300
|
+
#define BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_CODE(N,M)\
|
301
|
+
template< template<BOOST_MOVE_REPEAT(_VARIADIC_MAX, class), class, class, class> class StdTuple \
|
302
|
+
BOOST_MOVE_I_IF(BOOST_MOVE_OR(N,M)) BOOST_MOVE_CLASS##N BOOST_MOVE_I_IF(BOOST_MOVE_AND(N,M)) BOOST_MOVE_CLASSQ##M > \
|
303
|
+
pair( piecewise_construct_t\
|
304
|
+
, StdTuple<BOOST_MOVE_TARG##N BOOST_MOVE_I##N BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),N),::std::_Nil) > p\
|
305
|
+
, StdTuple<BOOST_MOVE_TARGQ##M BOOST_MOVE_I##M BOOST_MOVE_REPEAT(BOOST_MOVE_SUB(BOOST_MOVE_ADD(_VARIADIC_MAX, 3),M),::std::_Nil) > q)\
|
306
|
+
: first(BOOST_MOVE_GET_IDX##N), second(BOOST_MOVE_GET_IDXQ##M)\
|
307
|
+
{ (void)p; (void)q; }\
|
308
|
+
//
|
309
|
+
BOOST_MOVE_ITER2D_0TOMAX(BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT, BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_CODE)
|
310
|
+
#undef BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2010_TUPLE_CODE
|
311
|
+
#undef BOOST_PAIR_PIECEWISE_CONSTRUCT_MSVC2012_TUPLE_MAX_IT
|
312
|
+
#endif
|
155
313
|
|
156
314
|
//pair copy assignment
|
157
315
|
pair& operator=(BOOST_COPY_ASSIGN_REF(pair) p)
|
@@ -270,53 +428,74 @@ inline void swap(pair<T1, T2>& x, pair<T1, T2>& y)
|
|
270
428
|
} //namespace container_detail {
|
271
429
|
} //namespace container {
|
272
430
|
|
431
|
+
#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
|
273
432
|
|
274
|
-
|
275
|
-
|
276
|
-
//This breaks the cycle clearly stating that pair is not an enum avoiding any instantiation.
|
277
|
-
template<class T>
|
278
|
-
struct is_enum;
|
279
|
-
|
280
|
-
template<class T, class U>
|
281
|
-
struct is_enum< ::boost::container::container_detail::pair<T, U> >
|
433
|
+
template<class T1, class T2>
|
434
|
+
struct has_move_emulation_enabled< ::boost::container::container_detail::pair<T1, T2> >
|
282
435
|
{
|
283
|
-
static const bool value =
|
436
|
+
static const bool value = true;
|
284
437
|
};
|
285
438
|
|
286
|
-
|
287
|
-
struct is_class;
|
439
|
+
#endif
|
288
440
|
|
441
|
+
namespace move_detail{
|
442
|
+
|
443
|
+
template<class T>
|
444
|
+
struct is_class_or_union;
|
445
|
+
|
446
|
+
template <class T1, class T2>
|
447
|
+
struct is_class_or_union< ::boost::container::container_detail::pair<T1, T2> >
|
289
448
|
//This specialization is needed to avoid instantiation of pair in
|
290
449
|
//is_class, and allow recursive maps.
|
291
|
-
template <class T1, class T2>
|
292
|
-
struct is_class< ::boost::container::container_detail::pair<T1, T2> >
|
293
450
|
{
|
294
451
|
static const bool value = true;
|
295
452
|
};
|
296
453
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
454
|
+
template <class T1, class T2>
|
455
|
+
struct is_class_or_union< std::pair<T1, T2> >
|
456
|
+
//This specialization is needed to avoid instantiation of pair in
|
457
|
+
//is_class, and allow recursive maps.
|
301
458
|
{
|
302
459
|
static const bool value = true;
|
303
460
|
};
|
304
461
|
|
305
|
-
|
462
|
+
template<class T>
|
463
|
+
struct is_union;
|
306
464
|
|
307
|
-
|
465
|
+
template <class T1, class T2>
|
466
|
+
struct is_union< ::boost::container::container_detail::pair<T1, T2> >
|
467
|
+
//This specialization is needed to avoid instantiation of pair in
|
468
|
+
//is_class, and allow recursive maps.
|
469
|
+
{
|
470
|
+
static const bool value = false;
|
471
|
+
};
|
472
|
+
|
473
|
+
template <class T1, class T2>
|
474
|
+
struct is_union< std::pair<T1, T2> >
|
475
|
+
//This specialization is needed to avoid instantiation of pair in
|
476
|
+
//is_class, and allow recursive maps.
|
477
|
+
{
|
478
|
+
static const bool value = false;
|
479
|
+
};
|
308
480
|
|
309
481
|
template<class T>
|
310
|
-
struct
|
482
|
+
struct is_class;
|
311
483
|
|
312
484
|
template <class T1, class T2>
|
313
|
-
struct
|
485
|
+
struct is_class< ::boost::container::container_detail::pair<T1, T2> >
|
314
486
|
//This specialization is needed to avoid instantiation of pair in
|
315
487
|
//is_class, and allow recursive maps.
|
316
488
|
{
|
317
489
|
static const bool value = true;
|
318
490
|
};
|
319
491
|
|
492
|
+
template <class T1, class T2>
|
493
|
+
struct is_class< std::pair<T1, T2> >
|
494
|
+
//This specialization is needed to avoid instantiation of pair in
|
495
|
+
//is_class, and allow recursive maps.
|
496
|
+
{
|
497
|
+
static const bool value = true;
|
498
|
+
};
|
320
499
|
|
321
500
|
} //namespace move_detail{
|
322
501
|
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include <boost/container/allocator_traits.hpp>
|
26
26
|
#include <boost/container/container_fwd.hpp>
|
27
27
|
#include <boost/container/options.hpp>
|
28
|
+
#include <boost/container/node_handle.hpp>
|
28
29
|
|
29
30
|
// container/detail
|
30
31
|
#include <boost/container/detail/algorithm.hpp> //algo_equal(), algo_lexicographical_compare
|
@@ -50,6 +51,7 @@
|
|
50
51
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
51
52
|
#include <boost/move/detail/fwd_macros.hpp>
|
52
53
|
#endif
|
54
|
+
#include <boost/move/detail/move_helpers.hpp>
|
53
55
|
// other
|
54
56
|
#include <boost/core/no_exceptions_support.hpp>
|
55
57
|
|
@@ -134,15 +136,15 @@ struct tree_node
|
|
134
136
|
typedef typename tree_internal_data_type<T>::type internal_type;
|
135
137
|
|
136
138
|
typedef tree_node< T, VoidPointer
|
137
|
-
, tree_type_value, OptimizeSize>
|
139
|
+
, tree_type_value, OptimizeSize> node_t;
|
138
140
|
|
139
|
-
T &get_data()
|
141
|
+
BOOST_CONTAINER_FORCEINLINE T &get_data()
|
140
142
|
{
|
141
143
|
T* ptr = reinterpret_cast<T*>(&this->m_data);
|
142
144
|
return *ptr;
|
143
145
|
}
|
144
146
|
|
145
|
-
const T &get_data() const
|
147
|
+
BOOST_CONTAINER_FORCEINLINE const T &get_data() const
|
146
148
|
{
|
147
149
|
const T* ptr = reinterpret_cast<const T*>(&this->m_data);
|
148
150
|
return *ptr;
|
@@ -151,39 +153,39 @@ struct tree_node
|
|
151
153
|
internal_type m_data;
|
152
154
|
|
153
155
|
template<class T1, class T2>
|
154
|
-
void do_assign(const std::pair<const T1, T2> &p)
|
156
|
+
BOOST_CONTAINER_FORCEINLINE void do_assign(const std::pair<const T1, T2> &p)
|
155
157
|
{
|
156
158
|
const_cast<T1&>(m_data.first) = p.first;
|
157
159
|
m_data.second = p.second;
|
158
160
|
}
|
159
161
|
|
160
162
|
template<class T1, class T2>
|
161
|
-
void do_assign(const pair<const T1, T2> &p)
|
163
|
+
BOOST_CONTAINER_FORCEINLINE void do_assign(const pair<const T1, T2> &p)
|
162
164
|
{
|
163
165
|
const_cast<T1&>(m_data.first) = p.first;
|
164
166
|
m_data.second = p.second;
|
165
167
|
}
|
166
168
|
|
167
169
|
template<class V>
|
168
|
-
void do_assign(const V &v)
|
170
|
+
BOOST_CONTAINER_FORCEINLINE void do_assign(const V &v)
|
169
171
|
{ m_data = v; }
|
170
172
|
|
171
173
|
template<class T1, class T2>
|
172
|
-
void do_move_assign(std::pair<const T1, T2> &p)
|
174
|
+
BOOST_CONTAINER_FORCEINLINE void do_move_assign(std::pair<const T1, T2> &p)
|
173
175
|
{
|
174
176
|
const_cast<T1&>(m_data.first) = ::boost::move(p.first);
|
175
177
|
m_data.second = ::boost::move(p.second);
|
176
178
|
}
|
177
179
|
|
178
180
|
template<class T1, class T2>
|
179
|
-
void do_move_assign(pair<const T1, T2> &p)
|
181
|
+
BOOST_CONTAINER_FORCEINLINE void do_move_assign(pair<const T1, T2> &p)
|
180
182
|
{
|
181
183
|
const_cast<T1&>(m_data.first) = ::boost::move(p.first);
|
182
184
|
m_data.second = ::boost::move(p.second);
|
183
185
|
}
|
184
186
|
|
185
187
|
template<class V>
|
186
|
-
void do_move_assign(V &v)
|
188
|
+
BOOST_CONTAINER_FORCEINLINE void do_move_assign(V &v)
|
187
189
|
{ m_data = ::boost::move(v); }
|
188
190
|
};
|
189
191
|
|
@@ -198,11 +200,11 @@ class insert_equal_end_hint_functor
|
|
198
200
|
Icont &icont_;
|
199
201
|
|
200
202
|
public:
|
201
|
-
insert_equal_end_hint_functor(Icont &icont)
|
203
|
+
BOOST_CONTAINER_FORCEINLINE insert_equal_end_hint_functor(Icont &icont)
|
202
204
|
: icont_(icont)
|
203
205
|
{}
|
204
206
|
|
205
|
-
void operator()(Node &n)
|
207
|
+
BOOST_CONTAINER_FORCEINLINE void operator()(Node &n)
|
206
208
|
{ this->icont_.insert_equal(this->icont_.cend(), n); }
|
207
209
|
};
|
208
210
|
|
@@ -212,11 +214,11 @@ class push_back_functor
|
|
212
214
|
Icont &icont_;
|
213
215
|
|
214
216
|
public:
|
215
|
-
push_back_functor(Icont &icont)
|
217
|
+
BOOST_CONTAINER_FORCEINLINE push_back_functor(Icont &icont)
|
216
218
|
: icont_(icont)
|
217
219
|
{}
|
218
220
|
|
219
|
-
void operator()(Node &n)
|
221
|
+
BOOST_CONTAINER_FORCEINLINE void operator()(Node &n)
|
220
222
|
{ this->icont_.push_back(n); }
|
221
223
|
};
|
222
224
|
|
@@ -293,18 +295,18 @@ struct intrusive_tree_type
|
|
293
295
|
allocator_traits<Allocator>::size_type size_type;
|
294
296
|
typedef typename container_detail::tree_node
|
295
297
|
< value_type, void_pointer
|
296
|
-
, tree_type_value, OptimizeSize>
|
298
|
+
, tree_type_value, OptimizeSize> node_t;
|
297
299
|
typedef value_to_node_compare
|
298
|
-
<
|
299
|
-
//Deducing the hook type from
|
300
|
-
//provoke an early instantiation of
|
300
|
+
<node_t, ValueCompare> node_compare_type;
|
301
|
+
//Deducing the hook type from node_t (e.g. node_t::hook_type) would
|
302
|
+
//provoke an early instantiation of node_t that could ruin recursive
|
301
303
|
//tree definitions, so retype the complete type to avoid any problem.
|
302
304
|
typedef typename intrusive_tree_hook
|
303
305
|
<void_pointer, tree_type_value
|
304
306
|
, OptimizeSize>::type hook_type;
|
305
307
|
public:
|
306
308
|
typedef typename intrusive_tree_dispatch
|
307
|
-
<
|
309
|
+
< node_t, node_compare_type
|
308
310
|
, size_type, hook_type
|
309
311
|
, tree_type_value>::type type;
|
310
312
|
};
|
@@ -327,14 +329,14 @@ template< boost::container::tree_type_enum tree_type_value
|
|
327
329
|
struct intrusive_tree_proxy
|
328
330
|
{
|
329
331
|
template<class Icont>
|
330
|
-
static void rebalance(Icont &) {}
|
332
|
+
BOOST_CONTAINER_FORCEINLINE static void rebalance(Icont &) {}
|
331
333
|
};
|
332
334
|
|
333
335
|
template<boost::container::tree_type_enum tree_type_value>
|
334
336
|
struct intrusive_tree_proxy<tree_type_value, true>
|
335
337
|
{
|
336
338
|
template<class Icont>
|
337
|
-
static void rebalance(Icont &c)
|
339
|
+
BOOST_CONTAINER_FORCEINLINE static void rebalance(Icont &c)
|
338
340
|
{ c.rebalance(); }
|
339
341
|
};
|
340
342
|
|
@@ -350,7 +352,7 @@ template<class AllocHolder, bool DoMove>
|
|
350
352
|
class RecyclingCloner
|
351
353
|
{
|
352
354
|
typedef typename AllocHolder::intrusive_container intrusive_container;
|
353
|
-
typedef typename AllocHolder::Node
|
355
|
+
typedef typename AllocHolder::Node node_t;
|
354
356
|
typedef typename AllocHolder::NodePtr node_ptr_type;
|
355
357
|
|
356
358
|
public:
|
@@ -358,13 +360,13 @@ class RecyclingCloner
|
|
358
360
|
: m_holder(holder), m_icont(itree)
|
359
361
|
{}
|
360
362
|
|
361
|
-
static void do_assign(node_ptr_type &p, const
|
362
|
-
{ p->do_move_assign(const_cast<
|
363
|
+
BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type &p, const node_t &other, bool_<true>)
|
364
|
+
{ p->do_move_assign(const_cast<node_t &>(other).m_data); }
|
363
365
|
|
364
|
-
static void do_assign(node_ptr_type &p, const
|
366
|
+
BOOST_CONTAINER_FORCEINLINE static void do_assign(node_ptr_type &p, const node_t &other, bool_<false>)
|
365
367
|
{ p->do_assign(other.m_data); }
|
366
368
|
|
367
|
-
node_ptr_type operator()(const
|
369
|
+
node_ptr_type operator()(const node_t &other) const
|
368
370
|
{
|
369
371
|
if(node_ptr_type p = m_icont.unlink_leftmost_without_rebalance()){
|
370
372
|
//First recycle a node (this can't throw)
|
@@ -392,59 +394,63 @@ class RecyclingCloner
|
|
392
394
|
intrusive_container &m_icont;
|
393
395
|
};
|
394
396
|
|
395
|
-
template<class
|
396
|
-
//where KeyValueCompare is tree_value_compare<Key, T, Compare, KeyOfValue>
|
397
|
+
template<class KeyCompare, class KeyOfValue>
|
397
398
|
struct key_node_compare
|
398
|
-
:
|
399
|
+
: public boost::intrusive::detail::ebo_functor_holder<KeyCompare>
|
399
400
|
{
|
400
|
-
explicit key_node_compare(const
|
401
|
-
:
|
401
|
+
BOOST_CONTAINER_FORCEINLINE explicit key_node_compare(const KeyCompare &comp)
|
402
|
+
: base_t(comp)
|
402
403
|
{}
|
403
404
|
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
{ return
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
405
|
+
typedef boost::intrusive::detail::ebo_functor_holder<KeyCompare> base_t;
|
406
|
+
typedef KeyCompare key_compare;
|
407
|
+
typedef KeyOfValue key_of_value;
|
408
|
+
typedef typename KeyOfValue::type key_type;
|
409
|
+
|
410
|
+
BOOST_CONTAINER_FORCEINLINE const key_compare &key_comp() const
|
411
|
+
{ return static_cast<const key_compare &>(*this); }
|
412
|
+
|
413
|
+
BOOST_CONTAINER_FORCEINLINE key_compare &key_comp()
|
414
|
+
{ return static_cast<key_compare &>(*this); }
|
415
|
+
|
416
|
+
BOOST_CONTAINER_FORCEINLINE bool operator()(const key_type &key1, const key_type &key2) const
|
417
|
+
{ return this->key_comp()(key1, key2); }
|
418
|
+
|
419
|
+
template<class U>
|
420
|
+
BOOST_CONTAINER_FORCEINLINE bool operator()(const key_type &key1, const U &nonkey2) const
|
421
|
+
{ return this->key_comp()(key1, key_of_value()(nonkey2.get_data())); }
|
422
|
+
|
423
|
+
template<class U>
|
424
|
+
BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const key_type &key2) const
|
425
|
+
{ return this->key_comp()(key_of_value()(nonkey1.get_data()), key2); }
|
426
|
+
|
427
|
+
template<class U, class V>
|
428
|
+
BOOST_CONTAINER_FORCEINLINE bool operator()(const U &nonkey1, const V &nonkey2) const
|
429
|
+
{ return this->key_comp()(key_of_value()(nonkey1.get_data()), key_of_value()(nonkey2.get_data())); }
|
426
430
|
};
|
427
431
|
|
428
|
-
template <class
|
432
|
+
template <class T, class KeyOfValue,
|
429
433
|
class Compare, class Allocator,
|
430
434
|
class Options = tree_assoc_defaults>
|
431
435
|
class tree
|
432
|
-
:
|
436
|
+
: public container_detail::node_alloc_holder
|
433
437
|
< Allocator
|
434
438
|
, typename container_detail::intrusive_tree_type
|
435
|
-
< Allocator, tree_value_compare
|
439
|
+
< Allocator, tree_value_compare
|
440
|
+
<typename allocator_traits<Allocator>::pointer, Compare, KeyOfValue>
|
436
441
|
, Options::tree_type, Options::optimize_size>::type
|
437
442
|
>
|
438
443
|
{
|
439
444
|
typedef tree_value_compare
|
440
|
-
|
445
|
+
< typename allocator_traits<Allocator>::pointer
|
446
|
+
, Compare, KeyOfValue> ValComp;
|
441
447
|
typedef typename container_detail::intrusive_tree_type
|
442
448
|
< Allocator, ValComp, Options::tree_type
|
443
449
|
, Options::optimize_size>::type Icont;
|
444
450
|
typedef container_detail::node_alloc_holder
|
445
451
|
<Allocator, Icont> AllocHolder;
|
446
452
|
typedef typename AllocHolder::NodePtr NodePtr;
|
447
|
-
typedef tree <
|
453
|
+
typedef tree < T, KeyOfValue
|
448
454
|
, Compare, Allocator, Options> ThisType;
|
449
455
|
typedef typename AllocHolder::NodeAlloc NodeAlloc;
|
450
456
|
typedef boost::container::
|
@@ -461,7 +467,7 @@ class tree
|
|
461
467
|
|
462
468
|
public:
|
463
469
|
|
464
|
-
typedef
|
470
|
+
typedef typename KeyOfValue::type key_type;
|
465
471
|
typedef T value_type;
|
466
472
|
typedef Allocator allocator_type;
|
467
473
|
typedef Compare key_compare;
|
@@ -478,32 +484,36 @@ class tree
|
|
478
484
|
allocator_traits<Allocator>::size_type size_type;
|
479
485
|
typedef typename boost::container::
|
480
486
|
allocator_traits<Allocator>::difference_type difference_type;
|
481
|
-
typedef
|
482
|
-
|
483
|
-
typedef
|
484
|
-
|
485
|
-
typedef
|
487
|
+
typedef container_detail::iterator_from_iiterator
|
488
|
+
<iiterator, false> iterator;
|
489
|
+
typedef container_detail::iterator_from_iiterator
|
490
|
+
<iiterator, true > const_iterator;
|
491
|
+
typedef boost::container::reverse_iterator
|
492
|
+
<iterator> reverse_iterator;
|
493
|
+
typedef boost::container::reverse_iterator
|
494
|
+
<const_iterator> const_reverse_iterator;
|
495
|
+
typedef node_handle
|
496
|
+
< Node, value_type, allocator_type, void> node_type;
|
497
|
+
typedef insert_return_type_base
|
498
|
+
<iterator, node_type> insert_return_type;
|
499
|
+
|
486
500
|
typedef NodeAlloc stored_allocator_type;
|
487
501
|
|
488
502
|
private:
|
489
503
|
|
490
|
-
typedef key_node_compare<
|
504
|
+
typedef key_node_compare<key_compare, KeyOfValue> KeyNodeCompare;
|
491
505
|
|
492
506
|
public:
|
493
|
-
typedef container_detail::iterator_from_iiterator<iiterator, false> iterator;
|
494
|
-
typedef container_detail::iterator_from_iiterator<iiterator, true > const_iterator;
|
495
|
-
typedef boost::container::reverse_iterator<iterator> reverse_iterator;
|
496
|
-
typedef boost::container::reverse_iterator<const_iterator> const_reverse_iterator;
|
497
507
|
|
498
|
-
tree()
|
508
|
+
BOOST_CONTAINER_FORCEINLINE tree()
|
499
509
|
: AllocHolder()
|
500
510
|
{}
|
501
511
|
|
502
|
-
explicit tree(const key_compare& comp, const allocator_type& a = allocator_type())
|
512
|
+
BOOST_CONTAINER_FORCEINLINE explicit tree(const key_compare& comp, const allocator_type& a = allocator_type())
|
503
513
|
: AllocHolder(ValComp(comp), a)
|
504
514
|
{}
|
505
515
|
|
506
|
-
explicit tree(const allocator_type& a)
|
516
|
+
BOOST_CONTAINER_FORCEINLINE explicit tree(const allocator_type& a)
|
507
517
|
: AllocHolder(a)
|
508
518
|
{}
|
509
519
|
|
@@ -526,12 +536,12 @@ class tree
|
|
526
536
|
const const_iterator end_it(this->cend());
|
527
537
|
if(unique_insertion){
|
528
538
|
for ( ; first != last; ++first){
|
529
|
-
this->
|
539
|
+
this->insert_unique_convertible(end_it, *first);
|
530
540
|
}
|
531
541
|
}
|
532
542
|
else{
|
533
543
|
for ( ; first != last; ++first){
|
534
|
-
this->
|
544
|
+
this->insert_equal_convertible(end_it, *first);
|
535
545
|
}
|
536
546
|
}
|
537
547
|
}
|
@@ -555,7 +565,7 @@ class tree
|
|
555
565
|
//for the constructor
|
556
566
|
const const_iterator end_it(this->cend());
|
557
567
|
for ( ; first != last; ++first){
|
558
|
-
this->
|
568
|
+
this->insert_unique_convertible(end_it, *first);
|
559
569
|
}
|
560
570
|
}
|
561
571
|
else{
|
@@ -603,18 +613,19 @@ class tree
|
|
603
613
|
, container_detail::push_back_functor<Node, Icont>(this->icont()));
|
604
614
|
}
|
605
615
|
|
606
|
-
tree(const tree& x)
|
616
|
+
BOOST_CONTAINER_FORCEINLINE tree(const tree& x)
|
607
617
|
: AllocHolder(x.value_comp(), x)
|
608
618
|
{
|
609
619
|
this->icont().clone_from
|
610
620
|
(x.icont(), typename AllocHolder::cloner(*this), Destroyer(this->node_alloc()));
|
611
621
|
}
|
612
622
|
|
613
|
-
tree(BOOST_RV_REF(tree) x)
|
623
|
+
BOOST_CONTAINER_FORCEINLINE tree(BOOST_RV_REF(tree) x)
|
624
|
+
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
614
625
|
: AllocHolder(BOOST_MOVE_BASE(AllocHolder, x), x.value_comp())
|
615
626
|
{}
|
616
627
|
|
617
|
-
tree(const tree& x, const allocator_type &a)
|
628
|
+
BOOST_CONTAINER_FORCEINLINE tree(const tree& x, const allocator_type &a)
|
618
629
|
: AllocHolder(x.value_comp(), a)
|
619
630
|
{
|
620
631
|
this->icont().clone_from
|
@@ -633,7 +644,7 @@ class tree
|
|
633
644
|
}
|
634
645
|
}
|
635
646
|
|
636
|
-
~tree()
|
647
|
+
BOOST_CONTAINER_FORCEINLINE ~tree()
|
637
648
|
{} //AllocHolder clears the tree
|
638
649
|
|
639
650
|
tree& operator=(BOOST_COPY_ASSIGN_REF(tree) x)
|
@@ -668,8 +679,9 @@ class tree
|
|
668
679
|
}
|
669
680
|
|
670
681
|
tree& operator=(BOOST_RV_REF(tree) x)
|
671
|
-
BOOST_NOEXCEPT_IF(
|
672
|
-
|
682
|
+
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
683
|
+
allocator_traits_type::is_always_equal::value) &&
|
684
|
+
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
673
685
|
{
|
674
686
|
BOOST_ASSERT(this != &x);
|
675
687
|
NodeAlloc &this_alloc = this->node_alloc();
|
@@ -711,43 +723,43 @@ class tree
|
|
711
723
|
|
712
724
|
public:
|
713
725
|
// accessors:
|
714
|
-
value_compare value_comp() const
|
726
|
+
BOOST_CONTAINER_FORCEINLINE value_compare value_comp() const
|
715
727
|
{ return this->icont().value_comp().predicate(); }
|
716
728
|
|
717
|
-
key_compare key_comp() const
|
729
|
+
BOOST_CONTAINER_FORCEINLINE key_compare key_comp() const
|
718
730
|
{ return this->icont().value_comp().predicate().key_comp(); }
|
719
731
|
|
720
|
-
allocator_type get_allocator() const
|
732
|
+
BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const
|
721
733
|
{ return allocator_type(this->node_alloc()); }
|
722
734
|
|
723
|
-
const stored_allocator_type &get_stored_allocator() const
|
735
|
+
BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const
|
724
736
|
{ return this->node_alloc(); }
|
725
737
|
|
726
|
-
stored_allocator_type &get_stored_allocator()
|
738
|
+
BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator()
|
727
739
|
{ return this->node_alloc(); }
|
728
740
|
|
729
|
-
iterator begin()
|
741
|
+
BOOST_CONTAINER_FORCEINLINE iterator begin()
|
730
742
|
{ return iterator(this->icont().begin()); }
|
731
743
|
|
732
|
-
const_iterator begin() const
|
744
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator begin() const
|
733
745
|
{ return this->cbegin(); }
|
734
746
|
|
735
|
-
iterator end()
|
747
|
+
BOOST_CONTAINER_FORCEINLINE iterator end()
|
736
748
|
{ return iterator(this->icont().end()); }
|
737
749
|
|
738
|
-
const_iterator end() const
|
750
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator end() const
|
739
751
|
{ return this->cend(); }
|
740
752
|
|
741
|
-
reverse_iterator rbegin()
|
753
|
+
BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin()
|
742
754
|
{ return reverse_iterator(end()); }
|
743
755
|
|
744
|
-
const_reverse_iterator rbegin() const
|
756
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const
|
745
757
|
{ return this->crbegin(); }
|
746
758
|
|
747
|
-
reverse_iterator rend()
|
759
|
+
BOOST_CONTAINER_FORCEINLINE reverse_iterator rend()
|
748
760
|
{ return reverse_iterator(begin()); }
|
749
761
|
|
750
|
-
const_reverse_iterator rend() const
|
762
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const
|
751
763
|
{ return this->crend(); }
|
752
764
|
|
753
765
|
//! <b>Effects</b>: Returns a const_iterator to the first element contained in the container.
|
@@ -755,7 +767,7 @@ class tree
|
|
755
767
|
//! <b>Throws</b>: Nothing.
|
756
768
|
//!
|
757
769
|
//! <b>Complexity</b>: Constant.
|
758
|
-
const_iterator cbegin() const
|
770
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const
|
759
771
|
{ return const_iterator(this->non_const_icont().begin()); }
|
760
772
|
|
761
773
|
//! <b>Effects</b>: Returns a const_iterator to the end of the container.
|
@@ -763,7 +775,7 @@ class tree
|
|
763
775
|
//! <b>Throws</b>: Nothing.
|
764
776
|
//!
|
765
777
|
//! <b>Complexity</b>: Constant.
|
766
|
-
const_iterator cend() const
|
778
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const
|
767
779
|
{ return const_iterator(this->non_const_icont().end()); }
|
768
780
|
|
769
781
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the beginning
|
@@ -772,7 +784,7 @@ class tree
|
|
772
784
|
//! <b>Throws</b>: Nothing.
|
773
785
|
//!
|
774
786
|
//! <b>Complexity</b>: Constant.
|
775
|
-
const_reverse_iterator crbegin() const
|
787
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const
|
776
788
|
{ return const_reverse_iterator(cend()); }
|
777
789
|
|
778
790
|
//! <b>Effects</b>: Returns a const_reverse_iterator pointing to the end
|
@@ -781,19 +793,19 @@ class tree
|
|
781
793
|
//! <b>Throws</b>: Nothing.
|
782
794
|
//!
|
783
795
|
//! <b>Complexity</b>: Constant.
|
784
|
-
const_reverse_iterator crend() const
|
796
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const
|
785
797
|
{ return const_reverse_iterator(cbegin()); }
|
786
798
|
|
787
|
-
bool empty() const
|
799
|
+
BOOST_CONTAINER_FORCEINLINE bool empty() const
|
788
800
|
{ return !this->size(); }
|
789
801
|
|
790
|
-
size_type size() const
|
802
|
+
BOOST_CONTAINER_FORCEINLINE size_type size() const
|
791
803
|
{ return this->icont().size(); }
|
792
804
|
|
793
|
-
size_type max_size() const
|
805
|
+
BOOST_CONTAINER_FORCEINLINE size_type max_size() const
|
794
806
|
{ return AllocHolder::max_size(); }
|
795
807
|
|
796
|
-
void swap(ThisType& x)
|
808
|
+
BOOST_CONTAINER_FORCEINLINE void swap(ThisType& x)
|
797
809
|
BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
|
798
810
|
&& boost::container::container_detail::is_nothrow_swappable<Compare>::value )
|
799
811
|
{ AllocHolder::swap(x); }
|
@@ -807,7 +819,7 @@ class tree
|
|
807
819
|
(const key_type& key, insert_commit_data &data)
|
808
820
|
{
|
809
821
|
std::pair<iiterator, bool> ret =
|
810
|
-
this->icont().insert_unique_check(key, KeyNodeCompare(
|
822
|
+
this->icont().insert_unique_check(key, KeyNodeCompare(key_comp()), data);
|
811
823
|
return std::pair<iterator, bool>(iterator(ret.first), ret.second);
|
812
824
|
}
|
813
825
|
|
@@ -816,19 +828,10 @@ class tree
|
|
816
828
|
{
|
817
829
|
BOOST_ASSERT((priv_is_linked)(hint));
|
818
830
|
std::pair<iiterator, bool> ret =
|
819
|
-
this->icont().insert_unique_check(hint.get(), key, KeyNodeCompare(
|
831
|
+
this->icont().insert_unique_check(hint.get(), key, KeyNodeCompare(key_comp()), data);
|
820
832
|
return std::pair<iterator, bool>(iterator(ret.first), ret.second);
|
821
833
|
}
|
822
834
|
|
823
|
-
iterator insert_unique_commit(const value_type& v, insert_commit_data &data)
|
824
|
-
{
|
825
|
-
NodePtr tmp = AllocHolder::create_node(v);
|
826
|
-
scoped_destroy_deallocator<NodeAlloc> destroy_deallocator(tmp, this->node_alloc());
|
827
|
-
iterator ret(this->icont().insert_unique_commit(*tmp, data));
|
828
|
-
destroy_deallocator.release();
|
829
|
-
return ret;
|
830
|
-
}
|
831
|
-
|
832
835
|
template<class MovableConvertible>
|
833
836
|
iterator insert_unique_commit
|
834
837
|
(BOOST_FWD_REF(MovableConvertible) v, insert_commit_data &data)
|
@@ -840,17 +843,6 @@ class tree
|
|
840
843
|
return ret;
|
841
844
|
}
|
842
845
|
|
843
|
-
std::pair<iterator,bool> insert_unique(const value_type& v)
|
844
|
-
{
|
845
|
-
insert_commit_data data;
|
846
|
-
std::pair<iterator,bool> ret =
|
847
|
-
this->insert_unique_check(KeyOfValue()(v), data);
|
848
|
-
if(ret.second){
|
849
|
-
ret.first = this->insert_unique_commit(v, data);
|
850
|
-
}
|
851
|
-
return ret;
|
852
|
-
}
|
853
|
-
|
854
846
|
template<class MovableConvertible>
|
855
847
|
std::pair<iterator,bool> insert_unique(BOOST_FWD_REF(MovableConvertible) v)
|
856
848
|
{
|
@@ -865,6 +857,17 @@ class tree
|
|
865
857
|
|
866
858
|
private:
|
867
859
|
|
860
|
+
template<class KeyConvertible, class M>
|
861
|
+
iiterator priv_insert_or_assign_commit
|
862
|
+
(BOOST_FWD_REF(KeyConvertible) key, BOOST_FWD_REF(M) obj, insert_commit_data &data)
|
863
|
+
{
|
864
|
+
NodePtr tmp = AllocHolder::create_node(boost::forward<KeyConvertible>(key), boost::forward<M>(obj));
|
865
|
+
scoped_destroy_deallocator<NodeAlloc> destroy_deallocator(tmp, this->node_alloc());
|
866
|
+
iiterator ret(this->icont().insert_unique_commit(*tmp, data));
|
867
|
+
destroy_deallocator.release();
|
868
|
+
return ret;
|
869
|
+
}
|
870
|
+
|
868
871
|
bool priv_is_linked(const_iterator const position) const
|
869
872
|
{
|
870
873
|
iiterator const cur(position.get());
|
@@ -895,7 +898,7 @@ class tree
|
|
895
898
|
//No throw insertion part, release rollback
|
896
899
|
destroy_deallocator.release();
|
897
900
|
return std::pair<iterator,bool>
|
898
|
-
( iterator(
|
901
|
+
( iterator(this->icont().insert_unique_commit(*p, data))
|
899
902
|
, true );
|
900
903
|
}
|
901
904
|
|
@@ -910,7 +913,7 @@ class tree
|
|
910
913
|
Destroyer(this->node_alloc())(p);
|
911
914
|
return ret.first;
|
912
915
|
}
|
913
|
-
return iterator(
|
916
|
+
return iterator(this->icont().insert_unique_commit(*p, data));
|
914
917
|
}
|
915
918
|
|
916
919
|
public:
|
@@ -918,11 +921,11 @@ class tree
|
|
918
921
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
919
922
|
|
920
923
|
template <class... Args>
|
921
|
-
std::pair<iterator, bool> emplace_unique(BOOST_FWD_REF(Args)... args)
|
924
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> emplace_unique(BOOST_FWD_REF(Args)... args)
|
922
925
|
{ return this->emplace_unique_impl(AllocHolder::create_node(boost::forward<Args>(args)...)); }
|
923
926
|
|
924
927
|
template <class... Args>
|
925
|
-
iterator emplace_hint_unique(const_iterator hint, BOOST_FWD_REF(Args)... args)
|
928
|
+
BOOST_CONTAINER_FORCEINLINE iterator emplace_hint_unique(const_iterator hint, BOOST_FWD_REF(Args)... args)
|
926
929
|
{ return this->emplace_unique_hint_impl(hint, AllocHolder::create_node(boost::forward<Args>(args)...)); }
|
927
930
|
|
928
931
|
template <class... Args>
|
@@ -946,6 +949,22 @@ class tree
|
|
946
949
|
return ret;
|
947
950
|
}
|
948
951
|
|
952
|
+
template <class KeyType, class... Args>
|
953
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace
|
954
|
+
(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(Args)... args)
|
955
|
+
{
|
956
|
+
insert_commit_data data;
|
957
|
+
const key_type & k = key; //Support emulated rvalue references
|
958
|
+
std::pair<iiterator, bool> ret =
|
959
|
+
hint == const_iterator() ? this->icont().insert_unique_check( k, KeyNodeCompare(key_comp()), data)
|
960
|
+
: this->icont().insert_unique_check(hint.get(), k, KeyNodeCompare(key_comp()), data);
|
961
|
+
if(ret.second){
|
962
|
+
ret.first = this->icont().insert_unique_commit
|
963
|
+
(*AllocHolder::create_node(try_emplace_t(), boost::forward<KeyType>(key), boost::forward<Args>(args)...), data);
|
964
|
+
}
|
965
|
+
return std::pair<iterator, bool>(iterator(ret.first), ret.second);
|
966
|
+
}
|
967
|
+
|
949
968
|
#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
950
969
|
|
951
970
|
#define BOOST_CONTAINER_TREE_EMPLACE_CODE(N) \
|
@@ -977,25 +996,30 @@ class tree
|
|
977
996
|
destroy_deallocator.release();\
|
978
997
|
return ret;\
|
979
998
|
}\
|
999
|
+
\
|
1000
|
+
template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
|
1001
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool>\
|
1002
|
+
try_emplace(const_iterator hint, BOOST_FWD_REF(KeyType) key BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
1003
|
+
{\
|
1004
|
+
insert_commit_data data;\
|
1005
|
+
const key_type & k = key;\
|
1006
|
+
std::pair<iiterator, bool> ret =\
|
1007
|
+
hint == const_iterator() ? this->icont().insert_unique_check( k, KeyNodeCompare(key_comp()), data)\
|
1008
|
+
: this->icont().insert_unique_check(hint.get(), k, KeyNodeCompare(key_comp()), data);\
|
1009
|
+
if(ret.second){\
|
1010
|
+
ret.first = this->icont().insert_unique_commit\
|
1011
|
+
(*AllocHolder::create_node(try_emplace_t(), boost::forward<KeyType>(key) BOOST_MOVE_I##N BOOST_MOVE_FWD##N), data);\
|
1012
|
+
}\
|
1013
|
+
return std::pair<iterator, bool>(iterator(ret.first), ret.second);\
|
1014
|
+
}\
|
980
1015
|
//
|
981
1016
|
BOOST_MOVE_ITERATE_0TO9(BOOST_CONTAINER_TREE_EMPLACE_CODE)
|
982
1017
|
#undef BOOST_CONTAINER_TREE_EMPLACE_CODE
|
983
1018
|
|
984
1019
|
#endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
985
1020
|
|
986
|
-
iterator insert_unique(const_iterator hint, const value_type& v)
|
987
|
-
{
|
988
|
-
BOOST_ASSERT((priv_is_linked)(hint));
|
989
|
-
insert_commit_data data;
|
990
|
-
std::pair<iterator,bool> ret =
|
991
|
-
this->insert_unique_check(hint, KeyOfValue()(v), data);
|
992
|
-
if(!ret.second)
|
993
|
-
return ret.first;
|
994
|
-
return this->insert_unique_commit(v, data);
|
995
|
-
}
|
996
|
-
|
997
1021
|
template<class MovableConvertible>
|
998
|
-
iterator
|
1022
|
+
iterator insert_unique_convertible(const_iterator hint, BOOST_FWD_REF(MovableConvertible) v)
|
999
1023
|
{
|
1000
1024
|
BOOST_ASSERT((priv_is_linked)(hint));
|
1001
1025
|
insert_commit_data data;
|
@@ -1006,6 +1030,8 @@ class tree
|
|
1006
1030
|
return this->insert_unique_commit(boost::forward<MovableConvertible>(v), data);
|
1007
1031
|
}
|
1008
1032
|
|
1033
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert_unique, value_type, iterator, this->insert_unique_convertible, const_iterator, const_iterator)
|
1034
|
+
|
1009
1035
|
template <class InputIterator>
|
1010
1036
|
void insert_unique(InputIterator first, InputIterator last)
|
1011
1037
|
{
|
@@ -1032,18 +1058,8 @@ class tree
|
|
1032
1058
|
return ret;
|
1033
1059
|
}
|
1034
1060
|
|
1035
|
-
iterator insert_equal(const_iterator hint, const value_type& v)
|
1036
|
-
{
|
1037
|
-
BOOST_ASSERT((priv_is_linked)(hint));
|
1038
|
-
NodePtr tmp(AllocHolder::create_node(v));
|
1039
|
-
scoped_destroy_deallocator<NodeAlloc> destroy_deallocator(tmp, this->node_alloc());
|
1040
|
-
iterator ret(this->icont().insert_equal(hint.get(), *tmp));
|
1041
|
-
destroy_deallocator.release();
|
1042
|
-
return ret;
|
1043
|
-
}
|
1044
|
-
|
1045
1061
|
template<class MovableConvertible>
|
1046
|
-
iterator
|
1062
|
+
iterator insert_equal_convertible(const_iterator hint, BOOST_FWD_REF(MovableConvertible) v)
|
1047
1063
|
{
|
1048
1064
|
BOOST_ASSERT((priv_is_linked)(hint));
|
1049
1065
|
NodePtr tmp(AllocHolder::create_node(boost::forward<MovableConvertible>(v)));
|
@@ -1053,6 +1069,8 @@ class tree
|
|
1053
1069
|
return ret;
|
1054
1070
|
}
|
1055
1071
|
|
1072
|
+
BOOST_MOVE_CONVERSION_AWARE_CATCH_1ARG(insert_equal, value_type, iterator, this->insert_equal_convertible, const_iterator, const_iterator)
|
1073
|
+
|
1056
1074
|
template <class InputIterator>
|
1057
1075
|
void insert_equal(InputIterator first, InputIterator last)
|
1058
1076
|
{
|
@@ -1060,14 +1078,31 @@ class tree
|
|
1060
1078
|
this->insert_equal(*first);
|
1061
1079
|
}
|
1062
1080
|
|
1081
|
+
template<class KeyType, class M>
|
1082
|
+
std::pair<iterator, bool> insert_or_assign(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(M) obj)
|
1083
|
+
{
|
1084
|
+
insert_commit_data data;
|
1085
|
+
const key_type & k = key; //Support emulated rvalue references
|
1086
|
+
std::pair<iiterator, bool> ret =
|
1087
|
+
hint == const_iterator() ? this->icont().insert_unique_check(k, KeyNodeCompare(key_comp()), data)
|
1088
|
+
: this->icont().insert_unique_check(hint.get(), k, KeyNodeCompare(key_comp()), data);
|
1089
|
+
if(ret.second){
|
1090
|
+
ret.first = this->priv_insert_or_assign_commit(boost::forward<KeyType>(key), boost::forward<M>(obj), data);
|
1091
|
+
}
|
1092
|
+
else{
|
1093
|
+
ret.first->get_data().second = boost::forward<M>(obj);
|
1094
|
+
}
|
1095
|
+
return std::pair<iterator, bool>(iterator(ret.first), ret.second);
|
1096
|
+
}
|
1097
|
+
|
1063
1098
|
iterator erase(const_iterator position)
|
1064
1099
|
{
|
1065
1100
|
BOOST_ASSERT(position != this->cend() && (priv_is_linked)(position));
|
1066
1101
|
return iterator(this->icont().erase_and_dispose(position.get(), Destroyer(this->node_alloc())));
|
1067
1102
|
}
|
1068
1103
|
|
1069
|
-
size_type erase(const key_type& k)
|
1070
|
-
{ return AllocHolder::erase_key(k, KeyNodeCompare(
|
1104
|
+
BOOST_CONTAINER_FORCEINLINE size_type erase(const key_type& k)
|
1105
|
+
{ return AllocHolder::erase_key(k, KeyNodeCompare(key_comp()), alloc_version()); }
|
1071
1106
|
|
1072
1107
|
iterator erase(const_iterator first, const_iterator last)
|
1073
1108
|
{
|
@@ -1076,43 +1111,117 @@ class tree
|
|
1076
1111
|
return iterator(AllocHolder::erase_range(first.get(), last.get(), alloc_version()));
|
1077
1112
|
}
|
1078
1113
|
|
1079
|
-
|
1114
|
+
node_type extract(const key_type& k)
|
1115
|
+
{
|
1116
|
+
iterator const it = this->find(k);
|
1117
|
+
if(this->end() != it){
|
1118
|
+
return this->extract(it);
|
1119
|
+
}
|
1120
|
+
return node_type();
|
1121
|
+
}
|
1122
|
+
|
1123
|
+
node_type extract(const_iterator position)
|
1124
|
+
{
|
1125
|
+
BOOST_ASSERT(position != this->cend() && (priv_is_linked)(position));
|
1126
|
+
iiterator const iit(position.get());
|
1127
|
+
this->icont().erase(iit);
|
1128
|
+
return node_type(iit.operator->(), this->node_alloc());
|
1129
|
+
}
|
1130
|
+
|
1131
|
+
insert_return_type insert_unique_node(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh)
|
1132
|
+
{
|
1133
|
+
return this->insert_unique_node(this->end(), boost::move(nh));
|
1134
|
+
}
|
1135
|
+
|
1136
|
+
insert_return_type insert_unique_node(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh)
|
1137
|
+
{
|
1138
|
+
insert_return_type irt; //inserted == false, node.empty()
|
1139
|
+
if(!nh.empty()){
|
1140
|
+
insert_commit_data data;
|
1141
|
+
std::pair<iterator,bool> ret =
|
1142
|
+
this->insert_unique_check(hint, KeyOfValue()(nh.value()), data);
|
1143
|
+
if(ret.second){
|
1144
|
+
irt.inserted = true;
|
1145
|
+
irt.position = iterator(this->icont().insert_unique_commit(*nh.get_node_pointer(), data));
|
1146
|
+
nh.release();
|
1147
|
+
}
|
1148
|
+
else{
|
1149
|
+
irt.position = ret.first;
|
1150
|
+
irt.node = boost::move(nh);
|
1151
|
+
}
|
1152
|
+
}
|
1153
|
+
else{
|
1154
|
+
irt.position = this->end();
|
1155
|
+
}
|
1156
|
+
return BOOST_MOVE_RET(insert_return_type, irt);
|
1157
|
+
}
|
1158
|
+
|
1159
|
+
iterator insert_equal_node(BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh)
|
1160
|
+
{
|
1161
|
+
if(nh.empty()){
|
1162
|
+
return this->end();
|
1163
|
+
}
|
1164
|
+
else{
|
1165
|
+
NodePtr const p(nh.release());
|
1166
|
+
return iterator(this->icont().insert_equal(*p));
|
1167
|
+
}
|
1168
|
+
}
|
1169
|
+
|
1170
|
+
iterator insert_equal_node(const_iterator hint, BOOST_RV_REF_BEG_IF_CXX11 node_type BOOST_RV_REF_END_IF_CXX11 nh)
|
1171
|
+
{
|
1172
|
+
if(nh.empty()){
|
1173
|
+
return this->end();
|
1174
|
+
}
|
1175
|
+
else{
|
1176
|
+
NodePtr const p(nh.release());
|
1177
|
+
return iterator(this->icont().insert_equal(hint.get(), *p));
|
1178
|
+
}
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
template<class C2>
|
1182
|
+
BOOST_CONTAINER_FORCEINLINE void merge_unique(tree<T, KeyOfValue, C2, Allocator, Options>& source)
|
1183
|
+
{ return this->icont().merge_unique(source.icont()); }
|
1184
|
+
|
1185
|
+
template<class C2>
|
1186
|
+
BOOST_CONTAINER_FORCEINLINE void merge_equal(tree<T, KeyOfValue, C2, Allocator, Options>& source)
|
1187
|
+
{ return this->icont().merge_equal(source.icont()); }
|
1188
|
+
BOOST_CONTAINER_FORCEINLINE void clear()
|
1080
1189
|
{ AllocHolder::clear(alloc_version()); }
|
1081
1190
|
|
1082
1191
|
// search operations. Const and non-const overloads even if no iterator is returned
|
1083
1192
|
// so splay implementations can to their rebalancing when searching in non-const versions
|
1084
|
-
iterator find(const key_type& k)
|
1085
|
-
{ return iterator(this->icont().find(k, KeyNodeCompare(
|
1193
|
+
BOOST_CONTAINER_FORCEINLINE iterator find(const key_type& k)
|
1194
|
+
{ return iterator(this->icont().find(k, KeyNodeCompare(key_comp()))); }
|
1086
1195
|
|
1087
|
-
const_iterator find(const key_type& k) const
|
1088
|
-
{ return const_iterator(this->non_const_icont().find(k, KeyNodeCompare(
|
1196
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator find(const key_type& k) const
|
1197
|
+
{ return const_iterator(this->non_const_icont().find(k, KeyNodeCompare(key_comp()))); }
|
1089
1198
|
|
1090
|
-
size_type count(const key_type& k) const
|
1091
|
-
{ return size_type(this->icont().count(k, KeyNodeCompare(
|
1199
|
+
BOOST_CONTAINER_FORCEINLINE size_type count(const key_type& k) const
|
1200
|
+
{ return size_type(this->icont().count(k, KeyNodeCompare(key_comp()))); }
|
1092
1201
|
|
1093
|
-
iterator lower_bound(const key_type& k)
|
1094
|
-
{ return iterator(this->icont().lower_bound(k, KeyNodeCompare(
|
1202
|
+
BOOST_CONTAINER_FORCEINLINE iterator lower_bound(const key_type& k)
|
1203
|
+
{ return iterator(this->icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
|
1095
1204
|
|
1096
|
-
const_iterator lower_bound(const key_type& k) const
|
1097
|
-
{ return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare(
|
1205
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator lower_bound(const key_type& k) const
|
1206
|
+
{ return const_iterator(this->non_const_icont().lower_bound(k, KeyNodeCompare(key_comp()))); }
|
1098
1207
|
|
1099
|
-
iterator upper_bound(const key_type& k)
|
1100
|
-
{ return iterator(this->icont().upper_bound(k, KeyNodeCompare(
|
1208
|
+
BOOST_CONTAINER_FORCEINLINE iterator upper_bound(const key_type& k)
|
1209
|
+
{ return iterator(this->icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
|
1101
1210
|
|
1102
|
-
const_iterator upper_bound(const key_type& k) const
|
1103
|
-
{ return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare(
|
1211
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator upper_bound(const key_type& k) const
|
1212
|
+
{ return const_iterator(this->non_const_icont().upper_bound(k, KeyNodeCompare(key_comp()))); }
|
1104
1213
|
|
1105
1214
|
std::pair<iterator,iterator> equal_range(const key_type& k)
|
1106
1215
|
{
|
1107
1216
|
std::pair<iiterator, iiterator> ret =
|
1108
|
-
this->icont().equal_range(k, KeyNodeCompare(
|
1217
|
+
this->icont().equal_range(k, KeyNodeCompare(key_comp()));
|
1109
1218
|
return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
|
1110
1219
|
}
|
1111
1220
|
|
1112
1221
|
std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const
|
1113
1222
|
{
|
1114
1223
|
std::pair<iiterator, iiterator> ret =
|
1115
|
-
this->non_const_icont().equal_range(k, KeyNodeCompare(
|
1224
|
+
this->non_const_icont().equal_range(k, KeyNodeCompare(key_comp()));
|
1116
1225
|
return std::pair<const_iterator,const_iterator>
|
1117
1226
|
(const_iterator(ret.first), const_iterator(ret.second));
|
1118
1227
|
}
|
@@ -1120,40 +1229,40 @@ class tree
|
|
1120
1229
|
std::pair<iterator,iterator> lower_bound_range(const key_type& k)
|
1121
1230
|
{
|
1122
1231
|
std::pair<iiterator, iiterator> ret =
|
1123
|
-
this->icont().lower_bound_range(k, KeyNodeCompare(
|
1232
|
+
this->icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
|
1124
1233
|
return std::pair<iterator,iterator>(iterator(ret.first), iterator(ret.second));
|
1125
1234
|
}
|
1126
1235
|
|
1127
1236
|
std::pair<const_iterator, const_iterator> lower_bound_range(const key_type& k) const
|
1128
1237
|
{
|
1129
1238
|
std::pair<iiterator, iiterator> ret =
|
1130
|
-
this->non_const_icont().lower_bound_range(k, KeyNodeCompare(
|
1239
|
+
this->non_const_icont().lower_bound_range(k, KeyNodeCompare(key_comp()));
|
1131
1240
|
return std::pair<const_iterator,const_iterator>
|
1132
1241
|
(const_iterator(ret.first), const_iterator(ret.second));
|
1133
1242
|
}
|
1134
1243
|
|
1135
|
-
void rebalance()
|
1244
|
+
BOOST_CONTAINER_FORCEINLINE void rebalance()
|
1136
1245
|
{ intrusive_tree_proxy_t::rebalance(this->icont()); }
|
1137
1246
|
|
1138
|
-
friend bool operator==(const tree& x, const tree& y)
|
1247
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const tree& x, const tree& y)
|
1139
1248
|
{ return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin()); }
|
1140
1249
|
|
1141
|
-
friend bool operator<(const tree& x, const tree& y)
|
1250
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const tree& x, const tree& y)
|
1142
1251
|
{ return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end()); }
|
1143
1252
|
|
1144
|
-
friend bool operator!=(const tree& x, const tree& y)
|
1253
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const tree& x, const tree& y)
|
1145
1254
|
{ return !(x == y); }
|
1146
1255
|
|
1147
|
-
friend bool operator>(const tree& x, const tree& y)
|
1256
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const tree& x, const tree& y)
|
1148
1257
|
{ return y < x; }
|
1149
1258
|
|
1150
|
-
friend bool operator<=(const tree& x, const tree& y)
|
1259
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const tree& x, const tree& y)
|
1151
1260
|
{ return !(y < x); }
|
1152
1261
|
|
1153
|
-
friend bool operator>=(const tree& x, const tree& y)
|
1262
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const tree& x, const tree& y)
|
1154
1263
|
{ return !(x < y); }
|
1155
1264
|
|
1156
|
-
friend void swap(tree& x, tree& y)
|
1265
|
+
BOOST_CONTAINER_FORCEINLINE friend void swap(tree& x, tree& y)
|
1157
1266
|
{ x.swap(y); }
|
1158
1267
|
};
|
1159
1268
|
|
@@ -1165,11 +1274,11 @@ struct has_trivial_destructor_after_move;
|
|
1165
1274
|
|
1166
1275
|
//!has_trivial_destructor_after_move<> == true_type
|
1167
1276
|
//!specialization for optimizations
|
1168
|
-
template <class
|
1277
|
+
template <class T, class KeyOfValue, class Compare, class Allocator, class Options>
|
1169
1278
|
struct has_trivial_destructor_after_move
|
1170
1279
|
<
|
1171
1280
|
::boost::container::container_detail::tree
|
1172
|
-
<
|
1281
|
+
<T, KeyOfValue, Compare, Allocator, Options>
|
1173
1282
|
>
|
1174
1283
|
{
|
1175
1284
|
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|