passenger 6.0.16 → 6.0.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (286) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +22 -1
  3. data/build/integration_tests.rb +6 -6
  4. data/build/ruby_tests.rb +1 -1
  5. data/build/test_basics.rb +0 -1
  6. data/src/agent/Core/Config.h +1 -1
  7. data/src/agent/Core/Controller/Config.h +1 -1
  8. data/src/agent/Core/SpawningKit/PipeWatcher.h +18 -3
  9. data/src/agent/Watchdog/Config.h +1 -1
  10. data/src/cxx_supportlib/Constants.h +1 -1
  11. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +1 -1
  12. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +1 -1
  13. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_executor.hpp +344 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/asio/any_completion_handler.hpp +686 -0
  15. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +56 -0
  16. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +81 -25
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +68 -8
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +46 -11
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +4 -4
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +1 -1
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +4 -4
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +2 -2
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +2 -2
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +3 -3
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +2 -2
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +3 -3
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +4 -4
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +2 -2
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +2 -2
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +13 -3
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +14 -3
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +13 -3
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +30 -305
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/consign.hpp +90 -0
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +17 -18
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +98 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/composed_work.hpp +330 -0
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +81 -15
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +4 -4
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +19 -11
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +37 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +3 -1
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +1 -1
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +10 -2
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +14 -1
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +18 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +1 -2
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +7 -3
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +4 -14
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +22 -3
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +447 -142
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +57 -8
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +51 -6
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +5 -0
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +41 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +5 -0
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +13 -2
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +13 -2
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +4 -0
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +9 -2
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +11 -1
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +52 -8
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +13 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +5 -0
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +39 -6
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +5 -0
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +39 -6
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +5 -0
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +5 -0
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +5 -0
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +5 -0
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +5 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +5 -0
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +5 -0
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +5 -0
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +6 -9
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +3 -3
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +3 -3
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +70 -0
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +146 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +35 -5
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +13 -3
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +7 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +180 -0
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_completion_handler.hpp +171 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +89 -66
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +66 -45
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +13 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_composed.hpp +1134 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +130 -106
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +377 -3
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +168 -29
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +149 -203
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_promise.hpp +68 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +256 -0
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +76 -80
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +40 -14
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +113 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_completion_executor.ipp +132 -0
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +12 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +12 -3
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +12 -3
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +25 -6
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +25 -6
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +34 -45
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +28 -6
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +204 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +33 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/deferred.hpp +13 -3
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +21 -9
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +33 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +12 -3
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +40 -9
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +27 -6
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +104 -24
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +12 -3
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +70 -15
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +1 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +25 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +38 -30
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +27 -6
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +0 -13
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +3 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +3 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +2 -2
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +17 -18
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +3 -1
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +13 -3
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +11 -7
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +0 -13
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +23 -18
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +2 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +2 -2
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +2 -2
  143. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +4 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/chrono/config.hpp +1 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +4 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/scan_keyword.hpp +4 -2
  148. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +2 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +3 -3
  150. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_put.hpp +5 -5
  151. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_units.hpp +2 -2
  152. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +2 -2
  153. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/utility/ios_base_state_ptr.hpp +7 -7
  154. data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +1 -1
  155. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +5 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +10 -3
  157. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +9 -3
  158. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +9 -3
  159. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +6 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +8 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +33 -0
  163. data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +9 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +29 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +13 -13
  169. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +80 -95
  170. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +10 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_end.hpp +3 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +738 -34
  173. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +38 -10
  174. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +1 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +2 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +3 -4
  177. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +1150 -1213
  178. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +104 -12
  180. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +1 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +11 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +31 -331
  183. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_mix.hpp +113 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_range.hpp +173 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_tuple.hpp +133 -0
  186. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +461 -566
  187. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +24 -24
  188. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_contiguous_range.hpp +91 -0
  189. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_described_class.hpp +38 -0
  190. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_range.hpp +73 -0
  191. data/src/cxx_supportlib/vendor-modified/boost/container_hash/is_unordered_range.hpp +39 -0
  192. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +32 -4
  193. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -0
  194. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -16
  195. data/src/cxx_supportlib/vendor-modified/boost/core/fclose_deleter.hpp +46 -0
  196. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters.hpp +3 -3
  198. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/formatters_limited.hpp +3 -3
  199. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +12 -13
  200. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +2 -2
  201. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +2 -2
  202. data/src/cxx_supportlib/vendor-modified/boost/date_time/iso_format.hpp +13 -13
  203. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_date_time.hpp +2 -2
  204. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters.hpp +4 -4
  205. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_formatters_limited.hpp +2 -2
  206. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +2 -2
  209. data/src/cxx_supportlib/vendor-modified/boost/describe/bases.hpp +50 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +40 -0
  211. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/cx_streq.hpp +30 -0
  212. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/void_t.hpp +32 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/describe/members.hpp +159 -0
  214. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +33 -0
  215. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +9 -9
  216. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +45 -45
  217. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +8 -8
  218. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +37 -38
  219. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +16 -0
  220. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +145 -90
  222. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +2 -0
  223. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +7 -7
  224. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +5 -5
  225. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +11 -9
  226. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +7 -7
  227. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +106 -25
  228. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +8 -5
  230. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +4 -2
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +2 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +8 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/mp11/bind.hpp +111 -0
  235. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/int_float_mixture.hpp +5 -5
  237. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/sign_mixture.hpp +5 -5
  238. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/udt_builtin_mixture.hpp +5 -5
  239. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +6 -2
  240. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +11 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +1 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +7 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +2 -2
  244. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +10 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +38 -43
  246. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +52 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +27 -27
  249. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +27 -27
  250. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +22 -8
  251. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +37 -7
  252. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa.hpp +1921 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +66 -82
  254. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +6 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/type_traits.hpp +109 -0
  256. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/xmx.hpp +75 -0
  257. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +45 -0
  258. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +732 -0
  259. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +49 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +586 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +49 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +166 -66
  263. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +145 -28
  264. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  265. data/src/cxx_supportlib/vendor-modified/websocketpp/websocketpp/common/md5.hpp +1 -1
  266. data/src/ruby_native_extension/extconf.rb +1 -1
  267. data/src/ruby_supportlib/phusion_passenger/platform_info/operating_system.rb +1 -1
  268. data/src/ruby_supportlib/phusion_passenger.rb +5 -5
  269. metadata +36 -19
  270. data/src/cxx_supportlib/vendor-modified/boost/align/align.hpp +0 -19
  271. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of.hpp +0 -54
  272. data/src/cxx_supportlib/vendor-modified/boost/align/alignment_of_forward.hpp +0 -20
  273. data/src/cxx_supportlib/vendor-modified/boost/align/detail/align_cxx11.hpp +0 -21
  274. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc.hpp +0 -52
  275. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of.hpp +0 -31
  276. data/src/cxx_supportlib/vendor-modified/boost/align/detail/alignment_of_cxx11.hpp +0 -23
  277. data/src/cxx_supportlib/vendor-modified/boost/align/detail/element_type.hpp +0 -91
  278. data/src/cxx_supportlib/vendor-modified/boost/align/detail/integral_constant.hpp +0 -53
  279. data/src/cxx_supportlib/vendor-modified/boost/align/detail/min_size.hpp +0 -26
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +0 -196
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +0 -709
  282. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/float_functions.hpp +0 -336
  283. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/hash_float.hpp +0 -271
  284. data/src/cxx_supportlib/vendor-modified/boost/container_hash/detail/limits.hpp +0 -62
  285. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -361
  286. data/src/cxx_supportlib/vendor-modified/boost/detail/container_fwd.hpp +0 -157
