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
@@ -21,15 +21,29 @@ namespace boost
|
|
21
21
|
|
22
22
|
struct detach
|
23
23
|
{
|
24
|
-
|
24
|
+
template <class Thread>
|
25
|
+
void operator()(Thread& t)
|
25
26
|
{
|
26
27
|
t.detach();
|
27
28
|
}
|
28
29
|
};
|
29
30
|
|
31
|
+
struct detach_if_joinable
|
32
|
+
{
|
33
|
+
template <class Thread>
|
34
|
+
void operator()(Thread& t)
|
35
|
+
{
|
36
|
+
if (t.joinable())
|
37
|
+
{
|
38
|
+
t.detach();
|
39
|
+
}
|
40
|
+
}
|
41
|
+
};
|
42
|
+
|
30
43
|
struct join_if_joinable
|
31
44
|
{
|
32
|
-
|
45
|
+
template <class Thread>
|
46
|
+
void operator()(Thread& t)
|
33
47
|
{
|
34
48
|
if (t.joinable())
|
35
49
|
{
|
@@ -41,11 +55,12 @@ namespace boost
|
|
41
55
|
#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
|
42
56
|
struct interrupt_and_join_if_joinable
|
43
57
|
{
|
44
|
-
|
58
|
+
template <class Thread>
|
59
|
+
void operator()(Thread& t)
|
45
60
|
{
|
46
|
-
t.interrupt();
|
47
61
|
if (t.joinable())
|
48
62
|
{
|
63
|
+
t.interrupt();
|
49
64
|
t.join();
|
50
65
|
}
|
51
66
|
}
|
@@ -21,14 +21,14 @@ namespace boost
|
|
21
21
|
/**
|
22
22
|
* Non-copyable RAII scoped thread guard joiner which join the thread if joinable when destroyed.
|
23
23
|
*/
|
24
|
-
template <class CallableThread = join_if_joinable>
|
24
|
+
template <class CallableThread = join_if_joinable, class Thread=::boost::thread>
|
25
25
|
class thread_guard
|
26
26
|
{
|
27
|
-
|
27
|
+
Thread& t_;
|
28
28
|
public:
|
29
29
|
BOOST_THREAD_NO_COPYABLE( thread_guard)
|
30
30
|
|
31
|
-
explicit thread_guard(
|
31
|
+
explicit thread_guard(Thread& t) :
|
32
32
|
t_(t)
|
33
33
|
{
|
34
34
|
}
|
@@ -0,0 +1,265 @@
|
|
1
|
+
//
|
2
|
+
// Copyright (c) Antony Polukhin, 2012-2014.
|
3
|
+
//
|
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
|
+
|
8
|
+
#ifndef BOOST_TYPE_INDEX_HPP
|
9
|
+
#define BOOST_TYPE_INDEX_HPP
|
10
|
+
|
11
|
+
/// \file boost/type_index.hpp
|
12
|
+
/// \brief Includes minimal set of headers required to use the Boost.TypeIndex library.
|
13
|
+
///
|
14
|
+
/// By inclusion of this file most optimal type index classes will be included and used
|
15
|
+
/// as a boost::typeindex::type_index and boost::typeindex::type_info.
|
16
|
+
|
17
|
+
#include <boost/config.hpp>
|
18
|
+
|
19
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
20
|
+
# pragma once
|
21
|
+
#endif
|
22
|
+
|
23
|
+
#if defined(BOOST_TYPE_INDEX_USER_TYPEINDEX)
|
24
|
+
# include BOOST_TYPE_INDEX_USER_TYPEINDEX
|
25
|
+
# ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH
|
26
|
+
# pragma detect_mismatch( "boost__type_index__abi", "user defined type_index class is used: " BOOST_STRINGIZE(BOOST_TYPE_INDEX_USER_TYPEINDEX))
|
27
|
+
# endif
|
28
|
+
#elif (!defined(BOOST_NO_RTTI) && !defined(BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY)) || defined(BOOST_MSVC)
|
29
|
+
# include <boost/type_index/stl_type_index.hpp>
|
30
|
+
# if defined(BOOST_NO_RTTI) || defined(BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY)
|
31
|
+
# include <boost/type_index/detail/stl_register_class.hpp>
|
32
|
+
# ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH
|
33
|
+
# pragma detect_mismatch( "boost__type_index__abi", "RTTI is off - typeid() is used only for templates")
|
34
|
+
# endif
|
35
|
+
# else
|
36
|
+
# ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH
|
37
|
+
# pragma detect_mismatch( "boost__type_index__abi", "RTTI is used")
|
38
|
+
# endif
|
39
|
+
# endif
|
40
|
+
#else
|
41
|
+
# include <boost/type_index/ctti_type_index.hpp>
|
42
|
+
# include <boost/type_index/detail/ctti_register_class.hpp>
|
43
|
+
# ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH
|
44
|
+
# pragma detect_mismatch( "boost__type_index__abi", "RTTI is off - using CTTI")
|
45
|
+
# endif
|
46
|
+
#endif
|
47
|
+
|
48
|
+
#ifndef BOOST_TYPE_INDEX_REGISTER_CLASS
|
49
|
+
#define BOOST_TYPE_INDEX_REGISTER_CLASS
|
50
|
+
#endif
|
51
|
+
|
52
|
+
namespace boost { namespace typeindex {
|
53
|
+
|
54
|
+
#if defined(BOOST_TYPE_INDEX_DOXYGEN_INVOKED)
|
55
|
+
|
56
|
+
/// \def BOOST_TYPE_INDEX_FUNCTION_SIGNATURE
|
57
|
+
/// BOOST_TYPE_INDEX_FUNCTION_SIGNATURE is used by boost::typeindex::ctti_type_index class to
|
58
|
+
/// deduce the name of a type. If your compiler is not recognized
|
59
|
+
/// by the TypeIndex library and you wish to work with boost::typeindex::ctti_type_index, you may
|
60
|
+
/// define this macro by yourself.
|
61
|
+
///
|
62
|
+
/// BOOST_TYPE_INDEX_FUNCTION_SIGNATURE must be defined to a compiler specific macro
|
63
|
+
/// that outputs the \b whole function signature \b including \b template \b parameters.
|
64
|
+
///
|
65
|
+
/// If your compiler is not recognised and BOOST_TYPE_INDEX_FUNCTION_SIGNATURE is not defined,
|
66
|
+
/// then a compile-time error will arise at any attempt to use boost::typeindex::ctti_type_index classes.
|
67
|
+
///
|
68
|
+
/// See BOOST_TYPE_INDEX_REGISTER_CTTI_PARSING_PARAMS and BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING
|
69
|
+
/// for an information of how to tune the implementation to make a nice pretty_name() output.
|
70
|
+
#define BOOST_TYPE_INDEX_FUNCTION_SIGNATURE BOOST_CURRENT_FUNCTION
|
71
|
+
|
72
|
+
/// \def BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING
|
73
|
+
/// This is a helper macro for making correct pretty_names() with RTTI off.
|
74
|
+
///
|
75
|
+
/// BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING macro may be defined to
|
76
|
+
/// '(begin_skip, end_skip, runtime_skip, runtime_skip_until)' with parameters for adding a
|
77
|
+
/// support for compilers, that by default are not recognized by TypeIndex library.
|
78
|
+
///
|
79
|
+
/// \b Example:
|
80
|
+
///
|
81
|
+
/// Imagine the situation when
|
82
|
+
/// \code boost::typeindex::ctti_type_index::type_id<int>().pretty_name() \endcode
|
83
|
+
/// returns the following string:
|
84
|
+
/// \code "static const char *boost::detail::ctti<int>::n() [T = int]" \endcode
|
85
|
+
/// and \code boost::typeindex::ctti_type_index::type_id<short>().pretty_name() \endcode returns the following:
|
86
|
+
/// \code "static const char *boost::detail::ctti<short>::n() [T = short]" \endcode
|
87
|
+
///
|
88
|
+
/// As we may see first 39 characters are "static const char *boost::detail::ctti<" and they do not depend on
|
89
|
+
/// the type T. After first 39 characters we have a human readable type name which is duplicated at the end
|
90
|
+
/// of a string. String always ends on ']', which consumes 1 character.
|
91
|
+
///
|
92
|
+
/// Now if we define `BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING` to
|
93
|
+
/// `(39, 1, false, "")` we'll be getting \code "int>::n() [T = int" \endcode
|
94
|
+
/// for `boost::typeindex::ctti_type_index::type_id<int>().pretty_name()` and \code "short>::n() [T = short" \endcode
|
95
|
+
/// for `boost::typeindex::ctti_type_index::type_id<short>().pretty_name()`.
|
96
|
+
///
|
97
|
+
/// Now we need to take additional care of the characters that go before the last mention of our type. We'll
|
98
|
+
/// do that by telling the macro that we need to cut off everything that goes before the "T = " including the "T = "
|
99
|
+
/// itself:
|
100
|
+
///
|
101
|
+
/// \code (39, 1, true, "T = ") \endcode
|
102
|
+
///
|
103
|
+
/// In case of GCC or Clang command line we need to add the following line while compiling all the sources:
|
104
|
+
///
|
105
|
+
/// \code
|
106
|
+
/// -DBOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING='(39, 1, true, "T = ")'
|
107
|
+
/// \endcode
|
108
|
+
/// \param begin_skip How many characters must be skipped at the beginning of the type holding string.
|
109
|
+
/// Must be a compile time constant.
|
110
|
+
/// \param end_skip How many characters must be skipped at the end of the type holding string.
|
111
|
+
/// Must be a compile time constant.
|
112
|
+
/// \param runtime_skip Do we need additional checks at runtime to cut off the more characters.
|
113
|
+
/// Must be `true` or `false`.
|
114
|
+
/// \param runtime_skip_until Skip all the characters before the following string (including the string itself).
|
115
|
+
/// Must be a compile time array of characters.
|
116
|
+
///
|
117
|
+
/// See [RTTI emulation limitations](boost_typeindex/rtti_emulation_limitations.html) for more info.
|
118
|
+
#define BOOST_TYPE_INDEX_CTTI_USER_DEFINED_PARSING (0, 0, false, "")
|
119
|
+
|
120
|
+
|
121
|
+
/// Depending on a compiler flags, optimal implementation of type_index will be used
|
122
|
+
/// as a default boost::typeindex::type_index.
|
123
|
+
///
|
124
|
+
/// Could be a boost::typeindex::stl_type_index, boost::typeindex::ctti_type_index or
|
125
|
+
/// user defined type_index class.
|
126
|
+
///
|
127
|
+
/// \b See boost::typeindex::type_index_facade for a full description of type_index functions.
|
128
|
+
typedef platform_specific type_index;
|
129
|
+
#elif defined(BOOST_TYPE_INDEX_USER_TYPEINDEX)
|
130
|
+
// Nothing to do
|
131
|
+
#elif (!defined(BOOST_NO_RTTI) && !defined(BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY)) || defined(BOOST_MSVC)
|
132
|
+
typedef boost::typeindex::stl_type_index type_index;
|
133
|
+
#else
|
134
|
+
typedef boost::typeindex::ctti_type_index type_index;
|
135
|
+
#endif
|
136
|
+
|
137
|
+
/// Depending on a compiler flags, optimal implementation of type_info will be used
|
138
|
+
/// as a default boost::typeindex::type_info.
|
139
|
+
///
|
140
|
+
/// Could be a std::type_info, boost::typeindex::detail::ctti_data or
|
141
|
+
/// some user defined class.
|
142
|
+
///
|
143
|
+
/// type_info \b is \b not copyable or default constructible. It is \b not assignable too!
|
144
|
+
typedef type_index::type_info_t type_info;
|
145
|
+
|
146
|
+
#if defined(BOOST_TYPE_INDEX_DOXYGEN_INVOKED)
|
147
|
+
|
148
|
+
/// \def BOOST_TYPE_INDEX_USER_TYPEINDEX
|
149
|
+
/// BOOST_TYPE_INDEX_USER_TYPEINDEX can be defined to the path to header file
|
150
|
+
/// with user provided implementation of type_index.
|
151
|
+
///
|
152
|
+
/// See [Making a custom type_index](boost_typeindex/making_a_custom_type_index.html) section
|
153
|
+
/// of documentation for usage example.
|
154
|
+
#define BOOST_TYPE_INDEX_USER_TYPEINDEX <full/absolute/path/to/header/with/type_index.hpp>
|
155
|
+
|
156
|
+
|
157
|
+
/// \def BOOST_TYPE_INDEX_REGISTER_CLASS
|
158
|
+
/// BOOST_TYPE_INDEX_REGISTER_CLASS is used to help to emulate RTTI.
|
159
|
+
/// Put this macro into the public section of polymorphic class to allow runtime type detection.
|
160
|
+
///
|
161
|
+
/// Depending on the typeid() availability this macro will expand to nothing or to virtual helper function
|
162
|
+
/// `virtual const type_info& boost_type_info_type_id_runtime_() const noexcept`.
|
163
|
+
///
|
164
|
+
/// \b Example:
|
165
|
+
/// \code
|
166
|
+
/// class A {
|
167
|
+
/// public:
|
168
|
+
/// BOOST_TYPE_INDEX_REGISTER_CLASS
|
169
|
+
/// virtual ~A(){}
|
170
|
+
/// };
|
171
|
+
///
|
172
|
+
/// struct B: public A {
|
173
|
+
/// BOOST_TYPE_INDEX_REGISTER_CLASS
|
174
|
+
/// };
|
175
|
+
///
|
176
|
+
/// struct C: public B {
|
177
|
+
/// BOOST_TYPE_INDEX_REGISTER_CLASS
|
178
|
+
/// };
|
179
|
+
///
|
180
|
+
/// ...
|
181
|
+
///
|
182
|
+
/// C c1;
|
183
|
+
/// A* pc1 = &c1;
|
184
|
+
/// assert(boost::typeindex::type_id<C>() == boost::typeindex::type_id_runtime(*pc1));
|
185
|
+
/// \endcode
|
186
|
+
#define BOOST_TYPE_INDEX_REGISTER_CLASS nothing-or-some-virtual-functions
|
187
|
+
|
188
|
+
/// \def BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY
|
189
|
+
/// BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY is a helper macro that must be defined if mixing
|
190
|
+
/// RTTI on/off modules. See
|
191
|
+
/// [Mixing sources with RTTI on and RTTI off](boost_typeindex/mixing_sources_with_rtti_on_and_.html)
|
192
|
+
/// section of documentation for more info.
|
193
|
+
#define BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY
|
194
|
+
|
195
|
+
#endif // defined(BOOST_TYPE_INDEX_DOXYGEN_INVOKED)
|
196
|
+
|
197
|
+
|
198
|
+
/// Function to get boost::typeindex::type_index for a type T.
|
199
|
+
/// Removes const, volatile && and & modifiers from T.
|
200
|
+
///
|
201
|
+
/// \b Example:
|
202
|
+
/// \code
|
203
|
+
/// type_index ti = type_id<int&>();
|
204
|
+
/// std::cout << ti.pretty_name(); // Outputs 'int'
|
205
|
+
/// \endcode
|
206
|
+
///
|
207
|
+
/// \tparam T Type for which type_index must be created.
|
208
|
+
/// \throw Nothing.
|
209
|
+
/// \return boost::typeindex::type_index with information about the specified type T.
|
210
|
+
template <class T>
|
211
|
+
inline type_index type_id() BOOST_NOEXCEPT {
|
212
|
+
return type_index::type_id<T>();
|
213
|
+
}
|
214
|
+
|
215
|
+
/// Function for constructing boost::typeindex::type_index instance for type T.
|
216
|
+
/// Does not remove const, volatile, & and && modifiers from T.
|
217
|
+
///
|
218
|
+
/// If T has no const, volatile, & and && modifiers, then returns exactly
|
219
|
+
/// the same result as in case of calling `type_id<T>()`.
|
220
|
+
///
|
221
|
+
/// \b Example:
|
222
|
+
/// \code
|
223
|
+
/// type_index ti = type_id_with_cvr<int&>();
|
224
|
+
/// std::cout << ti.pretty_name(); // Outputs 'int&'
|
225
|
+
/// \endcode
|
226
|
+
///
|
227
|
+
/// \tparam T Type for which type_index must be created.
|
228
|
+
/// \throw Nothing.
|
229
|
+
/// \return boost::typeindex::type_index with information about the specified type T.
|
230
|
+
template <class T>
|
231
|
+
inline type_index type_id_with_cvr() BOOST_NOEXCEPT {
|
232
|
+
return type_index::type_id_with_cvr<T>();
|
233
|
+
}
|
234
|
+
|
235
|
+
/// Function that works exactly like C++ typeid(rtti_val) call, but returns boost::type_index.
|
236
|
+
///
|
237
|
+
/// Returns runtime information about specified type.
|
238
|
+
///
|
239
|
+
/// \b Requirements: RTTI available or Base and Derived classes must be marked with BOOST_TYPE_INDEX_REGISTER_CLASS.
|
240
|
+
///
|
241
|
+
/// \b Example:
|
242
|
+
/// \code
|
243
|
+
/// struct Base { virtual ~Base(){} };
|
244
|
+
/// struct Derived: public Base {};
|
245
|
+
/// ...
|
246
|
+
/// Derived d;
|
247
|
+
/// Base& b = d;
|
248
|
+
/// type_index ti = type_id_runtime(b);
|
249
|
+
/// std::cout << ti.pretty_name(); // Outputs 'Derived'
|
250
|
+
/// \endcode
|
251
|
+
///
|
252
|
+
/// \param runtime_val Variable which runtime type must be returned.
|
253
|
+
/// \throw Nothing.
|
254
|
+
/// \return boost::typeindex::type_index with information about the specified variable.
|
255
|
+
template <class T>
|
256
|
+
inline type_index type_id_runtime(const T& runtime_val) BOOST_NOEXCEPT {
|
257
|
+
return type_index::type_id_runtime(runtime_val);
|
258
|
+
}
|
259
|
+
|
260
|
+
}} // namespace boost::typeindex
|
261
|
+
|
262
|
+
|
263
|
+
|
264
|
+
#endif // BOOST_TYPE_INDEX_HPP
|
265
|
+
|
@@ -0,0 +1,272 @@
|
|
1
|
+
//
|
2
|
+
// Copyright (c) Antony Polukhin, 2013-2017.
|
3
|
+
//
|
4
|
+
//
|
5
|
+
// Distributed under the Boost Software License, Version 1.0. (See accompanying
|
6
|
+
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
7
|
+
//
|
8
|
+
|
9
|
+
#ifndef BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP
|
10
|
+
#define BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP
|
11
|
+
|
12
|
+
/// \file stl_type_index.hpp
|
13
|
+
/// \brief Contains boost::typeindex::stl_type_index class.
|
14
|
+
///
|
15
|
+
/// boost::typeindex::stl_type_index class can be used as a drop-in replacement
|
16
|
+
/// for std::type_index.
|
17
|
+
///
|
18
|
+
/// It is used in situations when RTTI is enabled or typeid() method is available.
|
19
|
+
/// When typeid() is disabled or BOOST_TYPE_INDEX_FORCE_NO_RTTI_COMPATIBILITY macro
|
20
|
+
/// is defined boost::typeindex::ctti is usually used instead of boost::typeindex::stl_type_index.
|
21
|
+
|
22
|
+
#include <boost/type_index/type_index_facade.hpp>
|
23
|
+
|
24
|
+
// MSVC is capable of calling typeid(T) even when RTTI is off
|
25
|
+
#if defined(BOOST_NO_RTTI) && !defined(BOOST_MSVC)
|
26
|
+
#error "File boost/type_index/stl_type_index.ipp is not usable when typeid() is not available."
|
27
|
+
#endif
|
28
|
+
|
29
|
+
#include <typeinfo>
|
30
|
+
#include <cstring> // std::strcmp, std::strlen, std::strstr
|
31
|
+
#include <stdexcept>
|
32
|
+
#include <boost/static_assert.hpp>
|
33
|
+
#include <boost/throw_exception.hpp>
|
34
|
+
#include <boost/core/demangle.hpp>
|
35
|
+
#include <boost/type_traits/is_const.hpp>
|
36
|
+
#include <boost/type_traits/is_reference.hpp>
|
37
|
+
#include <boost/type_traits/is_volatile.hpp>
|
38
|
+
#include <boost/type_traits/remove_cv.hpp>
|
39
|
+
#include <boost/type_traits/remove_reference.hpp>
|
40
|
+
#include <boost/mpl/if.hpp>
|
41
|
+
#include <boost/mpl/or.hpp>
|
42
|
+
|
43
|
+
#if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \
|
44
|
+
|| (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744)
|
45
|
+
# include <boost/type_traits/is_signed.hpp>
|
46
|
+
# include <boost/type_traits/make_signed.hpp>
|
47
|
+
# include <boost/mpl/identity.hpp>
|
48
|
+
#endif
|
49
|
+
|
50
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
51
|
+
# pragma once
|
52
|
+
#endif
|
53
|
+
|
54
|
+
namespace boost { namespace typeindex {
|
55
|
+
|
56
|
+
/// \class stl_type_index
|
57
|
+
/// This class is a wrapper around std::type_info, that workarounds issues and provides
|
58
|
+
/// much more rich interface. \b For \b description \b of \b functions \b see type_index_facade.
|
59
|
+
///
|
60
|
+
/// This class requires typeid() to work. For cases when RTTI is disabled see ctti_type_index.
|
61
|
+
class stl_type_index
|
62
|
+
: public type_index_facade<
|
63
|
+
stl_type_index,
|
64
|
+
#ifdef BOOST_NO_STD_TYPEINFO
|
65
|
+
type_info
|
66
|
+
#else
|
67
|
+
std::type_info
|
68
|
+
#endif
|
69
|
+
>
|
70
|
+
{
|
71
|
+
public:
|
72
|
+
#ifdef BOOST_NO_STD_TYPEINFO
|
73
|
+
typedef type_info type_info_t;
|
74
|
+
#else
|
75
|
+
typedef std::type_info type_info_t;
|
76
|
+
#endif
|
77
|
+
|
78
|
+
private:
|
79
|
+
const type_info_t* data_;
|
80
|
+
|
81
|
+
public:
|
82
|
+
inline stl_type_index() BOOST_NOEXCEPT
|
83
|
+
: data_(&typeid(void))
|
84
|
+
{}
|
85
|
+
|
86
|
+
inline stl_type_index(const type_info_t& data) BOOST_NOEXCEPT
|
87
|
+
: data_(&data)
|
88
|
+
{}
|
89
|
+
|
90
|
+
inline const type_info_t& type_info() const BOOST_NOEXCEPT;
|
91
|
+
|
92
|
+
inline const char* raw_name() const BOOST_NOEXCEPT;
|
93
|
+
inline const char* name() const BOOST_NOEXCEPT;
|
94
|
+
inline std::string pretty_name() const;
|
95
|
+
|
96
|
+
inline std::size_t hash_code() const BOOST_NOEXCEPT;
|
97
|
+
inline bool equal(const stl_type_index& rhs) const BOOST_NOEXCEPT;
|
98
|
+
inline bool before(const stl_type_index& rhs) const BOOST_NOEXCEPT;
|
99
|
+
|
100
|
+
template <class T>
|
101
|
+
inline static stl_type_index type_id() BOOST_NOEXCEPT;
|
102
|
+
|
103
|
+
template <class T>
|
104
|
+
inline static stl_type_index type_id_with_cvr() BOOST_NOEXCEPT;
|
105
|
+
|
106
|
+
template <class T>
|
107
|
+
inline static stl_type_index type_id_runtime(const T& value) BOOST_NOEXCEPT;
|
108
|
+
};
|
109
|
+
|
110
|
+
inline const stl_type_index::type_info_t& stl_type_index::type_info() const BOOST_NOEXCEPT {
|
111
|
+
return *data_;
|
112
|
+
}
|
113
|
+
|
114
|
+
|
115
|
+
inline const char* stl_type_index::raw_name() const BOOST_NOEXCEPT {
|
116
|
+
#ifdef _MSC_VER
|
117
|
+
return data_->raw_name();
|
118
|
+
#else
|
119
|
+
return data_->name();
|
120
|
+
#endif
|
121
|
+
}
|
122
|
+
|
123
|
+
inline const char* stl_type_index::name() const BOOST_NOEXCEPT {
|
124
|
+
return data_->name();
|
125
|
+
}
|
126
|
+
|
127
|
+
inline std::string stl_type_index::pretty_name() const {
|
128
|
+
static const char cvr_saver_name[] = "boost::typeindex::detail::cvr_saver<";
|
129
|
+
static BOOST_CONSTEXPR_OR_CONST std::string::size_type cvr_saver_name_len = sizeof(cvr_saver_name) - 1;
|
130
|
+
|
131
|
+
// In case of MSVC demangle() is a no-op, and name() already returns demangled name.
|
132
|
+
// In case of GCC and Clang (on non-Windows systems) name() returns mangled name and demangle() undecorates it.
|
133
|
+
const boost::core::scoped_demangled_name demangled_name(data_->name());
|
134
|
+
|
135
|
+
const char* begin = demangled_name.get();
|
136
|
+
if (!begin) {
|
137
|
+
boost::throw_exception(std::runtime_error("Type name demangling failed"));
|
138
|
+
}
|
139
|
+
|
140
|
+
const std::string::size_type len = std::strlen(begin);
|
141
|
+
const char* end = begin + len;
|
142
|
+
|
143
|
+
if (len > cvr_saver_name_len) {
|
144
|
+
const char* b = std::strstr(begin, cvr_saver_name);
|
145
|
+
if (b) {
|
146
|
+
b += cvr_saver_name_len;
|
147
|
+
|
148
|
+
// Trim leading spaces
|
149
|
+
while (*b == ' ') { // the string is zero terminated, we won't exceed the buffer size
|
150
|
+
++ b;
|
151
|
+
}
|
152
|
+
|
153
|
+
// Skip the closing angle bracket
|
154
|
+
const char* e = end - 1;
|
155
|
+
while (e > b && *e != '>') {
|
156
|
+
-- e;
|
157
|
+
}
|
158
|
+
|
159
|
+
// Trim trailing spaces
|
160
|
+
while (e > b && *(e - 1) == ' ') {
|
161
|
+
-- e;
|
162
|
+
}
|
163
|
+
|
164
|
+
if (b < e) {
|
165
|
+
// Parsing seems to have succeeded, the type name is not empty
|
166
|
+
begin = b;
|
167
|
+
end = e;
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
return std::string(begin, end);
|
173
|
+
}
|
174
|
+
|
175
|
+
|
176
|
+
inline std::size_t stl_type_index::hash_code() const BOOST_NOEXCEPT {
|
177
|
+
#if (defined(_MSC_VER) && _MSC_VER > 1600) || (__GNUC__ == 4 && __GNUC_MINOR__ > 5 && defined(__GXX_EXPERIMENTAL_CXX0X__))
|
178
|
+
return data_->hash_code();
|
179
|
+
#else
|
180
|
+
return boost::hash_range(raw_name(), raw_name() + std::strlen(raw_name()));
|
181
|
+
#endif
|
182
|
+
}
|
183
|
+
|
184
|
+
|
185
|
+
/// @cond
|
186
|
+
|
187
|
+
// for this compiler at least, cross-shared-library type_info
|
188
|
+
// comparisons don't work, so we are using typeid(x).name() instead.
|
189
|
+
# if (defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5))) \
|
190
|
+
|| defined(_AIX) \
|
191
|
+
|| (defined(__sgi) && defined(__host_mips)) \
|
192
|
+
|| (defined(__hpux) && defined(__HP_aCC)) \
|
193
|
+
|| (defined(linux) && defined(__INTEL_COMPILER) && defined(__ICC))
|
194
|
+
# define BOOST_CLASSINFO_COMPARE_BY_NAMES
|
195
|
+
# endif
|
196
|
+
|
197
|
+
/// @endcond
|
198
|
+
|
199
|
+
inline bool stl_type_index::equal(const stl_type_index& rhs) const BOOST_NOEXCEPT {
|
200
|
+
#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES
|
201
|
+
return raw_name() == rhs.raw_name() || !std::strcmp(raw_name(), rhs.raw_name());
|
202
|
+
#else
|
203
|
+
return !!(*data_ == *rhs.data_);
|
204
|
+
#endif
|
205
|
+
}
|
206
|
+
|
207
|
+
inline bool stl_type_index::before(const stl_type_index& rhs) const BOOST_NOEXCEPT {
|
208
|
+
#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES
|
209
|
+
return raw_name() != rhs.raw_name() && std::strcmp(raw_name(), rhs.raw_name()) < 0;
|
210
|
+
#else
|
211
|
+
return !!data_->before(*rhs.data_);
|
212
|
+
#endif
|
213
|
+
}
|
214
|
+
|
215
|
+
#ifdef BOOST_CLASSINFO_COMPARE_BY_NAMES
|
216
|
+
#undef BOOST_CLASSINFO_COMPARE_BY_NAMES
|
217
|
+
#endif
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
template <class T>
|
222
|
+
inline stl_type_index stl_type_index::type_id() BOOST_NOEXCEPT {
|
223
|
+
typedef BOOST_DEDUCED_TYPENAME boost::remove_reference<T>::type no_ref_t;
|
224
|
+
typedef BOOST_DEDUCED_TYPENAME boost::remove_cv<no_ref_t>::type no_cvr_prefinal_t;
|
225
|
+
|
226
|
+
# if (defined(__EDG_VERSION__) && __EDG_VERSION__ < 245) \
|
227
|
+
|| (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 744)
|
228
|
+
|
229
|
+
// Old EDG-based compilers seem to mistakenly distinguish 'integral' from 'signed integral'
|
230
|
+
// in typeid() expressions. Full template specialization for 'integral' fixes that issue:
|
231
|
+
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
232
|
+
boost::is_signed<no_cvr_prefinal_t>,
|
233
|
+
boost::make_signed<no_cvr_prefinal_t>,
|
234
|
+
boost::mpl::identity<no_cvr_prefinal_t>
|
235
|
+
>::type no_cvr_prefinal_lazy_t;
|
236
|
+
|
237
|
+
typedef BOOST_DEDUCED_TYPENAME no_cvr_prefinal_t::type no_cvr_t;
|
238
|
+
#else
|
239
|
+
typedef no_cvr_prefinal_t no_cvr_t;
|
240
|
+
#endif
|
241
|
+
|
242
|
+
return typeid(no_cvr_t);
|
243
|
+
}
|
244
|
+
|
245
|
+
namespace detail {
|
246
|
+
template <class T> class cvr_saver{};
|
247
|
+
}
|
248
|
+
|
249
|
+
template <class T>
|
250
|
+
inline stl_type_index stl_type_index::type_id_with_cvr() BOOST_NOEXCEPT {
|
251
|
+
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
252
|
+
boost::mpl::or_<boost::is_reference<T>, boost::is_const<T>, boost::is_volatile<T> >,
|
253
|
+
detail::cvr_saver<T>,
|
254
|
+
T
|
255
|
+
>::type type;
|
256
|
+
|
257
|
+
return typeid(type);
|
258
|
+
}
|
259
|
+
|
260
|
+
|
261
|
+
template <class T>
|
262
|
+
inline stl_type_index stl_type_index::type_id_runtime(const T& value) BOOST_NOEXCEPT {
|
263
|
+
#ifdef BOOST_NO_RTTI
|
264
|
+
return value.boost_type_index_type_id_runtime_();
|
265
|
+
#else
|
266
|
+
return typeid(value);
|
267
|
+
#endif
|
268
|
+
}
|
269
|
+
|
270
|
+
}} // namespace boost::typeindex
|
271
|
+
|
272
|
+
#endif // BOOST_TYPE_INDEX_STL_TYPE_INDEX_HPP
|