passenger 6.0.2 → 6.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +152 -19
- data/CONTRIBUTING.md +1 -1
- data/CONTRIBUTORS +5 -0
- data/bin/passenger-install-nginx-module +1 -1
- data/bin/passenger-memory-stats +65 -12
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
- data/dev/copy_boost_headers +1 -0
- data/package.json +1 -1
- data/passenger.gemspec +9 -1
- data/resources/templates/error_renderer/with_details/dist/bundle.js +1 -1
- data/resources/templates/error_renderer/with_details/src/GetHelpView.jsx +1 -1
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
- data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
- data/resources/templates/standalone/http.erb +1 -0
- data/resources/templates/standalone/rails_asset_pipeline.erb +1 -1
- data/resources/templates/standalone/server.erb +1 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +2 -0
- data/src/agent/Core/ApplicationPool/Implementation.cpp +0 -1
- data/src/agent/Core/ApplicationPool/Options.h +19 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
- data/src/agent/Core/Config.h +15 -1
- data/src/agent/Core/Controller.h +1 -0
- data/src/agent/Core/Controller/Config.h +9 -1
- data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
- data/src/agent/Core/Controller/InitRequest.cpp +5 -0
- data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
- data/src/agent/Core/CoreMain.cpp +1 -0
- data/src/agent/Core/OptionParser.h +3 -0
- data/src/agent/Core/SpawningKit/Config.h +11 -0
- data/src/agent/Core/SpawningKit/Config/AutoGeneratedCode.h +13 -0
- data/src/agent/Core/SpawningKit/Context.h +1 -0
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/Spawner.h +1 -0
- data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
- data/src/agent/Watchdog/Config.h +16 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
- data/src/apache2_module/Config.cpp +1 -1
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +15 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +15 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +40 -0
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +10 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +6 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +26 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +14 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +34 -0
- data/src/apache2_module/Hooks.cpp +5 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +11 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +13 -0
- data/src/cxx_supportlib/Constants.h +4 -2
- data/src/cxx_supportlib/Hooks.h +1 -0
- data/src/cxx_supportlib/LoggingKit/Config.h +1 -0
- data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
- data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +2 -2
- data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
- 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 +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
- 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 +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
- data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
- data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
- data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
- data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/modp_b64_data.h +0 -4
- data/src/cxx_supportlib/vendor-modified/modp_b64_strict_aliasing.cpp +5 -1
- data/src/helper-scripts/node-loader.js +1 -1
- data/src/helper-scripts/prespawn +1 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +27 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
- data/src/nginx_module/Configuration.c +14 -1
- data/src/nginx_module/ContentHandler.c +5 -1
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +21 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +30 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +42 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +9 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +15 -0
- data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +6 -0
- data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +12 -0
- data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +4 -0
- data/src/nginx_module/ngx_http_passenger_module.c +3 -2
- data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- data/src/ruby_supportlib/phusion_passenger/admin_tools/memory_stats.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +22 -0
- data/src/ruby_supportlib/phusion_passenger/constants.rb +3 -1
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +4 -2
- data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +35 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/request_handler.rb +7 -6
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +13 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +4 -2
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
- metadata +42 -8
- data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
- data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -276,10 +276,11 @@ class small_vector_allocator
|
|
276
276
|
using Allocator::allocate_many;
|
277
277
|
using Allocator::deallocate_many;*/
|
278
278
|
|
279
|
-
BOOST_CONTAINER_FORCEINLINE bool is_internal_storage(
|
279
|
+
BOOST_CONTAINER_FORCEINLINE bool is_internal_storage(const_pointer p) const
|
280
280
|
{ return this->internal_storage() == p; }
|
281
281
|
|
282
|
-
|
282
|
+
BOOST_CONTAINER_FORCEINLINE
|
283
|
+
const_pointer internal_storage() const
|
283
284
|
{
|
284
285
|
typedef typename Allocator::value_type value_type;
|
285
286
|
typedef typename allocator_traits_type::size_type size_type;
|
@@ -292,6 +293,21 @@ class small_vector_allocator
|
|
292
293
|
const derived_type &d_base = static_cast<const derived_type &>(v_base);
|
293
294
|
return d_base.internal_storage();
|
294
295
|
}
|
296
|
+
|
297
|
+
BOOST_CONTAINER_FORCEINLINE
|
298
|
+
pointer internal_storage()
|
299
|
+
{
|
300
|
+
typedef typename Allocator::value_type value_type;
|
301
|
+
typedef typename allocator_traits_type::size_type size_type;
|
302
|
+
typedef vector_alloc_holder< small_vector_allocator<Allocator>, size_type > vector_alloc_holder_t;
|
303
|
+
typedef vector<value_type, small_vector_allocator<Allocator> > vector_base;
|
304
|
+
typedef small_vector_base<value_type, Allocator> derived_type;
|
305
|
+
//
|
306
|
+
vector_alloc_holder_t &v_holder = static_cast<vector_alloc_holder_t &>(*this);
|
307
|
+
vector_base &v_base = reinterpret_cast<vector_base &>(v_holder);
|
308
|
+
derived_type &d_base = static_cast<derived_type &>(v_base);
|
309
|
+
return d_base.internal_storage();
|
310
|
+
}
|
295
311
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
296
312
|
};
|
297
313
|
|
@@ -328,17 +344,34 @@ class small_vector_base
|
|
328
344
|
public:
|
329
345
|
//Make it public as it will be inherited by small_vector and container
|
330
346
|
//must have this public member
|
331
|
-
typedef typename allocator_traits<SecondaryAllocator>::pointer
|
347
|
+
typedef typename allocator_traits<SecondaryAllocator>::pointer pointer;
|
348
|
+
typedef typename allocator_traits<SecondaryAllocator>::const_pointer const_pointer;
|
349
|
+
typedef typename allocator_traits<SecondaryAllocator>::void_pointer void_pointer;
|
350
|
+
typedef typename allocator_traits<SecondaryAllocator>::const_void_pointer const_void_pointer;
|
332
351
|
|
333
352
|
private:
|
334
353
|
BOOST_COPYABLE_AND_MOVABLE(small_vector_base)
|
335
354
|
|
336
355
|
friend class small_vector_allocator<SecondaryAllocator>;
|
337
356
|
|
338
|
-
|
357
|
+
BOOST_CONTAINER_FORCEINLINE
|
358
|
+
const_pointer internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW
|
359
|
+
{
|
360
|
+
typedef typename boost::intrusive::pointer_traits<const_pointer>::template
|
361
|
+
rebind_pointer<const unsigned char>::type const_char_pointer;
|
362
|
+
const_void_pointer void_p = boost::intrusive::pointer_traits<const_char_pointer>::
|
363
|
+
pointer_to(*m_storage_start.data);
|
364
|
+
return boost::intrusive::pointer_traits<const_pointer>::static_cast_from(void_p);
|
365
|
+
}
|
366
|
+
|
367
|
+
BOOST_CONTAINER_FORCEINLINE
|
368
|
+
pointer internal_storage() BOOST_NOEXCEPT_OR_NOTHROW
|
339
369
|
{
|
340
|
-
|
341
|
-
|
370
|
+
typedef typename boost::intrusive::pointer_traits<pointer>::template
|
371
|
+
rebind_pointer<unsigned char>::type char_pointer;
|
372
|
+
void_pointer void_p = boost::intrusive::pointer_traits<char_pointer>::
|
373
|
+
pointer_to(*m_storage_start.data);
|
374
|
+
return boost::intrusive::pointer_traits<pointer>::static_cast_from(void_p);
|
342
375
|
}
|
343
376
|
|
344
377
|
typedef vector<T, small_vector_allocator<SecondaryAllocator> > base_type;
|
@@ -575,6 +608,7 @@ class small_vector : public small_vector_base<T, Allocator>
|
|
575
608
|
{ this->move_construct_impl(other, other.get_stored_allocator()); }
|
576
609
|
|
577
610
|
BOOST_CONTAINER_FORCEINLINE small_vector(BOOST_RV_REF(small_vector) other)
|
611
|
+
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_assignable<value_type>::value)
|
578
612
|
: base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator()))
|
579
613
|
{ this->move_construct_impl(other, other.get_stored_allocator()); }
|
580
614
|
|
@@ -594,6 +628,9 @@ class small_vector : public small_vector_base<T, Allocator>
|
|
594
628
|
{ return static_cast<small_vector&>(this->base_type::operator=(static_cast<base_type const&>(other))); }
|
595
629
|
|
596
630
|
BOOST_CONTAINER_FORCEINLINE small_vector& operator=(BOOST_RV_REF(small_vector) other)
|
631
|
+
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_assignable<value_type>::value
|
632
|
+
&& (allocator_traits_type::propagate_on_container_move_assignment::value
|
633
|
+
|| allocator_traits_type::is_always_equal::value))
|
597
634
|
{ return static_cast<small_vector&>(this->base_type::operator=(BOOST_MOVE_BASE(base_type, other))); }
|
598
635
|
|
599
636
|
BOOST_CONTAINER_FORCEINLINE small_vector& operator=(const base_type &other)
|
@@ -114,12 +114,14 @@ struct node_base
|
|
114
114
|
typedef typename void_ptr_traits::
|
115
115
|
template rebind_pointer
|
116
116
|
<node_base>::type node_base_ptr;
|
117
|
+
|
118
|
+
public:
|
117
119
|
typedef typename void_ptr_traits::
|
118
120
|
template rebind_pointer
|
119
121
|
<node_base_ptr>::type node_base_ptr_ptr;
|
120
122
|
|
121
123
|
public:
|
122
|
-
node_base(const node_base_ptr_ptr &n)
|
124
|
+
explicit node_base(const node_base_ptr_ptr &n)
|
123
125
|
: up(n)
|
124
126
|
{}
|
125
127
|
|
@@ -130,6 +132,7 @@ struct node_base
|
|
130
132
|
node_base_ptr_ptr up;
|
131
133
|
};
|
132
134
|
|
135
|
+
|
133
136
|
template<typename Pointer>
|
134
137
|
struct node
|
135
138
|
: public node_base
|
@@ -137,11 +140,52 @@ struct node
|
|
137
140
|
rebind_pointer<void>::type
|
138
141
|
>
|
139
142
|
{
|
140
|
-
private:
|
141
|
-
node();
|
142
|
-
|
143
143
|
public:
|
144
|
-
typename ::boost::intrusive::pointer_traits<Pointer>::element_type
|
144
|
+
typedef typename ::boost::intrusive::pointer_traits<Pointer>::element_type T;
|
145
|
+
typedef node_base
|
146
|
+
<typename ::boost::intrusive::pointer_traits<Pointer>::template
|
147
|
+
rebind_pointer<void>::type
|
148
|
+
> hook_type;
|
149
|
+
|
150
|
+
typedef typename boost::container::dtl::aligned_storage
|
151
|
+
<sizeof(T), boost::container::dtl::alignment_of<T>::value>::type storage_t;
|
152
|
+
storage_t m_storage;
|
153
|
+
|
154
|
+
BOOST_CONTAINER_FORCEINLINE explicit node(const typename hook_type::node_base_ptr_ptr &n)
|
155
|
+
: hook_type(n)
|
156
|
+
{}
|
157
|
+
|
158
|
+
BOOST_CONTAINER_FORCEINLINE node()
|
159
|
+
{}
|
160
|
+
|
161
|
+
#if defined(BOOST_GCC) && (BOOST_GCC >= 40600) && (BOOST_GCC < 80000)
|
162
|
+
#pragma GCC diagnostic push
|
163
|
+
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
|
164
|
+
#define BOOST_CONTAINER_DISABLE_ALIASING_WARNING
|
165
|
+
# endif
|
166
|
+
|
167
|
+
BOOST_CONTAINER_FORCEINLINE T &get_data()
|
168
|
+
{ return *reinterpret_cast<T*>(this->m_storage.data); }
|
169
|
+
|
170
|
+
BOOST_CONTAINER_FORCEINLINE const T &get_data() const
|
171
|
+
{ return *reinterpret_cast<const T*>(this->m_storage.data); }
|
172
|
+
|
173
|
+
BOOST_CONTAINER_FORCEINLINE T *get_data_ptr()
|
174
|
+
{ return reinterpret_cast<T*>(this->m_storage.data); }
|
175
|
+
|
176
|
+
BOOST_CONTAINER_FORCEINLINE const T *get_data_ptr() const
|
177
|
+
{ return reinterpret_cast<T*>(this->m_storage.data); }
|
178
|
+
|
179
|
+
BOOST_CONTAINER_FORCEINLINE ~node()
|
180
|
+
{ reinterpret_cast<T*>(this->m_storage.data)->~T(); }
|
181
|
+
|
182
|
+
#if defined(BOOST_CONTAINER_DISABLE_ALIASING_WARNING)
|
183
|
+
#pragma GCC diagnostic pop
|
184
|
+
#undef BOOST_CONTAINER_DISABLE_ALIASING_WARNING
|
185
|
+
# endif
|
186
|
+
|
187
|
+
BOOST_CONTAINER_FORCEINLINE void destroy_header()
|
188
|
+
{ static_cast<hook_type*>(this)->~hook_type(); }
|
145
189
|
};
|
146
190
|
|
147
191
|
template<class VoidPtr, class VoidAllocator>
|
@@ -290,7 +334,7 @@ class stable_vector_iterator
|
|
290
334
|
public:
|
291
335
|
//Pointer like operators
|
292
336
|
reference operator*() const BOOST_NOEXCEPT_OR_NOTHROW
|
293
|
-
{ return node_pointer()->
|
337
|
+
{ return node_pointer()->get_data(); }
|
294
338
|
|
295
339
|
pointer operator->() const BOOST_NOEXCEPT_OR_NOTHROW
|
296
340
|
{ return ptr_traits::pointer_to(this->operator*()); }
|
@@ -317,7 +361,7 @@ class stable_vector_iterator
|
|
317
361
|
{ stable_vector_iterator tmp(*this); --*this; return stable_vector_iterator(tmp); }
|
318
362
|
|
319
363
|
reference operator[](difference_type off) const BOOST_NOEXCEPT_OR_NOTHROW
|
320
|
-
{ return node_ptr_traits::static_cast_from(this->m_pn->up[off])->
|
364
|
+
{ return node_ptr_traits::static_cast_from(this->m_pn->up[off])->get_data(); }
|
321
365
|
|
322
366
|
stable_vector_iterator& operator+=(difference_type off) BOOST_NOEXCEPT_OR_NOTHROW
|
323
367
|
{
|
@@ -793,7 +837,7 @@ class stable_vector
|
|
793
837
|
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
|
794
838
|
|| allocator_traits_type::is_always_equal::value)
|
795
839
|
{
|
796
|
-
//for move constructor, no aliasing (&x != this) is
|
840
|
+
//for move constructor, no aliasing (&x != this) is assumed.
|
797
841
|
BOOST_ASSERT(this != &x);
|
798
842
|
node_allocator_type &this_alloc = this->priv_node_alloc();
|
799
843
|
node_allocator_type &x_alloc = x.priv_node_alloc();
|
@@ -1198,7 +1242,7 @@ class stable_vector
|
|
1198
1242
|
reference front() BOOST_NOEXCEPT_OR_NOTHROW
|
1199
1243
|
{
|
1200
1244
|
BOOST_ASSERT(!this->empty());
|
1201
|
-
return static_cast<node_reference>(*this->index.front()).
|
1245
|
+
return static_cast<node_reference>(*this->index.front()).get_data();
|
1202
1246
|
}
|
1203
1247
|
|
1204
1248
|
//! <b>Requires</b>: !empty()
|
@@ -1212,7 +1256,7 @@ class stable_vector
|
|
1212
1256
|
const_reference front() const BOOST_NOEXCEPT_OR_NOTHROW
|
1213
1257
|
{
|
1214
1258
|
BOOST_ASSERT(!this->empty());
|
1215
|
-
return static_cast<const_node_reference>(*this->index.front()).
|
1259
|
+
return static_cast<const_node_reference>(*this->index.front()).get_data();
|
1216
1260
|
}
|
1217
1261
|
|
1218
1262
|
//! <b>Requires</b>: !empty()
|
@@ -1226,7 +1270,7 @@ class stable_vector
|
|
1226
1270
|
reference back() BOOST_NOEXCEPT_OR_NOTHROW
|
1227
1271
|
{
|
1228
1272
|
BOOST_ASSERT(!this->empty());
|
1229
|
-
return static_cast<node_reference>(*this->index[this->size()-1u]).
|
1273
|
+
return static_cast<node_reference>(*this->index[this->size()-1u]).get_data();
|
1230
1274
|
}
|
1231
1275
|
|
1232
1276
|
//! <b>Requires</b>: !empty()
|
@@ -1240,7 +1284,7 @@ class stable_vector
|
|
1240
1284
|
const_reference back() const BOOST_NOEXCEPT_OR_NOTHROW
|
1241
1285
|
{
|
1242
1286
|
BOOST_ASSERT(!this->empty());
|
1243
|
-
return static_cast<const_node_reference>(*this->index[this->size()-1u]).
|
1287
|
+
return static_cast<const_node_reference>(*this->index[this->size()-1u]).get_data();
|
1244
1288
|
}
|
1245
1289
|
|
1246
1290
|
//! <b>Requires</b>: size() > n.
|
@@ -1254,7 +1298,7 @@ class stable_vector
|
|
1254
1298
|
reference operator[](size_type n) BOOST_NOEXCEPT_OR_NOTHROW
|
1255
1299
|
{
|
1256
1300
|
BOOST_ASSERT(this->size() > n);
|
1257
|
-
return static_cast<node_reference>(*this->index[n]).
|
1301
|
+
return static_cast<node_reference>(*this->index[n]).get_data();
|
1258
1302
|
}
|
1259
1303
|
|
1260
1304
|
//! <b>Requires</b>: size() > n.
|
@@ -1268,7 +1312,7 @@ class stable_vector
|
|
1268
1312
|
const_reference operator[](size_type n) const BOOST_NOEXCEPT_OR_NOTHROW
|
1269
1313
|
{
|
1270
1314
|
BOOST_ASSERT(this->size() > n);
|
1271
|
-
return static_cast<const_node_reference>(*this->index[n]).
|
1315
|
+
return static_cast<const_node_reference>(*this->index[n]).get_data();
|
1272
1316
|
}
|
1273
1317
|
|
1274
1318
|
//! <b>Requires</b>: size() >= n.
|
@@ -1956,8 +2000,7 @@ class stable_vector
|
|
1956
2000
|
void priv_destroy_node(const node_type &n)
|
1957
2001
|
{
|
1958
2002
|
allocator_traits<node_allocator_type>::
|
1959
|
-
destroy(this->priv_node_alloc(),
|
1960
|
-
static_cast<const node_base_type*>(&n)->~node_base_type();
|
2003
|
+
destroy(this->priv_node_alloc(), &n);
|
1961
2004
|
}
|
1962
2005
|
|
1963
2006
|
void priv_delete_node(const node_ptr &n)
|
@@ -1969,26 +2012,40 @@ class stable_vector
|
|
1969
2012
|
template<class Iterator>
|
1970
2013
|
void priv_build_node_from_it(const node_ptr &p, const index_iterator &up_index, const Iterator &it)
|
1971
2014
|
{
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
2015
|
+
node_type *praw = ::new(boost::movelib::iterator_to_raw_pointer(p), boost_container_new_t())
|
2016
|
+
node_type(index_traits_type::ptr_to_node_base_ptr(*up_index));
|
2017
|
+
BOOST_TRY{
|
2018
|
+
//This can throw
|
2019
|
+
boost::container::construct_in_place
|
2020
|
+
( this->priv_node_alloc()
|
2021
|
+
, praw->get_data_ptr()
|
2022
|
+
, it);
|
2023
|
+
}
|
2024
|
+
BOOST_CATCH(...) {
|
2025
|
+
praw->destroy_header();
|
2026
|
+
this->priv_node_alloc().deallocate(p, 1);
|
2027
|
+
BOOST_RETHROW
|
2028
|
+
}
|
2029
|
+
BOOST_CATCH_END
|
1980
2030
|
}
|
1981
2031
|
|
1982
2032
|
template<class ValueConvertible>
|
1983
2033
|
void priv_build_node_from_convertible(const node_ptr &p, BOOST_FWD_REF(ValueConvertible) value_convertible)
|
1984
2034
|
{
|
1985
|
-
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1990
|
-
|
1991
|
-
|
2035
|
+
node_type *praw = ::new(boost::movelib::iterator_to_raw_pointer(p), boost_container_new_t()) node_type;
|
2036
|
+
BOOST_TRY{
|
2037
|
+
//This can throw
|
2038
|
+
boost::container::allocator_traits<node_allocator_type>::construct
|
2039
|
+
( this->priv_node_alloc()
|
2040
|
+
, p->get_data_ptr()
|
2041
|
+
, ::boost::forward<ValueConvertible>(value_convertible));
|
2042
|
+
}
|
2043
|
+
BOOST_CATCH(...) {
|
2044
|
+
praw->destroy_header();
|
2045
|
+
this->priv_node_alloc().deallocate(p, 1);
|
2046
|
+
BOOST_RETHROW
|
2047
|
+
}
|
2048
|
+
BOOST_CATCH_END
|
1992
2049
|
}
|
1993
2050
|
|
1994
2051
|
void priv_swap_members(stable_vector &x)
|
@@ -2085,6 +2142,18 @@ class stable_vector
|
|
2085
2142
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
2086
2143
|
};
|
2087
2144
|
|
2145
|
+
#ifndef BOOST_CONTAINER_NO_CXX17_CTAD
|
2146
|
+
|
2147
|
+
template <typename InputIterator>
|
2148
|
+
stable_vector(InputIterator, InputIterator) ->
|
2149
|
+
stable_vector<typename iterator_traits<InputIterator>::value_type>;
|
2150
|
+
|
2151
|
+
template <typename InputIterator, typename Allocator>
|
2152
|
+
stable_vector(InputIterator, InputIterator, Allocator const&) ->
|
2153
|
+
stable_vector<typename iterator_traits<InputIterator>::value_type, Allocator>;
|
2154
|
+
|
2155
|
+
#endif
|
2156
|
+
|
2088
2157
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
2089
2158
|
|
2090
2159
|
#undef STABLE_VECTOR_CHECK_INVARIANT
|
@@ -96,7 +96,7 @@ class static_storage_allocator
|
|
96
96
|
//! Insertion beyond the capacity result in throwing std::bad_alloc() if exceptions are enabled or
|
97
97
|
//! calling throw_bad_alloc() if not enabled.
|
98
98
|
//!
|
99
|
-
//! std::out_of_range is thrown if out of
|
99
|
+
//! std::out_of_range is thrown if out of bounds access is performed in <code>at()</code> if exceptions are
|
100
100
|
//! enabled, throw_out_of_range() if not enabled.
|
101
101
|
//!
|
102
102
|
//!@tparam Value The type of element that will be stored.
|
@@ -372,6 +372,7 @@ public:
|
|
372
372
|
//! @par Complexity
|
373
373
|
//! Linear O(N).
|
374
374
|
BOOST_CONTAINER_FORCEINLINE static_vector & operator=(BOOST_RV_REF(static_vector) other)
|
375
|
+
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_assignable<value_type>::value)
|
375
376
|
{
|
376
377
|
return static_cast<static_vector&>(base_t::operator=(BOOST_MOVE_BASE(base_t, other)));
|
377
378
|
}
|
@@ -98,27 +98,25 @@ class basic_string_base
|
|
98
98
|
|
99
99
|
basic_string_base()
|
100
100
|
: members_()
|
101
|
-
{
|
101
|
+
{}
|
102
102
|
|
103
103
|
explicit basic_string_base(const allocator_type& a)
|
104
104
|
: members_(a)
|
105
|
-
{
|
105
|
+
{}
|
106
106
|
|
107
107
|
explicit basic_string_base(BOOST_RV_REF(allocator_type) a)
|
108
108
|
: members_(boost::move(a))
|
109
|
-
{
|
109
|
+
{}
|
110
110
|
|
111
111
|
basic_string_base(const allocator_type& a, size_type n)
|
112
112
|
: members_(a)
|
113
113
|
{
|
114
|
-
this->init();
|
115
114
|
this->allocate_initial_block(n);
|
116
115
|
}
|
117
116
|
|
118
117
|
explicit basic_string_base(size_type n)
|
119
118
|
: members_()
|
120
119
|
{
|
121
|
-
this->init();
|
122
120
|
this->allocate_initial_block(n);
|
123
121
|
}
|
124
122
|
|
@@ -140,6 +138,11 @@ class basic_string_base
|
|
140
138
|
pointer start;
|
141
139
|
|
142
140
|
long_t()
|
141
|
+
: is_short(0)
|
142
|
+
{}
|
143
|
+
|
144
|
+
long_t(size_type len, size_type stor, pointer ptr)
|
145
|
+
: is_short(0), length(len), storage(stor), start(ptr)
|
143
146
|
{}
|
144
147
|
|
145
148
|
long_t(const long_t &other)
|
@@ -190,35 +193,49 @@ class basic_string_base
|
|
190
193
|
value_type data[UnalignedFinalInternalBufferChars];
|
191
194
|
};
|
192
195
|
|
193
|
-
union
|
196
|
+
union repr_t_size_t
|
194
197
|
{
|
195
198
|
long_raw_t r;
|
196
199
|
short_t s;
|
200
|
+
};
|
197
201
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
short_t &short_repr()
|
205
|
-
{ return s; }
|
206
|
-
|
207
|
-
long_t &long_repr()
|
208
|
-
{ return *static_cast<long_t*>(static_cast<void*>(&r)); }
|
202
|
+
union repr_t
|
203
|
+
{
|
204
|
+
long_raw_t r_aligner;
|
205
|
+
short_t s_aligner;
|
206
|
+
unsigned char data[sizeof(repr_t_size_t)];
|
209
207
|
};
|
210
208
|
|
211
209
|
struct members_holder
|
212
210
|
: public Allocator
|
213
211
|
{
|
212
|
+
void init()
|
213
|
+
{
|
214
|
+
short_t &s = *::new(this->m_repr.data) short_t;
|
215
|
+
s.h.is_short = 1;
|
216
|
+
s.h.length = 0;
|
217
|
+
}
|
218
|
+
|
214
219
|
members_holder()
|
215
220
|
: Allocator()
|
216
|
-
{}
|
221
|
+
{ this->init(); }
|
217
222
|
|
218
223
|
template<class AllocatorConvertible>
|
219
224
|
explicit members_holder(BOOST_FWD_REF(AllocatorConvertible) a)
|
220
225
|
: Allocator(boost::forward<AllocatorConvertible>(a))
|
221
|
-
{}
|
226
|
+
{ this->init(); }
|
227
|
+
|
228
|
+
const short_t *pshort_repr() const
|
229
|
+
{ return reinterpret_cast<const short_t*>(m_repr.data); }
|
230
|
+
|
231
|
+
const long_t *plong_repr() const
|
232
|
+
{ return reinterpret_cast<const long_t*>(m_repr.data); }
|
233
|
+
|
234
|
+
short_t *pshort_repr()
|
235
|
+
{ return reinterpret_cast<short_t*>(m_repr.data); }
|
236
|
+
|
237
|
+
long_t *plong_repr()
|
238
|
+
{ return reinterpret_cast<long_t*>(m_repr.data); }
|
222
239
|
|
223
240
|
repr_t m_repr;
|
224
241
|
} members_;
|
@@ -246,32 +263,51 @@ class basic_string_base
|
|
246
263
|
return hdr.is_short != 0;
|
247
264
|
}
|
248
265
|
|
249
|
-
|
266
|
+
short_t *construct_short()
|
250
267
|
{
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
268
|
+
short_t *ps = ::new(this->members_.m_repr.data) short_t;
|
269
|
+
ps->h.is_short = 1;
|
270
|
+
return ps;
|
271
|
+
}
|
272
|
+
|
273
|
+
void destroy_short()
|
274
|
+
{
|
275
|
+
BOOST_ASSERT(this->is_short());
|
276
|
+
this->members_.pshort_repr()->~short_t();
|
277
|
+
}
|
278
|
+
|
279
|
+
short_t *assure_short()
|
280
|
+
{
|
281
|
+
if (!this->is_short()){
|
282
|
+
this->destroy_long();
|
283
|
+
return construct_short();
|
265
284
|
}
|
285
|
+
return this->members_.pshort_repr();
|
266
286
|
}
|
267
287
|
|
268
|
-
|
269
|
-
|
288
|
+
long_t *construct_long()
|
289
|
+
{
|
290
|
+
long_t *pl = ::new(this->members_.m_repr.data) long_t;
|
291
|
+
//is_short flag is written in the constructor
|
292
|
+
return pl;
|
293
|
+
}
|
294
|
+
|
295
|
+
void destroy_long()
|
296
|
+
{
|
297
|
+
BOOST_ASSERT(!this->is_short());
|
298
|
+
this->members_.plong_repr()->~long_t();
|
299
|
+
}
|
300
|
+
|
301
|
+
long_t *assure_long()
|
270
302
|
{
|
271
|
-
this->
|
272
|
-
|
303
|
+
if (this->is_short()){
|
304
|
+
this->destroy_short();
|
305
|
+
return this->construct_long();
|
306
|
+
}
|
307
|
+
return this->members_.plong_repr();
|
273
308
|
}
|
274
309
|
|
310
|
+
|
275
311
|
protected:
|
276
312
|
|
277
313
|
typedef dtl::integral_constant<unsigned,
|
@@ -334,7 +370,8 @@ class basic_string_base
|
|
334
370
|
size_type new_cap = this->next_capacity(n);
|
335
371
|
pointer reuse = 0;
|
336
372
|
pointer p = this->allocation_command(allocate_new, n, new_cap, reuse);
|
337
|
-
this->is_short(
|
373
|
+
BOOST_ASSERT(this->is_short());
|
374
|
+
this->construct_long();
|
338
375
|
this->priv_long_addr(p);
|
339
376
|
this->priv_long_size(0);
|
340
377
|
this->priv_storage(new_cap);
|
@@ -356,10 +393,16 @@ class basic_string_base
|
|
356
393
|
{ return this->priv_storage() - 1; }
|
357
394
|
|
358
395
|
pointer priv_short_addr() const
|
359
|
-
{ return pointer_traits::pointer_to(const_cast<value_type&>(this->members_.
|
396
|
+
{ return pointer_traits::pointer_to(const_cast<value_type&>(this->members_.pshort_repr()->data[0])); }
|
397
|
+
|
398
|
+
//GCC seems a bit confused about uninitialized accesses
|
399
|
+
#if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
|
400
|
+
#pragma GCC diagnostic push
|
401
|
+
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
|
402
|
+
#endif
|
360
403
|
|
361
404
|
pointer priv_long_addr() const
|
362
|
-
{ return this->members_.
|
405
|
+
{ return this->members_.plong_repr()->start; }
|
363
406
|
|
364
407
|
pointer priv_addr() const
|
365
408
|
{
|
@@ -378,7 +421,7 @@ class basic_string_base
|
|
378
421
|
}
|
379
422
|
|
380
423
|
void priv_long_addr(pointer addr)
|
381
|
-
{ this->members_.
|
424
|
+
{ this->members_.plong_repr()->start = addr; }
|
382
425
|
|
383
426
|
size_type priv_storage() const
|
384
427
|
{ return this->is_short() ? priv_short_storage() : priv_long_storage(); }
|
@@ -387,7 +430,7 @@ class basic_string_base
|
|
387
430
|
{ return InternalBufferChars; }
|
388
431
|
|
389
432
|
size_type priv_long_storage() const
|
390
|
-
{ return this->members_.
|
433
|
+
{ return this->members_.plong_repr()->storage; }
|
391
434
|
|
392
435
|
void priv_storage(size_type storage)
|
393
436
|
{
|
@@ -397,17 +440,17 @@ class basic_string_base
|
|
397
440
|
|
398
441
|
void priv_long_storage(size_type storage)
|
399
442
|
{
|
400
|
-
this->members_.
|
443
|
+
this->members_.plong_repr()->storage = storage;
|
401
444
|
}
|
402
445
|
|
403
446
|
size_type priv_size() const
|
404
447
|
{ return this->is_short() ? this->priv_short_size() : this->priv_long_size(); }
|
405
448
|
|
406
449
|
size_type priv_short_size() const
|
407
|
-
{ return this->members_.
|
450
|
+
{ return this->members_.pshort_repr()->h.length; }
|
408
451
|
|
409
452
|
size_type priv_long_size() const
|
410
|
-
{ return this->members_.
|
453
|
+
{ return this->members_.plong_repr()->length; }
|
411
454
|
|
412
455
|
void priv_size(size_type sz)
|
413
456
|
{
|
@@ -418,14 +461,14 @@ class basic_string_base
|
|
418
461
|
}
|
419
462
|
|
420
463
|
void priv_short_size(size_type sz)
|
421
|
-
{
|
422
|
-
this->members_.m_repr.s.h.length = (unsigned char)sz;
|
423
|
-
}
|
464
|
+
{ this->members_.pshort_repr()->h.length = (unsigned char)sz; }
|
424
465
|
|
425
466
|
void priv_long_size(size_type sz)
|
426
|
-
{
|
427
|
-
|
428
|
-
|
467
|
+
{ this->members_.plong_repr()->length = sz; }
|
468
|
+
|
469
|
+
#if defined(BOOST_GCC) && (BOOST_GCC >= 40700)
|
470
|
+
#pragma GCC diagnostic pop
|
471
|
+
#endif
|
429
472
|
|
430
473
|
void swap_data(basic_string_base& other)
|
431
474
|
{
|
@@ -436,23 +479,23 @@ class basic_string_base
|
|
436
479
|
other.members_.m_repr = tmp;
|
437
480
|
}
|
438
481
|
else{
|
439
|
-
short_t short_backup(this->members_.
|
440
|
-
this->members_.
|
441
|
-
::new(
|
442
|
-
other.members_.
|
443
|
-
::new(
|
482
|
+
short_t short_backup(*this->members_.pshort_repr());
|
483
|
+
this->members_.pshort_repr()->~short_t();
|
484
|
+
::new(this->members_.plong_repr()) long_t(*other.members_.plong_repr());
|
485
|
+
other.members_.plong_repr()->~long_t();
|
486
|
+
::new(other.members_.pshort_repr()) short_t(short_backup);
|
444
487
|
}
|
445
488
|
}
|
446
489
|
else{
|
447
490
|
if(other.is_short()){
|
448
|
-
short_t short_backup(other.members_.
|
449
|
-
other.members_.
|
450
|
-
::new(
|
451
|
-
this->members_.
|
452
|
-
::new(
|
491
|
+
short_t short_backup(*other.members_.pshort_repr());
|
492
|
+
other.members_.pshort_repr()->~short_t();
|
493
|
+
::new(other.members_.plong_repr()) long_t(*this->members_.plong_repr());
|
494
|
+
this->members_.plong_repr()->~long_t();
|
495
|
+
::new(this->members_.pshort_repr()) short_t(short_backup);
|
453
496
|
}
|
454
497
|
else{
|
455
|
-
boost::adl_move_swap(this->members_.
|
498
|
+
boost::adl_move_swap(*this->members_.plong_repr(), *other.members_.plong_repr());
|
456
499
|
}
|
457
500
|
}
|
458
501
|
}
|
@@ -830,7 +873,7 @@ class basic_string
|
|
830
873
|
if(flag && this_alloc != x_alloc){
|
831
874
|
if(!this->is_short()){
|
832
875
|
this->deallocate_block();
|
833
|
-
this->
|
876
|
+
this->assure_short();
|
834
877
|
Traits::assign(*this->priv_addr(), CharT(0));
|
835
878
|
this->priv_short_size(0);
|
836
879
|
}
|
@@ -853,7 +896,7 @@ class basic_string
|
|
853
896
|
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
|
854
897
|
|| allocator_traits_type::is_always_equal::value)
|
855
898
|
{
|
856
|
-
//for move constructor, no aliasing (&x != this) is
|
899
|
+
//for move constructor, no aliasing (&x != this) is assumed.
|
857
900
|
BOOST_ASSERT(this != &x);
|
858
901
|
allocator_type &this_alloc = this->alloc();
|
859
902
|
allocator_type &x_alloc = x.alloc();
|
@@ -1159,7 +1202,9 @@ class basic_string
|
|
1159
1202
|
Traits::copy( boost::movelib::to_raw_pointer(this->priv_short_addr())
|
1160
1203
|
, boost::movelib::to_raw_pointer(long_addr)
|
1161
1204
|
, long_size+1);
|
1162
|
-
this->is_short(
|
1205
|
+
BOOST_ASSERT(!this->is_short());
|
1206
|
+
this->destroy_long();
|
1207
|
+
this->construct_short();
|
1163
1208
|
this->alloc().deallocate(long_addr, long_storage);
|
1164
1209
|
}
|
1165
1210
|
else{
|
@@ -1763,7 +1808,7 @@ class basic_string
|
|
1763
1808
|
this->priv_construct_null(new_start + new_length);
|
1764
1809
|
|
1765
1810
|
this->deallocate_block();
|
1766
|
-
this->
|
1811
|
+
this->assure_long();
|
1767
1812
|
this->priv_long_addr(new_start);
|
1768
1813
|
this->priv_long_size(new_length);
|
1769
1814
|
this->priv_long_storage(new_cap);
|
@@ -1782,7 +1827,7 @@ class basic_string
|
|
1782
1827
|
//Now initialize the new data
|
1783
1828
|
priv_uninitialized_copy(first, last, new_start + before);
|
1784
1829
|
this->priv_construct_null(new_start + (old_size + n));
|
1785
|
-
this->
|
1830
|
+
this->assure_long();
|
1786
1831
|
this->priv_long_addr(new_start);
|
1787
1832
|
this->priv_long_size(old_size + n);
|
1788
1833
|
this->priv_long_storage(new_cap);
|
@@ -2790,7 +2835,7 @@ class basic_string
|
|
2790
2835
|
this->priv_construct_null(new_start + new_length);
|
2791
2836
|
}
|
2792
2837
|
this->deallocate_block();
|
2793
|
-
this->
|
2838
|
+
this->assure_long();
|
2794
2839
|
this->priv_long_addr(new_start);
|
2795
2840
|
this->priv_long_size(new_length);
|
2796
2841
|
this->priv_storage(new_cap);
|
@@ -2933,6 +2978,18 @@ class basic_string
|
|
2933
2978
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
2934
2979
|
};
|
2935
2980
|
|
2981
|
+
#ifndef BOOST_CONTAINER_NO_CXX17_CTAD
|
2982
|
+
|
2983
|
+
template <typename InputIterator>
|
2984
|
+
basic_string(InputIterator, InputIterator) ->
|
2985
|
+
basic_string<typename iterator_traits<InputIterator>::value_type>;
|
2986
|
+
|
2987
|
+
template <typename InputIterator, typename Allocator>
|
2988
|
+
basic_string(InputIterator, InputIterator, Allocator const&) ->
|
2989
|
+
basic_string<typename iterator_traits<InputIterator>::value_type, Allocator>;
|
2990
|
+
|
2991
|
+
#endif
|
2992
|
+
|
2936
2993
|
#ifdef BOOST_CONTAINER_DOXYGEN_INVOKED
|
2937
2994
|
|
2938
2995
|
//!Typedef for a basic_string of
|