@@ -1,336 +0,0 @@
1
-
2
- // Copyright 2005-2009 Daniel James.
3
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
-
6
- #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP)
7
- #define BOOST_FUNCTIONAL_HASH_DETAIL_FLOAT_FUNCTIONS_HPP
8
-
9
- #include <boost/config.hpp>
10
- #if defined(BOOST_HAS_PRAGMA_ONCE)
11
- #pragma once
12
- #endif
13
-
14
- #include <boost/config/no_tr1/cmath.hpp>
15
-
16
- // Set BOOST_HASH_CONFORMANT_FLOATS to 1 for libraries known to have
17
- // sufficiently good floating point support to not require any
18
- // workarounds.
19
- //
20
- // When set to 0, the library tries to automatically
21
- // use the best available implementation. This normally works well, but
22
- // breaks when ambiguities are created by odd namespacing of the functions.
23
- //
24
- // Note that if this is set to 0, the library should still take full
25
- // advantage of the platform's floating point support.
26
-
27
- #if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
28
- # define BOOST_HASH_CONFORMANT_FLOATS 0
29
- #elif defined(__LIBCOMO__)
30
- # define BOOST_HASH_CONFORMANT_FLOATS 0
31
- #elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
32
- // Rogue Wave library:
33
- # define BOOST_HASH_CONFORMANT_FLOATS 0
34
- #elif defined(_LIBCPP_VERSION)
35
- // libc++
36
- # define BOOST_HASH_CONFORMANT_FLOATS 1
37
- #elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
38
- // GNU libstdc++ 3
39
- # if defined(__GNUC__) && __GNUC__ >= 4
40
- # define BOOST_HASH_CONFORMANT_FLOATS 1
41
- # else
42
- # define BOOST_HASH_CONFORMANT_FLOATS 0
43
- # endif
44
- #elif defined(__STL_CONFIG_H)
45
- // generic SGI STL
46
- # define BOOST_HASH_CONFORMANT_FLOATS 0
47
- #elif defined(__MSL_CPP__)
48
- // MSL standard lib:
49
- # define BOOST_HASH_CONFORMANT_FLOATS 0
50
- #elif defined(__IBMCPP__)
51
- // VACPP std lib (probably conformant for much earlier version).
52
- # if __IBMCPP__ >= 1210
53
- # define BOOST_HASH_CONFORMANT_FLOATS 1
54
- # else
55
- # define BOOST_HASH_CONFORMANT_FLOATS 0
56
- # endif
57
- #elif defined(MSIPL_COMPILE_H)
58
- // Modena C++ standard library
59
- # define BOOST_HASH_CONFORMANT_FLOATS 0
60
- #elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
61
- // Dinkumware Library (this has to appear after any possible replacement libraries):
62
- # if _CPPLIB_VER >= 405
63
- # define BOOST_HASH_CONFORMANT_FLOATS 1
64
- # else
65
- # define BOOST_HASH_CONFORMANT_FLOATS 0
66
- # endif
67
- #else
68
- # define BOOST_HASH_CONFORMANT_FLOATS 0
69
- #endif
70
-
71
- #if BOOST_HASH_CONFORMANT_FLOATS
72
-
73
- // The standard library is known to be compliant, so don't use the
74
- // configuration mechanism.
75
-
76
- namespace boost {
77
- namespace hash_detail {
78
- template <typename Float>
79
- struct call_ldexp {
80
- typedef Float float_type;
81
- inline Float operator()(Float x, int y) const {
82
- return std::ldexp(x, y);
83
- }
84
- };
85
-
86
- template <typename Float>
87
- struct call_frexp {
88
- typedef Float float_type;
89
- inline Float operator()(Float x, int* y) const {
90
- return std::frexp(x, y);
91
- }
92
- };
93
-
94
- template <typename Float>
95
- struct select_hash_type
96
- {
97
- typedef Float type;
98
- };
99
- }
100
- }
101
-
102
- #else // BOOST_HASH_CONFORMANT_FLOATS == 0
103
-
104
- // The C++ standard requires that the C float functions are overloarded
105
- // for float, double and long double in the std namespace, but some of the older
106
- // library implementations don't support this. On some that don't, the C99
107
- // float functions (frexpf, frexpl, etc.) are available.
108
- //
109
- // The following tries to automatically detect which are available.
110
-
111
- namespace boost {
112
- namespace hash_detail {
113
-
114
- // Returned by dummy versions of the float functions.
115
-
116
- struct not_found {
117
- // Implicitly convertible to float and long double in order to avoid
118
- // a compile error when the dummy float functions are used.
119
-
120
- inline operator float() const { return 0; }
121
- inline operator long double() const { return 0; }
122
- };
123
-
124
- // A type for detecting the return type of functions.
125
-
126
- template <typename T> struct is;
127
- template <> struct is<float> { char x[10]; };
128
- template <> struct is<double> { char x[20]; };
129
- template <> struct is<long double> { char x[30]; };
130
- template <> struct is<boost::hash_detail::not_found> { char x[40]; };
131
-
132
- // Used to convert the return type of a function to a type for sizeof.
133
-
134
- template <typename T> is<T> float_type(T);
135
-
136
- // call_ldexp
137
- //
138
- // This will get specialized for float and long double
139
-
140
- template <typename Float> struct call_ldexp
141
- {
142
- typedef double float_type;
143
-
144
- inline double operator()(double a, int b) const
145
- {
146
- using namespace std;
147
- return ldexp(a, b);
148
- }
149
- };
150
-
151
- // call_frexp
152
- //
153
- // This will get specialized for float and long double
154
-
155
- template <typename Float> struct call_frexp
156
- {
157
- typedef double float_type;
158
-
159
- inline double operator()(double a, int* b) const
160
- {
161
- using namespace std;
162
- return frexp(a, b);
163
- }
164
- };
165
- }
166
- }
167
-
168
- // A namespace for dummy functions to detect when the actual function we want
169
- // isn't available. ldexpl, ldexpf etc. might be added tby the macros below.
170
- //
171
- // AFAICT these have to be outside of the boost namespace, as if they're in
172
- // the boost namespace they'll always be preferable to any other function
173
- // (since the arguments are built in types, ADL can't be used).
174
-
175
- namespace boost_hash_detect_float_functions {
176
- template <class Float> boost::hash_detail::not_found ldexp(Float, int);
177
- template <class Float> boost::hash_detail::not_found frexp(Float, int*);
178
- }
179
-
180
- // Macros for generating specializations of call_ldexp and call_frexp.
181
- //
182
- // check_cpp and check_c99 check if the C++ or C99 functions are available.
183
- //
184
- // Then the call_* functions select an appropriate implementation.
185
- //
186
- // I used c99_func in a few places just to get a unique name.
187
- //
188
- // Important: when using 'using namespace' at namespace level, include as
189
- // little as possible in that namespace, as Visual C++ has an odd bug which
190
- // can cause the namespace to be imported at the global level. This seems to
191
- // happen mainly when there's a template in the same namesapce.
192
-
193
- #define BOOST_HASH_CALL_FLOAT_FUNC(cpp_func, c99_func, type1, type2) \
194
- namespace boost_hash_detect_float_functions { \
195
- template <class Float> \
196
- boost::hash_detail::not_found c99_func(Float, type2); \
197
- } \
198
- \
199
- namespace boost { \
200
- namespace hash_detail { \
201
- namespace c99_func##_detect { \
202
- using namespace std; \
203
- using namespace boost_hash_detect_float_functions; \
204
- \
205
- struct check { \
206
- static type1 x; \
207
- static type2 y; \
208
- BOOST_STATIC_CONSTANT(bool, cpp = \
209
- sizeof(float_type(cpp_func(x,y))) \
210
- == sizeof(is<type1>)); \
211
- BOOST_STATIC_CONSTANT(bool, c99 = \
212
- sizeof(float_type(c99_func(x,y))) \
213
- == sizeof(is<type1>)); \
214
- }; \
215
- } \
216
- \
217
- template <bool x> \
218
- struct call_c99_##c99_func : \
219
- boost::hash_detail::call_##cpp_func<double> {}; \
220
- \
221
- template <> \
222
- struct call_c99_##c99_func<true> { \
223
- typedef type1 float_type; \
224
- \
225
- template <typename T> \
226
- inline type1 operator()(type1 a, T b) const \
227
- { \
228
- using namespace std; \
229
- return c99_func(a, b); \
230
- } \
231
- }; \
232
- \
233
- template <bool x> \
234
- struct call_cpp_##c99_func : \
235
- call_c99_##c99_func< \
236
- ::boost::hash_detail::c99_func##_detect::check::c99 \
237
- > {}; \
238
- \
239
- template <> \
240
- struct call_cpp_##c99_func<true> { \
241
- typedef type1 float_type; \
242
- \
243
- template <typename T> \
244
- inline type1 operator()(type1 a, T b) const \
245
- { \
246
- using namespace std; \
247
- return cpp_func(a, b); \
248
- } \
249
- }; \
250
- \
251
- template <> \
252
- struct call_##cpp_func<type1> : \
253
- call_cpp_##c99_func< \
254
- ::boost::hash_detail::c99_func##_detect::check::cpp \
255
- > {}; \
256
- } \
257
- }
258
-
259
- #define BOOST_HASH_CALL_FLOAT_MACRO(cpp_func, c99_func, type1, type2) \
260
- namespace boost { \
261
- namespace hash_detail { \
262
- \
263
- template <> \
264
- struct call_##cpp_func<type1> { \
265
- typedef type1 float_type; \
266
- inline type1 operator()(type1 x, type2 y) const { \
267
- return c99_func(x, y); \
268
- } \
269
- }; \
270
- } \
271
- }
272
-
273
- #if defined(ldexpf)
274
- BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpf, float, int)
275
- #else
276
- BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpf, float, int)
277
- #endif
278
-
279
- #if defined(ldexpl)
280
- BOOST_HASH_CALL_FLOAT_MACRO(ldexp, ldexpl, long double, int)
281
- #else
282
- BOOST_HASH_CALL_FLOAT_FUNC(ldexp, ldexpl, long double, int)
283
- #endif
284
-
285
- #if defined(frexpf)
286
- BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpf, float, int*)
287
- #else
288
- BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpf, float, int*)
289
- #endif
290
-
291
- #if defined(frexpl)
292
- BOOST_HASH_CALL_FLOAT_MACRO(frexp, frexpl, long double, int*)
293
- #else
294
- BOOST_HASH_CALL_FLOAT_FUNC(frexp, frexpl, long double, int*)
295
- #endif
296
-
297
- #undef BOOST_HASH_CALL_FLOAT_MACRO
298
- #undef BOOST_HASH_CALL_FLOAT_FUNC
299
-
300
-
301
- namespace boost
302
- {
303
- namespace hash_detail
304
- {
305
- template <typename Float1, typename Float2>
306
- struct select_hash_type_impl {
307
- typedef double type;
308
- };
309
-
310
- template <>
311
- struct select_hash_type_impl<float, float> {
312
- typedef float type;
313
- };
314
-
315
- template <>
316
- struct select_hash_type_impl<long double, long double> {
317
- typedef long double type;
318
- };
319
-
320
-
321
- // select_hash_type
322
- //
323
- // If there is support for a particular floating point type, use that
324
- // otherwise use double (there's always support for double).
325
-
326
- template <typename Float>
327
- struct select_hash_type : select_hash_type_impl<
328
- BOOST_DEDUCED_TYPENAME call_ldexp<Float>::float_type,
329
- BOOST_DEDUCED_TYPENAME call_frexp<Float>::float_type
330
- > {};
331
- }
332
- }
333
-
334
- #endif // BOOST_HASH_CONFORMANT_FLOATS
335
-
336
- #endif
@@ -1,271 +0,0 @@
1
-
2
- // Copyright 2005-2012 Daniel James.
3
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
-
6
- #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER)
7
- #define BOOST_FUNCTIONAL_HASH_DETAIL_HASH_FLOAT_HEADER
8
-
9
- #include <boost/config.hpp>
10
- #if defined(BOOST_HAS_PRAGMA_ONCE)
11
- #pragma once
12
- #endif
13
-
14
- #include <boost/container_hash/detail/float_functions.hpp>
15
- #include <boost/container_hash/detail/limits.hpp>
16
- #include <boost/core/enable_if.hpp>
17
- #include <boost/integer/static_log2.hpp>
18
- #include <boost/cstdint.hpp>
19
- #include <boost/assert.hpp>
20
- #include <boost/limits.hpp>
21
- #include <cstring>
22
-
23
- #if defined(BOOST_MSVC)
24
- #pragma warning(push)
25
- #if BOOST_MSVC >= 1400
26
- #pragma warning(disable:6294) // Ill-defined for-loop: initial condition does
27
- // not satisfy test. Loop body not executed
28
- #endif
29
- #endif
30
-
31
- // Can we use fpclassify?
32
-
33
- // STLport
34
- #if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
35
- #define BOOST_HASH_USE_FPCLASSIFY 0
36
-
37
- // GNU libstdc++ 3
38
- #elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
39
- # if (defined(__USE_ISOC99) || defined(_GLIBCXX_USE_C99_MATH)) && \
40
- !(defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__))
41
- # define BOOST_HASH_USE_FPCLASSIFY 1
42
- # else
43
- # define BOOST_HASH_USE_FPCLASSIFY 0
44
- # endif
45
-
46
- // Everything else
47
- #else
48
- # define BOOST_HASH_USE_FPCLASSIFY 0
49
- #endif
50
-
51
- namespace boost
52
- {
53
- namespace hash_detail
54
- {
55
- inline void hash_float_combine(std::size_t& seed, std::size_t value)
56
- {
57
- seed ^= value + (seed<<6) + (seed>>2);
58
- }
59
-
60
- ////////////////////////////////////////////////////////////////////////
61
- // Binary hash function
62
- //
63
- // Only used for floats with known iec559 floats, and certain values in
64
- // numeric_limits
65
-
66
- inline std::size_t hash_binary(char* ptr, std::size_t length)
67
- {
68
- std::size_t seed = 0;
69
-
70
- if (length >= sizeof(std::size_t)) {
71
- std::memcpy(&seed, ptr, sizeof(std::size_t));
72
- length -= sizeof(std::size_t);
73
- ptr += sizeof(std::size_t);
74
-
75
- while(length >= sizeof(std::size_t)) {
76
- std::size_t buffer = 0;
77
- std::memcpy(&buffer, ptr, sizeof(std::size_t));
78
- hash_float_combine(seed, buffer);
79
- length -= sizeof(std::size_t);
80
- ptr += sizeof(std::size_t);
81
- }
82
- }
83
-
84
- if (length > 0) {
85
- std::size_t buffer = 0;
86
- std::memcpy(&buffer, ptr, length);
87
- hash_float_combine(seed, buffer);
88
- }
89
-
90
- return seed;
91
- }
92
-
93
- template <typename Float, unsigned digits, unsigned max_exponent>
94
- struct enable_binary_hash
95
- {
96
- BOOST_STATIC_CONSTANT(bool, value =
97
- std::numeric_limits<Float>::is_iec559 &&
98
- std::numeric_limits<Float>::digits == digits &&
99
- std::numeric_limits<Float>::radix == 2 &&
100
- std::numeric_limits<Float>::max_exponent == max_exponent);
101
- };
102
-
103
- template <typename Float>
104
- inline std::size_t float_hash_impl(Float v,
105
- BOOST_DEDUCED_TYPENAME boost::enable_if_c<
106
- enable_binary_hash<Float, 24, 128>::value,
107
- std::size_t>::type)
108
- {
109
- return hash_binary((char*) &v, 4);
110
- }
111
-
112
-
113
- template <typename Float>
114
- inline std::size_t float_hash_impl(Float v,
115
- BOOST_DEDUCED_TYPENAME boost::enable_if_c<
116
- enable_binary_hash<Float, 53, 1024>::value,
117
- std::size_t>::type)
118
- {
119
- return hash_binary((char*) &v, 8);
120
- }
121
-
122
- template <typename Float>
123
- inline std::size_t float_hash_impl(Float v,
124
- BOOST_DEDUCED_TYPENAME boost::enable_if_c<
125
- enable_binary_hash<Float, 64, 16384>::value,
126
- std::size_t>::type)
127
- {
128
- return hash_binary((char*) &v, 10);
129
- }
130
-
131
- template <typename Float>
132
- inline std::size_t float_hash_impl(Float v,
133
- BOOST_DEDUCED_TYPENAME boost::enable_if_c<
134
- enable_binary_hash<Float, 113, 16384>::value,
135
- std::size_t>::type)
136
- {
137
- return hash_binary((char*) &v, 16);
138
- }
139
-
140
- ////////////////////////////////////////////////////////////////////////
141
- // Portable hash function
142
- //
143
- // Used as a fallback when the binary hash function isn't supported.
144
-
145
- template <class T>
146
- inline std::size_t float_hash_impl2(T v)
147
- {
148
- boost::hash_detail::call_frexp<T> frexp;
149
- boost::hash_detail::call_ldexp<T> ldexp;
150
-
151
- int exp = 0;
152
-
153
- v = frexp(v, &exp);
154
-
155
- // A postive value is easier to hash, so combine the
156
- // sign with the exponent and use the absolute value.
157
- if(v < 0) {
158
- v = -v;
159
- exp += limits<T>::max_exponent -
160
- limits<T>::min_exponent;
161
- }
162
-
163
- v = ldexp(v, limits<std::size_t>::digits);
164
- std::size_t seed = static_cast<std::size_t>(v);
165
- v -= static_cast<T>(seed);
166
-
167
- // ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1;
168
- std::size_t const length
169
- = (limits<T>::digits *
170
- boost::static_log2<limits<T>::radix>::value
171
- + limits<std::size_t>::digits - 1)
172
- / limits<std::size_t>::digits;
173
-
174
- for(std::size_t i = 0; i != length; ++i)
175
- {
176
- v = ldexp(v, limits<std::size_t>::digits);
177
- std::size_t part = static_cast<std::size_t>(v);
178
- v -= static_cast<T>(part);
179
- hash_float_combine(seed, part);
180
- }
181
-
182
- hash_float_combine(seed, static_cast<std::size_t>(exp));
183
-
184
- return seed;
185
- }
186
-
187
- #if !defined(BOOST_HASH_DETAIL_TEST_WITHOUT_GENERIC)
188
- template <class T>
189
- inline std::size_t float_hash_impl(T v, ...)
190
- {
191
- typedef BOOST_DEDUCED_TYPENAME select_hash_type<T>::type type;
192
- return float_hash_impl2(static_cast<type>(v));
193
- }
194
- #endif
195
- }
196
- }
197
-
198
- #if BOOST_HASH_USE_FPCLASSIFY
199
-
200
- #include <boost/config/no_tr1/cmath.hpp>
201
-
202
- namespace boost
203
- {
204
- namespace hash_detail
205
- {
206
- template <class T>
207
- inline std::size_t float_hash_value(T v)
208
- {
209
- #if defined(fpclassify)
210
- switch (fpclassify(v))
211
- #elif BOOST_HASH_CONFORMANT_FLOATS
212
- switch (std::fpclassify(v))
213
- #else
214
- using namespace std;
215
- switch (fpclassify(v))
216
- #endif
217
- {
218
- case FP_ZERO:
219
- return 0;
220
- case FP_INFINITE:
221
- return (std::size_t)(v > 0 ? -1 : -2);
222
- case FP_NAN:
223
- return (std::size_t)(-3);
224
- case FP_NORMAL:
225
- case FP_SUBNORMAL:
226
- return float_hash_impl(v, 0);
227
- default:
228
- BOOST_ASSERT(0);
229
- return 0;
230
- }
231
- }
232
- }
233
- }
234
-
235
- #else // !BOOST_HASH_USE_FPCLASSIFY
236
-
237
- namespace boost
238
- {
239
- namespace hash_detail
240
- {
241
- template <class T>
242
- inline bool is_zero(T v)
243
- {
244
- #if !defined(__GNUC__) && !defined(__clang__)
245
- return v == 0;
246
- #else
247
- // GCC's '-Wfloat-equal' will complain about comparing
248
- // v to 0, but because it disables warnings for system
249
- // headers it won't complain if you use std::equal_to to
250
- // compare with 0. Resulting in this silliness:
251
- return std::equal_to<T>()(v, 0);
252
- #endif
253
- }
254
-
255
- template <class T>
256
- inline std::size_t float_hash_value(T v)
257
- {
258
- return boost::hash_detail::is_zero(v) ? 0 : float_hash_impl(v, 0);
259
- }
260
- }
261
- }
262
-
263
- #endif // BOOST_HASH_USE_FPCLASSIFY
264
-
265
- #undef BOOST_HASH_USE_FPCLASSIFY
266
-
267
- #if defined(BOOST_MSVC)
268
- #pragma warning(pop)
269
- #endif
270
-
271
- #endif
@@ -1,62 +0,0 @@
1
-
2
- // Copyright 2005-2009 Daniel James.
3
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
4
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
- //
6
- // On some platforms std::limits gives incorrect values for long double.
7
- // This tries to work around them.
8
-
9
- #if !defined(BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER)
10
- #define BOOST_FUNCTIONAL_HASH_DETAIL_LIMITS_HEADER
11
-
12
- #include <boost/config.hpp>
13
- #if defined(BOOST_HAS_PRAGMA_ONCE)
14
- #pragma once
15
- #endif
16
-
17
- #include <boost/limits.hpp>
18
-
19
- // On OpenBSD, numeric_limits is not reliable for long doubles, but
20
- // the macros defined in <float.h> are and support long double when STLport
21
- // doesn't.
22
-
23
- #if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
24
- #include <float.h>
25
- #endif
26
-
27
- namespace boost
28
- {
29
- namespace hash_detail
30
- {
31
- template <class T>
32
- struct limits : std::numeric_limits<T> {};
33
-
34
- #if defined(__OpenBSD__) || defined(_STLP_NO_LONG_DOUBLE)
35
- template <>
36
- struct limits<long double>
37
- : std::numeric_limits<long double>
38
- {
39
- static long double epsilon() {
40
- return LDBL_EPSILON;
41
- }
42
-
43
- static long double (max)() {
44
- return LDBL_MAX;
45
- }
46
-
47
- static long double (min)() {
48
- return LDBL_MIN;
49
- }
50
-
51
- BOOST_STATIC_CONSTANT(int, digits = LDBL_MANT_DIG);
52
- BOOST_STATIC_CONSTANT(int, max_exponent = LDBL_MAX_EXP);
53
- BOOST_STATIC_CONSTANT(int, min_exponent = LDBL_MIN_EXP);
54
- #if defined(_STLP_NO_LONG_DOUBLE)
55
- BOOST_STATIC_CONSTANT(int, radix = FLT_RADIX);
56
- #endif
57
- };
58
- #endif // __OpenBSD__
59
- }
60
- }
61
-
62
- #endif