passenger 6.0.16 → 6.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +22 -1
- data/build/integration_tests.rb +6 -6
- data/build/ruby_tests.rb +1 -1
- data/build/test_basics.rb +0 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
- data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
- data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
- data/src/ruby_native_extension/extconf.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +36 -19
- data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
- data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -74,18 +74,8 @@ namespace gregorian {
|
|
74
74
|
{}
|
75
75
|
//! Constructor for infinities, not a date, max and min date
|
76
76
|
BOOST_CXX14_CONSTEXPR explicit date(special_values sv):
|
77
|
-
date_time::date<date, gregorian_calendar, date_duration>(
|
78
|
-
{
|
79
|
-
if (sv == min_date_time)
|
80
|
-
{
|
81
|
-
*this = date(1400, 1, 1);
|
82
|
-
}
|
83
|
-
if (sv == max_date_time)
|
84
|
-
{
|
85
|
-
*this = date(9999, 12, 31);
|
86
|
-
}
|
87
|
-
|
88
|
-
}
|
77
|
+
date_time::date<date, gregorian_calendar, date_duration>(from_special_adjusted(sv))
|
78
|
+
{}
|
89
79
|
//!Return the Julian Day number for the date.
|
90
80
|
BOOST_CXX14_CONSTEXPR date_int_type julian_day() const
|
91
81
|
{
|
@@ -105,7 +95,7 @@ namespace gregorian {
|
|
105
95
|
ymd_type ymd = year_month_day();
|
106
96
|
return gregorian_calendar::modjulian_day_number(ymd);
|
107
97
|
}
|
108
|
-
//!Return the
|
98
|
+
//!Return the ISO 8601 week number 1..53
|
109
99
|
BOOST_CXX14_CONSTEXPR int week_number() const
|
110
100
|
{
|
111
101
|
ymd_type ymd = year_month_day();
|
@@ -129,6 +119,15 @@ namespace gregorian {
|
|
129
119
|
|
130
120
|
private:
|
131
121
|
|
122
|
+
BOOST_CXX14_CONSTEXPR date_rep_type from_special_adjusted(special_values sv)
|
123
|
+
{
|
124
|
+
switch (sv)
|
125
|
+
{
|
126
|
+
case min_date_time: return gregorian_calendar::day_number(ymd_type(1400, 1, 1));
|
127
|
+
case max_date_time: return gregorian_calendar::day_number(ymd_type(9999, 12, 31));
|
128
|
+
default: return date_rep_type::from_special(sv);
|
129
|
+
}
|
130
|
+
}
|
132
131
|
};
|
133
132
|
|
134
133
|
inline BOOST_CXX14_CONSTEXPR
|
@@ -64,12 +64,12 @@ namespace gregorian {
|
|
64
64
|
return date_time::parse_date<date>(s, date_time::ymd_order_dmy);
|
65
65
|
}
|
66
66
|
|
67
|
-
//! From
|
67
|
+
//! From ISO 8601 type date string where with order year-month-day eg: 20020125
|
68
68
|
inline date from_undelimited_string(const std::string& s) {
|
69
69
|
return date_time::parse_undelimited_date<date>(s);
|
70
70
|
}
|
71
71
|
|
72
|
-
//! From
|
72
|
+
//! From ISO 8601 type date string where with order year-month-day eg: 20020125
|
73
73
|
inline date date_from_iso_string(const std::string& s) {
|
74
74
|
return date_time::parse_undelimited_date<date>(s);
|
75
75
|
}
|
@@ -25,8 +25,8 @@ namespace date_time {
|
|
25
25
|
return d;
|
26
26
|
}
|
27
27
|
|
28
|
-
//!Return the
|
29
|
-
/*!Implements the rules associated with the
|
28
|
+
//!Return the ISO 8601 week number for the date
|
29
|
+
/*!Implements the rules associated with the ISO 8601 week number.
|
30
30
|
Basically the rule is that Week 1 of the year is the week that contains
|
31
31
|
January 4th or the week that contains the first Thursday in January.
|
32
32
|
Reference for this algorithm is the Calendar FAQ by Claus Tondering, April 2000.
|
@@ -14,11 +14,11 @@
|
|
14
14
|
namespace boost {
|
15
15
|
namespace date_time {
|
16
16
|
|
17
|
-
//! Class to provide common
|
17
|
+
//! Class to provide common ISO 8601 formatting spec
|
18
18
|
template<class charT>
|
19
19
|
class iso_format_base {
|
20
20
|
public:
|
21
|
-
//! Describe month format -- its an integer in
|
21
|
+
//! Describe month format -- its an integer in ISO 8601 format
|
22
22
|
static month_format_spec month_format()
|
23
23
|
{
|
24
24
|
return month_as_integer;
|
@@ -40,17 +40,17 @@ public:
|
|
40
40
|
return "-infinity";
|
41
41
|
}
|
42
42
|
|
43
|
-
//! ISO char for a year -- used in durations
|
43
|
+
//! ISO 8601 char for a year -- used in durations
|
44
44
|
static charT year_sep_char()
|
45
45
|
{
|
46
46
|
return 'Y';
|
47
47
|
}
|
48
|
-
//! ISO char for a month
|
48
|
+
//! ISO 8601 char for a month
|
49
49
|
static charT month_sep_char()
|
50
50
|
{
|
51
51
|
return '-';
|
52
52
|
}
|
53
|
-
//! ISO char for a day
|
53
|
+
//! ISO 8601 char for a day
|
54
54
|
static charT day_sep_char()
|
55
55
|
{
|
56
56
|
return '-';
|
@@ -70,7 +70,7 @@ public:
|
|
70
70
|
{
|
71
71
|
return ':';
|
72
72
|
}
|
73
|
-
//! ISO char for a period
|
73
|
+
//! ISO 8601 char for a period
|
74
74
|
static charT period_start_char()
|
75
75
|
{
|
76
76
|
return 'P';
|
@@ -143,11 +143,11 @@ public:
|
|
143
143
|
|
144
144
|
#ifndef BOOST_NO_STD_WSTRING
|
145
145
|
|
146
|
-
//! Class to provide common
|
146
|
+
//! Class to provide common ISO 8601 formatting spec
|
147
147
|
template<>
|
148
148
|
class iso_format_base<wchar_t> {
|
149
149
|
public:
|
150
|
-
//! Describe month format -- its an integer in
|
150
|
+
//! Describe month format -- its an integer in ISO 8601 format
|
151
151
|
static month_format_spec month_format()
|
152
152
|
{
|
153
153
|
return month_as_integer;
|
@@ -169,17 +169,17 @@ public:
|
|
169
169
|
return L"-infinity";
|
170
170
|
}
|
171
171
|
|
172
|
-
//! ISO char for a year -- used in durations
|
172
|
+
//! ISO 8601 char for a year -- used in durations
|
173
173
|
static wchar_t year_sep_char()
|
174
174
|
{
|
175
175
|
return 'Y';
|
176
176
|
}
|
177
|
-
//! ISO char for a month
|
177
|
+
//! ISO 8601 char for a month
|
178
178
|
static wchar_t month_sep_char()
|
179
179
|
{
|
180
180
|
return '-';
|
181
181
|
}
|
182
|
-
//! ISO char for a day
|
182
|
+
//! ISO 8601 char for a day
|
183
183
|
static wchar_t day_sep_char()
|
184
184
|
{
|
185
185
|
return '-';
|
@@ -199,7 +199,7 @@ public:
|
|
199
199
|
{
|
200
200
|
return ':';
|
201
201
|
}
|
202
|
-
//! ISO char for a period
|
202
|
+
//! ISO 8601 char for a period
|
203
203
|
static wchar_t period_start_char()
|
204
204
|
{
|
205
205
|
return 'P';
|
@@ -272,7 +272,7 @@ public:
|
|
272
272
|
|
273
273
|
#endif // BOOST_NO_STD_WSTRING
|
274
274
|
|
275
|
-
//! Format description for
|
275
|
+
//! Format description for ISO 8601 normal YYYYMMDD
|
276
276
|
template<class charT>
|
277
277
|
class iso_format : public iso_format_base<charT> {
|
278
278
|
public:
|
@@ -315,7 +315,7 @@ namespace local_time {
|
|
315
315
|
|
316
316
|
//! Returns name of associated time zone or "Coordinated Universal Time".
|
317
317
|
/*! Optional bool parameter will return time zone as an offset
|
318
|
-
* (ie "+07:00" extended
|
318
|
+
* (ie "+07:00" extended ISO 8601 format). Empty string is returned for
|
319
319
|
* classes that do not use a time_zone */
|
320
320
|
std::string zone_name(bool as_offset=false) const
|
321
321
|
{
|
@@ -349,7 +349,7 @@ namespace local_time {
|
|
349
349
|
}
|
350
350
|
//! Returns abbreviation of associated time zone or "UTC".
|
351
351
|
/*! Optional bool parameter will return time zone as an offset
|
352
|
-
* (ie "+0700"
|
352
|
+
* (ie "+0700" ISO 8601 format). Empty string is returned for classes
|
353
353
|
* that do not use a time_zone */
|
354
354
|
std::string zone_abbrev(bool as_offset=false) const
|
355
355
|
{
|
@@ -157,7 +157,7 @@ namespace posix_time {
|
|
157
157
|
}// else
|
158
158
|
return ss.str();
|
159
159
|
}
|
160
|
-
//! Time duration in
|
160
|
+
//! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456
|
161
161
|
/*!\ingroup time_format
|
162
162
|
*/
|
163
163
|
inline std::string to_iso_string(time_duration td){
|
@@ -215,7 +215,7 @@ namespace posix_time {
|
|
215
215
|
return ts;
|
216
216
|
}
|
217
217
|
}
|
218
|
-
//! Convert
|
218
|
+
//! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator
|
219
219
|
/*!\ingroup time_format
|
220
220
|
*/
|
221
221
|
inline std::string to_iso_string(ptime t){
|
@@ -251,7 +251,7 @@ namespace posix_time {
|
|
251
251
|
inline std::wstring to_simple_wstring(time_duration td) {
|
252
252
|
return to_simple_string_type<wchar_t>(td);
|
253
253
|
}
|
254
|
-
//! Time duration in
|
254
|
+
//! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456
|
255
255
|
/*!\ingroup time_format
|
256
256
|
*/
|
257
257
|
inline std::wstring to_iso_wstring(time_duration td){
|
@@ -266,7 +266,7 @@ namespace posix_time {
|
|
266
266
|
inline std::wstring to_simple_wstring(time_period tp){
|
267
267
|
return to_simple_string_type<wchar_t>(tp);
|
268
268
|
}
|
269
|
-
//! Convert
|
269
|
+
//! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator
|
270
270
|
/*!\ingroup time_format
|
271
271
|
*/
|
272
272
|
inline std::wstring to_iso_wstring(ptime t){
|
data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp
CHANGED
@@ -82,7 +82,7 @@ namespace posix_time {
|
|
82
82
|
return ss.str();
|
83
83
|
}
|
84
84
|
|
85
|
-
//! Time duration in
|
85
|
+
//! Time duration in ISO 8601 format -hhmmss.fffffff. Example: 10:09:03.0123456
|
86
86
|
/*!\ingroup time_format
|
87
87
|
*/
|
88
88
|
inline
|
@@ -173,7 +173,7 @@ namespace posix_time {
|
|
173
173
|
return std::string("[" + d1 + "/" + d2 +"]");
|
174
174
|
}
|
175
175
|
|
176
|
-
//! Convert
|
176
|
+
//! Convert ISO 8601 short form YYYYMMDDTHHMMSS where T is the date-time separator
|
177
177
|
/*!\ingroup time_format
|
178
178
|
*/
|
179
179
|
inline
|
@@ -97,7 +97,7 @@ namespace boost { namespace date_time {
|
|
97
97
|
//! match() should be called and return value checked.
|
98
98
|
//! \param[in] str the string to check
|
99
99
|
//! \returns false if it is definitely not a special value
|
100
|
-
static bool
|
100
|
+
static bool should_call_match(const string_type& str)
|
101
101
|
{
|
102
102
|
if (!str.empty()) {
|
103
103
|
switch (str[0]) {
|
@@ -481,7 +481,7 @@ namespace date_time {
|
|
481
481
|
boost::algorithm::replace_all(format, unrestricted_hours_format, hours_str);
|
482
482
|
}
|
483
483
|
// We still have to process restricted hours format specifier. In order to
|
484
|
-
// support parseability of durations in ISO format (%H%M%S), we'll have to
|
484
|
+
// support parseability of durations in ISO 8601 format (%H%M%S), we'll have to
|
485
485
|
// restrict the stringified hours length to 2 characters.
|
486
486
|
if (format.find(hours_format) != string_type::npos) {
|
487
487
|
if (hours_str.empty())
|
@@ -183,7 +183,7 @@ namespace date_time {
|
|
183
183
|
|
184
184
|
}
|
185
185
|
|
186
|
-
//! Parse time duration part of an
|
186
|
+
//! Parse time duration part of an ISO 8601 time of form: [-]hhmmss[.fff...] (eg: 120259.123 is 12 hours, 2 min, 59 seconds, 123000 microseconds)
|
187
187
|
template<class time_duration>
|
188
188
|
inline
|
189
189
|
time_duration
|
@@ -309,7 +309,7 @@ namespace date_time {
|
|
309
309
|
// then from_iso_string should be able to read a special value string
|
310
310
|
// the special_values_parser is expensive to set up and not thread-safe
|
311
311
|
// so it cannot be static, so we need to be careful about when we use it
|
312
|
-
if (svp_type::
|
312
|
+
if (svp_type::should_call_match(s)) {
|
313
313
|
typedef typename svp_type::stringstream_type ss_type;
|
314
314
|
typedef typename svp_type::stream_itr_type itr_type;
|
315
315
|
typedef typename svp_type::match_results mr_type;
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_BASES_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_BASES_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2020, 2021 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#include <boost/describe/modifiers.hpp>
|
9
|
+
#include <boost/describe/detail/void_t.hpp>
|
10
|
+
#include <boost/describe/detail/config.hpp>
|
11
|
+
|
12
|
+
#if defined(BOOST_DESCRIBE_CXX11)
|
13
|
+
|
14
|
+
#include <boost/mp11/algorithm.hpp>
|
15
|
+
#include <type_traits>
|
16
|
+
|
17
|
+
namespace boost
|
18
|
+
{
|
19
|
+
namespace describe
|
20
|
+
{
|
21
|
+
namespace detail
|
22
|
+
{
|
23
|
+
|
24
|
+
template<class T> using _describe_bases = decltype( boost_base_descriptor_fn( static_cast<T**>(0) ) );
|
25
|
+
|
26
|
+
template<unsigned M> struct base_filter
|
27
|
+
{
|
28
|
+
template<class T> using fn = mp11::mp_bool< ( M & mod_any_access & T::modifiers ) != 0 >;
|
29
|
+
};
|
30
|
+
|
31
|
+
template<class T, class En = void> struct has_describe_bases: std::false_type
|
32
|
+
{
|
33
|
+
};
|
34
|
+
|
35
|
+
template<class T> struct has_describe_bases<T, void_t<_describe_bases<T>>>: std::true_type
|
36
|
+
{
|
37
|
+
};
|
38
|
+
|
39
|
+
} // namespace detail
|
40
|
+
|
41
|
+
template<class T, unsigned M> using describe_bases = mp11::mp_copy_if_q<detail::_describe_bases<T>, detail::base_filter<M>>;
|
42
|
+
|
43
|
+
template<class T> using has_describe_bases = detail::has_describe_bases<T>;
|
44
|
+
|
45
|
+
} // namespace describe
|
46
|
+
} // namespace boost
|
47
|
+
|
48
|
+
#endif // !defined(BOOST_DESCRIBE_CXX11)
|
49
|
+
|
50
|
+
#endif // #ifndef BOOST_DESCRIBE_BASES_HPP_INCLUDED
|
@@ -0,0 +1,40 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2021 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#if __cplusplus >= 201402L
|
9
|
+
|
10
|
+
# define BOOST_DESCRIBE_CXX14
|
11
|
+
# define BOOST_DESCRIBE_CXX11
|
12
|
+
|
13
|
+
#elif defined(_MSC_VER) && _MSC_VER >= 1900
|
14
|
+
|
15
|
+
# define BOOST_DESCRIBE_CXX14
|
16
|
+
# define BOOST_DESCRIBE_CXX11
|
17
|
+
|
18
|
+
#elif __cplusplus >= 201103L
|
19
|
+
|
20
|
+
# define BOOST_DESCRIBE_CXX11
|
21
|
+
|
22
|
+
# if defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 7
|
23
|
+
# undef BOOST_DESCRIBE_CXX11
|
24
|
+
# endif
|
25
|
+
|
26
|
+
#endif
|
27
|
+
|
28
|
+
#if defined(BOOST_DESCRIBE_CXX11)
|
29
|
+
# define BOOST_DESCRIBE_CONSTEXPR_OR_CONST constexpr
|
30
|
+
#else
|
31
|
+
# define BOOST_DESCRIBE_CONSTEXPR_OR_CONST const
|
32
|
+
#endif
|
33
|
+
|
34
|
+
#if defined(__clang__)
|
35
|
+
# define BOOST_DESCRIBE_MAYBE_UNUSED __attribute__((unused))
|
36
|
+
#else
|
37
|
+
# define BOOST_DESCRIBE_MAYBE_UNUSED
|
38
|
+
#endif
|
39
|
+
|
40
|
+
#endif // #ifndef BOOST_DESCRIBE_DETAIL_CONFIG_HPP_INCLUDED
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2021 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#include <boost/describe/detail/config.hpp>
|
9
|
+
|
10
|
+
#if defined(BOOST_DESCRIBE_CXX11)
|
11
|
+
|
12
|
+
namespace boost
|
13
|
+
{
|
14
|
+
namespace describe
|
15
|
+
{
|
16
|
+
namespace detail
|
17
|
+
{
|
18
|
+
|
19
|
+
constexpr bool cx_streq( char const * s1, char const * s2 )
|
20
|
+
{
|
21
|
+
return s1[0] == s2[0] && ( s1[0] == 0 || cx_streq( s1 + 1, s2 + 1 ) );
|
22
|
+
}
|
23
|
+
|
24
|
+
} // namespace detail
|
25
|
+
} // namespace describe
|
26
|
+
} // namespace boost
|
27
|
+
|
28
|
+
#endif // defined(BOOST_DESCRIBE_CXX11)
|
29
|
+
|
30
|
+
#endif // #ifndef BOOST_DESCRIBE_DETAIL_CX_STREQ_HPP_INCLUDED
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2021 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#include <boost/describe/detail/config.hpp>
|
9
|
+
|
10
|
+
#if defined(BOOST_DESCRIBE_CXX11)
|
11
|
+
|
12
|
+
namespace boost
|
13
|
+
{
|
14
|
+
namespace describe
|
15
|
+
{
|
16
|
+
namespace detail
|
17
|
+
{
|
18
|
+
|
19
|
+
template<class...> struct make_void
|
20
|
+
{
|
21
|
+
using type = void;
|
22
|
+
};
|
23
|
+
|
24
|
+
template<class... T> using void_t = typename make_void<T...>::type;
|
25
|
+
|
26
|
+
} // namespace detail
|
27
|
+
} // namespace describe
|
28
|
+
} // namespace boost
|
29
|
+
|
30
|
+
#endif // defined(BOOST_DESCRIBE_CXX11)
|
31
|
+
|
32
|
+
#endif // #ifndef BOOST_DESCRIBE_DETAIL_VOID_T_HPP_INCLUDED
|
@@ -0,0 +1,159 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2020 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#include <boost/describe/modifiers.hpp>
|
9
|
+
#include <boost/describe/bases.hpp>
|
10
|
+
#include <boost/describe/detail/void_t.hpp>
|
11
|
+
#include <boost/describe/detail/cx_streq.hpp>
|
12
|
+
#include <boost/describe/detail/config.hpp>
|
13
|
+
|
14
|
+
#if defined(BOOST_DESCRIBE_CXX11)
|
15
|
+
|
16
|
+
#include <boost/mp11/algorithm.hpp>
|
17
|
+
#include <boost/mp11/utility.hpp>
|
18
|
+
#include <boost/mp11/integral.hpp>
|
19
|
+
#include <boost/mp11/list.hpp>
|
20
|
+
#include <boost/mp11/bind.hpp>
|
21
|
+
#include <type_traits>
|
22
|
+
|
23
|
+
namespace boost
|
24
|
+
{
|
25
|
+
namespace describe
|
26
|
+
{
|
27
|
+
namespace detail
|
28
|
+
{
|
29
|
+
|
30
|
+
// _describe_members<T>
|
31
|
+
|
32
|
+
template<class T> using _describe_public_members = decltype( boost_public_member_descriptor_fn( static_cast<T**>(0) ) );
|
33
|
+
template<class T> using _describe_protected_members = decltype( boost_protected_member_descriptor_fn( static_cast<T**>(0) ) );
|
34
|
+
template<class T> using _describe_private_members = decltype( boost_private_member_descriptor_fn( static_cast<T**>(0) ) );
|
35
|
+
|
36
|
+
template<class T> using _describe_members = mp11::mp_append<_describe_public_members<T>, _describe_protected_members<T>, _describe_private_members<T>>;
|
37
|
+
|
38
|
+
// describe_inherited_members<T>
|
39
|
+
|
40
|
+
// T: type
|
41
|
+
// V: list of virtual bases visited so far
|
42
|
+
template<class T, class V> struct describe_inherited_members_impl;
|
43
|
+
template<class T, class V> using describe_inherited_members = typename describe_inherited_members_impl<T, V>::type;
|
44
|
+
|
45
|
+
// L: list of base class descriptors
|
46
|
+
// T: derived type
|
47
|
+
// V: list of virtual bases visited so far
|
48
|
+
template<class L, class T, class V> struct describe_inherited_members2_impl;
|
49
|
+
template<class L, class T, class V> using describe_inherited_members2 = typename describe_inherited_members2_impl<L, T, V>::type;
|
50
|
+
|
51
|
+
template<class T, class V> struct describe_inherited_members_impl
|
52
|
+
{
|
53
|
+
using R1 = describe_inherited_members2<describe_bases<T, mod_any_access>, T, V>;
|
54
|
+
using R2 = _describe_members<T>;
|
55
|
+
|
56
|
+
using type = mp11::mp_append<R1, R2>;
|
57
|
+
};
|
58
|
+
|
59
|
+
template<template<class...> class L, class T, class V> struct describe_inherited_members2_impl<L<>, T, V>
|
60
|
+
{
|
61
|
+
using type = L<>;
|
62
|
+
};
|
63
|
+
|
64
|
+
template<class D1, class D2> using name_matches = mp11::mp_bool< cx_streq( D1::name, D2::name ) >;
|
65
|
+
|
66
|
+
template<class D, class L> using name_is_hidden = mp11::mp_any_of_q<L, mp11::mp_bind_front<name_matches, D>>;
|
67
|
+
|
68
|
+
constexpr unsigned cx_max( unsigned m1, unsigned m2 )
|
69
|
+
{
|
70
|
+
return m1 > m2? m1: m2;
|
71
|
+
}
|
72
|
+
|
73
|
+
template<class T, unsigned Bm> struct update_modifiers
|
74
|
+
{
|
75
|
+
template<class D> struct fn
|
76
|
+
{
|
77
|
+
using L = _describe_members<T>;
|
78
|
+
static constexpr unsigned hidden = name_is_hidden<D, L>::value? mod_hidden: 0;
|
79
|
+
|
80
|
+
static constexpr unsigned mods = D::modifiers;
|
81
|
+
static constexpr unsigned access = cx_max( mods & mod_any_access, Bm & mod_any_access );
|
82
|
+
|
83
|
+
static constexpr decltype(D::pointer) pointer = D::pointer;
|
84
|
+
static constexpr decltype(D::name) name = D::name;
|
85
|
+
static constexpr unsigned modifiers = ( mods & ~mod_any_access ) | access | mod_inherited | hidden;
|
86
|
+
};
|
87
|
+
};
|
88
|
+
|
89
|
+
template<class T, unsigned Bm> template<class D> constexpr decltype(D::pointer) update_modifiers<T, Bm>::fn<D>::pointer;
|
90
|
+
template<class T, unsigned Bm> template<class D> constexpr decltype(D::name) update_modifiers<T, Bm>::fn<D>::name;
|
91
|
+
template<class T, unsigned Bm> template<class D> constexpr unsigned update_modifiers<T, Bm>::fn<D>::modifiers;
|
92
|
+
|
93
|
+
template<class D> struct gather_virtual_bases_impl;
|
94
|
+
template<class D> using gather_virtual_bases = typename gather_virtual_bases_impl<D>::type;
|
95
|
+
|
96
|
+
template<class D> struct gather_virtual_bases_impl
|
97
|
+
{
|
98
|
+
using B = typename D::type;
|
99
|
+
static constexpr unsigned M = D::modifiers;
|
100
|
+
|
101
|
+
using R1 = mp11::mp_transform<gather_virtual_bases, describe_bases<B, mod_any_access>>;
|
102
|
+
using R2 = mp11::mp_apply<mp11::mp_append, R1>;
|
103
|
+
|
104
|
+
using type = mp11::mp_if_c<(M & mod_virtual) != 0, mp11::mp_push_front<R2, B>, R2>;
|
105
|
+
};
|
106
|
+
|
107
|
+
template<template<class...> class L, class D1, class... D, class T, class V> struct describe_inherited_members2_impl<L<D1, D...>, T, V>
|
108
|
+
{
|
109
|
+
using B = typename D1::type;
|
110
|
+
static constexpr unsigned M = D1::modifiers;
|
111
|
+
|
112
|
+
using R1 = mp11::mp_if_c<(M & mod_virtual) && mp11::mp_contains<V, B>::value, L<>, describe_inherited_members<B, V>>;
|
113
|
+
|
114
|
+
using R2 = mp11::mp_transform_q<update_modifiers<T, M>, R1>;
|
115
|
+
|
116
|
+
using V2 = mp11::mp_append<V, gather_virtual_bases<D1>>;
|
117
|
+
using R3 = describe_inherited_members2<L<D...>, T, V2>;
|
118
|
+
|
119
|
+
using type = mp11::mp_append<R2, R3>;
|
120
|
+
};
|
121
|
+
|
122
|
+
// describe_members<T, M>
|
123
|
+
|
124
|
+
template<class T, unsigned M> using describe_members = mp11::mp_eval_if_c<(M & mod_inherited) == 0, _describe_members<T>, describe_inherited_members, T, mp11::mp_list<>>;
|
125
|
+
|
126
|
+
// member_filter
|
127
|
+
|
128
|
+
template<unsigned M> struct member_filter
|
129
|
+
{
|
130
|
+
template<class T> using fn = mp11::mp_bool<
|
131
|
+
(M & mod_any_access & T::modifiers) != 0 &&
|
132
|
+
( (M & mod_any_member) != 0 || (M & mod_static) == (T::modifiers & mod_static) ) &&
|
133
|
+
( (M & mod_any_member) != 0 || (M & mod_function) == (T::modifiers & mod_function) ) &&
|
134
|
+
(M & mod_hidden) >= (T::modifiers & mod_hidden)
|
135
|
+
>;
|
136
|
+
};
|
137
|
+
|
138
|
+
// has_describe_members
|
139
|
+
|
140
|
+
template<class T, class En = void> struct has_describe_members: std::false_type
|
141
|
+
{
|
142
|
+
};
|
143
|
+
|
144
|
+
template<class T> struct has_describe_members<T, void_t<_describe_members<T>>>: std::true_type
|
145
|
+
{
|
146
|
+
};
|
147
|
+
|
148
|
+
} // namespace detail
|
149
|
+
|
150
|
+
template<class T, unsigned M> using describe_members = mp11::mp_copy_if_q<detail::describe_members<T, M>, detail::member_filter<M>>;
|
151
|
+
|
152
|
+
template<class T> using has_describe_members = detail::has_describe_members<T>;
|
153
|
+
|
154
|
+
} // namespace describe
|
155
|
+
} // namespace boost
|
156
|
+
|
157
|
+
#endif // !defined(BOOST_DESCRIBE_CXX11)
|
158
|
+
|
159
|
+
#endif // #ifndef BOOST_DESCRIBE_DATA_MEMBERS_HPP_INCLUDED
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#ifndef BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED
|
2
|
+
#define BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED
|
3
|
+
|
4
|
+
// Copyright 2020 Peter Dimov
|
5
|
+
// Distributed under the Boost Software License, Version 1.0.
|
6
|
+
// https://www.boost.org/LICENSE_1_0.txt
|
7
|
+
|
8
|
+
#include <boost/describe/detail/config.hpp>
|
9
|
+
|
10
|
+
namespace boost
|
11
|
+
{
|
12
|
+
namespace describe
|
13
|
+
{
|
14
|
+
|
15
|
+
enum modifiers
|
16
|
+
{
|
17
|
+
mod_public = 1,
|
18
|
+
mod_protected = 2,
|
19
|
+
mod_private = 4,
|
20
|
+
mod_virtual = 8,
|
21
|
+
mod_static = 16,
|
22
|
+
mod_function = 32,
|
23
|
+
mod_any_member = 64,
|
24
|
+
mod_inherited = 128,
|
25
|
+
mod_hidden = 256
|
26
|
+
};
|
27
|
+
|
28
|
+
BOOST_DESCRIBE_CONSTEXPR_OR_CONST modifiers mod_any_access = static_cast<modifiers>( mod_public | mod_protected | mod_private );
|
29
|
+
|
30
|
+
} // namespace describe
|
31
|
+
} // namespace boost
|
32
|
+
|
33
|
+
#endif // #ifndef BOOST_DESCRIBE_MODIFIERS_HPP_INCLUDED
|