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
@@ -1,928 +0,0 @@
|
|
1
|
-
|
2
|
-
// Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard.
|
3
|
-
// Copyright (C) 2005-2011 Daniel James
|
4
|
-
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
5
|
-
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
-
|
7
|
-
#ifndef BOOST_UNORDERED_DETAIL_MANAGER_HPP_INCLUDED
|
8
|
-
#define BOOST_UNORDERED_DETAIL_MANAGER_HPP_INCLUDED
|
9
|
-
|
10
|
-
#include <boost/config.hpp>
|
11
|
-
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
12
|
-
#pragma once
|
13
|
-
#endif
|
14
|
-
|
15
|
-
#include <boost/unordered/detail/util.hpp>
|
16
|
-
#include <boost/unordered/detail/allocate.hpp>
|
17
|
-
#include <boost/type_traits/aligned_storage.hpp>
|
18
|
-
#include <boost/type_traits/alignment_of.hpp>
|
19
|
-
#include <boost/type_traits/is_nothrow_move_constructible.hpp>
|
20
|
-
#include <boost/type_traits/is_nothrow_move_assignable.hpp>
|
21
|
-
#include <boost/swap.hpp>
|
22
|
-
#include <boost/assert.hpp>
|
23
|
-
#include <boost/limits.hpp>
|
24
|
-
#include <boost/iterator.hpp>
|
25
|
-
|
26
|
-
namespace boost { namespace unordered { namespace detail {
|
27
|
-
|
28
|
-
template <typename Types> struct table;
|
29
|
-
template <typename NodePointer> struct bucket;
|
30
|
-
struct ptr_bucket;
|
31
|
-
template <typename Types> struct table_impl;
|
32
|
-
template <typename Types> struct grouped_table_impl;
|
33
|
-
|
34
|
-
}}}
|
35
|
-
|
36
|
-
// The 'iterator_detail' namespace was a misguided attempt at avoiding ADL
|
37
|
-
// in the detail namespace. It didn't work because the template parameters
|
38
|
-
// were in detail. I'm not changing it at the moment to be safe. I might
|
39
|
-
// do in the future if I change the iterator types.
|
40
|
-
namespace boost { namespace unordered { namespace iterator_detail {
|
41
|
-
|
42
|
-
////////////////////////////////////////////////////////////////////////////
|
43
|
-
// Iterators
|
44
|
-
//
|
45
|
-
// all no throw
|
46
|
-
|
47
|
-
template <typename Node> struct iterator;
|
48
|
-
template <typename Node> struct c_iterator;
|
49
|
-
template <typename Node, typename Policy> struct l_iterator;
|
50
|
-
template <typename Node, typename Policy>
|
51
|
-
struct cl_iterator;
|
52
|
-
|
53
|
-
// Local Iterators
|
54
|
-
//
|
55
|
-
// all no throw
|
56
|
-
|
57
|
-
template <typename Node, typename Policy>
|
58
|
-
struct l_iterator
|
59
|
-
: public boost::iterator<
|
60
|
-
std::forward_iterator_tag,
|
61
|
-
typename Node::value_type,
|
62
|
-
std::ptrdiff_t,
|
63
|
-
typename Node::value_type*,
|
64
|
-
typename Node::value_type&>
|
65
|
-
{
|
66
|
-
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
67
|
-
template <typename Node2, typename Policy2>
|
68
|
-
friend struct boost::unordered::iterator_detail::cl_iterator;
|
69
|
-
private:
|
70
|
-
#endif
|
71
|
-
typedef typename Node::node_pointer node_pointer;
|
72
|
-
typedef boost::unordered::iterator_detail::iterator<Node> n_iterator;
|
73
|
-
node_pointer ptr_;
|
74
|
-
std::size_t bucket_;
|
75
|
-
std::size_t bucket_count_;
|
76
|
-
|
77
|
-
public:
|
78
|
-
|
79
|
-
typedef typename Node::value_type value_type;
|
80
|
-
|
81
|
-
l_iterator() BOOST_NOEXCEPT : ptr_() {}
|
82
|
-
|
83
|
-
l_iterator(n_iterator x, std::size_t b, std::size_t c) BOOST_NOEXCEPT
|
84
|
-
: ptr_(x.node_), bucket_(b), bucket_count_(c) {}
|
85
|
-
|
86
|
-
value_type& operator*() const {
|
87
|
-
return ptr_->value();
|
88
|
-
}
|
89
|
-
|
90
|
-
value_type* operator->() const {
|
91
|
-
return ptr_->value_ptr();
|
92
|
-
}
|
93
|
-
|
94
|
-
l_iterator& operator++() {
|
95
|
-
ptr_ = static_cast<node_pointer>(ptr_->next_);
|
96
|
-
if (ptr_ && Policy::to_bucket(bucket_count_, ptr_->hash_)
|
97
|
-
!= bucket_)
|
98
|
-
ptr_ = node_pointer();
|
99
|
-
return *this;
|
100
|
-
}
|
101
|
-
|
102
|
-
l_iterator operator++(int) {
|
103
|
-
l_iterator tmp(*this);
|
104
|
-
++(*this);
|
105
|
-
return tmp;
|
106
|
-
}
|
107
|
-
|
108
|
-
bool operator==(l_iterator x) const BOOST_NOEXCEPT {
|
109
|
-
return ptr_ == x.ptr_;
|
110
|
-
}
|
111
|
-
|
112
|
-
bool operator!=(l_iterator x) const BOOST_NOEXCEPT {
|
113
|
-
return ptr_ != x.ptr_;
|
114
|
-
}
|
115
|
-
};
|
116
|
-
|
117
|
-
template <typename Node, typename Policy>
|
118
|
-
struct cl_iterator
|
119
|
-
: public boost::iterator<
|
120
|
-
std::forward_iterator_tag,
|
121
|
-
typename Node::value_type,
|
122
|
-
std::ptrdiff_t,
|
123
|
-
typename Node::value_type const*,
|
124
|
-
typename Node::value_type const&>
|
125
|
-
{
|
126
|
-
friend struct boost::unordered::iterator_detail::l_iterator
|
127
|
-
<Node, Policy>;
|
128
|
-
private:
|
129
|
-
|
130
|
-
typedef typename Node::node_pointer node_pointer;
|
131
|
-
typedef boost::unordered::iterator_detail::iterator<Node> n_iterator;
|
132
|
-
node_pointer ptr_;
|
133
|
-
std::size_t bucket_;
|
134
|
-
std::size_t bucket_count_;
|
135
|
-
|
136
|
-
public:
|
137
|
-
|
138
|
-
typedef typename Node::value_type value_type;
|
139
|
-
|
140
|
-
cl_iterator() BOOST_NOEXCEPT : ptr_() {}
|
141
|
-
|
142
|
-
cl_iterator(n_iterator x, std::size_t b, std::size_t c) BOOST_NOEXCEPT :
|
143
|
-
ptr_(x.node_), bucket_(b), bucket_count_(c) {}
|
144
|
-
|
145
|
-
cl_iterator(boost::unordered::iterator_detail::l_iterator<
|
146
|
-
Node, Policy> const& x) BOOST_NOEXCEPT :
|
147
|
-
ptr_(x.ptr_), bucket_(x.bucket_), bucket_count_(x.bucket_count_)
|
148
|
-
{}
|
149
|
-
|
150
|
-
value_type const& operator*() const {
|
151
|
-
return ptr_->value();
|
152
|
-
}
|
153
|
-
|
154
|
-
value_type const* operator->() const {
|
155
|
-
return ptr_->value_ptr();
|
156
|
-
}
|
157
|
-
|
158
|
-
cl_iterator& operator++() {
|
159
|
-
ptr_ = static_cast<node_pointer>(ptr_->next_);
|
160
|
-
if (ptr_ && Policy::to_bucket(bucket_count_, ptr_->hash_)
|
161
|
-
!= bucket_)
|
162
|
-
ptr_ = node_pointer();
|
163
|
-
return *this;
|
164
|
-
}
|
165
|
-
|
166
|
-
cl_iterator operator++(int) {
|
167
|
-
cl_iterator tmp(*this);
|
168
|
-
++(*this);
|
169
|
-
return tmp;
|
170
|
-
}
|
171
|
-
|
172
|
-
friend bool operator==(cl_iterator const& x, cl_iterator const& y)
|
173
|
-
BOOST_NOEXCEPT
|
174
|
-
{
|
175
|
-
return x.ptr_ == y.ptr_;
|
176
|
-
}
|
177
|
-
|
178
|
-
friend bool operator!=(cl_iterator const& x, cl_iterator const& y)
|
179
|
-
BOOST_NOEXCEPT
|
180
|
-
{
|
181
|
-
return x.ptr_ != y.ptr_;
|
182
|
-
}
|
183
|
-
};
|
184
|
-
|
185
|
-
template <typename Node>
|
186
|
-
struct iterator
|
187
|
-
: public boost::iterator<
|
188
|
-
std::forward_iterator_tag,
|
189
|
-
typename Node::value_type,
|
190
|
-
std::ptrdiff_t,
|
191
|
-
typename Node::value_type*,
|
192
|
-
typename Node::value_type&>
|
193
|
-
{
|
194
|
-
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
195
|
-
template <typename>
|
196
|
-
friend struct boost::unordered::iterator_detail::c_iterator;
|
197
|
-
template <typename, typename>
|
198
|
-
friend struct boost::unordered::iterator_detail::l_iterator;
|
199
|
-
template <typename, typename>
|
200
|
-
friend struct boost::unordered::iterator_detail::cl_iterator;
|
201
|
-
template <typename>
|
202
|
-
friend struct boost::unordered::detail::table;
|
203
|
-
template <typename>
|
204
|
-
friend struct boost::unordered::detail::table_impl;
|
205
|
-
template <typename>
|
206
|
-
friend struct boost::unordered::detail::grouped_table_impl;
|
207
|
-
private:
|
208
|
-
#endif
|
209
|
-
typedef typename Node::node_pointer node_pointer;
|
210
|
-
node_pointer node_;
|
211
|
-
|
212
|
-
public:
|
213
|
-
|
214
|
-
typedef typename Node::value_type value_type;
|
215
|
-
|
216
|
-
iterator() BOOST_NOEXCEPT : node_() {}
|
217
|
-
|
218
|
-
explicit iterator(typename Node::link_pointer x) BOOST_NOEXCEPT :
|
219
|
-
node_(static_cast<node_pointer>(x)) {}
|
220
|
-
|
221
|
-
value_type& operator*() const {
|
222
|
-
return node_->value();
|
223
|
-
}
|
224
|
-
|
225
|
-
value_type* operator->() const {
|
226
|
-
return node_->value_ptr();
|
227
|
-
}
|
228
|
-
|
229
|
-
iterator& operator++() {
|
230
|
-
node_ = static_cast<node_pointer>(node_->next_);
|
231
|
-
return *this;
|
232
|
-
}
|
233
|
-
|
234
|
-
iterator operator++(int) {
|
235
|
-
iterator tmp(node_);
|
236
|
-
node_ = static_cast<node_pointer>(node_->next_);
|
237
|
-
return tmp;
|
238
|
-
}
|
239
|
-
|
240
|
-
bool operator==(iterator const& x) const BOOST_NOEXCEPT {
|
241
|
-
return node_ == x.node_;
|
242
|
-
}
|
243
|
-
|
244
|
-
bool operator!=(iterator const& x) const BOOST_NOEXCEPT {
|
245
|
-
return node_ != x.node_;
|
246
|
-
}
|
247
|
-
};
|
248
|
-
|
249
|
-
template <typename Node>
|
250
|
-
struct c_iterator
|
251
|
-
: public boost::iterator<
|
252
|
-
std::forward_iterator_tag,
|
253
|
-
typename Node::value_type,
|
254
|
-
std::ptrdiff_t,
|
255
|
-
typename Node::value_type const*,
|
256
|
-
typename Node::value_type const&>
|
257
|
-
{
|
258
|
-
friend struct boost::unordered::iterator_detail::iterator<Node>;
|
259
|
-
|
260
|
-
#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
|
261
|
-
template <typename>
|
262
|
-
friend struct boost::unordered::detail::table;
|
263
|
-
template <typename>
|
264
|
-
friend struct boost::unordered::detail::table_impl;
|
265
|
-
template <typename>
|
266
|
-
friend struct boost::unordered::detail::grouped_table_impl;
|
267
|
-
|
268
|
-
private:
|
269
|
-
#endif
|
270
|
-
typedef typename Node::node_pointer node_pointer;
|
271
|
-
typedef boost::unordered::iterator_detail::iterator<Node> n_iterator;
|
272
|
-
node_pointer node_;
|
273
|
-
|
274
|
-
public:
|
275
|
-
|
276
|
-
typedef typename Node::value_type value_type;
|
277
|
-
|
278
|
-
c_iterator() BOOST_NOEXCEPT : node_() {}
|
279
|
-
|
280
|
-
explicit c_iterator(typename Node::link_pointer x) BOOST_NOEXCEPT :
|
281
|
-
node_(static_cast<node_pointer>(x)) {}
|
282
|
-
|
283
|
-
c_iterator(n_iterator const& x) BOOST_NOEXCEPT : node_(x.node_) {}
|
284
|
-
|
285
|
-
value_type const& operator*() const {
|
286
|
-
return node_->value();
|
287
|
-
}
|
288
|
-
|
289
|
-
value_type const* operator->() const {
|
290
|
-
return node_->value_ptr();
|
291
|
-
}
|
292
|
-
|
293
|
-
c_iterator& operator++() {
|
294
|
-
node_ = static_cast<node_pointer>(node_->next_);
|
295
|
-
return *this;
|
296
|
-
}
|
297
|
-
|
298
|
-
c_iterator operator++(int) {
|
299
|
-
c_iterator tmp(node_);
|
300
|
-
node_ = static_cast<node_pointer>(node_->next_);
|
301
|
-
return tmp;
|
302
|
-
}
|
303
|
-
|
304
|
-
friend bool operator==(c_iterator const& x, c_iterator const& y)
|
305
|
-
BOOST_NOEXCEPT
|
306
|
-
{
|
307
|
-
return x.node_ == y.node_;
|
308
|
-
}
|
309
|
-
|
310
|
-
friend bool operator!=(c_iterator const& x, c_iterator const& y)
|
311
|
-
BOOST_NOEXCEPT
|
312
|
-
{
|
313
|
-
return x.node_ != y.node_;
|
314
|
-
}
|
315
|
-
};
|
316
|
-
}}}
|
317
|
-
|
318
|
-
namespace boost { namespace unordered { namespace detail {
|
319
|
-
|
320
|
-
///////////////////////////////////////////////////////////////////
|
321
|
-
//
|
322
|
-
// Node construction
|
323
|
-
|
324
|
-
template <typename NodeAlloc>
|
325
|
-
struct node_constructor
|
326
|
-
{
|
327
|
-
private:
|
328
|
-
|
329
|
-
typedef NodeAlloc node_allocator;
|
330
|
-
typedef boost::unordered::detail::allocator_traits<NodeAlloc>
|
331
|
-
node_allocator_traits;
|
332
|
-
typedef typename node_allocator_traits::value_type node;
|
333
|
-
typedef typename node_allocator_traits::pointer node_pointer;
|
334
|
-
typedef typename node::value_type value_type;
|
335
|
-
|
336
|
-
protected:
|
337
|
-
|
338
|
-
node_allocator& alloc_;
|
339
|
-
node_pointer node_;
|
340
|
-
bool node_constructed_;
|
341
|
-
bool value_constructed_;
|
342
|
-
|
343
|
-
public:
|
344
|
-
|
345
|
-
node_constructor(node_allocator& n) :
|
346
|
-
alloc_(n),
|
347
|
-
node_(),
|
348
|
-
node_constructed_(false),
|
349
|
-
value_constructed_(false)
|
350
|
-
{
|
351
|
-
}
|
352
|
-
|
353
|
-
~node_constructor();
|
354
|
-
|
355
|
-
void construct();
|
356
|
-
|
357
|
-
template <BOOST_UNORDERED_EMPLACE_TEMPLATE>
|
358
|
-
void construct_with_value(BOOST_UNORDERED_EMPLACE_ARGS)
|
359
|
-
{
|
360
|
-
construct();
|
361
|
-
boost::unordered::detail::func::construct_value_impl(
|
362
|
-
alloc_, node_->value_ptr(), BOOST_UNORDERED_EMPLACE_FORWARD);
|
363
|
-
value_constructed_ = true;
|
364
|
-
}
|
365
|
-
|
366
|
-
template <typename A0>
|
367
|
-
void construct_with_value2(BOOST_FWD_REF(A0) a0)
|
368
|
-
{
|
369
|
-
construct();
|
370
|
-
boost::unordered::detail::func::construct_value_impl(
|
371
|
-
alloc_, node_->value_ptr(),
|
372
|
-
BOOST_UNORDERED_EMPLACE_ARGS1(boost::forward<A0>(a0)));
|
373
|
-
value_constructed_ = true;
|
374
|
-
}
|
375
|
-
|
376
|
-
value_type const& value() const {
|
377
|
-
BOOST_ASSERT(node_ && node_constructed_ && value_constructed_);
|
378
|
-
return node_->value();
|
379
|
-
}
|
380
|
-
|
381
|
-
// no throw
|
382
|
-
node_pointer release()
|
383
|
-
{
|
384
|
-
BOOST_ASSERT(node_ && node_constructed_);
|
385
|
-
node_pointer p = node_;
|
386
|
-
node_ = node_pointer();
|
387
|
-
return p;
|
388
|
-
}
|
389
|
-
|
390
|
-
private:
|
391
|
-
node_constructor(node_constructor const&);
|
392
|
-
node_constructor& operator=(node_constructor const&);
|
393
|
-
};
|
394
|
-
|
395
|
-
template <typename Alloc>
|
396
|
-
node_constructor<Alloc>::~node_constructor()
|
397
|
-
{
|
398
|
-
if (node_) {
|
399
|
-
if (value_constructed_) {
|
400
|
-
boost::unordered::detail::func::destroy_value_impl(alloc_,
|
401
|
-
node_->value_ptr());
|
402
|
-
}
|
403
|
-
|
404
|
-
if (node_constructed_) {
|
405
|
-
boost::unordered::detail::func::destroy(
|
406
|
-
boost::addressof(*node_));
|
407
|
-
}
|
408
|
-
|
409
|
-
node_allocator_traits::deallocate(alloc_, node_, 1);
|
410
|
-
}
|
411
|
-
}
|
412
|
-
|
413
|
-
template <typename Alloc>
|
414
|
-
void node_constructor<Alloc>::construct()
|
415
|
-
{
|
416
|
-
if(!node_) {
|
417
|
-
node_constructed_ = false;
|
418
|
-
value_constructed_ = false;
|
419
|
-
|
420
|
-
node_ = node_allocator_traits::allocate(alloc_, 1);
|
421
|
-
|
422
|
-
new ((void*) boost::addressof(*node_)) node();
|
423
|
-
node_->init(node_);
|
424
|
-
node_constructed_ = true;
|
425
|
-
}
|
426
|
-
else {
|
427
|
-
BOOST_ASSERT(node_constructed_);
|
428
|
-
|
429
|
-
if (value_constructed_)
|
430
|
-
{
|
431
|
-
boost::unordered::detail::func::destroy_value_impl(alloc_,
|
432
|
-
node_->value_ptr());
|
433
|
-
value_constructed_ = false;
|
434
|
-
}
|
435
|
-
}
|
436
|
-
}
|
437
|
-
|
438
|
-
///////////////////////////////////////////////////////////////////
|
439
|
-
//
|
440
|
-
// Node Holder
|
441
|
-
//
|
442
|
-
// Temporary store for nodes. Deletes any that aren't used.
|
443
|
-
|
444
|
-
template <typename NodeAlloc>
|
445
|
-
struct node_holder : private node_constructor<NodeAlloc>
|
446
|
-
{
|
447
|
-
private:
|
448
|
-
typedef node_constructor<NodeAlloc> base;
|
449
|
-
|
450
|
-
typedef NodeAlloc node_allocator;
|
451
|
-
typedef boost::unordered::detail::allocator_traits<NodeAlloc>
|
452
|
-
node_allocator_traits;
|
453
|
-
typedef typename node_allocator_traits::value_type node;
|
454
|
-
typedef typename node_allocator_traits::pointer node_pointer;
|
455
|
-
typedef typename node::value_type value_type;
|
456
|
-
typedef typename node::link_pointer link_pointer;
|
457
|
-
typedef boost::unordered::iterator_detail::iterator<node> iterator;
|
458
|
-
|
459
|
-
node_pointer nodes_;
|
460
|
-
|
461
|
-
public:
|
462
|
-
|
463
|
-
template <typename Table>
|
464
|
-
explicit node_holder(Table& b) :
|
465
|
-
base(b.node_alloc()),
|
466
|
-
nodes_()
|
467
|
-
{
|
468
|
-
if (b.size_) {
|
469
|
-
typename Table::link_pointer prev = b.get_previous_start();
|
470
|
-
nodes_ = static_cast<node_pointer>(prev->next_);
|
471
|
-
prev->next_ = link_pointer();
|
472
|
-
b.size_ = 0;
|
473
|
-
}
|
474
|
-
}
|
475
|
-
|
476
|
-
~node_holder();
|
477
|
-
|
478
|
-
void node_for_assignment()
|
479
|
-
{
|
480
|
-
if (!this->node_ && nodes_) {
|
481
|
-
this->node_ = nodes_;
|
482
|
-
nodes_ = static_cast<node_pointer>(nodes_->next_);
|
483
|
-
this->node_->init(this->node_);
|
484
|
-
this->node_->next_ = link_pointer();
|
485
|
-
|
486
|
-
this->node_constructed_ = true;
|
487
|
-
this->value_constructed_ = true;
|
488
|
-
}
|
489
|
-
}
|
490
|
-
|
491
|
-
template <typename T>
|
492
|
-
inline void assign_impl(T const& v) {
|
493
|
-
if (this->node_ && this->value_constructed_) {
|
494
|
-
this->node_->value() = v;
|
495
|
-
}
|
496
|
-
else {
|
497
|
-
this->construct_with_value2(v);
|
498
|
-
}
|
499
|
-
}
|
500
|
-
|
501
|
-
template <typename T1, typename T2>
|
502
|
-
inline void assign_impl(std::pair<T1 const, T2> const& v) {
|
503
|
-
this->construct_with_value2(v);
|
504
|
-
}
|
505
|
-
|
506
|
-
template <typename T>
|
507
|
-
inline void move_assign_impl(T& v) {
|
508
|
-
if (this->node_ && this->value_constructed_) {
|
509
|
-
this->node_->value() = boost::move(v);
|
510
|
-
}
|
511
|
-
else {
|
512
|
-
this->construct_with_value2(boost::move(v));
|
513
|
-
}
|
514
|
-
}
|
515
|
-
|
516
|
-
template <typename T1, typename T2>
|
517
|
-
inline void move_assign_impl(std::pair<T1 const, T2>& v) {
|
518
|
-
this->construct_with_value2(boost::move(v));
|
519
|
-
}
|
520
|
-
|
521
|
-
node_pointer copy_of(value_type const& v)
|
522
|
-
{
|
523
|
-
node_for_assignment();
|
524
|
-
assign_impl(v);
|
525
|
-
return base::release();
|
526
|
-
}
|
527
|
-
|
528
|
-
node_pointer move_copy_of(value_type& v)
|
529
|
-
{
|
530
|
-
node_for_assignment();
|
531
|
-
move_assign_impl(v);
|
532
|
-
return base::release();
|
533
|
-
}
|
534
|
-
|
535
|
-
iterator begin() const
|
536
|
-
{
|
537
|
-
return iterator(nodes_);
|
538
|
-
}
|
539
|
-
};
|
540
|
-
|
541
|
-
template <typename Alloc>
|
542
|
-
node_holder<Alloc>::~node_holder()
|
543
|
-
{
|
544
|
-
while (nodes_) {
|
545
|
-
node_pointer p = nodes_;
|
546
|
-
nodes_ = static_cast<node_pointer>(p->next_);
|
547
|
-
|
548
|
-
boost::unordered::detail::func::destroy_value_impl(this->alloc_,
|
549
|
-
p->value_ptr());
|
550
|
-
boost::unordered::detail::func::destroy(boost::addressof(*p));
|
551
|
-
node_allocator_traits::deallocate(this->alloc_, p, 1);
|
552
|
-
}
|
553
|
-
}
|
554
|
-
|
555
|
-
///////////////////////////////////////////////////////////////////
|
556
|
-
//
|
557
|
-
// Bucket
|
558
|
-
|
559
|
-
template <typename NodePointer>
|
560
|
-
struct bucket
|
561
|
-
{
|
562
|
-
typedef NodePointer link_pointer;
|
563
|
-
link_pointer next_;
|
564
|
-
|
565
|
-
bucket() : next_() {}
|
566
|
-
|
567
|
-
link_pointer first_from_start()
|
568
|
-
{
|
569
|
-
return next_;
|
570
|
-
}
|
571
|
-
|
572
|
-
enum { extra_node = true };
|
573
|
-
};
|
574
|
-
|
575
|
-
struct ptr_bucket
|
576
|
-
{
|
577
|
-
typedef ptr_bucket* link_pointer;
|
578
|
-
link_pointer next_;
|
579
|
-
|
580
|
-
ptr_bucket() : next_(0) {}
|
581
|
-
|
582
|
-
link_pointer first_from_start()
|
583
|
-
{
|
584
|
-
return this;
|
585
|
-
}
|
586
|
-
|
587
|
-
enum { extra_node = false };
|
588
|
-
};
|
589
|
-
|
590
|
-
///////////////////////////////////////////////////////////////////
|
591
|
-
//
|
592
|
-
// Hash Policy
|
593
|
-
|
594
|
-
template <typename SizeT>
|
595
|
-
struct prime_policy
|
596
|
-
{
|
597
|
-
template <typename Hash, typename T>
|
598
|
-
static inline SizeT apply_hash(Hash const& hf, T const& x) {
|
599
|
-
return hf(x);
|
600
|
-
}
|
601
|
-
|
602
|
-
static inline SizeT to_bucket(SizeT bucket_count, SizeT hash) {
|
603
|
-
return hash % bucket_count;
|
604
|
-
}
|
605
|
-
|
606
|
-
static inline SizeT new_bucket_count(SizeT min) {
|
607
|
-
return boost::unordered::detail::next_prime(min);
|
608
|
-
}
|
609
|
-
|
610
|
-
static inline SizeT prev_bucket_count(SizeT max) {
|
611
|
-
return boost::unordered::detail::prev_prime(max);
|
612
|
-
}
|
613
|
-
};
|
614
|
-
|
615
|
-
template <typename SizeT>
|
616
|
-
struct mix64_policy
|
617
|
-
{
|
618
|
-
template <typename Hash, typename T>
|
619
|
-
static inline SizeT apply_hash(Hash const& hf, T const& x) {
|
620
|
-
SizeT key = hf(x);
|
621
|
-
key = (~key) + (key << 21); // key = (key << 21) - key - 1;
|
622
|
-
key = key ^ (key >> 24);
|
623
|
-
key = (key + (key << 3)) + (key << 8); // key * 265
|
624
|
-
key = key ^ (key >> 14);
|
625
|
-
key = (key + (key << 2)) + (key << 4); // key * 21
|
626
|
-
key = key ^ (key >> 28);
|
627
|
-
key = key + (key << 31);
|
628
|
-
return key;
|
629
|
-
}
|
630
|
-
|
631
|
-
static inline SizeT to_bucket(SizeT bucket_count, SizeT hash) {
|
632
|
-
return hash & (bucket_count - 1);
|
633
|
-
}
|
634
|
-
|
635
|
-
static inline SizeT new_bucket_count(SizeT min) {
|
636
|
-
if (min <= 4) return 4;
|
637
|
-
--min;
|
638
|
-
min |= min >> 1;
|
639
|
-
min |= min >> 2;
|
640
|
-
min |= min >> 4;
|
641
|
-
min |= min >> 8;
|
642
|
-
min |= min >> 16;
|
643
|
-
min |= min >> 32;
|
644
|
-
return min + 1;
|
645
|
-
}
|
646
|
-
|
647
|
-
static inline SizeT prev_bucket_count(SizeT max) {
|
648
|
-
max |= max >> 1;
|
649
|
-
max |= max >> 2;
|
650
|
-
max |= max >> 4;
|
651
|
-
max |= max >> 8;
|
652
|
-
max |= max >> 16;
|
653
|
-
max |= max >> 32;
|
654
|
-
return (max >> 1) + 1;
|
655
|
-
}
|
656
|
-
};
|
657
|
-
|
658
|
-
template <int digits, int radix>
|
659
|
-
struct pick_policy_impl {
|
660
|
-
typedef prime_policy<std::size_t> type;
|
661
|
-
};
|
662
|
-
|
663
|
-
template <>
|
664
|
-
struct pick_policy_impl<64, 2> {
|
665
|
-
typedef mix64_policy<std::size_t> type;
|
666
|
-
};
|
667
|
-
|
668
|
-
template <typename T>
|
669
|
-
struct pick_policy :
|
670
|
-
pick_policy_impl<
|
671
|
-
std::numeric_limits<std::size_t>::digits,
|
672
|
-
std::numeric_limits<std::size_t>::radix> {};
|
673
|
-
|
674
|
-
// While the mix policy is generally faster, the prime policy is a lot
|
675
|
-
// faster when a large number consecutive integers are used, because
|
676
|
-
// there are no collisions. Since that is probably quite common, use
|
677
|
-
// prime policy for integeral types. But not the smaller ones, as they
|
678
|
-
// don't have enough unique values for this to be an issue.
|
679
|
-
|
680
|
-
template <>
|
681
|
-
struct pick_policy<int> {
|
682
|
-
typedef prime_policy<std::size_t> type;
|
683
|
-
};
|
684
|
-
|
685
|
-
template <>
|
686
|
-
struct pick_policy<unsigned int> {
|
687
|
-
typedef prime_policy<std::size_t> type;
|
688
|
-
};
|
689
|
-
|
690
|
-
template <>
|
691
|
-
struct pick_policy<long> {
|
692
|
-
typedef prime_policy<std::size_t> type;
|
693
|
-
};
|
694
|
-
|
695
|
-
template <>
|
696
|
-
struct pick_policy<unsigned long> {
|
697
|
-
typedef prime_policy<std::size_t> type;
|
698
|
-
};
|
699
|
-
|
700
|
-
// TODO: Maybe not if std::size_t is smaller than long long.
|
701
|
-
#if !defined(BOOST_NO_LONG_LONG)
|
702
|
-
template <>
|
703
|
-
struct pick_policy<long long> {
|
704
|
-
typedef prime_policy<std::size_t> type;
|
705
|
-
};
|
706
|
-
|
707
|
-
template <>
|
708
|
-
struct pick_policy<unsigned long long> {
|
709
|
-
typedef prime_policy<std::size_t> type;
|
710
|
-
};
|
711
|
-
#endif
|
712
|
-
|
713
|
-
////////////////////////////////////////////////////////////////////////////
|
714
|
-
// Functions
|
715
|
-
|
716
|
-
// Assigning and swapping the equality and hash function objects
|
717
|
-
// needs strong exception safety. To implement that normally we'd
|
718
|
-
// require one of them to be known to not throw and the other to
|
719
|
-
// guarantee strong exception safety. Unfortunately they both only
|
720
|
-
// have basic exception safety. So to acheive strong exception
|
721
|
-
// safety we have storage space for two copies, and assign the new
|
722
|
-
// copies to the unused space. Then switch to using that to use
|
723
|
-
// them. This is implemented in 'set_hash_functions' which
|
724
|
-
// atomically assigns the new function objects in a strongly
|
725
|
-
// exception safe manner.
|
726
|
-
|
727
|
-
template <class H, class P, bool NoThrowMoveAssign>
|
728
|
-
class set_hash_functions;
|
729
|
-
|
730
|
-
template <class H, class P>
|
731
|
-
class functions
|
732
|
-
{
|
733
|
-
public:
|
734
|
-
static const bool nothrow_move_assignable =
|
735
|
-
boost::is_nothrow_move_assignable<H>::value &&
|
736
|
-
boost::is_nothrow_move_assignable<P>::value;
|
737
|
-
static const bool nothrow_move_constructible =
|
738
|
-
boost::is_nothrow_move_constructible<H>::value &&
|
739
|
-
boost::is_nothrow_move_constructible<P>::value;
|
740
|
-
|
741
|
-
private:
|
742
|
-
friend class boost::unordered::detail::set_hash_functions<H, P,
|
743
|
-
nothrow_move_assignable>;
|
744
|
-
functions& operator=(functions const&);
|
745
|
-
|
746
|
-
typedef compressed<H, P> function_pair;
|
747
|
-
|
748
|
-
typedef typename boost::aligned_storage<
|
749
|
-
sizeof(function_pair),
|
750
|
-
boost::alignment_of<function_pair>::value>::type aligned_function;
|
751
|
-
|
752
|
-
bool current_; // The currently active functions.
|
753
|
-
aligned_function funcs_[2];
|
754
|
-
|
755
|
-
function_pair const& current() const {
|
756
|
-
return *static_cast<function_pair const*>(
|
757
|
-
static_cast<void const*>(&funcs_[current_]));
|
758
|
-
}
|
759
|
-
|
760
|
-
function_pair& current() {
|
761
|
-
return *static_cast<function_pair*>(
|
762
|
-
static_cast<void*>(&funcs_[current_]));
|
763
|
-
}
|
764
|
-
|
765
|
-
void construct(bool which, H const& hf, P const& eq)
|
766
|
-
{
|
767
|
-
new((void*) &funcs_[which]) function_pair(hf, eq);
|
768
|
-
}
|
769
|
-
|
770
|
-
void construct(bool which, function_pair const& f,
|
771
|
-
boost::unordered::detail::false_type =
|
772
|
-
boost::unordered::detail::false_type())
|
773
|
-
{
|
774
|
-
new((void*) &funcs_[which]) function_pair(f);
|
775
|
-
}
|
776
|
-
|
777
|
-
void construct(bool which, function_pair& f,
|
778
|
-
boost::unordered::detail::true_type)
|
779
|
-
{
|
780
|
-
new((void*) &funcs_[which]) function_pair(f,
|
781
|
-
boost::unordered::detail::move_tag());
|
782
|
-
}
|
783
|
-
|
784
|
-
void destroy(bool which)
|
785
|
-
{
|
786
|
-
boost::unordered::detail::func::destroy((function_pair*)(&funcs_[which]));
|
787
|
-
}
|
788
|
-
|
789
|
-
public:
|
790
|
-
|
791
|
-
typedef boost::unordered::detail::set_hash_functions<H, P,
|
792
|
-
nothrow_move_assignable> set_hash_functions;
|
793
|
-
|
794
|
-
functions(H const& hf, P const& eq)
|
795
|
-
: current_(false)
|
796
|
-
{
|
797
|
-
construct(current_, hf, eq);
|
798
|
-
}
|
799
|
-
|
800
|
-
functions(functions const& bf)
|
801
|
-
: current_(false)
|
802
|
-
{
|
803
|
-
construct(current_, bf.current());
|
804
|
-
}
|
805
|
-
|
806
|
-
functions(functions& bf, boost::unordered::detail::move_tag)
|
807
|
-
: current_(false)
|
808
|
-
{
|
809
|
-
construct(current_, bf.current(),
|
810
|
-
boost::unordered::detail::integral_constant<bool,
|
811
|
-
nothrow_move_constructible>());
|
812
|
-
}
|
813
|
-
|
814
|
-
~functions() {
|
815
|
-
this->destroy(current_);
|
816
|
-
}
|
817
|
-
|
818
|
-
H const& hash_function() const {
|
819
|
-
return current().first();
|
820
|
-
}
|
821
|
-
|
822
|
-
P const& key_eq() const {
|
823
|
-
return current().second();
|
824
|
-
}
|
825
|
-
};
|
826
|
-
|
827
|
-
template <class H, class P>
|
828
|
-
class set_hash_functions<H, P, false>
|
829
|
-
{
|
830
|
-
set_hash_functions(set_hash_functions const&);
|
831
|
-
set_hash_functions& operator=(set_hash_functions const&);
|
832
|
-
|
833
|
-
typedef functions<H, P> functions_type;
|
834
|
-
|
835
|
-
functions_type& functions_;
|
836
|
-
bool tmp_functions_;
|
837
|
-
|
838
|
-
public:
|
839
|
-
|
840
|
-
set_hash_functions(functions_type& f, H const& h, P const& p)
|
841
|
-
: functions_(f),
|
842
|
-
tmp_functions_(!f.current_)
|
843
|
-
{
|
844
|
-
f.construct(tmp_functions_, h, p);
|
845
|
-
}
|
846
|
-
|
847
|
-
set_hash_functions(functions_type& f, functions_type const& other)
|
848
|
-
: functions_(f),
|
849
|
-
tmp_functions_(!f.current_)
|
850
|
-
{
|
851
|
-
f.construct(tmp_functions_, other.current());
|
852
|
-
}
|
853
|
-
|
854
|
-
~set_hash_functions()
|
855
|
-
{
|
856
|
-
functions_.destroy(tmp_functions_);
|
857
|
-
}
|
858
|
-
|
859
|
-
void commit()
|
860
|
-
{
|
861
|
-
functions_.current_ = tmp_functions_;
|
862
|
-
tmp_functions_ = !tmp_functions_;
|
863
|
-
}
|
864
|
-
};
|
865
|
-
|
866
|
-
template <class H, class P>
|
867
|
-
class set_hash_functions<H, P, true>
|
868
|
-
{
|
869
|
-
set_hash_functions(set_hash_functions const&);
|
870
|
-
set_hash_functions& operator=(set_hash_functions const&);
|
871
|
-
|
872
|
-
typedef functions<H, P> functions_type;
|
873
|
-
|
874
|
-
functions_type& functions_;
|
875
|
-
H hash_;
|
876
|
-
P pred_;
|
877
|
-
|
878
|
-
public:
|
879
|
-
|
880
|
-
set_hash_functions(functions_type& f, H const& h, P const& p) :
|
881
|
-
functions_(f),
|
882
|
-
hash_(h),
|
883
|
-
pred_(p) {}
|
884
|
-
|
885
|
-
set_hash_functions(functions_type& f, functions_type const& other) :
|
886
|
-
functions_(f),
|
887
|
-
hash_(other.hash_function()),
|
888
|
-
pred_(other.key_eq()) {}
|
889
|
-
|
890
|
-
void commit()
|
891
|
-
{
|
892
|
-
functions_.current().first() = boost::move(hash_);
|
893
|
-
functions_.current().second() = boost::move(pred_);
|
894
|
-
}
|
895
|
-
};
|
896
|
-
|
897
|
-
////////////////////////////////////////////////////////////////////////////
|
898
|
-
// rvalue parameters when type can't be a BOOST_RV_REF(T) parameter
|
899
|
-
// e.g. for int
|
900
|
-
|
901
|
-
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
|
902
|
-
# define BOOST_UNORDERED_RV_REF(T) BOOST_RV_REF(T)
|
903
|
-
#else
|
904
|
-
struct please_ignore_this_overload {
|
905
|
-
typedef please_ignore_this_overload type;
|
906
|
-
};
|
907
|
-
|
908
|
-
template <typename T>
|
909
|
-
struct rv_ref_impl {
|
910
|
-
typedef BOOST_RV_REF(T) type;
|
911
|
-
};
|
912
|
-
|
913
|
-
template <typename T>
|
914
|
-
struct rv_ref :
|
915
|
-
boost::detail::if_true<
|
916
|
-
boost::is_class<T>::value
|
917
|
-
>::BOOST_NESTED_TEMPLATE then <
|
918
|
-
boost::unordered::detail::rv_ref_impl<T>,
|
919
|
-
please_ignore_this_overload
|
920
|
-
>::type
|
921
|
-
{};
|
922
|
-
|
923
|
-
# define BOOST_UNORDERED_RV_REF(T) \
|
924
|
-
typename boost::unordered::detail::rv_ref<T>::type
|
925
|
-
#endif
|
926
|
-
}}}
|
927
|
-
|
928
|
-
#endif
|