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
@@ -32,11 +32,13 @@
|
|
32
32
|
#include <boost/container/detail/destroyers.hpp>
|
33
33
|
#include <boost/container/detail/algorithm.hpp> //algo_equal(), algo_lexicographical_compare
|
34
34
|
#include <boost/container/detail/iterator.hpp>
|
35
|
+
#include <boost/container/detail/is_sorted.hpp>
|
35
36
|
#include <boost/container/allocator_traits.hpp>
|
36
37
|
#ifdef BOOST_CONTAINER_VECTOR_ITERATOR_IS_POINTER
|
37
38
|
#include <boost/intrusive/pointer_traits.hpp>
|
38
39
|
#endif
|
39
40
|
#include <boost/container/detail/type_traits.hpp>
|
41
|
+
#include <boost/container/detail/iterators.hpp>
|
40
42
|
#include <boost/move/make_unique.hpp>
|
41
43
|
#include <boost/move/adl_move_swap.hpp>
|
42
44
|
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
@@ -44,6 +46,7 @@
|
|
44
46
|
#endif
|
45
47
|
|
46
48
|
#include <boost/intrusive/detail/minimal_pair_header.hpp> //pair
|
49
|
+
#include <boost/move/iterator.hpp>
|
47
50
|
|
48
51
|
namespace boost {
|
49
52
|
namespace container {
|
@@ -98,7 +101,7 @@ struct get_flat_tree_iterators
|
|
98
101
|
typedef boost::container::reverse_iterator<const_iterator> const_reverse_iterator;
|
99
102
|
};
|
100
103
|
|
101
|
-
template <class
|
104
|
+
template <class Value, class KeyOfValue,
|
102
105
|
class Compare, class Allocator>
|
103
106
|
class flat_tree
|
104
107
|
{
|
@@ -183,7 +186,7 @@ class flat_tree
|
|
183
186
|
typedef typename vector_t::const_pointer const_pointer;
|
184
187
|
typedef typename vector_t::reference reference;
|
185
188
|
typedef typename vector_t::const_reference const_reference;
|
186
|
-
typedef
|
189
|
+
typedef typename KeyOfValue::type key_type;
|
187
190
|
typedef Compare key_compare;
|
188
191
|
typedef typename vector_t::allocator_type allocator_type;
|
189
192
|
typedef typename vector_t::size_type size_type;
|
@@ -200,35 +203,36 @@ class flat_tree
|
|
200
203
|
typedef allocator_traits<stored_allocator_type> stored_allocator_traits;
|
201
204
|
|
202
205
|
public:
|
203
|
-
flat_tree()
|
206
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree()
|
204
207
|
: m_data()
|
205
208
|
{ }
|
206
209
|
|
207
|
-
explicit flat_tree(const Compare& comp)
|
210
|
+
BOOST_CONTAINER_FORCEINLINE explicit flat_tree(const Compare& comp)
|
208
211
|
: m_data(comp)
|
209
212
|
{ }
|
210
213
|
|
211
|
-
flat_tree(const Compare& comp, const allocator_type& a)
|
214
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(const Compare& comp, const allocator_type& a)
|
212
215
|
: m_data(comp, a)
|
213
216
|
{ }
|
214
217
|
|
215
|
-
explicit flat_tree(const allocator_type& a)
|
218
|
+
BOOST_CONTAINER_FORCEINLINE explicit flat_tree(const allocator_type& a)
|
216
219
|
: m_data(a)
|
217
220
|
{ }
|
218
221
|
|
219
|
-
flat_tree(const flat_tree& x)
|
222
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(const flat_tree& x)
|
220
223
|
: m_data(x.m_data)
|
221
224
|
{ }
|
222
225
|
|
223
|
-
flat_tree(BOOST_RV_REF(flat_tree) x)
|
226
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(BOOST_RV_REF(flat_tree) x)
|
227
|
+
BOOST_NOEXCEPT_IF(boost::container::container_detail::is_nothrow_move_constructible<Compare>::value)
|
224
228
|
: m_data(boost::move(x.m_data))
|
225
229
|
{ }
|
226
230
|
|
227
|
-
flat_tree(const flat_tree& x, const allocator_type &a)
|
231
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(const flat_tree& x, const allocator_type &a)
|
228
232
|
: m_data(x.m_data, a)
|
229
233
|
{ }
|
230
234
|
|
231
|
-
flat_tree(BOOST_RV_REF(flat_tree) x, const allocator_type &a)
|
235
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree(BOOST_RV_REF(flat_tree) x, const allocator_type &a)
|
232
236
|
: m_data(boost::move(x.m_data), a)
|
233
237
|
{ }
|
234
238
|
|
@@ -237,7 +241,20 @@ class flat_tree
|
|
237
241
|
, const Compare& comp = Compare()
|
238
242
|
, const allocator_type& a = allocator_type())
|
239
243
|
: m_data(comp, a)
|
240
|
-
{
|
244
|
+
{
|
245
|
+
this->m_data.m_vect.insert(this->m_data.m_vect.end(), first, last);
|
246
|
+
BOOST_ASSERT((is_sorted)(this->m_data.m_vect.cbegin(), this->m_data.m_vect.cend(), this->priv_value_comp()));
|
247
|
+
}
|
248
|
+
|
249
|
+
template <class InputIterator>
|
250
|
+
flat_tree( ordered_unique_range_t, InputIterator first, InputIterator last
|
251
|
+
, const Compare& comp = Compare()
|
252
|
+
, const allocator_type& a = allocator_type())
|
253
|
+
: m_data(comp, a)
|
254
|
+
{
|
255
|
+
this->m_data.m_vect.insert(this->m_data.m_vect.end(), first, last);
|
256
|
+
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.m_vect.cbegin(), this->m_data.m_vect.cend(), this->priv_value_comp()));
|
257
|
+
}
|
241
258
|
|
242
259
|
template <class InputIterator>
|
243
260
|
flat_tree( bool unique_insertion
|
@@ -262,80 +279,93 @@ class flat_tree
|
|
262
279
|
}
|
263
280
|
}
|
264
281
|
|
265
|
-
~flat_tree()
|
282
|
+
BOOST_CONTAINER_FORCEINLINE ~flat_tree()
|
266
283
|
{}
|
267
284
|
|
268
|
-
flat_tree& operator=(BOOST_COPY_ASSIGN_REF(flat_tree) x)
|
285
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree& operator=(BOOST_COPY_ASSIGN_REF(flat_tree) x)
|
269
286
|
{ m_data = x.m_data; return *this; }
|
270
287
|
|
271
|
-
flat_tree& operator=(BOOST_RV_REF(flat_tree) x)
|
272
|
-
BOOST_NOEXCEPT_IF(
|
273
|
-
|
288
|
+
BOOST_CONTAINER_FORCEINLINE flat_tree& operator=(BOOST_RV_REF(flat_tree) x)
|
289
|
+
BOOST_NOEXCEPT_IF( (allocator_traits_type::propagate_on_container_move_assignment::value ||
|
290
|
+
allocator_traits_type::is_always_equal::value) &&
|
291
|
+
boost::container::container_detail::is_nothrow_move_assignable<Compare>::value)
|
274
292
|
{ m_data = boost::move(x.m_data); return *this; }
|
275
293
|
|
294
|
+
BOOST_CONTAINER_FORCEINLINE const value_compare &priv_value_comp() const
|
295
|
+
{ return static_cast<const value_compare &>(this->m_data); }
|
296
|
+
|
297
|
+
BOOST_CONTAINER_FORCEINLINE value_compare &priv_value_comp()
|
298
|
+
{ return static_cast<value_compare &>(this->m_data); }
|
299
|
+
|
300
|
+
BOOST_CONTAINER_FORCEINLINE const key_compare &priv_key_comp() const
|
301
|
+
{ return this->priv_value_comp().get_comp(); }
|
302
|
+
|
303
|
+
BOOST_CONTAINER_FORCEINLINE key_compare &priv_key_comp()
|
304
|
+
{ return this->priv_value_comp().get_comp(); }
|
305
|
+
|
276
306
|
public:
|
277
307
|
// accessors:
|
278
|
-
Compare key_comp() const
|
308
|
+
BOOST_CONTAINER_FORCEINLINE Compare key_comp() const
|
279
309
|
{ return this->m_data.get_comp(); }
|
280
310
|
|
281
|
-
value_compare value_comp() const
|
311
|
+
BOOST_CONTAINER_FORCEINLINE value_compare value_comp() const
|
282
312
|
{ return this->m_data; }
|
283
313
|
|
284
|
-
allocator_type get_allocator() const
|
314
|
+
BOOST_CONTAINER_FORCEINLINE allocator_type get_allocator() const
|
285
315
|
{ return this->m_data.m_vect.get_allocator(); }
|
286
316
|
|
287
|
-
const stored_allocator_type &get_stored_allocator() const
|
317
|
+
BOOST_CONTAINER_FORCEINLINE const stored_allocator_type &get_stored_allocator() const
|
288
318
|
{ return this->m_data.m_vect.get_stored_allocator(); }
|
289
319
|
|
290
|
-
stored_allocator_type &get_stored_allocator()
|
320
|
+
BOOST_CONTAINER_FORCEINLINE stored_allocator_type &get_stored_allocator()
|
291
321
|
{ return this->m_data.m_vect.get_stored_allocator(); }
|
292
322
|
|
293
|
-
iterator begin()
|
323
|
+
BOOST_CONTAINER_FORCEINLINE iterator begin()
|
294
324
|
{ return this->m_data.m_vect.begin(); }
|
295
325
|
|
296
|
-
const_iterator begin() const
|
326
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator begin() const
|
297
327
|
{ return this->cbegin(); }
|
298
328
|
|
299
|
-
const_iterator cbegin() const
|
329
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator cbegin() const
|
300
330
|
{ return this->m_data.m_vect.begin(); }
|
301
331
|
|
302
|
-
iterator end()
|
332
|
+
BOOST_CONTAINER_FORCEINLINE iterator end()
|
303
333
|
{ return this->m_data.m_vect.end(); }
|
304
334
|
|
305
|
-
const_iterator end() const
|
335
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator end() const
|
306
336
|
{ return this->cend(); }
|
307
337
|
|
308
|
-
const_iterator cend() const
|
338
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator cend() const
|
309
339
|
{ return this->m_data.m_vect.end(); }
|
310
340
|
|
311
|
-
reverse_iterator rbegin()
|
341
|
+
BOOST_CONTAINER_FORCEINLINE reverse_iterator rbegin()
|
312
342
|
{ return reverse_iterator(this->end()); }
|
313
343
|
|
314
|
-
const_reverse_iterator rbegin() const
|
344
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rbegin() const
|
315
345
|
{ return this->crbegin(); }
|
316
346
|
|
317
|
-
const_reverse_iterator crbegin() const
|
347
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crbegin() const
|
318
348
|
{ return const_reverse_iterator(this->cend()); }
|
319
349
|
|
320
|
-
reverse_iterator rend()
|
350
|
+
BOOST_CONTAINER_FORCEINLINE reverse_iterator rend()
|
321
351
|
{ return reverse_iterator(this->begin()); }
|
322
352
|
|
323
|
-
const_reverse_iterator rend() const
|
353
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator rend() const
|
324
354
|
{ return this->crend(); }
|
325
355
|
|
326
|
-
const_reverse_iterator crend() const
|
356
|
+
BOOST_CONTAINER_FORCEINLINE const_reverse_iterator crend() const
|
327
357
|
{ return const_reverse_iterator(this->cbegin()); }
|
328
358
|
|
329
|
-
bool empty() const
|
359
|
+
BOOST_CONTAINER_FORCEINLINE bool empty() const
|
330
360
|
{ return this->m_data.m_vect.empty(); }
|
331
361
|
|
332
|
-
size_type size() const
|
362
|
+
BOOST_CONTAINER_FORCEINLINE size_type size() const
|
333
363
|
{ return this->m_data.m_vect.size(); }
|
334
364
|
|
335
|
-
size_type max_size() const
|
365
|
+
BOOST_CONTAINER_FORCEINLINE size_type max_size() const
|
336
366
|
{ return this->m_data.m_vect.max_size(); }
|
337
367
|
|
338
|
-
void swap(flat_tree& other)
|
368
|
+
BOOST_CONTAINER_FORCEINLINE void swap(flat_tree& other)
|
339
369
|
BOOST_NOEXCEPT_IF( allocator_traits_type::is_always_equal::value
|
340
370
|
&& boost::container::container_detail::is_nothrow_swappable<Compare>::value )
|
341
371
|
{ this->m_data.swap(other.m_data); }
|
@@ -346,7 +376,7 @@ class flat_tree
|
|
346
376
|
{
|
347
377
|
std::pair<iterator,bool> ret;
|
348
378
|
insert_commit_data data;
|
349
|
-
ret.second = this->priv_insert_unique_prepare(val, data);
|
379
|
+
ret.second = this->priv_insert_unique_prepare(KeyOfValue()(val), data);
|
350
380
|
ret.first = ret.second ? this->priv_insert_commit(data, val)
|
351
381
|
: iterator(vector_iterator_get_ptr(data.position));
|
352
382
|
return ret;
|
@@ -356,7 +386,7 @@ class flat_tree
|
|
356
386
|
{
|
357
387
|
std::pair<iterator,bool> ret;
|
358
388
|
insert_commit_data data;
|
359
|
-
ret.second = this->priv_insert_unique_prepare(val, data);
|
389
|
+
ret.second = this->priv_insert_unique_prepare(KeyOfValue()(val), data);
|
360
390
|
ret.first = ret.second ? this->priv_insert_commit(data, boost::move(val))
|
361
391
|
: iterator(vector_iterator_get_ptr(data.position));
|
362
392
|
return ret;
|
@@ -379,9 +409,8 @@ class flat_tree
|
|
379
409
|
iterator insert_unique(const_iterator hint, const value_type& val)
|
380
410
|
{
|
381
411
|
BOOST_ASSERT(this->priv_in_range_or_end(hint));
|
382
|
-
std::pair<iterator,bool> ret;
|
383
412
|
insert_commit_data data;
|
384
|
-
return this->priv_insert_unique_prepare(hint, val, data)
|
413
|
+
return this->priv_insert_unique_prepare(hint, KeyOfValue()(val), data)
|
385
414
|
? this->priv_insert_commit(data, val)
|
386
415
|
: iterator(vector_iterator_get_ptr(data.position));
|
387
416
|
}
|
@@ -389,9 +418,8 @@ class flat_tree
|
|
389
418
|
iterator insert_unique(const_iterator hint, BOOST_RV_REF(value_type) val)
|
390
419
|
{
|
391
420
|
BOOST_ASSERT(this->priv_in_range_or_end(hint));
|
392
|
-
std::pair<iterator,bool> ret;
|
393
421
|
insert_commit_data data;
|
394
|
-
return this->priv_insert_unique_prepare(hint, val, data)
|
422
|
+
return this->priv_insert_unique_prepare(hint, KeyOfValue()(val), data)
|
395
423
|
? this->priv_insert_commit(data, boost::move(val))
|
396
424
|
: iterator(vector_iterator_get_ptr(data.position));
|
397
425
|
}
|
@@ -481,7 +509,7 @@ class flat_tree
|
|
481
509
|
>::type * = 0
|
482
510
|
#endif
|
483
511
|
)
|
484
|
-
{ this->m_data.m_vect.merge(first, last); }
|
512
|
+
{ this->m_data.m_vect.merge(first, last, static_cast<const value_compare &>(this->m_data)); }
|
485
513
|
|
486
514
|
template <class InIt>
|
487
515
|
void insert_unique(ordered_unique_range_t, InIt first, InIt last
|
@@ -510,7 +538,7 @@ class flat_tree
|
|
510
538
|
>::type * = 0
|
511
539
|
#endif
|
512
540
|
)
|
513
|
-
{ this->m_data.m_vect.merge_unique(first, last, value_compare()); }
|
541
|
+
{ this->m_data.m_vect.merge_unique(first, last, static_cast<const value_compare &>(this->m_data)); }
|
514
542
|
|
515
543
|
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
516
544
|
|
@@ -560,6 +588,29 @@ class flat_tree
|
|
560
588
|
return this->insert_equal(hint, ::boost::move(val));
|
561
589
|
}
|
562
590
|
|
591
|
+
template <class KeyType, class... Args>
|
592
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool> try_emplace
|
593
|
+
(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(Args)... args)
|
594
|
+
{
|
595
|
+
std::pair<iterator,bool> ret;
|
596
|
+
insert_commit_data data;
|
597
|
+
const key_type & k = key;
|
598
|
+
ret.second = hint == const_iterator()
|
599
|
+
? this->priv_insert_unique_prepare(k, data)
|
600
|
+
: this->priv_insert_unique_prepare(hint, k, data);
|
601
|
+
|
602
|
+
if(!ret.second){
|
603
|
+
ret.first = this->nth(data.position - this->cbegin());
|
604
|
+
}
|
605
|
+
else{
|
606
|
+
typedef typename emplace_functor_type<try_emplace_t, KeyType, Args...>::type func_t;
|
607
|
+
typedef emplace_iterator<value_type, func_t, difference_type> it_t;
|
608
|
+
func_t func(try_emplace_t(), ::boost::forward<KeyType>(key), ::boost::forward<Args>(args)...);
|
609
|
+
ret.first = this->m_data.m_vect.insert(data.position, it_t(func), it_t());
|
610
|
+
}
|
611
|
+
return ret;
|
612
|
+
}
|
613
|
+
|
563
614
|
#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
564
615
|
|
565
616
|
#define BOOST_CONTAINER_FLAT_TREE_EMPLACE_CODE(N) \
|
@@ -606,13 +657,57 @@ class flat_tree
|
|
606
657
|
value_destructor<stored_allocator_type> d(a, val);\
|
607
658
|
return this->insert_equal(hint, ::boost::move(val));\
|
608
659
|
}\
|
660
|
+
template <class KeyType BOOST_MOVE_I##N BOOST_MOVE_CLASS##N>\
|
661
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, bool>\
|
662
|
+
try_emplace(const_iterator hint, BOOST_FWD_REF(KeyType) key BOOST_MOVE_I##N BOOST_MOVE_UREF##N)\
|
663
|
+
{\
|
664
|
+
std::pair<iterator,bool> ret;\
|
665
|
+
insert_commit_data data;\
|
666
|
+
const key_type & k = key;\
|
667
|
+
ret.second = hint == const_iterator()\
|
668
|
+
? this->priv_insert_unique_prepare(k, data)\
|
669
|
+
: this->priv_insert_unique_prepare(hint, k, data);\
|
670
|
+
\
|
671
|
+
if(!ret.second){\
|
672
|
+
ret.first = this->nth(data.position - this->cbegin());\
|
673
|
+
}\
|
674
|
+
else{\
|
675
|
+
typedef typename emplace_functor_type<try_emplace_t, KeyType BOOST_MOVE_I##N BOOST_MOVE_TARG##N>::type func_t;\
|
676
|
+
typedef emplace_iterator<value_type, func_t, difference_type> it_t;\
|
677
|
+
func_t func(try_emplace_t(), ::boost::forward<KeyType>(key) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
678
|
+
ret.first = this->m_data.m_vect.insert(data.position, it_t(func), it_t());\
|
679
|
+
}\
|
680
|
+
return ret;\
|
681
|
+
}\
|
609
682
|
//
|
610
|
-
|
683
|
+
BOOST_MOVE_ITERATE_0TO7(BOOST_CONTAINER_FLAT_TREE_EMPLACE_CODE)
|
611
684
|
#undef BOOST_CONTAINER_FLAT_TREE_EMPLACE_CODE
|
612
685
|
|
613
686
|
#endif // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
614
687
|
|
615
|
-
|
688
|
+
template<class KeyType, class M>
|
689
|
+
std::pair<iterator, bool> insert_or_assign(const_iterator hint, BOOST_FWD_REF(KeyType) key, BOOST_FWD_REF(M) obj)
|
690
|
+
{
|
691
|
+
const key_type& k = key;
|
692
|
+
std::pair<iterator,bool> ret;
|
693
|
+
insert_commit_data data;
|
694
|
+
ret.second = hint == const_iterator()
|
695
|
+
? this->priv_insert_unique_prepare(k, data)
|
696
|
+
: this->priv_insert_unique_prepare(hint, k, data);
|
697
|
+
if(!ret.second){
|
698
|
+
ret.first = this->nth(data.position - this->cbegin());
|
699
|
+
ret.first->second = boost::forward<M>(obj);
|
700
|
+
}
|
701
|
+
else{
|
702
|
+
typedef typename emplace_functor_type<KeyType, M>::type func_t;
|
703
|
+
typedef emplace_iterator<value_type, func_t, difference_type> it_t;
|
704
|
+
func_t func(boost::forward<KeyType>(key), boost::forward<M>(obj));
|
705
|
+
ret.first = this->m_data.m_vect.insert(data.position, it_t(func), it_t());
|
706
|
+
}
|
707
|
+
return ret;
|
708
|
+
}
|
709
|
+
|
710
|
+
BOOST_CONTAINER_FORCEINLINE iterator erase(const_iterator position)
|
616
711
|
{ return this->m_data.m_vect.erase(position); }
|
617
712
|
|
618
713
|
size_type erase(const key_type& k)
|
@@ -625,10 +720,10 @@ class flat_tree
|
|
625
720
|
return ret;
|
626
721
|
}
|
627
722
|
|
628
|
-
iterator erase(const_iterator first, const_iterator last)
|
723
|
+
BOOST_CONTAINER_FORCEINLINE iterator erase(const_iterator first, const_iterator last)
|
629
724
|
{ return this->m_data.m_vect.erase(first, last); }
|
630
725
|
|
631
|
-
void clear()
|
726
|
+
BOOST_CONTAINER_FORCEINLINE void clear()
|
632
727
|
{ this->m_data.m_vect.clear(); }
|
633
728
|
|
634
729
|
//! <b>Effects</b>: Tries to deallocate the excess of memory created
|
@@ -637,19 +732,19 @@ class flat_tree
|
|
637
732
|
//! <b>Throws</b>: If memory allocation throws, or T's copy constructor throws.
|
638
733
|
//!
|
639
734
|
//! <b>Complexity</b>: Linear to size().
|
640
|
-
void shrink_to_fit()
|
735
|
+
BOOST_CONTAINER_FORCEINLINE void shrink_to_fit()
|
641
736
|
{ this->m_data.m_vect.shrink_to_fit(); }
|
642
737
|
|
643
|
-
iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
738
|
+
BOOST_CONTAINER_FORCEINLINE iterator nth(size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
644
739
|
{ return this->m_data.m_vect.nth(n); }
|
645
740
|
|
646
|
-
const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
741
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator nth(size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
647
742
|
{ return this->m_data.m_vect.nth(n); }
|
648
743
|
|
649
|
-
size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
744
|
+
BOOST_CONTAINER_FORCEINLINE size_type index_of(iterator p) BOOST_NOEXCEPT_OR_NOTHROW
|
650
745
|
{ return this->m_data.m_vect.index_of(p); }
|
651
746
|
|
652
|
-
size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
747
|
+
BOOST_CONTAINER_FORCEINLINE size_type index_of(const_iterator p) const BOOST_NOEXCEPT_OR_NOTHROW
|
653
748
|
{ return this->m_data.m_vect.index_of(p); }
|
654
749
|
|
655
750
|
// set operations:
|
@@ -682,64 +777,94 @@ class flat_tree
|
|
682
777
|
return n;
|
683
778
|
}
|
684
779
|
|
685
|
-
|
780
|
+
template<class C2>
|
781
|
+
void merge_unique(flat_tree<Value, KeyOfValue, C2, Allocator>& source)
|
782
|
+
{
|
783
|
+
this->insert( boost::make_move_iterator(source.begin())
|
784
|
+
, boost::make_move_iterator(source.end()));
|
785
|
+
}
|
786
|
+
|
787
|
+
template<class C2>
|
788
|
+
void merge_equal(flat_tree<Value, KeyOfValue, C2, Allocator>& source)
|
789
|
+
{
|
790
|
+
this->insert( boost::make_move_iterator(source.begin())
|
791
|
+
, boost::make_move_iterator(source.end()));
|
792
|
+
}
|
793
|
+
|
794
|
+
void merge_unique(flat_tree& source)
|
795
|
+
{
|
796
|
+
this->m_data.m_vect.merge_unique
|
797
|
+
( boost::make_move_iterator(source.begin())
|
798
|
+
, boost::make_move_iterator(source.end())
|
799
|
+
, static_cast<const value_compare &>(this->m_data));
|
800
|
+
}
|
801
|
+
|
802
|
+
void merge_equal(flat_tree& source)
|
803
|
+
{
|
804
|
+
this->m_data.m_vect.merge
|
805
|
+
( boost::make_move_iterator(source.begin())
|
806
|
+
, boost::make_move_iterator(source.end())
|
807
|
+
, static_cast<const value_compare &>(this->m_data));
|
808
|
+
}
|
809
|
+
|
810
|
+
BOOST_CONTAINER_FORCEINLINE iterator lower_bound(const key_type& k)
|
686
811
|
{ return this->priv_lower_bound(this->begin(), this->end(), k); }
|
687
812
|
|
688
|
-
const_iterator lower_bound(const key_type& k) const
|
813
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator lower_bound(const key_type& k) const
|
689
814
|
{ return this->priv_lower_bound(this->cbegin(), this->cend(), k); }
|
690
815
|
|
691
|
-
iterator upper_bound(const key_type& k)
|
816
|
+
BOOST_CONTAINER_FORCEINLINE iterator upper_bound(const key_type& k)
|
692
817
|
{ return this->priv_upper_bound(this->begin(), this->end(), k); }
|
693
818
|
|
694
|
-
const_iterator upper_bound(const key_type& k) const
|
819
|
+
BOOST_CONTAINER_FORCEINLINE const_iterator upper_bound(const key_type& k) const
|
695
820
|
{ return this->priv_upper_bound(this->cbegin(), this->cend(), k); }
|
696
821
|
|
697
|
-
std::pair<iterator,iterator> equal_range(const key_type& k)
|
822
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator,iterator> equal_range(const key_type& k)
|
698
823
|
{ return this->priv_equal_range(this->begin(), this->end(), k); }
|
699
824
|
|
700
|
-
std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const
|
825
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator, const_iterator> equal_range(const key_type& k) const
|
701
826
|
{ return this->priv_equal_range(this->cbegin(), this->cend(), k); }
|
702
827
|
|
703
|
-
std::pair<iterator, iterator> lower_bound_range(const key_type& k)
|
828
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<iterator, iterator> lower_bound_range(const key_type& k)
|
704
829
|
{ return this->priv_lower_bound_range(this->begin(), this->end(), k); }
|
705
830
|
|
706
|
-
std::pair<const_iterator, const_iterator> lower_bound_range(const key_type& k) const
|
831
|
+
BOOST_CONTAINER_FORCEINLINE std::pair<const_iterator, const_iterator> lower_bound_range(const key_type& k) const
|
707
832
|
{ return this->priv_lower_bound_range(this->cbegin(), this->cend(), k); }
|
708
833
|
|
709
|
-
size_type capacity() const
|
834
|
+
BOOST_CONTAINER_FORCEINLINE size_type capacity() const
|
710
835
|
{ return this->m_data.m_vect.capacity(); }
|
711
836
|
|
712
|
-
void reserve(size_type cnt)
|
837
|
+
BOOST_CONTAINER_FORCEINLINE void reserve(size_type cnt)
|
713
838
|
{ this->m_data.m_vect.reserve(cnt); }
|
714
839
|
|
715
|
-
friend bool operator==(const flat_tree& x, const flat_tree& y)
|
840
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator==(const flat_tree& x, const flat_tree& y)
|
716
841
|
{
|
717
842
|
return x.size() == y.size() && ::boost::container::algo_equal(x.begin(), x.end(), y.begin());
|
718
843
|
}
|
719
844
|
|
720
|
-
friend bool operator<(const flat_tree& x, const flat_tree& y)
|
845
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<(const flat_tree& x, const flat_tree& y)
|
721
846
|
{
|
722
847
|
return ::boost::container::algo_lexicographical_compare(x.begin(), x.end(), y.begin(), y.end());
|
723
848
|
}
|
724
849
|
|
725
|
-
friend bool operator!=(const flat_tree& x, const flat_tree& y)
|
850
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator!=(const flat_tree& x, const flat_tree& y)
|
726
851
|
{ return !(x == y); }
|
727
852
|
|
728
|
-
friend bool operator>(const flat_tree& x, const flat_tree& y)
|
853
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>(const flat_tree& x, const flat_tree& y)
|
729
854
|
{ return y < x; }
|
730
855
|
|
731
|
-
friend bool operator<=(const flat_tree& x, const flat_tree& y)
|
856
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator<=(const flat_tree& x, const flat_tree& y)
|
732
857
|
{ return !(y < x); }
|
733
858
|
|
734
|
-
friend bool operator>=(const flat_tree& x, const flat_tree& y)
|
859
|
+
BOOST_CONTAINER_FORCEINLINE friend bool operator>=(const flat_tree& x, const flat_tree& y)
|
735
860
|
{ return !(x < y); }
|
736
861
|
|
737
|
-
friend void swap(flat_tree& x, flat_tree& y)
|
862
|
+
BOOST_CONTAINER_FORCEINLINE friend void swap(flat_tree& x, flat_tree& y)
|
738
863
|
{ x.swap(y); }
|
739
864
|
|
740
865
|
private:
|
741
866
|
|
742
|
-
bool priv_in_range_or_end(const_iterator pos) const
|
867
|
+
BOOST_CONTAINER_FORCEINLINE bool priv_in_range_or_end(const_iterator pos) const
|
743
868
|
{
|
744
869
|
return (this->begin() <= pos) && (pos <= this->end());
|
745
870
|
}
|
@@ -780,34 +905,34 @@ class flat_tree
|
|
780
905
|
}
|
781
906
|
|
782
907
|
bool priv_insert_unique_prepare
|
783
|
-
(const_iterator b, const_iterator e, const
|
908
|
+
(const_iterator b, const_iterator e, const key_type& k, insert_commit_data &commit_data)
|
784
909
|
{
|
785
|
-
const
|
786
|
-
commit_data.position = this->priv_lower_bound(b, e,
|
787
|
-
return commit_data.position == e ||
|
910
|
+
const key_compare &key_cmp = this->priv_key_comp();
|
911
|
+
commit_data.position = this->priv_lower_bound(b, e, k);
|
912
|
+
return commit_data.position == e || key_cmp(k, KeyOfValue()(*commit_data.position));
|
788
913
|
}
|
789
914
|
|
790
|
-
bool priv_insert_unique_prepare
|
791
|
-
(const
|
792
|
-
{ return this->priv_insert_unique_prepare(this->cbegin(), this->cend(),
|
915
|
+
BOOST_CONTAINER_FORCEINLINE bool priv_insert_unique_prepare
|
916
|
+
(const key_type& k, insert_commit_data &commit_data)
|
917
|
+
{ return this->priv_insert_unique_prepare(this->cbegin(), this->cend(), k, commit_data); }
|
793
918
|
|
794
919
|
bool priv_insert_unique_prepare
|
795
|
-
(const_iterator pos, const
|
920
|
+
(const_iterator pos, const key_type& k, insert_commit_data &commit_data)
|
796
921
|
{
|
797
922
|
//N1780. Props to Howard Hinnant!
|
798
|
-
//To insert
|
799
|
-
//if pos == end ||
|
800
|
-
// if pos == begin ||
|
801
|
-
// insert
|
923
|
+
//To insert k at pos:
|
924
|
+
//if pos == end || k <= *pos
|
925
|
+
// if pos == begin || k >= *(pos-1)
|
926
|
+
// insert k before pos
|
802
927
|
// else
|
803
|
-
// insert
|
804
|
-
//else if pos+1 == end ||
|
805
|
-
// insert
|
928
|
+
// insert k before upper_bound(k)
|
929
|
+
//else if pos+1 == end || k <= *(pos+1)
|
930
|
+
// insert k after pos
|
806
931
|
//else
|
807
|
-
// insert
|
808
|
-
const
|
932
|
+
// insert k before lower_bound(k)
|
933
|
+
const key_compare &key_cmp = this->priv_key_comp();
|
809
934
|
const const_iterator cend_it = this->cend();
|
810
|
-
if(pos == cend_it ||
|
935
|
+
if(pos == cend_it || key_cmp(k, KeyOfValue()(*pos))){ //Check if k should go before end
|
811
936
|
const const_iterator cbeg = this->cbegin();
|
812
937
|
commit_data.position = pos;
|
813
938
|
if(pos == cbeg){ //If container is empty then insert it in the beginning
|
@@ -815,27 +940,27 @@ class flat_tree
|
|
815
940
|
}
|
816
941
|
const_iterator prev(pos);
|
817
942
|
--prev;
|
818
|
-
if(
|
943
|
+
if(key_cmp(KeyOfValue()(*prev), k)){ //If previous element was less, then it should go between prev and pos
|
819
944
|
return true;
|
820
945
|
}
|
821
|
-
else if(!
|
946
|
+
else if(!key_cmp(k, KeyOfValue()(*prev))){ //If previous was equal then insertion should fail
|
822
947
|
commit_data.position = prev;
|
823
948
|
return false;
|
824
949
|
}
|
825
950
|
else{ //Previous was bigger so insertion hint was pointless, dispatch to hintless insertion
|
826
|
-
//but reduce the search between beg and prev as prev is bigger than
|
827
|
-
return this->priv_insert_unique_prepare(cbeg, prev,
|
951
|
+
//but reduce the search between beg and prev as prev is bigger than k
|
952
|
+
return this->priv_insert_unique_prepare(cbeg, prev, k, commit_data);
|
828
953
|
}
|
829
954
|
}
|
830
955
|
else{
|
831
956
|
//The hint is before the insertion position, so insert it
|
832
957
|
//in the remaining range [pos, end)
|
833
|
-
return this->priv_insert_unique_prepare(pos, cend_it,
|
958
|
+
return this->priv_insert_unique_prepare(pos, cend_it, k, commit_data);
|
834
959
|
}
|
835
960
|
}
|
836
961
|
|
837
962
|
template<class Convertible>
|
838
|
-
iterator priv_insert_commit
|
963
|
+
BOOST_CONTAINER_FORCEINLINE iterator priv_insert_commit
|
839
964
|
(insert_commit_data &commit_data, BOOST_FWD_REF(Convertible) convertible)
|
840
965
|
{
|
841
966
|
return this->m_data.m_vect.insert
|
@@ -966,9 +1091,9 @@ class flat_tree
|
|
966
1091
|
|
967
1092
|
//!has_trivial_destructor_after_move<> == true_type
|
968
1093
|
//!specialization for optimizations
|
969
|
-
template <class
|
1094
|
+
template <class T, class KeyOfValue,
|
970
1095
|
class Compare, class Allocator>
|
971
|
-
struct has_trivial_destructor_after_move<boost::container::container_detail::flat_tree<
|
1096
|
+
struct has_trivial_destructor_after_move<boost::container::container_detail::flat_tree<T, KeyOfValue, Compare, Allocator> >
|
972
1097
|
{
|
973
1098
|
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
974
1099
|
static const bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|