passenger 6.0.7 → 6.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1573) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/README.md +2 -9
  5. data/build/common_library.rb +4 -4
  6. data/build/packaging.rb +4 -2
  7. data/build/support/cxx_dependency_map.rb +1 -0
  8. data/dev/copy_boost_headers +1 -1
  9. data/resources/release.txt +1 -0
  10. data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
  11. data/resources/templates/standalone/global.erb +4 -0
  12. data/src/agent/Core/AdminPanelConnector.h +1 -1
  13. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  15. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  16. data/src/agent/Core/ApplicationPool/Options.h +2 -2
  17. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  18. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  19. data/src/agent/Core/Config.h +2 -2
  20. data/src/agent/Core/Controller/Config.h +2 -2
  21. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -1
  23. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  24. data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
  25. data/src/agent/Core/SpawningKit/Spawner.h +1 -0
  26. data/src/agent/Core/TelemetryCollector.h +1 -1
  27. data/src/agent/Shared/ApiServerUtils.h +1 -1
  28. data/src/agent/Watchdog/Config.h +1 -1
  29. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  30. data/src/agent/Watchdog/WatchdogMain.cpp +1 -1
  31. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  32. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  33. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  34. data/src/cxx_supportlib/Constants.h +2 -2
  35. data/src/cxx_supportlib/FileTools/FileManip.cpp +10 -1
  36. data/src/cxx_supportlib/FileTools/FileManip.h +16 -0
  37. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  38. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  39. data/src/cxx_supportlib/SafeLibev.h +1 -1
  40. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  41. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  42. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +9 -12
  43. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +5 -1
  44. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  45. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +107 -5
  46. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +2 -2
  47. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +12 -1
  48. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +13 -3
  49. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -1
  50. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +6 -2
  51. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +13 -1
  52. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +6 -15
  53. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +24 -24
  54. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +1 -0
  55. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +84 -19
  56. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +3 -0
  57. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +4 -0
  58. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +10 -0
  59. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +150 -147
  60. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +47 -25
  63. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +3 -3
  64. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +14 -9
  65. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -189
  66. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +59 -66
  67. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +73 -38
  68. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +9 -7
  69. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +12 -22
  70. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +11 -11
  72. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +13 -13
  74. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +3 -3
  75. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +1 -0
  77. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +2 -4
  78. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +3 -3
  79. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
  83. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
  85. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
  86. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +2 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +47 -17
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +73 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +2 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +37 -20
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +426 -65
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +135 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +432 -257
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +178 -113
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +433 -257
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +286 -143
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +315 -96
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +241 -64
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +364 -227
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +976 -461
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +21 -44
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +15 -35
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +329 -197
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +221 -115
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +11 -47
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +416 -89
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +23 -27
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +31 -30
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +23 -27
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +473 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +138 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +118 -102
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +33 -10
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +114 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +20 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +145 -27
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +107 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +90 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +11 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +481 -129
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +29 -12
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +25 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +36 -16
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +36 -16
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +205 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +55 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +24 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +378 -35
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +218 -84
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +12 -8
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +40 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +6 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +5 -4
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +16 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +37 -33
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +87 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +8 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +22 -23
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +674 -283
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +15 -6
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +211 -5
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +9 -10
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +6 -5
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +177 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +65 -16
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +4 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +56 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +14 -8
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +16 -6
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +62 -34
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +15 -7
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +15 -14
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +53 -28
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +20 -10
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +43 -19
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +42 -16
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +26 -13
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +48 -20
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +43 -17
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +82 -80
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +77 -47
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +15 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -2
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +16 -14
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +31 -13
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +31 -15
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +18 -18
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +22 -19
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +21 -2
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +24 -12
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +47 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +26 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +5 -2
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +7 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +67 -5
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +65 -3
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +177 -2
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +84 -8
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +46 -10
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +27 -14
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +48 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +251 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +2266 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +49 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1353 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1066 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +394 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1020 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +490 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +187 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +203 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +154 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +107 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +130 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +263 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +235 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +92 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +270 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +240 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +38 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +73 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +919 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +180 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +96 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +723 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +329 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +282 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +50 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +722 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +294 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +88 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +313 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +257 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +257 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +490 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +254 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +454 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -2
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +8 -2
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +129 -12
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +29 -6
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +30 -4
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +438 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +154 -56
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +148 -52
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +300 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +637 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +299 -243
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +204 -33
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +132 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +199 -34
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +8 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +16 -101
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +6 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +14 -5
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +209 -114
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +4 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +51 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +204 -33
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +619 -132
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +194 -90
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +2278 -445
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/redirect_error.hpp +148 -52
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +59 -68
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +4 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +25 -6
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +114 -13
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +261 -38
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +73 -8
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +281 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +131 -40
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +562 -132
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +185 -91
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +714 -60
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +46 -54
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +35 -27
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +32 -26
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +41 -36
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +24 -23
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +200 -190
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -10
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -18
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -11
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +26 -26
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -2
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +8 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +60 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +189 -74
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +180 -72
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +29 -10
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +660 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +300 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +398 -57
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +51 -28
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1460 -423
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/redirect_error.hpp → redirect_error.hpp} +9 -10
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +528 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +314 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +13 -5
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +6 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +6 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +6 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +37 -10
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +3 -3
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +51 -8
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +6 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +41 -6
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +11 -2
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +44 -10
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +235 -97
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +264 -13
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +16 -4
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +558 -25
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +917 -38
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +116 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +116 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +114 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +114 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +110 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +110 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +110 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +110 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +110 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +110 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +110 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +110 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +110 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +110 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +110 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +110 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +110 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +110 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +110 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +114 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +114 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +236 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +236 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +110 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +110 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +110 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +125 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +125 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +114 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +114 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +101 -36
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +171 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +295 -42
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +363 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +186 -72
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +188 -73
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +3 -346
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +4 -296
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +38 -9
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +3 -344
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +3 -328
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +372 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +51 -28
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +93 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +178 -11
  592. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
  593. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +85 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
  595. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{atomic_template.hpp → atomic_impl.hpp} +327 -429
  599. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1126 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +23 -4
  601. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +3 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +46 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +58 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_alpha.hpp → caps_arch_gcc_alpha.hpp} +4 -4
  606. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_arm.hpp → caps_arch_gcc_arm.hpp} +37 -8
  607. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_ppc.hpp → caps_arch_gcc_ppc.hpp} +19 -6
  608. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_sparc.hpp → caps_arch_gcc_sparc.hpp} +4 -4
  609. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_x86.hpp → caps_arch_gcc_x86.hpp} +22 -6
  610. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_arm.hpp → caps_arch_msvc_arm.hpp} +4 -4
  611. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_x86.hpp → caps_arch_msvc_x86.hpp} +12 -6
  612. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
  613. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +81 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +39 -15
  617. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_alpha.hpp → core_arch_ops_gcc_alpha.hpp} +280 -289
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_arm.hpp → core_arch_ops_gcc_arm.hpp} +467 -447
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_ppc.hpp → core_arch_ops_gcc_ppc.hpp} +75 -94
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sparc.hpp → core_arch_ops_gcc_sparc.hpp} +33 -58
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_x86_dcas.hpp → core_arch_ops_gcc_x86.hpp} +507 -20
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_arm.hpp → core_arch_ops_msvc_arm.hpp} +58 -54
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_x86.hpp → core_arch_ops_msvc_x86.hpp} +69 -101
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +195 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_cas_based.hpp → core_ops_cas_based.hpp} +9 -22
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sync.hpp → core_ops_gcc_sync.hpp} +75 -52
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_linux_arm.hpp → core_ops_linux_arm.hpp} +32 -43
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +201 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_extending_cas_based.hpp → extending_cas_based_arithmetic.hpp} +12 -9
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +23 -12
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +12 -9
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +60 -40
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +94 -91
  647. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
  648. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
  649. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
  650. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
  651. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +67 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +14 -8
  670. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +147 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +75 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{integral_extend.hpp → integral_conversions.hpp} +8 -5
  676. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
  677. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
  684. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
  686. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +23 -5
  687. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +64 -27
  688. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
  691. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +55 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +97 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +150 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
  706. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +85 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +85 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +20 -1
  710. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +11 -11
  711. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +1 -1
  712. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +25 -11
  713. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +18 -18
  714. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +1 -1
  715. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +1 -1
  716. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +26 -6
  717. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +2 -2
  718. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +8 -5
  719. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +107 -105
  720. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -21
  721. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +25 -31
  722. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  723. data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +72 -22
  726. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -1
  727. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +13 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +155 -10
  729. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +5 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +21 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +2 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +7 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +2 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +15 -7
  742. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +5 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -1
  745. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
  746. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +68 -4
  747. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +3 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
  749. data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +10 -4
  751. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +9 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
  757. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
  759. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +15 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +10 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +13 -13
  765. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +19 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +117 -29
  767. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +250 -208
  768. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +7 -7
  769. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  770. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
  771. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -1
  773. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +2 -2
  774. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
  775. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
  776. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +11 -8
  777. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +14 -14
  778. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +30 -24
  779. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +133 -117
  781. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  782. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +83 -18
  783. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +6 -6
  784. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +103 -69
  785. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +6 -0
  786. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +3 -12
  787. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +6 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +51 -45
  789. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +24 -22
  790. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +83 -77
  791. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +82 -87
  792. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +17 -2
  793. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +2 -2
  794. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +278 -2
  795. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
  797. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +30 -1
  798. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +5 -4
  799. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +90 -6
  800. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +4 -4
  801. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
  802. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
  803. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +63 -67
  804. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +48 -42
  805. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +150 -105
  806. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +174 -155
  807. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +157 -105
  808. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +54 -53
  809. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -15
  810. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +207 -207
  811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -51
  812. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +4 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
  814. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +169 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +633 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +6 -4
  817. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +148 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -6
  819. data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +157 -50
  821. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +82 -1
  822. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
  823. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +87 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +1 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +1 -1
  828. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +2 -2
  830. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
  833. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
  835. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +4 -17
  836. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
  837. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +23 -23
  838. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
  839. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
  841. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
  842. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
  843. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
  844. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
  845. data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
  847. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +22 -14
  848. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
  849. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
  850. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
  851. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
  852. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
  853. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
  854. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +32 -13
  856. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
  857. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +27 -22
  858. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
  859. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
  862. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
  863. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
  864. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
  865. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
  866. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  867. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
  868. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
  869. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
  870. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +0 -5
  871. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
  873. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
  875. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -11
  876. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +3 -8
  877. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
  878. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
  879. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
  880. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
  882. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
  883. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
  884. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
  885. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -4
  886. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
  887. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
  888. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
  889. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +63 -8
  890. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
  891. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
  892. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
  893. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +9 -4
  894. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +15 -6
  895. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +19 -57
  896. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
  897. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +11 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +9 -4
  899. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
  900. data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +13 -6
  902. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +4 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +22 -4
  904. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
  905. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +1 -1
  906. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +30 -28
  907. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
  908. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +6 -6
  909. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +1 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -1
  913. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +22 -22
  914. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +11 -11
  915. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +22 -22
  916. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -11
  917. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +2 -2
  918. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +12 -12
  920. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +18 -9
  921. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +12 -4
  922. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +10 -10
  923. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +1 -1
  924. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +15 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +7 -12
  926. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +13 -1
  928. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -11
  929. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +6 -1
  930. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +13 -17
  931. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +3 -0
  932. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -9
  933. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +9 -1
  934. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +6 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +14 -14
  936. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +2 -2
  937. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +11 -11
  938. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -1
  939. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +22 -22
  940. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +22 -22
  941. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +11 -11
  942. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +11 -11
  943. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +22 -22
  944. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +11 -11
  945. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +93 -66
  946. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +17 -14
  947. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +67 -60
  948. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +9 -9
  949. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
  950. data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
  951. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -4
  952. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +3 -2
  953. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +1 -1
  955. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +18 -13
  957. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +43 -43
  958. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +2 -2
  959. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  961. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
  966. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +2 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +10 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +1 -1
  969. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +7 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +4 -2
  971. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +3 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +5 -5
  974. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +7 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +1 -1
  976. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
  977. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +12 -7
  979. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +50 -52
  980. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +41 -7
  981. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +23 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +6 -6
  983. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +2 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
  985. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +35 -26
  986. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +18 -12
  987. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +103 -318
  988. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +437 -10
  989. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +68 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +15 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
  994. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  996. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +1 -1
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
  1027. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +4 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +31 -24
  1030. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +1 -1
  1032. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +9 -4
  1033. data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1252 -358
  1036. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
  1039. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +90 -59
  1040. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
  1042. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
  1046. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
  1068. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
  1086. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
  1104. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
  1105. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +149 -27
  1106. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +865 -159
  1107. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
  1109. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +159 -76
  1110. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +25 -16
  1113. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
  1114. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +154 -70
  1115. data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
  1117. data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
  1120. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
  1122. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
  1123. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
  1124. data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +553 -884
  1127. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
  1128. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +152 -70
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +17 -16
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +86 -32
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +11 -10
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +14 -13
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +17 -16
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +28 -27
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +21 -20
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +19 -18
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +23 -22
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +10 -9
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +8 -7
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +43 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +16 -15
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +12 -11
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +16 -15
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +10 -9
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +10 -9
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +26 -25
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +16 -15
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +9 -8
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +12 -11
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +10 -9
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +11 -10
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +10 -9
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +39 -32
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +10 -9
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +97 -35
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
  1214. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
  1215. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
  1216. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
  1217. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
  1218. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +9 -8
  1219. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +9 -8
  1220. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -9
  1221. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +16 -15
  1222. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +59 -58
  1223. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +10 -9
  1224. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
  1225. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
  1226. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
  1227. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
  1228. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
  1229. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
  1230. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
  1231. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
  1232. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
  1233. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
  1234. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
  1235. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
  1236. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +12 -11
  1237. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
  1238. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
  1240. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
  1241. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
  1242. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
  1243. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
  1244. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
  1245. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
  1246. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
  1247. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
  1248. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
  1249. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
  1250. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
  1251. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
  1252. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  1253. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +20 -20
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +2 -2
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
  1262. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -1
  1263. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
  1264. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +16 -16
  1265. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
  1266. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +7 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +3 -3
  1268. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
  1269. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
  1270. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
  1271. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
  1272. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -9
  1273. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +3 -3
  1274. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +4 -4
  1275. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -2
  1276. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -16
  1277. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -16
  1278. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -1
  1279. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -1
  1280. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +10 -10
  1281. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -16
  1282. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -2
  1283. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +2 -2
  1284. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +2 -2
  1285. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +2 -2
  1286. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
  1287. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
  1288. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +3 -3
  1289. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +28 -0
  1290. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
  1292. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +0 -6
  1293. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +4 -10
  1294. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  1295. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
  1296. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +4 -10
  1297. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
  1298. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
  1299. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
  1300. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
  1301. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +33 -7
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -2
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -1
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +7 -0
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +17 -6
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +27 -5
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +36 -15
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +105 -0
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +13 -1
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +1 -1
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +26 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +16 -6
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +11 -11
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +7 -0
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -0
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +7 -7
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +1 -1
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +3 -3
  1328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +92 -388
  1329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
  1330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
  1332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
  1333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
  1334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
  1335. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +6 -6
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +87 -47
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +13 -3
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +10 -3
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +13 -3
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +13 -3
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +13 -3
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +13 -3
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +13 -3
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +13 -3
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +25 -16
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -8
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +14 -4
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +10 -3
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +25 -17
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +10 -3
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +13 -3
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +23 -26
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +27 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +51 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_sleep.hpp +104 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +85 -0
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
  1370. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
  1371. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
  1372. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
  1373. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -146
  1374. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +47 -1
  1375. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +22 -22
  1376. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -1
  1377. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
  1378. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
  1379. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +3 -3
  1380. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +58 -23
  1381. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +79 -8
  1382. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -2
  1383. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +5 -11
  1384. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +57 -16
  1385. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +32 -16
  1386. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -1
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +16 -17
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +4 -11
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +841 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +3 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +1 -0
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +2 -1
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +1 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +54 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +18 -24
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +6 -13
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +11 -37
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +1 -69
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +19 -19
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +9 -6
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
  1440. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +138 -59
  1441. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +15 -11
  1442. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +51 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  1444. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  1445. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  1446. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
  1447. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
  1448. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
  1449. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
  1450. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
  1452. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +25 -4
  1453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
  1454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +6 -6
  1455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +6 -6
  1456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +3 -3
  1457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +102 -6
  1458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
  1459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -1
  1460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
  1461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +4 -4
  1462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +143 -28
  1463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
  1464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
  1465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +6 -6
  1466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +6 -6
  1467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
  1468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +6 -6
  1469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +1 -1
  1470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
  1471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
  1472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
  1473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
  1474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
  1475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +1 -1
  1476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
  1477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
  1478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
  1479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +3 -3
  1480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
  1482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +3 -3
  1483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
  1484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
  1485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -3
  1486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +27 -0
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +2 -2
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -2
  1506. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +1 -0
  1507. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -0
  1508. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
  1509. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +3 -42
  1510. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +4 -43
  1511. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +29 -67
  1512. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1513. data/src/nginx_module/Configuration.c +3 -3
  1514. data/src/nginx_module/config +2 -0
  1515. data/src/nginx_module/ngx_http_passenger_module.c +2 -2
  1516. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1517. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  1518. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +4 -1
  1519. data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -0
  1520. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  1521. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  1522. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  1523. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +17 -9
  1524. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -3
  1525. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -0
  1526. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  1527. metadata +302 -70
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -228
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
  1549. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
  1550. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
  1551. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
  1552. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
  1553. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
  1554. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
  1555. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
  1556. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
  1557. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
  1558. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
  1559. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
  1560. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
  1561. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +0 -89
  1562. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1563. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
  1564. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
  1565. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
  1566. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
  1567. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -28
  1568. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
  1569. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
  1570. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -151
  1571. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -161
  1572. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -116
  1573. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
@@ -2,7 +2,7 @@
2
2
  // read_at.hpp
3
3
  // ~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -440,9 +440,9 @@ std::size_t read_at(SyncRandomAccessReadDevice& d,
440
440
  * std::size_t bytes_transferred
441
441
  * ); @endcode
442
442
  * Regardless of whether the asynchronous operation completes immediately or
443
- * not, the handler will not be invoked from within this function. Invocation of
444
- * the handler will be performed in a manner equivalent to using
445
- * boost::asio::io_context::post().
443
+ * not, the handler will not be invoked from within this function. On
444
+ * immediate completion, invocation of the handler will be performed in a
445
+ * manner equivalent to using boost::asio::post().
446
446
  *
447
447
  * @par Example
448
448
  * To read into a single data buffer use the @ref buffer function as follows:
@@ -460,12 +460,17 @@ std::size_t read_at(SyncRandomAccessReadDevice& d,
460
460
  * handler); @endcode
461
461
  */
462
462
  template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
463
- typename ReadHandler>
464
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
463
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
464
+ std::size_t)) ReadHandler
465
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
466
+ typename AsyncRandomAccessReadDevice::executor_type)>
467
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
465
468
  void (boost::system::error_code, std::size_t))
466
469
  async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
467
470
  const MutableBufferSequence& buffers,
468
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
471
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
472
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
473
+ typename AsyncRandomAccessReadDevice::executor_type));
469
474
 
470
475
  /// Start an asynchronous operation to read a certain amount of data at the
471
476
  /// specified offset.
@@ -518,9 +523,9 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
518
523
  * std::size_t bytes_transferred
519
524
  * ); @endcode
520
525
  * Regardless of whether the asynchronous operation completes immediately or
521
- * not, the handler will not be invoked from within this function. Invocation of
522
- * the handler will be performed in a manner equivalent to using
523
- * boost::asio::io_context::post().
526
+ * not, the handler will not be invoked from within this function. On
527
+ * immediate completion, invocation of the handler will be performed in a
528
+ * manner equivalent to using boost::asio::post().
524
529
  *
525
530
  * @par Example
526
531
  * To read into a single data buffer use the @ref buffer function as follows:
@@ -532,14 +537,20 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
532
537
  * buffers in one go, and how to use it with arrays, boost::array or
533
538
  * std::vector.
534
539
  */
535
- template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
536
- typename CompletionCondition, typename ReadHandler>
537
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
540
+ template <typename AsyncRandomAccessReadDevice,
541
+ typename MutableBufferSequence, typename CompletionCondition,
542
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
543
+ std::size_t)) ReadHandler
544
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
545
+ typename AsyncRandomAccessReadDevice::executor_type)>
546
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
538
547
  void (boost::system::error_code, std::size_t))
539
548
  async_read_at(AsyncRandomAccessReadDevice& d,
540
549
  uint64_t offset, const MutableBufferSequence& buffers,
541
550
  CompletionCondition completion_condition,
542
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
551
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
552
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
553
+ typename AsyncRandomAccessReadDevice::executor_type));
543
554
 
544
555
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
545
556
  #if !defined(BOOST_ASIO_NO_IOSTREAM)
@@ -579,9 +590,9 @@ async_read_at(AsyncRandomAccessReadDevice& d,
579
590
  * std::size_t bytes_transferred
580
591
  * ); @endcode
581
592
  * Regardless of whether the asynchronous operation completes immediately or
582
- * not, the handler will not be invoked from within this function. Invocation of
583
- * the handler will be performed in a manner equivalent to using
584
- * boost::asio::io_context::post().
593
+ * not, the handler will not be invoked from within this function. On
594
+ * immediate completion, invocation of the handler will be performed in a
595
+ * manner equivalent to using boost::asio::post().
585
596
  *
586
597
  * @note This overload is equivalent to calling:
587
598
  * @code boost::asio::async_read_at(
@@ -590,11 +601,17 @@ async_read_at(AsyncRandomAccessReadDevice& d,
590
601
  * handler); @endcode
591
602
  */
592
603
  template <typename AsyncRandomAccessReadDevice, typename Allocator,
593
- typename ReadHandler>
594
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
604
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
605
+ std::size_t)) ReadHandler
606
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
607
+ typename AsyncRandomAccessReadDevice::executor_type)>
608
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
595
609
  void (boost::system::error_code, std::size_t))
596
- async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
597
- basic_streambuf<Allocator>& b, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
610
+ async_read_at(AsyncRandomAccessReadDevice& d,
611
+ uint64_t offset, basic_streambuf<Allocator>& b,
612
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
613
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
614
+ typename AsyncRandomAccessReadDevice::executor_type));
598
615
 
599
616
  /// Start an asynchronous operation to read a certain amount of data at the
600
617
  /// specified offset.
@@ -645,18 +662,24 @@ async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
645
662
  * std::size_t bytes_transferred
646
663
  * ); @endcode
647
664
  * Regardless of whether the asynchronous operation completes immediately or
648
- * not, the handler will not be invoked from within this function. Invocation of
649
- * the handler will be performed in a manner equivalent to using
650
- * boost::asio::io_context::post().
665
+ * not, the handler will not be invoked from within this function. On
666
+ * immediate completion, invocation of the handler will be performed in a
667
+ * manner equivalent to using boost::asio::post().
651
668
  */
652
- template <typename AsyncRandomAccessReadDevice, typename Allocator,
653
- typename CompletionCondition, typename ReadHandler>
654
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
669
+ template <typename AsyncRandomAccessReadDevice,
670
+ typename Allocator, typename CompletionCondition,
671
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
672
+ std::size_t)) ReadHandler
673
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
674
+ typename AsyncRandomAccessReadDevice::executor_type)>
675
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
655
676
  void (boost::system::error_code, std::size_t))
656
677
  async_read_at(AsyncRandomAccessReadDevice& d,
657
678
  uint64_t offset, basic_streambuf<Allocator>& b,
658
679
  CompletionCondition completion_condition,
659
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
680
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
681
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
682
+ typename AsyncRandomAccessReadDevice::executor_type));
660
683
 
661
684
  #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
662
685
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
@@ -2,7 +2,7 @@
2
2
  // read_until.hpp
3
3
  // ~~~~~~~~~~~~~~
4
4
  //
5
- // Copyright (c) 2003-2018 Christopher M. Kohlhoff (chris at kohlhoff dot com)
5
+ // Copyright (c) 2003-2020 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6
6
  //
7
7
  // Distributed under the Boost Software License, Version 1.0. (See accompanying
8
8
  // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -19,6 +19,7 @@
19
19
  #include <cstddef>
20
20
  #include <string>
21
21
  #include <boost/asio/async_result.hpp>
22
+ #include <boost/asio/buffer.hpp>
22
23
  #include <boost/asio/detail/regex_fwd.hpp>
23
24
  #include <boost/asio/detail/string_view.hpp>
24
25
  #include <boost/asio/detail/type_traits.hpp>
@@ -75,6 +76,8 @@ struct is_match_condition
75
76
  */
76
77
  /*@{*/
77
78
 
79
+ #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
80
+
78
81
  /// Read data into a dynamic buffer sequence until it contains a specified
79
82
  /// delimiter.
80
83
  /**
@@ -112,7 +115,7 @@ struct is_match_condition
112
115
  * @par Example
113
116
  * To read data into a @c std::string until a newline is encountered:
114
117
  * @code std::string data;
115
- * std::string n = boost::asio::read_until(s,
118
+ * std::size_t n = boost::asio::read_until(s,
116
119
  * boost::asio::dynamic_buffer(data), '\n');
117
120
  * std::string line = data.substr(0, n);
118
121
  * data.erase(0, n); @endcode
@@ -128,9 +131,13 @@ struct is_match_condition
128
131
  * This data may be the start of a new line, to be extracted by a subsequent
129
132
  * @c read_until operation.
130
133
  */
131
- template <typename SyncReadStream, typename DynamicBuffer>
134
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
132
135
  std::size_t read_until(SyncReadStream& s,
133
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers, char delim);
136
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
137
+ typename enable_if<
138
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
139
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
140
+ >::type* = 0);
134
141
 
135
142
  /// Read data into a dynamic buffer sequence until it contains a specified
136
143
  /// delimiter.
@@ -166,10 +173,14 @@ std::size_t read_until(SyncReadStream& s,
166
173
  * typically leave that data in the dynamic buffer sequence for a subsequent
167
174
  * read_until operation to examine.
168
175
  */
169
- template <typename SyncReadStream, typename DynamicBuffer>
176
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
170
177
  std::size_t read_until(SyncReadStream& s,
171
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
172
- char delim, boost::system::error_code& ec);
178
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
179
+ char delim, boost::system::error_code& ec,
180
+ typename enable_if<
181
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
182
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
183
+ >::type* = 0);
173
184
 
174
185
  /// Read data into a dynamic buffer sequence until it contains a specified
175
186
  /// delimiter.
@@ -206,7 +217,7 @@ std::size_t read_until(SyncReadStream& s,
206
217
  * @par Example
207
218
  * To read data into a @c std::string until a CR-LF sequence is encountered:
208
219
  * @code std::string data;
209
- * std::string n = boost::asio::read_until(s,
220
+ * std::size_t n = boost::asio::read_until(s,
210
221
  * boost::asio::dynamic_buffer(data), "\r\n");
211
222
  * std::string line = data.substr(0, n);
212
223
  * data.erase(0, n); @endcode
@@ -222,10 +233,14 @@ std::size_t read_until(SyncReadStream& s,
222
233
  * This data may be the start of a new line, to be extracted by a subsequent
223
234
  * @c read_until operation.
224
235
  */
225
- template <typename SyncReadStream, typename DynamicBuffer>
236
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
226
237
  std::size_t read_until(SyncReadStream& s,
227
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
228
- BOOST_ASIO_STRING_VIEW_PARAM delim);
238
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
239
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
240
+ typename enable_if<
241
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
242
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
243
+ >::type* = 0);
229
244
 
230
245
  /// Read data into a dynamic buffer sequence until it contains a specified
231
246
  /// delimiter.
@@ -261,11 +276,15 @@ std::size_t read_until(SyncReadStream& s,
261
276
  * typically leave that data in the dynamic buffer sequence for a subsequent
262
277
  * read_until operation to examine.
263
278
  */
264
- template <typename SyncReadStream, typename DynamicBuffer>
279
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
265
280
  std::size_t read_until(SyncReadStream& s,
266
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
281
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
267
282
  BOOST_ASIO_STRING_VIEW_PARAM delim,
268
- boost::system::error_code& ec);
283
+ boost::system::error_code& ec,
284
+ typename enable_if<
285
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
286
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
287
+ >::type* = 0);
269
288
 
270
289
  #if !defined(BOOST_ASIO_NO_EXTENSIONS)
271
290
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
@@ -309,7 +328,7 @@ std::size_t read_until(SyncReadStream& s,
309
328
  * @par Example
310
329
  * To read data into a @c std::string until a CR-LF sequence is encountered:
311
330
  * @code std::string data;
312
- * std::string n = boost::asio::read_until(s,
331
+ * std::size_t n = boost::asio::read_until(s,
313
332
  * boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
314
333
  * std::string line = data.substr(0, n);
315
334
  * data.erase(0, n); @endcode
@@ -325,10 +344,14 @@ std::size_t read_until(SyncReadStream& s,
325
344
  * This data may be the start of a new line, to be extracted by a subsequent
326
345
  * @c read_until operation.
327
346
  */
328
- template <typename SyncReadStream, typename DynamicBuffer>
347
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
329
348
  std::size_t read_until(SyncReadStream& s,
330
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
331
- const boost::regex& expr);
349
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
350
+ const boost::regex& expr,
351
+ typename enable_if<
352
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
353
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
354
+ >::type* = 0);
332
355
 
333
356
  /// Read data into a dynamic buffer sequence until some part of the data it
334
357
  /// contains matches a regular expression.
@@ -366,10 +389,14 @@ std::size_t read_until(SyncReadStream& s,
366
389
  * expression. An application will typically leave that data in the dynamic
367
390
  * buffer sequence for a subsequent read_until operation to examine.
368
391
  */
369
- template <typename SyncReadStream, typename DynamicBuffer>
392
+ template <typename SyncReadStream, typename DynamicBuffer_v1>
370
393
  std::size_t read_until(SyncReadStream& s,
371
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
372
- const boost::regex& expr, boost::system::error_code& ec);
394
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
395
+ const boost::regex& expr, boost::system::error_code& ec,
396
+ typename enable_if<
397
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
398
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
399
+ >::type* = 0);
373
400
 
374
401
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
375
402
  // || defined(GENERATING_DOCUMENTATION)
@@ -402,7 +429,7 @@ std::size_t read_until(SyncReadStream& s,
402
429
  * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
403
430
  * @endcode
404
431
  * where @c iterator represents the type:
405
- * @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
432
+ * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
406
433
  * @endcode
407
434
  * The iterator parameters @c begin and @c end define the range of bytes to be
408
435
  * scanned to determine whether there is a match. The @c first member of the
@@ -477,11 +504,15 @@ std::size_t read_until(SyncReadStream& s,
477
504
  * @endcode
478
505
  */
479
506
  template <typename SyncReadStream,
480
- typename DynamicBuffer, typename MatchCondition>
507
+ typename DynamicBuffer_v1, typename MatchCondition>
481
508
  std::size_t read_until(SyncReadStream& s,
482
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
509
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
483
510
  MatchCondition match_condition,
484
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
511
+ typename enable_if<
512
+ is_match_condition<MatchCondition>::value
513
+ && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
514
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
515
+ >::type* = 0);
485
516
 
486
517
  /// Read data into a dynamic buffer sequence until a function object indicates a
487
518
  /// match.
@@ -510,7 +541,7 @@ std::size_t read_until(SyncReadStream& s,
510
541
  * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
511
542
  * @endcode
512
543
  * where @c iterator represents the type:
513
- * @code buffers_iterator<DynamicBuffer::const_buffers_type>
544
+ * @code buffers_iterator<DynamicBuffer_v1::const_buffers_type>
514
545
  * @endcode
515
546
  * The iterator parameters @c begin and @c end define the range of bytes to be
516
547
  * scanned to determine whether there is a match. The @c first member of the
@@ -537,11 +568,15 @@ std::size_t read_until(SyncReadStream& s,
537
568
  * function objects.
538
569
  */
539
570
  template <typename SyncReadStream,
540
- typename DynamicBuffer, typename MatchCondition>
571
+ typename DynamicBuffer_v1, typename MatchCondition>
541
572
  std::size_t read_until(SyncReadStream& s,
542
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
573
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
543
574
  MatchCondition match_condition, boost::system::error_code& ec,
544
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
575
+ typename enable_if<
576
+ is_match_condition<MatchCondition>::value
577
+ && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
578
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
579
+ >::type* = 0);
545
580
 
546
581
  #if !defined(BOOST_ASIO_NO_IOSTREAM)
547
582
 
@@ -982,26 +1017,15 @@ std::size_t read_until(SyncReadStream& s,
982
1017
 
983
1018
  #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
984
1019
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1020
+ #endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
985
1021
 
986
- /*@}*/
987
- /**
988
- * @defgroup async_read_until boost::asio::async_read_until
989
- *
990
- * @brief The @c async_read_until function is a composed asynchronous operation
991
- * that reads data into a dynamic buffer sequence, or into a streambuf, until
992
- * it contains a delimiter, matches a regular expression, or a function object
993
- * indicates a match.
994
- */
995
- /*@{*/
996
-
997
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
998
- /// until it contains a specified delimiter.
1022
+ /// Read data into a dynamic buffer sequence until it contains a specified
1023
+ /// delimiter.
999
1024
  /**
1000
- * This function is used to asynchronously read data into the specified dynamic
1001
- * buffer sequence until the dynamic buffer sequence's get area contains the
1002
- * specified delimiter. The function call always returns immediately. The
1003
- * asynchronous operation will continue until one of the following conditions
1004
- * is true:
1025
+ * This function is used to read data into the specified dynamic buffer
1026
+ * sequence until the dynamic buffer sequence's get area contains the specified
1027
+ * delimiter. The call will block until one of the following conditions is
1028
+ * true:
1005
1029
  *
1006
1030
  * @li The get area of the dynamic buffer sequence contains the specified
1007
1031
  * delimiter.
@@ -1009,89 +1033,58 @@ std::size_t read_until(SyncReadStream& s,
1009
1033
  * @li An error occurred.
1010
1034
  *
1011
1035
  * This operation is implemented in terms of zero or more calls to the stream's
1012
- * async_read_some function, and is known as a <em>composed operation</em>. If
1013
- * the dynamic buffer sequence's get area already contains the delimiter, this
1014
- * asynchronous operation completes immediately. The program must ensure that
1015
- * the stream performs no other read operations (such as async_read,
1016
- * async_read_until, the stream's async_read_some function, or any other
1017
- * composed operations that perform reads) until this operation completes.
1036
+ * read_some function. If the dynamic buffer sequence's get area already
1037
+ * contains the delimiter, the function returns immediately.
1018
1038
  *
1019
1039
  * @param s The stream from which the data is to be read. The type must support
1020
- * the AsyncReadStream concept.
1040
+ * the SyncReadStream concept.
1021
1041
  *
1022
1042
  * @param buffers The dynamic buffer sequence into which the data will be read.
1023
- * Although the buffers object may be copied as necessary, ownership of the
1024
- * underlying memory blocks is retained by the caller, which must guarantee
1025
- * that they remain valid until the handler is called.
1026
1043
  *
1027
1044
  * @param delim The delimiter character.
1028
1045
  *
1029
- * @param handler The handler to be called when the read operation completes.
1030
- * Copies will be made of the handler as required. The function signature of the
1031
- * handler must be:
1032
- * @code void handler(
1033
- * // Result of operation.
1034
- * const boost::system::error_code& error,
1046
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1047
+ * and including the delimiter.
1035
1048
  *
1036
- * // The number of bytes in the dynamic buffer sequence's
1037
- * // get area up to and including the delimiter.
1038
- * // 0 if an error occurred.
1039
- * std::size_t bytes_transferred
1040
- * ); @endcode
1041
- * Regardless of whether the asynchronous operation completes immediately or
1042
- * not, the handler will not be invoked from within this function. Invocation of
1043
- * the handler will be performed in a manner equivalent to using
1044
- * boost::asio::io_context::post().
1049
+ * @throws boost::system::system_error Thrown on failure.
1045
1050
  *
1046
- * @note After a successful async_read_until operation, the dynamic buffer
1047
- * sequence may contain additional data beyond the delimiter. An application
1048
- * will typically leave that data in the dynamic buffer sequence for a
1049
- * subsequent async_read_until operation to examine.
1051
+ * @note After a successful read_until operation, the dynamic buffer sequence
1052
+ * may contain additional data beyond the delimiter. An application will
1053
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1054
+ * read_until operation to examine.
1050
1055
  *
1051
1056
  * @par Example
1052
- * To asynchronously read data into a @c std::string until a newline is
1053
- * encountered:
1057
+ * To read data into a @c std::string until a newline is encountered:
1054
1058
  * @code std::string data;
1055
- * ...
1056
- * void handler(const boost::system::error_code& e, std::size_t size)
1057
- * {
1058
- * if (!e)
1059
- * {
1060
- * std::string line = data.substr(0, n);
1061
- * data.erase(0, n);
1062
- * ...
1063
- * }
1064
- * }
1065
- * ...
1066
- * boost::asio::async_read_until(s, data, '\n', handler); @endcode
1067
- * After the @c async_read_until operation completes successfully, the buffer
1068
- * @c data contains the delimiter:
1059
+ * std::size_t n = boost::asio::read_until(s,
1060
+ * boost::asio::dynamic_buffer(data), '\n');
1061
+ * std::string line = data.substr(0, n);
1062
+ * data.erase(0, n); @endcode
1063
+ * After the @c read_until operation completes successfully, the string @c data
1064
+ * contains the delimiter:
1069
1065
  * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1070
1066
  * The call to @c substr then extracts the data up to and including the
1071
1067
  * delimiter, so that the string @c line contains:
1072
1068
  * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1073
- * After the call to @c erase, the remaining data is left in the buffer @c data
1074
- * as follows:
1069
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1070
+ * follows:
1075
1071
  * @code { 'd', 'e', ... } @endcode
1076
1072
  * This data may be the start of a new line, to be extracted by a subsequent
1077
- * @c async_read_until operation.
1073
+ * @c read_until operation.
1078
1074
  */
1079
- template <typename AsyncReadStream,
1080
- typename DynamicBuffer, typename ReadHandler>
1081
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1082
- void (boost::system::error_code, std::size_t))
1083
- async_read_until(AsyncReadStream& s,
1084
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1085
- char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
1075
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1076
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
1077
+ typename enable_if<
1078
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1079
+ >::type* = 0);
1086
1080
 
1087
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1088
- /// until it contains a specified delimiter.
1081
+ /// Read data into a dynamic buffer sequence until it contains a specified
1082
+ /// delimiter.
1089
1083
  /**
1090
- * This function is used to asynchronously read data into the specified dynamic
1091
- * buffer sequence until the dynamic buffer sequence's get area contains the
1092
- * specified delimiter. The function call always returns immediately. The
1093
- * asynchronous operation will continue until one of the following conditions
1094
- * is true:
1084
+ * This function is used to read data into the specified dynamic buffer
1085
+ * sequence until the dynamic buffer sequence's get area contains the specified
1086
+ * delimiter. The call will block until one of the following conditions is
1087
+ * true:
1095
1088
  *
1096
1089
  * @li The get area of the dynamic buffer sequence contains the specified
1097
1090
  * delimiter.
@@ -1099,192 +1092,1182 @@ async_read_until(AsyncReadStream& s,
1099
1092
  * @li An error occurred.
1100
1093
  *
1101
1094
  * This operation is implemented in terms of zero or more calls to the stream's
1102
- * async_read_some function, and is known as a <em>composed operation</em>. If
1103
- * the dynamic buffer sequence's get area already contains the delimiter, this
1104
- * asynchronous operation completes immediately. The program must ensure that
1105
- * the stream performs no other read operations (such as async_read,
1106
- * async_read_until, the stream's async_read_some function, or any other
1107
- * composed operations that perform reads) until this operation completes.
1095
+ * read_some function. If the dynamic buffer sequence's get area already
1096
+ * contains the delimiter, the function returns immediately.
1108
1097
  *
1109
1098
  * @param s The stream from which the data is to be read. The type must support
1110
- * the AsyncReadStream concept.
1099
+ * the SyncReadStream concept.
1111
1100
  *
1112
1101
  * @param buffers The dynamic buffer sequence into which the data will be read.
1113
- * Although the buffers object may be copied as necessary, ownership of the
1114
- * underlying memory blocks is retained by the caller, which must guarantee
1115
- * that they remain valid until the handler is called.
1116
1102
  *
1117
- * @param delim The delimiter string.
1103
+ * @param delim The delimiter character.
1118
1104
  *
1119
- * @param handler The handler to be called when the read operation completes.
1120
- * Copies will be made of the handler as required. The function signature of the
1121
- * handler must be:
1122
- * @code void handler(
1123
- * // Result of operation.
1124
- * const boost::system::error_code& error,
1105
+ * @param ec Set to indicate what error occurred, if any.
1125
1106
  *
1126
- * // The number of bytes in the dynamic buffer sequence's
1127
- * // get area up to and including the delimiter.
1128
- * // 0 if an error occurred.
1129
- * std::size_t bytes_transferred
1130
- * ); @endcode
1131
- * Regardless of whether the asynchronous operation completes immediately or
1132
- * not, the handler will not be invoked from within this function. Invocation of
1133
- * the handler will be performed in a manner equivalent to using
1134
- * boost::asio::io_context::post().
1107
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1108
+ * and including the delimiter. Returns 0 if an error occurred.
1135
1109
  *
1136
- * @note After a successful async_read_until operation, the dynamic buffer
1137
- * sequence may contain additional data beyond the delimiter. An application
1138
- * will typically leave that data in the dynamic buffer sequence for a
1139
- * subsequent async_read_until operation to examine.
1110
+ * @note After a successful read_until operation, the dynamic buffer sequence
1111
+ * may contain additional data beyond the delimiter. An application will
1112
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1113
+ * read_until operation to examine.
1114
+ */
1115
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1116
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1117
+ char delim, boost::system::error_code& ec,
1118
+ typename enable_if<
1119
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1120
+ >::type* = 0);
1121
+
1122
+ /// Read data into a dynamic buffer sequence until it contains a specified
1123
+ /// delimiter.
1124
+ /**
1125
+ * This function is used to read data into the specified dynamic buffer
1126
+ * sequence until the dynamic buffer sequence's get area contains the specified
1127
+ * delimiter. The call will block until one of the following conditions is
1128
+ * true:
1129
+ *
1130
+ * @li The get area of the dynamic buffer sequence contains the specified
1131
+ * delimiter.
1132
+ *
1133
+ * @li An error occurred.
1134
+ *
1135
+ * This operation is implemented in terms of zero or more calls to the stream's
1136
+ * read_some function. If the dynamic buffer sequence's get area already
1137
+ * contains the delimiter, the function returns immediately.
1138
+ *
1139
+ * @param s The stream from which the data is to be read. The type must support
1140
+ * the SyncReadStream concept.
1141
+ *
1142
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1143
+ *
1144
+ * @param delim The delimiter string.
1145
+ *
1146
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1147
+ * and including the delimiter.
1148
+ *
1149
+ * @note After a successful read_until operation, the dynamic buffer sequence
1150
+ * may contain additional data beyond the delimiter. An application will
1151
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1152
+ * read_until operation to examine.
1140
1153
  *
1141
1154
  * @par Example
1142
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
1143
- * encountered:
1155
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
1144
1156
  * @code std::string data;
1145
- * ...
1146
- * void handler(const boost::system::error_code& e, std::size_t size)
1147
- * {
1148
- * if (!e)
1149
- * {
1150
- * std::string line = data.substr(0, n);
1151
- * data.erase(0, n);
1152
- * ...
1153
- * }
1154
- * }
1155
- * ...
1156
- * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
1157
- * After the @c async_read_until operation completes successfully, the string
1158
- * @c data contains the delimiter:
1157
+ * std::size_t n = boost::asio::read_until(s,
1158
+ * boost::asio::dynamic_buffer(data), "\r\n");
1159
+ * std::string line = data.substr(0, n);
1160
+ * data.erase(0, n); @endcode
1161
+ * After the @c read_until operation completes successfully, the string @c data
1162
+ * contains the delimiter:
1159
1163
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1160
1164
  * The call to @c substr then extracts the data up to and including the
1161
1165
  * delimiter, so that the string @c line contains:
1162
1166
  * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1163
- * After the call to @c erase, the remaining data is left in the string @c data
1164
- * as follows:
1167
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1168
+ * follows:
1165
1169
  * @code { 'd', 'e', ... } @endcode
1166
1170
  * This data may be the start of a new line, to be extracted by a subsequent
1167
- * @c async_read_until operation.
1171
+ * @c read_until operation.
1168
1172
  */
1169
- template <typename AsyncReadStream,
1170
- typename DynamicBuffer, typename ReadHandler>
1171
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
1172
- void (boost::system::error_code, std::size_t))
1173
- async_read_until(AsyncReadStream& s,
1174
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1173
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1174
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1175
1175
  BOOST_ASIO_STRING_VIEW_PARAM delim,
1176
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
1177
-
1178
- #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1179
- #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1180
- || defined(GENERATING_DOCUMENTATION)
1176
+ typename enable_if<
1177
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1178
+ >::type* = 0);
1181
1179
 
1182
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1183
- /// until some part of its data matches a regular expression.
1180
+ /// Read data into a dynamic buffer sequence until it contains a specified
1181
+ /// delimiter.
1184
1182
  /**
1185
- * This function is used to asynchronously read data into the specified dynamic
1186
- * buffer sequence until the dynamic buffer sequence's get area contains some
1187
- * data that matches a regular expression. The function call always returns
1188
- * immediately. The asynchronous operation will continue until one of the
1189
- * following conditions is true:
1183
+ * This function is used to read data into the specified dynamic buffer
1184
+ * sequence until the dynamic buffer sequence's get area contains the specified
1185
+ * delimiter. The call will block until one of the following conditions is
1186
+ * true:
1190
1187
  *
1191
- * @li A substring of the dynamic buffer sequence's get area matches the regular
1192
- * expression.
1188
+ * @li The get area of the dynamic buffer sequence contains the specified
1189
+ * delimiter.
1193
1190
  *
1194
1191
  * @li An error occurred.
1195
1192
  *
1196
1193
  * This operation is implemented in terms of zero or more calls to the stream's
1197
- * async_read_some function, and is known as a <em>composed operation</em>. If
1198
- * the dynamic buffer sequence's get area already contains data that matches
1199
- * the regular expression, this asynchronous operation completes immediately.
1200
- * The program must ensure that the stream performs no other read operations
1201
- * (such as async_read, async_read_until, the stream's async_read_some
1202
- * function, or any other composed operations that perform reads) until this
1203
- * operation completes.
1194
+ * read_some function. If the dynamic buffer sequence's get area already
1195
+ * contains the delimiter, the function returns immediately.
1204
1196
  *
1205
1197
  * @param s The stream from which the data is to be read. The type must support
1206
- * the AsyncReadStream concept.
1198
+ * the SyncReadStream concept.
1207
1199
  *
1208
1200
  * @param buffers The dynamic buffer sequence into which the data will be read.
1209
- * Although the buffers object may be copied as necessary, ownership of the
1210
- * underlying memory blocks is retained by the caller, which must guarantee
1211
- * that they remain valid until the handler is called.
1212
1201
  *
1213
- * @param expr The regular expression.
1202
+ * @param delim The delimiter string.
1214
1203
  *
1215
- * @param handler The handler to be called when the read operation completes.
1216
- * Copies will be made of the handler as required. The function signature of the
1217
- * handler must be:
1218
- * @code void handler(
1219
- * // Result of operation.
1220
- * const boost::system::error_code& error,
1204
+ * @param ec Set to indicate what error occurred, if any.
1205
+ *
1206
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1207
+ * and including the delimiter. Returns 0 if an error occurred.
1208
+ *
1209
+ * @note After a successful read_until operation, the dynamic buffer sequence
1210
+ * may contain additional data beyond the delimiter. An application will
1211
+ * typically leave that data in the dynamic buffer sequence for a subsequent
1212
+ * read_until operation to examine.
1213
+ */
1214
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1215
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1216
+ BOOST_ASIO_STRING_VIEW_PARAM delim, boost::system::error_code& ec,
1217
+ typename enable_if<
1218
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1219
+ >::type* = 0);
1220
+
1221
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1222
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1223
+ || defined(GENERATING_DOCUMENTATION)
1224
+
1225
+ /// Read data into a dynamic buffer sequence until some part of the data it
1226
+ /// contains matches a regular expression.
1227
+ /**
1228
+ * This function is used to read data into the specified dynamic buffer
1229
+ * sequence until the dynamic buffer sequence's get area contains some data
1230
+ * that matches a regular expression. The call will block until one of the
1231
+ * following conditions is true:
1232
+ *
1233
+ * @li A substring of the dynamic buffer sequence's get area matches the
1234
+ * regular expression.
1235
+ *
1236
+ * @li An error occurred.
1237
+ *
1238
+ * This operation is implemented in terms of zero or more calls to the stream's
1239
+ * read_some function. If the dynamic buffer sequence's get area already
1240
+ * contains data that matches the regular expression, the function returns
1241
+ * immediately.
1242
+ *
1243
+ * @param s The stream from which the data is to be read. The type must support
1244
+ * the SyncReadStream concept.
1245
+ *
1246
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1247
+ *
1248
+ * @param expr The regular expression.
1249
+ *
1250
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1251
+ * and including the substring that matches the regular expression.
1252
+ *
1253
+ * @throws boost::system::system_error Thrown on failure.
1254
+ *
1255
+ * @note After a successful read_until operation, the dynamic buffer sequence
1256
+ * may contain additional data beyond that which matched the regular
1257
+ * expression. An application will typically leave that data in the dynamic
1258
+ * buffer sequence for a subsequent read_until operation to examine.
1259
+ *
1260
+ * @par Example
1261
+ * To read data into a @c std::string until a CR-LF sequence is encountered:
1262
+ * @code std::string data;
1263
+ * std::size_t n = boost::asio::read_until(s,
1264
+ * boost::asio::dynamic_buffer(data), boost::regex("\r\n"));
1265
+ * std::string line = data.substr(0, n);
1266
+ * data.erase(0, n); @endcode
1267
+ * After the @c read_until operation completes successfully, the string @c data
1268
+ * contains the delimiter:
1269
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1270
+ * The call to @c substr then extracts the data up to and including the
1271
+ * delimiter, so that the string @c line contains:
1272
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1273
+ * After the call to @c erase, the remaining data is left in the buffer @c b as
1274
+ * follows:
1275
+ * @code { 'd', 'e', ... } @endcode
1276
+ * This data may be the start of a new line, to be extracted by a subsequent
1277
+ * @c read_until operation.
1278
+ */
1279
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1280
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1281
+ const boost::regex& expr,
1282
+ typename enable_if<
1283
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1284
+ >::type* = 0);
1285
+
1286
+ /// Read data into a dynamic buffer sequence until some part of the data it
1287
+ /// contains matches a regular expression.
1288
+ /**
1289
+ * This function is used to read data into the specified dynamic buffer
1290
+ * sequence until the dynamic buffer sequence's get area contains some data
1291
+ * that matches a regular expression. The call will block until one of the
1292
+ * following conditions is true:
1293
+ *
1294
+ * @li A substring of the dynamic buffer sequence's get area matches the
1295
+ * regular expression.
1296
+ *
1297
+ * @li An error occurred.
1298
+ *
1299
+ * This operation is implemented in terms of zero or more calls to the stream's
1300
+ * read_some function. If the dynamic buffer sequence's get area already
1301
+ * contains data that matches the regular expression, the function returns
1302
+ * immediately.
1303
+ *
1304
+ * @param s The stream from which the data is to be read. The type must support
1305
+ * the SyncReadStream concept.
1306
+ *
1307
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1308
+ *
1309
+ * @param expr The regular expression.
1310
+ *
1311
+ * @param ec Set to indicate what error occurred, if any.
1312
+ *
1313
+ * @returns The number of bytes in the dynamic buffer sequence's get area up to
1314
+ * and including the substring that matches the regular expression. Returns 0
1315
+ * if an error occurred.
1316
+ *
1317
+ * @note After a successful read_until operation, the dynamic buffer sequence
1318
+ * may contain additional data beyond that which matched the regular
1319
+ * expression. An application will typically leave that data in the dynamic
1320
+ * buffer sequence for a subsequent read_until operation to examine.
1321
+ */
1322
+ template <typename SyncReadStream, typename DynamicBuffer_v2>
1323
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1324
+ const boost::regex& expr, boost::system::error_code& ec,
1325
+ typename enable_if<
1326
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1327
+ >::type* = 0);
1328
+
1329
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1330
+ // || defined(GENERATING_DOCUMENTATION)
1331
+
1332
+ /// Read data into a dynamic buffer sequence until a function object indicates a
1333
+ /// match.
1334
+
1335
+ /**
1336
+ * This function is used to read data into the specified dynamic buffer
1337
+ * sequence until a user-defined match condition function object, when applied
1338
+ * to the data contained in the dynamic buffer sequence, indicates a successful
1339
+ * match. The call will block until one of the following conditions is true:
1340
+ *
1341
+ * @li The match condition function object returns a std::pair where the second
1342
+ * element evaluates to true.
1343
+ *
1344
+ * @li An error occurred.
1345
+ *
1346
+ * This operation is implemented in terms of zero or more calls to the stream's
1347
+ * read_some function. If the match condition function object already indicates
1348
+ * a match, the function returns immediately.
1349
+ *
1350
+ * @param s The stream from which the data is to be read. The type must support
1351
+ * the SyncReadStream concept.
1352
+ *
1353
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1354
+ *
1355
+ * @param match_condition The function object to be called to determine whether
1356
+ * a match exists. The signature of the function object must be:
1357
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1358
+ * @endcode
1359
+ * where @c iterator represents the type:
1360
+ * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
1361
+ * @endcode
1362
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1363
+ * scanned to determine whether there is a match. The @c first member of the
1364
+ * return value is an iterator marking one-past-the-end of the bytes that have
1365
+ * been consumed by the match function. This iterator is used to calculate the
1366
+ * @c begin parameter for any subsequent invocation of the match condition. The
1367
+ * @c second member of the return value is true if a match has been found, false
1368
+ * otherwise.
1369
+ *
1370
+ * @returns The number of bytes in the dynamic_buffer's get area that
1371
+ * have been fully consumed by the match function.
1372
+ *
1373
+ * @throws boost::system::system_error Thrown on failure.
1374
+ *
1375
+ * @note After a successful read_until operation, the dynamic buffer sequence
1376
+ * may contain additional data beyond that which matched the function object.
1377
+ * An application will typically leave that data in the dynamic buffer sequence
1378
+ * for a subsequent read_until operation to examine.
1379
+
1380
+ * @note The default implementation of the @c is_match_condition type trait
1381
+ * evaluates to true for function pointers and function objects with a
1382
+ * @c result_type typedef. It must be specialised for other user-defined
1383
+ * function objects.
1384
+ *
1385
+ * @par Examples
1386
+ * To read data into a dynamic buffer sequence until whitespace is encountered:
1387
+ * @code typedef boost::asio::buffers_iterator<
1388
+ * boost::asio::const_buffers_1> iterator;
1389
+ *
1390
+ * std::pair<iterator, bool>
1391
+ * match_whitespace(iterator begin, iterator end)
1392
+ * {
1393
+ * iterator i = begin;
1394
+ * while (i != end)
1395
+ * if (std::isspace(*i++))
1396
+ * return std::make_pair(i, true);
1397
+ * return std::make_pair(i, false);
1398
+ * }
1399
+ * ...
1400
+ * std::string data;
1401
+ * boost::asio::read_until(s, data, match_whitespace);
1402
+ * @endcode
1403
+ *
1404
+ * To read data into a @c std::string until a matching character is found:
1405
+ * @code class match_char
1406
+ * {
1407
+ * public:
1408
+ * explicit match_char(char c) : c_(c) {}
1409
+ *
1410
+ * template <typename Iterator>
1411
+ * std::pair<Iterator, bool> operator()(
1412
+ * Iterator begin, Iterator end) const
1413
+ * {
1414
+ * Iterator i = begin;
1415
+ * while (i != end)
1416
+ * if (c_ == *i++)
1417
+ * return std::make_pair(i, true);
1418
+ * return std::make_pair(i, false);
1419
+ * }
1420
+ *
1421
+ * private:
1422
+ * char c_;
1423
+ * };
1424
+ *
1425
+ * namespace asio {
1426
+ * template <> struct is_match_condition<match_char>
1427
+ * : public boost::true_type {};
1428
+ * } // namespace asio
1429
+ * ...
1430
+ * std::string data;
1431
+ * boost::asio::read_until(s, data, match_char('a'));
1432
+ * @endcode
1433
+ */
1434
+ template <typename SyncReadStream,
1435
+ typename DynamicBuffer_v2, typename MatchCondition>
1436
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1437
+ MatchCondition match_condition,
1438
+ typename enable_if<
1439
+ is_match_condition<MatchCondition>::value
1440
+ && is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1441
+ >::type* = 0);
1442
+
1443
+ /// Read data into a dynamic buffer sequence until a function object indicates a
1444
+ /// match.
1445
+ /**
1446
+ * This function is used to read data into the specified dynamic buffer
1447
+ * sequence until a user-defined match condition function object, when applied
1448
+ * to the data contained in the dynamic buffer sequence, indicates a successful
1449
+ * match. The call will block until one of the following conditions is true:
1450
+ *
1451
+ * @li The match condition function object returns a std::pair where the second
1452
+ * element evaluates to true.
1453
+ *
1454
+ * @li An error occurred.
1455
+ *
1456
+ * This operation is implemented in terms of zero or more calls to the stream's
1457
+ * read_some function. If the match condition function object already indicates
1458
+ * a match, the function returns immediately.
1459
+ *
1460
+ * @param s The stream from which the data is to be read. The type must support
1461
+ * the SyncReadStream concept.
1462
+ *
1463
+ * @param buffers A dynamic buffer sequence into which the data will be read.
1464
+ *
1465
+ * @param match_condition The function object to be called to determine whether
1466
+ * a match exists. The signature of the function object must be:
1467
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1468
+ * @endcode
1469
+ * where @c iterator represents the type:
1470
+ * @code buffers_iterator<DynamicBuffer_v2::const_buffers_type>
1471
+ * @endcode
1472
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1473
+ * scanned to determine whether there is a match. The @c first member of the
1474
+ * return value is an iterator marking one-past-the-end of the bytes that have
1475
+ * been consumed by the match function. This iterator is used to calculate the
1476
+ * @c begin parameter for any subsequent invocation of the match condition. The
1477
+ * @c second member of the return value is true if a match has been found, false
1478
+ * otherwise.
1479
+ *
1480
+ * @param ec Set to indicate what error occurred, if any.
1481
+ *
1482
+ * @returns The number of bytes in the dynamic buffer sequence's get area that
1483
+ * have been fully consumed by the match function. Returns 0 if an error
1484
+ * occurred.
1485
+ *
1486
+ * @note After a successful read_until operation, the dynamic buffer sequence
1487
+ * may contain additional data beyond that which matched the function object.
1488
+ * An application will typically leave that data in the dynamic buffer sequence
1489
+ * for a subsequent read_until operation to examine.
1490
+ *
1491
+ * @note The default implementation of the @c is_match_condition type trait
1492
+ * evaluates to true for function pointers and function objects with a
1493
+ * @c result_type typedef. It must be specialised for other user-defined
1494
+ * function objects.
1495
+ */
1496
+ template <typename SyncReadStream,
1497
+ typename DynamicBuffer_v2, typename MatchCondition>
1498
+ std::size_t read_until(SyncReadStream& s, DynamicBuffer_v2 buffers,
1499
+ MatchCondition match_condition, boost::system::error_code& ec,
1500
+ typename enable_if<
1501
+ is_match_condition<MatchCondition>::value
1502
+ && is_dynamic_buffer_v2<DynamicBuffer_v2>::value
1503
+ >::type* = 0);
1504
+
1505
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1506
+
1507
+ /*@}*/
1508
+ /**
1509
+ * @defgroup async_read_until boost::asio::async_read_until
1510
+ *
1511
+ * @brief The @c async_read_until function is a composed asynchronous operation
1512
+ * that reads data into a dynamic buffer sequence, or into a streambuf, until
1513
+ * it contains a delimiter, matches a regular expression, or a function object
1514
+ * indicates a match.
1515
+ */
1516
+ /*@{*/
1517
+
1518
+ #if !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1519
+
1520
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1521
+ /// until it contains a specified delimiter.
1522
+ /**
1523
+ * This function is used to asynchronously read data into the specified dynamic
1524
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1525
+ * specified delimiter. The function call always returns immediately. The
1526
+ * asynchronous operation will continue until one of the following conditions
1527
+ * is true:
1528
+ *
1529
+ * @li The get area of the dynamic buffer sequence contains the specified
1530
+ * delimiter.
1531
+ *
1532
+ * @li An error occurred.
1533
+ *
1534
+ * This operation is implemented in terms of zero or more calls to the stream's
1535
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1536
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1537
+ * asynchronous operation completes immediately. The program must ensure that
1538
+ * the stream performs no other read operations (such as async_read,
1539
+ * async_read_until, the stream's async_read_some function, or any other
1540
+ * composed operations that perform reads) until this operation completes.
1541
+ *
1542
+ * @param s The stream from which the data is to be read. The type must support
1543
+ * the AsyncReadStream concept.
1544
+ *
1545
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1546
+ * Although the buffers object may be copied as necessary, ownership of the
1547
+ * underlying memory blocks is retained by the caller, which must guarantee
1548
+ * that they remain valid until the handler is called.
1549
+ *
1550
+ * @param delim The delimiter character.
1551
+ *
1552
+ * @param handler The handler to be called when the read operation completes.
1553
+ * Copies will be made of the handler as required. The function signature of the
1554
+ * handler must be:
1555
+ * @code void handler(
1556
+ * // Result of operation.
1557
+ * const boost::system::error_code& error,
1558
+ *
1559
+ * // The number of bytes in the dynamic buffer sequence's
1560
+ * // get area up to and including the delimiter.
1561
+ * // 0 if an error occurred.
1562
+ * std::size_t bytes_transferred
1563
+ * ); @endcode
1564
+ * Regardless of whether the asynchronous operation completes immediately or
1565
+ * not, the handler will not be invoked from within this function. On
1566
+ * immediate completion, invocation of the handler will be performed in a
1567
+ * manner equivalent to using boost::asio::post().
1568
+ *
1569
+ * @note After a successful async_read_until operation, the dynamic buffer
1570
+ * sequence may contain additional data beyond the delimiter. An application
1571
+ * will typically leave that data in the dynamic buffer sequence for a
1572
+ * subsequent async_read_until operation to examine.
1573
+ *
1574
+ * @par Example
1575
+ * To asynchronously read data into a @c std::string until a newline is
1576
+ * encountered:
1577
+ * @code std::string data;
1578
+ * ...
1579
+ * void handler(const boost::system::error_code& e, std::size_t size)
1580
+ * {
1581
+ * if (!e)
1582
+ * {
1583
+ * std::string line = data.substr(0, n);
1584
+ * data.erase(0, n);
1585
+ * ...
1586
+ * }
1587
+ * }
1588
+ * ...
1589
+ * boost::asio::async_read_until(s, data, '\n', handler); @endcode
1590
+ * After the @c async_read_until operation completes successfully, the buffer
1591
+ * @c data contains the delimiter:
1592
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1593
+ * The call to @c substr then extracts the data up to and including the
1594
+ * delimiter, so that the string @c line contains:
1595
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
1596
+ * After the call to @c erase, the remaining data is left in the buffer @c data
1597
+ * as follows:
1598
+ * @code { 'd', 'e', ... } @endcode
1599
+ * This data may be the start of a new line, to be extracted by a subsequent
1600
+ * @c async_read_until operation.
1601
+ */
1602
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1603
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1604
+ std::size_t)) ReadHandler
1605
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1606
+ typename AsyncReadStream::executor_type)>
1607
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1608
+ void (boost::system::error_code, std::size_t))
1609
+ async_read_until(AsyncReadStream& s,
1610
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers, char delim,
1611
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1612
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1613
+ typename AsyncReadStream::executor_type),
1614
+ typename enable_if<
1615
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1616
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1617
+ >::type* = 0);
1618
+
1619
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1620
+ /// until it contains a specified delimiter.
1621
+ /**
1622
+ * This function is used to asynchronously read data into the specified dynamic
1623
+ * buffer sequence until the dynamic buffer sequence's get area contains the
1624
+ * specified delimiter. The function call always returns immediately. The
1625
+ * asynchronous operation will continue until one of the following conditions
1626
+ * is true:
1627
+ *
1628
+ * @li The get area of the dynamic buffer sequence contains the specified
1629
+ * delimiter.
1630
+ *
1631
+ * @li An error occurred.
1632
+ *
1633
+ * This operation is implemented in terms of zero or more calls to the stream's
1634
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1635
+ * the dynamic buffer sequence's get area already contains the delimiter, this
1636
+ * asynchronous operation completes immediately. The program must ensure that
1637
+ * the stream performs no other read operations (such as async_read,
1638
+ * async_read_until, the stream's async_read_some function, or any other
1639
+ * composed operations that perform reads) until this operation completes.
1640
+ *
1641
+ * @param s The stream from which the data is to be read. The type must support
1642
+ * the AsyncReadStream concept.
1643
+ *
1644
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1645
+ * Although the buffers object may be copied as necessary, ownership of the
1646
+ * underlying memory blocks is retained by the caller, which must guarantee
1647
+ * that they remain valid until the handler is called.
1648
+ *
1649
+ * @param delim The delimiter string.
1650
+ *
1651
+ * @param handler The handler to be called when the read operation completes.
1652
+ * Copies will be made of the handler as required. The function signature of the
1653
+ * handler must be:
1654
+ * @code void handler(
1655
+ * // Result of operation.
1656
+ * const boost::system::error_code& error,
1657
+ *
1658
+ * // The number of bytes in the dynamic buffer sequence's
1659
+ * // get area up to and including the delimiter.
1660
+ * // 0 if an error occurred.
1661
+ * std::size_t bytes_transferred
1662
+ * ); @endcode
1663
+ * Regardless of whether the asynchronous operation completes immediately or
1664
+ * not, the handler will not be invoked from within this function. On
1665
+ * immediate completion, invocation of the handler will be performed in a
1666
+ * manner equivalent to using boost::asio::post().
1667
+ *
1668
+ * @note After a successful async_read_until operation, the dynamic buffer
1669
+ * sequence may contain additional data beyond the delimiter. An application
1670
+ * will typically leave that data in the dynamic buffer sequence for a
1671
+ * subsequent async_read_until operation to examine.
1672
+ *
1673
+ * @par Example
1674
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1675
+ * encountered:
1676
+ * @code std::string data;
1677
+ * ...
1678
+ * void handler(const boost::system::error_code& e, std::size_t size)
1679
+ * {
1680
+ * if (!e)
1681
+ * {
1682
+ * std::string line = data.substr(0, n);
1683
+ * data.erase(0, n);
1684
+ * ...
1685
+ * }
1686
+ * }
1687
+ * ...
1688
+ * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
1689
+ * After the @c async_read_until operation completes successfully, the string
1690
+ * @c data contains the delimiter:
1691
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1692
+ * The call to @c substr then extracts the data up to and including the
1693
+ * delimiter, so that the string @c line contains:
1694
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1695
+ * After the call to @c erase, the remaining data is left in the string @c data
1696
+ * as follows:
1697
+ * @code { 'd', 'e', ... } @endcode
1698
+ * This data may be the start of a new line, to be extracted by a subsequent
1699
+ * @c async_read_until operation.
1700
+ */
1701
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1702
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1703
+ std::size_t)) ReadHandler
1704
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1705
+ typename AsyncReadStream::executor_type)>
1706
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1707
+ void (boost::system::error_code, std::size_t))
1708
+ async_read_until(AsyncReadStream& s,
1709
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1710
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
1711
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1712
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1713
+ typename AsyncReadStream::executor_type),
1714
+ typename enable_if<
1715
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1716
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1717
+ >::type* = 0);
1718
+
1719
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1720
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1721
+ || defined(GENERATING_DOCUMENTATION)
1722
+
1723
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1724
+ /// until some part of its data matches a regular expression.
1725
+ /**
1726
+ * This function is used to asynchronously read data into the specified dynamic
1727
+ * buffer sequence until the dynamic buffer sequence's get area contains some
1728
+ * data that matches a regular expression. The function call always returns
1729
+ * immediately. The asynchronous operation will continue until one of the
1730
+ * following conditions is true:
1731
+ *
1732
+ * @li A substring of the dynamic buffer sequence's get area matches the regular
1733
+ * expression.
1734
+ *
1735
+ * @li An error occurred.
1736
+ *
1737
+ * This operation is implemented in terms of zero or more calls to the stream's
1738
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1739
+ * the dynamic buffer sequence's get area already contains data that matches
1740
+ * the regular expression, this asynchronous operation completes immediately.
1741
+ * The program must ensure that the stream performs no other read operations
1742
+ * (such as async_read, async_read_until, the stream's async_read_some
1743
+ * function, or any other composed operations that perform reads) until this
1744
+ * operation completes.
1745
+ *
1746
+ * @param s The stream from which the data is to be read. The type must support
1747
+ * the AsyncReadStream concept.
1748
+ *
1749
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1750
+ * Although the buffers object may be copied as necessary, ownership of the
1751
+ * underlying memory blocks is retained by the caller, which must guarantee
1752
+ * that they remain valid until the handler is called.
1753
+ *
1754
+ * @param expr The regular expression.
1755
+ *
1756
+ * @param handler The handler to be called when the read operation completes.
1757
+ * Copies will be made of the handler as required. The function signature of the
1758
+ * handler must be:
1759
+ * @code void handler(
1760
+ * // Result of operation.
1761
+ * const boost::system::error_code& error,
1762
+ *
1763
+ * // The number of bytes in the dynamic buffer
1764
+ * // sequence's get area up to and including the
1765
+ * // substring that matches the regular expression.
1766
+ * // 0 if an error occurred.
1767
+ * std::size_t bytes_transferred
1768
+ * ); @endcode
1769
+ * Regardless of whether the asynchronous operation completes immediately or
1770
+ * not, the handler will not be invoked from within this function. On
1771
+ * immediate completion, invocation of the handler will be performed in a
1772
+ * manner equivalent to using boost::asio::post().
1773
+ *
1774
+ * @note After a successful async_read_until operation, the dynamic buffer
1775
+ * sequence may contain additional data beyond that which matched the regular
1776
+ * expression. An application will typically leave that data in the dynamic
1777
+ * buffer sequence for a subsequent async_read_until operation to examine.
1778
+ *
1779
+ * @par Example
1780
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1781
+ * encountered:
1782
+ * @code std::string data;
1783
+ * ...
1784
+ * void handler(const boost::system::error_code& e, std::size_t size)
1785
+ * {
1786
+ * if (!e)
1787
+ * {
1788
+ * std::string line = data.substr(0, n);
1789
+ * data.erase(0, n);
1790
+ * ...
1791
+ * }
1792
+ * }
1793
+ * ...
1794
+ * boost::asio::async_read_until(s, data,
1795
+ * boost::regex("\r\n"), handler); @endcode
1796
+ * After the @c async_read_until operation completes successfully, the string
1797
+ * @c data contains the data which matched the regular expression:
1798
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1799
+ * The call to @c substr then extracts the data up to and including the match,
1800
+ * so that the string @c line contains:
1801
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1802
+ * After the call to @c erase, the remaining data is left in the string @c data
1803
+ * as follows:
1804
+ * @code { 'd', 'e', ... } @endcode
1805
+ * This data may be the start of a new line, to be extracted by a subsequent
1806
+ * @c async_read_until operation.
1807
+ */
1808
+ template <typename AsyncReadStream, typename DynamicBuffer_v1,
1809
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1810
+ std::size_t)) ReadHandler
1811
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1812
+ typename AsyncReadStream::executor_type)>
1813
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1814
+ void (boost::system::error_code, std::size_t))
1815
+ async_read_until(AsyncReadStream& s,
1816
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1817
+ const boost::regex& expr,
1818
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1819
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1820
+ typename AsyncReadStream::executor_type),
1821
+ typename enable_if<
1822
+ is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1823
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1824
+ >::type* = 0);
1825
+
1826
+ #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1827
+ // || defined(GENERATING_DOCUMENTATION)
1828
+
1829
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
1830
+ /// until a function object indicates a match.
1831
+ /**
1832
+ * This function is used to asynchronously read data into the specified dynamic
1833
+ * buffer sequence until a user-defined match condition function object, when
1834
+ * applied to the data contained in the dynamic buffer sequence, indicates a
1835
+ * successful match. The function call always returns immediately. The
1836
+ * asynchronous operation will continue until one of the following conditions
1837
+ * is true:
1838
+ *
1839
+ * @li The match condition function object returns a std::pair where the second
1840
+ * element evaluates to true.
1841
+ *
1842
+ * @li An error occurred.
1843
+ *
1844
+ * This operation is implemented in terms of zero or more calls to the stream's
1845
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1846
+ * the match condition function object already indicates a match, this
1847
+ * asynchronous operation completes immediately. The program must ensure that
1848
+ * the stream performs no other read operations (such as async_read,
1849
+ * async_read_until, the stream's async_read_some function, or any other
1850
+ * composed operations that perform reads) until this operation completes.
1851
+ *
1852
+ * @param s The stream from which the data is to be read. The type must support
1853
+ * the AsyncReadStream concept.
1854
+ *
1855
+ * @param buffers The dynamic buffer sequence into which the data will be read.
1856
+ * Although the buffers object may be copied as necessary, ownership of the
1857
+ * underlying memory blocks is retained by the caller, which must guarantee
1858
+ * that they remain valid until the handler is called.
1859
+ *
1860
+ * @param match_condition The function object to be called to determine whether
1861
+ * a match exists. The signature of the function object must be:
1862
+ * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1863
+ * @endcode
1864
+ * where @c iterator represents the type:
1865
+ * @code buffers_iterator<typename DynamicBuffer_v1::const_buffers_type>
1866
+ * @endcode
1867
+ * The iterator parameters @c begin and @c end define the range of bytes to be
1868
+ * scanned to determine whether there is a match. The @c first member of the
1869
+ * return value is an iterator marking one-past-the-end of the bytes that have
1870
+ * been consumed by the match function. This iterator is used to calculate the
1871
+ * @c begin parameter for any subsequent invocation of the match condition. The
1872
+ * @c second member of the return value is true if a match has been found, false
1873
+ * otherwise.
1874
+ *
1875
+ * @param handler The handler to be called when the read operation completes.
1876
+ * Copies will be made of the handler as required. The function signature of the
1877
+ * handler must be:
1878
+ * @code void handler(
1879
+ * // Result of operation.
1880
+ * const boost::system::error_code& error,
1881
+ *
1882
+ * // The number of bytes in the dynamic buffer sequence's
1883
+ * // get area that have been fully consumed by the match
1884
+ * // function. O if an error occurred.
1885
+ * std::size_t bytes_transferred
1886
+ * ); @endcode
1887
+ * Regardless of whether the asynchronous operation completes immediately or
1888
+ * not, the handler will not be invoked from within this function. On
1889
+ * immediate completion, invocation of the handler will be performed in a
1890
+ * manner equivalent to using boost::asio::post().
1891
+ *
1892
+ * @note After a successful async_read_until operation, the dynamic buffer
1893
+ * sequence may contain additional data beyond that which matched the function
1894
+ * object. An application will typically leave that data in the dynamic buffer
1895
+ * sequence for a subsequent async_read_until operation to examine.
1896
+ *
1897
+ * @note The default implementation of the @c is_match_condition type trait
1898
+ * evaluates to true for function pointers and function objects with a
1899
+ * @c result_type typedef. It must be specialised for other user-defined
1900
+ * function objects.
1901
+ *
1902
+ * @par Examples
1903
+ * To asynchronously read data into a @c std::string until whitespace is
1904
+ * encountered:
1905
+ * @code typedef boost::asio::buffers_iterator<
1906
+ * boost::asio::const_buffers_1> iterator;
1907
+ *
1908
+ * std::pair<iterator, bool>
1909
+ * match_whitespace(iterator begin, iterator end)
1910
+ * {
1911
+ * iterator i = begin;
1912
+ * while (i != end)
1913
+ * if (std::isspace(*i++))
1914
+ * return std::make_pair(i, true);
1915
+ * return std::make_pair(i, false);
1916
+ * }
1917
+ * ...
1918
+ * void handler(const boost::system::error_code& e, std::size_t size);
1919
+ * ...
1920
+ * std::string data;
1921
+ * boost::asio::async_read_until(s, data, match_whitespace, handler);
1922
+ * @endcode
1923
+ *
1924
+ * To asynchronously read data into a @c std::string until a matching character
1925
+ * is found:
1926
+ * @code class match_char
1927
+ * {
1928
+ * public:
1929
+ * explicit match_char(char c) : c_(c) {}
1930
+ *
1931
+ * template <typename Iterator>
1932
+ * std::pair<Iterator, bool> operator()(
1933
+ * Iterator begin, Iterator end) const
1934
+ * {
1935
+ * Iterator i = begin;
1936
+ * while (i != end)
1937
+ * if (c_ == *i++)
1938
+ * return std::make_pair(i, true);
1939
+ * return std::make_pair(i, false);
1940
+ * }
1941
+ *
1942
+ * private:
1943
+ * char c_;
1944
+ * };
1945
+ *
1946
+ * namespace asio {
1947
+ * template <> struct is_match_condition<match_char>
1948
+ * : public boost::true_type {};
1949
+ * } // namespace asio
1950
+ * ...
1951
+ * void handler(const boost::system::error_code& e, std::size_t size);
1952
+ * ...
1953
+ * std::string data;
1954
+ * boost::asio::async_read_until(s, data, match_char('a'), handler);
1955
+ * @endcode
1956
+ */
1957
+ template <typename AsyncReadStream,
1958
+ typename DynamicBuffer_v1, typename MatchCondition,
1959
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
1960
+ std::size_t)) ReadHandler
1961
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
1962
+ typename AsyncReadStream::executor_type)>
1963
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1964
+ void (boost::system::error_code, std::size_t))
1965
+ async_read_until(AsyncReadStream& s,
1966
+ BOOST_ASIO_MOVE_ARG(DynamicBuffer_v1) buffers,
1967
+ MatchCondition match_condition,
1968
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
1969
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
1970
+ typename AsyncReadStream::executor_type),
1971
+ typename enable_if<
1972
+ is_match_condition<MatchCondition>::value
1973
+ && is_dynamic_buffer_v1<typename decay<DynamicBuffer_v1>::type>::value
1974
+ && !is_dynamic_buffer_v2<typename decay<DynamicBuffer_v1>::type>::value
1975
+ >::type* = 0);
1976
+
1977
+ #if !defined(BOOST_ASIO_NO_IOSTREAM)
1978
+
1979
+ /// Start an asynchronous operation to read data into a streambuf until it
1980
+ /// contains a specified delimiter.
1981
+ /**
1982
+ * This function is used to asynchronously read data into the specified
1983
+ * streambuf until the streambuf's get area contains the specified delimiter.
1984
+ * The function call always returns immediately. The asynchronous operation
1985
+ * will continue until one of the following conditions is true:
1986
+ *
1987
+ * @li The get area of the streambuf contains the specified delimiter.
1988
+ *
1989
+ * @li An error occurred.
1990
+ *
1991
+ * This operation is implemented in terms of zero or more calls to the stream's
1992
+ * async_read_some function, and is known as a <em>composed operation</em>. If
1993
+ * the streambuf's get area already contains the delimiter, this asynchronous
1994
+ * operation completes immediately. The program must ensure that the stream
1995
+ * performs no other read operations (such as async_read, async_read_until, the
1996
+ * stream's async_read_some function, or any other composed operations that
1997
+ * perform reads) until this operation completes.
1998
+ *
1999
+ * @param s The stream from which the data is to be read. The type must support
2000
+ * the AsyncReadStream concept.
2001
+ *
2002
+ * @param b A streambuf object into which the data will be read. Ownership of
2003
+ * the streambuf is retained by the caller, which must guarantee that it remains
2004
+ * valid until the handler is called.
2005
+ *
2006
+ * @param delim The delimiter character.
2007
+ *
2008
+ * @param handler The handler to be called when the read operation completes.
2009
+ * Copies will be made of the handler as required. The function signature of the
2010
+ * handler must be:
2011
+ * @code void handler(
2012
+ * // Result of operation.
2013
+ * const boost::system::error_code& error,
2014
+ *
2015
+ * // The number of bytes in the streambuf's get
2016
+ * // area up to and including the delimiter.
2017
+ * // 0 if an error occurred.
2018
+ * std::size_t bytes_transferred
2019
+ * ); @endcode
2020
+ * Regardless of whether the asynchronous operation completes immediately or
2021
+ * not, the handler will not be invoked from within this function. On
2022
+ * immediate completion, invocation of the handler will be performed in a
2023
+ * manner equivalent to using boost::asio::post().
2024
+ *
2025
+ * @note After a successful async_read_until operation, the streambuf may
2026
+ * contain additional data beyond the delimiter. An application will typically
2027
+ * leave that data in the streambuf for a subsequent async_read_until operation
2028
+ * to examine.
2029
+ *
2030
+ * @par Example
2031
+ * To asynchronously read data into a streambuf until a newline is encountered:
2032
+ * @code boost::asio::streambuf b;
2033
+ * ...
2034
+ * void handler(const boost::system::error_code& e, std::size_t size)
2035
+ * {
2036
+ * if (!e)
2037
+ * {
2038
+ * std::istream is(&b);
2039
+ * std::string line;
2040
+ * std::getline(is, line);
2041
+ * ...
2042
+ * }
2043
+ * }
2044
+ * ...
2045
+ * boost::asio::async_read_until(s, b, '\n', handler); @endcode
2046
+ * After the @c async_read_until operation completes successfully, the buffer
2047
+ * @c b contains the delimiter:
2048
+ * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
2049
+ * The call to @c std::getline then extracts the data up to and including the
2050
+ * newline (which is discarded), so that the string @c line contains:
2051
+ * @code { 'a', 'b', ..., 'c' } @endcode
2052
+ * The remaining data is left in the buffer @c b as follows:
2053
+ * @code { 'd', 'e', ... } @endcode
2054
+ * This data may be the start of a new line, to be extracted by a subsequent
2055
+ * @c async_read_until operation.
2056
+ */
2057
+ template <typename AsyncReadStream, typename Allocator,
2058
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2059
+ std::size_t)) ReadHandler
2060
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2061
+ typename AsyncReadStream::executor_type)>
2062
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2063
+ void (boost::system::error_code, std::size_t))
2064
+ async_read_until(AsyncReadStream& s,
2065
+ boost::asio::basic_streambuf<Allocator>& b, char delim,
2066
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2067
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2068
+ typename AsyncReadStream::executor_type));
2069
+
2070
+ /// Start an asynchronous operation to read data into a streambuf until it
2071
+ /// contains a specified delimiter.
2072
+ /**
2073
+ * This function is used to asynchronously read data into the specified
2074
+ * streambuf until the streambuf's get area contains the specified delimiter.
2075
+ * The function call always returns immediately. The asynchronous operation
2076
+ * will continue until one of the following conditions is true:
1221
2077
  *
1222
- * // The number of bytes in the dynamic buffer
1223
- * // sequence's get area up to and including the
1224
- * // substring that matches the regular expression.
2078
+ * @li The get area of the streambuf contains the specified delimiter.
2079
+ *
2080
+ * @li An error occurred.
2081
+ *
2082
+ * This operation is implemented in terms of zero or more calls to the stream's
2083
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2084
+ * the streambuf's get area already contains the delimiter, this asynchronous
2085
+ * operation completes immediately. The program must ensure that the stream
2086
+ * performs no other read operations (such as async_read, async_read_until, the
2087
+ * stream's async_read_some function, or any other composed operations that
2088
+ * perform reads) until this operation completes.
2089
+ *
2090
+ * @param s The stream from which the data is to be read. The type must support
2091
+ * the AsyncReadStream concept.
2092
+ *
2093
+ * @param b A streambuf object into which the data will be read. Ownership of
2094
+ * the streambuf is retained by the caller, which must guarantee that it remains
2095
+ * valid until the handler is called.
2096
+ *
2097
+ * @param delim The delimiter string.
2098
+ *
2099
+ * @param handler The handler to be called when the read operation completes.
2100
+ * Copies will be made of the handler as required. The function signature of the
2101
+ * handler must be:
2102
+ * @code void handler(
2103
+ * // Result of operation.
2104
+ * const boost::system::error_code& error,
2105
+ *
2106
+ * // The number of bytes in the streambuf's get
2107
+ * // area up to and including the delimiter.
1225
2108
  * // 0 if an error occurred.
1226
2109
  * std::size_t bytes_transferred
1227
2110
  * ); @endcode
1228
2111
  * Regardless of whether the asynchronous operation completes immediately or
1229
- * not, the handler will not be invoked from within this function. Invocation of
1230
- * the handler will be performed in a manner equivalent to using
1231
- * boost::asio::io_context::post().
2112
+ * not, the handler will not be invoked from within this function. On
2113
+ * immediate completion, invocation of the handler will be performed in a
2114
+ * manner equivalent to using boost::asio::post().
1232
2115
  *
1233
- * @note After a successful async_read_until operation, the dynamic buffer
1234
- * sequence may contain additional data beyond that which matched the regular
1235
- * expression. An application will typically leave that data in the dynamic
1236
- * buffer sequence for a subsequent async_read_until operation to examine.
2116
+ * @note After a successful async_read_until operation, the streambuf may
2117
+ * contain additional data beyond the delimiter. An application will typically
2118
+ * leave that data in the streambuf for a subsequent async_read_until operation
2119
+ * to examine.
1237
2120
  *
1238
2121
  * @par Example
1239
- * To asynchronously read data into a @c std::string until a CR-LF sequence is
2122
+ * To asynchronously read data into a streambuf until a newline is encountered:
2123
+ * @code boost::asio::streambuf b;
2124
+ * ...
2125
+ * void handler(const boost::system::error_code& e, std::size_t size)
2126
+ * {
2127
+ * if (!e)
2128
+ * {
2129
+ * std::istream is(&b);
2130
+ * std::string line;
2131
+ * std::getline(is, line);
2132
+ * ...
2133
+ * }
2134
+ * }
2135
+ * ...
2136
+ * boost::asio::async_read_until(s, b, "\r\n", handler); @endcode
2137
+ * After the @c async_read_until operation completes successfully, the buffer
2138
+ * @c b contains the delimiter:
2139
+ * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
2140
+ * The call to @c std::getline then extracts the data up to and including the
2141
+ * newline (which is discarded), so that the string @c line contains:
2142
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2143
+ * The remaining data is left in the buffer @c b as follows:
2144
+ * @code { 'd', 'e', ... } @endcode
2145
+ * This data may be the start of a new line, to be extracted by a subsequent
2146
+ * @c async_read_until operation.
2147
+ */
2148
+ template <typename AsyncReadStream, typename Allocator,
2149
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2150
+ std::size_t)) ReadHandler
2151
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2152
+ typename AsyncReadStream::executor_type)>
2153
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
2154
+ void (boost::system::error_code, std::size_t))
2155
+ async_read_until(AsyncReadStream& s,
2156
+ boost::asio::basic_streambuf<Allocator>& b,
2157
+ BOOST_ASIO_STRING_VIEW_PARAM delim,
2158
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2159
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2160
+ typename AsyncReadStream::executor_type));
2161
+
2162
+ #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
2163
+ || defined(GENERATING_DOCUMENTATION)
2164
+
2165
+ /// Start an asynchronous operation to read data into a streambuf until some
2166
+ /// part of its data matches a regular expression.
2167
+ /**
2168
+ * This function is used to asynchronously read data into the specified
2169
+ * streambuf until the streambuf's get area contains some data that matches a
2170
+ * regular expression. The function call always returns immediately. The
2171
+ * asynchronous operation will continue until one of the following conditions
2172
+ * is true:
2173
+ *
2174
+ * @li A substring of the streambuf's get area matches the regular expression.
2175
+ *
2176
+ * @li An error occurred.
2177
+ *
2178
+ * This operation is implemented in terms of zero or more calls to the stream's
2179
+ * async_read_some function, and is known as a <em>composed operation</em>. If
2180
+ * the streambuf's get area already contains data that matches the regular
2181
+ * expression, this asynchronous operation completes immediately. The program
2182
+ * must ensure that the stream performs no other read operations (such as
2183
+ * async_read, async_read_until, the stream's async_read_some function, or any
2184
+ * other composed operations that perform reads) until this operation
2185
+ * completes.
2186
+ *
2187
+ * @param s The stream from which the data is to be read. The type must support
2188
+ * the AsyncReadStream concept.
2189
+ *
2190
+ * @param b A streambuf object into which the data will be read. Ownership of
2191
+ * the streambuf is retained by the caller, which must guarantee that it remains
2192
+ * valid until the handler is called.
2193
+ *
2194
+ * @param expr The regular expression.
2195
+ *
2196
+ * @param handler The handler to be called when the read operation completes.
2197
+ * Copies will be made of the handler as required. The function signature of the
2198
+ * handler must be:
2199
+ * @code void handler(
2200
+ * // Result of operation.
2201
+ * const boost::system::error_code& error,
2202
+ *
2203
+ * // The number of bytes in the streambuf's get
2204
+ * // area up to and including the substring
2205
+ * // that matches the regular. expression.
2206
+ * // 0 if an error occurred.
2207
+ * std::size_t bytes_transferred
2208
+ * ); @endcode
2209
+ * Regardless of whether the asynchronous operation completes immediately or
2210
+ * not, the handler will not be invoked from within this function. On
2211
+ * immediate completion, invocation of the handler will be performed in a
2212
+ * manner equivalent to using boost::asio::post().
2213
+ *
2214
+ * @note After a successful async_read_until operation, the streambuf may
2215
+ * contain additional data beyond that which matched the regular expression. An
2216
+ * application will typically leave that data in the streambuf for a subsequent
2217
+ * async_read_until operation to examine.
2218
+ *
2219
+ * @par Example
2220
+ * To asynchronously read data into a streambuf until a CR-LF sequence is
1240
2221
  * encountered:
1241
- * @code std::string data;
2222
+ * @code boost::asio::streambuf b;
1242
2223
  * ...
1243
2224
  * void handler(const boost::system::error_code& e, std::size_t size)
1244
2225
  * {
1245
2226
  * if (!e)
1246
2227
  * {
1247
- * std::string line = data.substr(0, n);
1248
- * data.erase(0, n);
2228
+ * std::istream is(&b);
2229
+ * std::string line;
2230
+ * std::getline(is, line);
1249
2231
  * ...
1250
2232
  * }
1251
2233
  * }
1252
2234
  * ...
1253
- * boost::asio::async_read_until(s, data,
1254
- * boost::regex("\r\n"), handler); @endcode
1255
- * After the @c async_read_until operation completes successfully, the string
1256
- * @c data contains the data which matched the regular expression:
2235
+ * boost::asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
2236
+ * After the @c async_read_until operation completes successfully, the buffer
2237
+ * @c b contains the data which matched the regular expression:
1257
2238
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1258
- * The call to @c substr then extracts the data up to and including the match,
1259
- * so that the string @c line contains:
1260
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
1261
- * After the call to @c erase, the remaining data is left in the string @c data
1262
- * as follows:
2239
+ * The call to @c std::getline then extracts the data up to and including the
2240
+ * newline (which is discarded), so that the string @c line contains:
2241
+ * @code { 'a', 'b', ..., 'c', '\r' } @endcode
2242
+ * The remaining data is left in the buffer @c b as follows:
1263
2243
  * @code { 'd', 'e', ... } @endcode
1264
2244
  * This data may be the start of a new line, to be extracted by a subsequent
1265
2245
  * @c async_read_until operation.
1266
2246
  */
1267
- template <typename AsyncReadStream,
1268
- typename DynamicBuffer, typename ReadHandler>
1269
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2247
+ template <typename AsyncReadStream, typename Allocator,
2248
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2249
+ std::size_t)) ReadHandler
2250
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2251
+ typename AsyncReadStream::executor_type)>
2252
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1270
2253
  void (boost::system::error_code, std::size_t))
1271
2254
  async_read_until(AsyncReadStream& s,
1272
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1273
- const boost::regex& expr,
1274
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
2255
+ boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
2256
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2257
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2258
+ typename AsyncReadStream::executor_type));
1275
2259
 
1276
2260
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1277
2261
  // || defined(GENERATING_DOCUMENTATION)
1278
2262
 
1279
- /// Start an asynchronous operation to read data into a dynamic buffer sequence
1280
- /// until a function object indicates a match.
2263
+ /// Start an asynchronous operation to read data into a streambuf until a
2264
+ /// function object indicates a match.
1281
2265
  /**
1282
- * This function is used to asynchronously read data into the specified dynamic
1283
- * buffer sequence until a user-defined match condition function object, when
1284
- * applied to the data contained in the dynamic buffer sequence, indicates a
1285
- * successful match. The function call always returns immediately. The
1286
- * asynchronous operation will continue until one of the following conditions
1287
- * is true:
2266
+ * This function is used to asynchronously read data into the specified
2267
+ * streambuf until a user-defined match condition function object, when applied
2268
+ * to the data contained in the streambuf, indicates a successful match. The
2269
+ * function call always returns immediately. The asynchronous operation will
2270
+ * continue until one of the following conditions is true:
1288
2271
  *
1289
2272
  * @li The match condition function object returns a std::pair where the second
1290
2273
  * element evaluates to true.
@@ -1302,17 +2285,14 @@ async_read_until(AsyncReadStream& s,
1302
2285
  * @param s The stream from which the data is to be read. The type must support
1303
2286
  * the AsyncReadStream concept.
1304
2287
  *
1305
- * @param buffers The dynamic buffer sequence into which the data will be read.
1306
- * Although the buffers object may be copied as necessary, ownership of the
1307
- * underlying memory blocks is retained by the caller, which must guarantee
1308
- * that they remain valid until the handler is called.
2288
+ * @param b A streambuf object into which the data will be read.
1309
2289
  *
1310
2290
  * @param match_condition The function object to be called to determine whether
1311
2291
  * a match exists. The signature of the function object must be:
1312
2292
  * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1313
2293
  * @endcode
1314
2294
  * where @c iterator represents the type:
1315
- * @code buffers_iterator<typename DynamicBuffer::const_buffers_type>
2295
+ * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
1316
2296
  * @endcode
1317
2297
  * The iterator parameters @c begin and @c end define the range of bytes to be
1318
2298
  * scanned to determine whether there is a match. The @c first member of the
@@ -1329,20 +2309,20 @@ async_read_until(AsyncReadStream& s,
1329
2309
  * // Result of operation.
1330
2310
  * const boost::system::error_code& error,
1331
2311
  *
1332
- * // The number of bytes in the dynamic buffer sequence's
1333
- * // get area that have been fully consumed by the match
1334
- * // function. O if an error occurred.
2312
+ * // The number of bytes in the streambuf's get
2313
+ * // area that have been fully consumed by the
2314
+ * // match function. O if an error occurred.
1335
2315
  * std::size_t bytes_transferred
1336
2316
  * ); @endcode
1337
2317
  * Regardless of whether the asynchronous operation completes immediately or
1338
- * not, the handler will not be invoked from within this function. Invocation of
1339
- * the handler will be performed in a manner equivalent to using
1340
- * boost::asio::io_context::post().
2318
+ * not, the handler will not be invoked from within this function. On
2319
+ * immediate completion, invocation of the handler will be performed in a
2320
+ * manner equivalent to using boost::asio::post().
1341
2321
  *
1342
- * @note After a successful async_read_until operation, the dynamic buffer
1343
- * sequence may contain additional data beyond that which matched the function
1344
- * object. An application will typically leave that data in the dynamic buffer
1345
- * sequence for a subsequent async_read_until operation to examine.
2322
+ * @note After a successful async_read_until operation, the streambuf may
2323
+ * contain additional data beyond that which matched the function object. An
2324
+ * application will typically leave that data in the streambuf for a subsequent
2325
+ * async_read_until operation to examine.
1346
2326
  *
1347
2327
  * @note The default implementation of the @c is_match_condition type trait
1348
2328
  * evaluates to true for function pointers and function objects with a
@@ -1350,10 +2330,9 @@ async_read_until(AsyncReadStream& s,
1350
2330
  * function objects.
1351
2331
  *
1352
2332
  * @par Examples
1353
- * To asynchronously read data into a @c std::string until whitespace is
1354
- * encountered:
2333
+ * To asynchronously read data into a streambuf until whitespace is encountered:
1355
2334
  * @code typedef boost::asio::buffers_iterator<
1356
- * boost::asio::const_buffers_1> iterator;
2335
+ * boost::asio::streambuf::const_buffers_type> iterator;
1357
2336
  *
1358
2337
  * std::pair<iterator, bool>
1359
2338
  * match_whitespace(iterator begin, iterator end)
@@ -1367,12 +2346,12 @@ async_read_until(AsyncReadStream& s,
1367
2346
  * ...
1368
2347
  * void handler(const boost::system::error_code& e, std::size_t size);
1369
2348
  * ...
1370
- * std::string data;
1371
- * boost::asio::async_read_until(s, data, match_whitespace, handler);
2349
+ * boost::asio::streambuf b;
2350
+ * boost::asio::async_read_until(s, b, match_whitespace, handler);
1372
2351
  * @endcode
1373
2352
  *
1374
- * To asynchronously read data into a @c std::string until a matching character
1375
- * is found:
2353
+ * To asynchronously read data into a streambuf until a matching character is
2354
+ * found:
1376
2355
  * @code class match_char
1377
2356
  * {
1378
2357
  * public:
@@ -1400,47 +2379,58 @@ async_read_until(AsyncReadStream& s,
1400
2379
  * ...
1401
2380
  * void handler(const boost::system::error_code& e, std::size_t size);
1402
2381
  * ...
1403
- * std::string data;
1404
- * boost::asio::async_read_until(s, data, match_char('a'), handler);
2382
+ * boost::asio::streambuf b;
2383
+ * boost::asio::async_read_until(s, b, match_char('a'), handler);
1405
2384
  * @endcode
1406
2385
  */
1407
- template <typename AsyncReadStream, typename DynamicBuffer,
1408
- typename MatchCondition, typename ReadHandler>
1409
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2386
+ template <typename AsyncReadStream, typename Allocator, typename MatchCondition,
2387
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2388
+ std::size_t)) ReadHandler
2389
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2390
+ typename AsyncReadStream::executor_type)>
2391
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1410
2392
  void (boost::system::error_code, std::size_t))
1411
2393
  async_read_until(AsyncReadStream& s,
1412
- BOOST_ASIO_MOVE_ARG(DynamicBuffer) buffers,
1413
- MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
2394
+ boost::asio::basic_streambuf<Allocator>& b,
2395
+ MatchCondition match_condition,
2396
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2397
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2398
+ typename AsyncReadStream::executor_type),
1414
2399
  typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
1415
2400
 
1416
- #if !defined(BOOST_ASIO_NO_IOSTREAM)
2401
+ #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
2402
+ #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
2403
+ #endif // !defined(BOOST_ASIO_NO_DYNAMIC_BUFFER_V1)
1417
2404
 
1418
- /// Start an asynchronous operation to read data into a streambuf until it
1419
- /// contains a specified delimiter.
2405
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2406
+ /// until it contains a specified delimiter.
1420
2407
  /**
1421
- * This function is used to asynchronously read data into the specified
1422
- * streambuf until the streambuf's get area contains the specified delimiter.
1423
- * The function call always returns immediately. The asynchronous operation
1424
- * will continue until one of the following conditions is true:
2408
+ * This function is used to asynchronously read data into the specified dynamic
2409
+ * buffer sequence until the dynamic buffer sequence's get area contains the
2410
+ * specified delimiter. The function call always returns immediately. The
2411
+ * asynchronous operation will continue until one of the following conditions
2412
+ * is true:
1425
2413
  *
1426
- * @li The get area of the streambuf contains the specified delimiter.
2414
+ * @li The get area of the dynamic buffer sequence contains the specified
2415
+ * delimiter.
1427
2416
  *
1428
2417
  * @li An error occurred.
1429
2418
  *
1430
2419
  * This operation is implemented in terms of zero or more calls to the stream's
1431
2420
  * async_read_some function, and is known as a <em>composed operation</em>. If
1432
- * the streambuf's get area already contains the delimiter, this asynchronous
1433
- * operation completes immediately. The program must ensure that the stream
1434
- * performs no other read operations (such as async_read, async_read_until, the
1435
- * stream's async_read_some function, or any other composed operations that
1436
- * perform reads) until this operation completes.
2421
+ * the dynamic buffer sequence's get area already contains the delimiter, this
2422
+ * asynchronous operation completes immediately. The program must ensure that
2423
+ * the stream performs no other read operations (such as async_read,
2424
+ * async_read_until, the stream's async_read_some function, or any other
2425
+ * composed operations that perform reads) until this operation completes.
1437
2426
  *
1438
2427
  * @param s The stream from which the data is to be read. The type must support
1439
2428
  * the AsyncReadStream concept.
1440
2429
  *
1441
- * @param b A streambuf object into which the data will be read. Ownership of
1442
- * the streambuf is retained by the caller, which must guarantee that it remains
1443
- * valid until the handler is called.
2430
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2431
+ * Although the buffers object may be copied as necessary, ownership of the
2432
+ * underlying memory blocks is retained by the caller, which must guarantee
2433
+ * that they remain valid until the handler is called.
1444
2434
  *
1445
2435
  * @param delim The delimiter character.
1446
2436
  *
@@ -1451,81 +2441,93 @@ async_read_until(AsyncReadStream& s,
1451
2441
  * // Result of operation.
1452
2442
  * const boost::system::error_code& error,
1453
2443
  *
1454
- * // The number of bytes in the streambuf's get
1455
- * // area up to and including the delimiter.
2444
+ * // The number of bytes in the dynamic buffer sequence's
2445
+ * // get area up to and including the delimiter.
1456
2446
  * // 0 if an error occurred.
1457
2447
  * std::size_t bytes_transferred
1458
2448
  * ); @endcode
1459
2449
  * Regardless of whether the asynchronous operation completes immediately or
1460
- * not, the handler will not be invoked from within this function. Invocation of
1461
- * the handler will be performed in a manner equivalent to using
1462
- * boost::asio::io_context::post().
2450
+ * not, the handler will not be invoked from within this function. On
2451
+ * immediate completion, invocation of the handler will be performed in a
2452
+ * manner equivalent to using boost::asio::post().
1463
2453
  *
1464
- * @note After a successful async_read_until operation, the streambuf may
1465
- * contain additional data beyond the delimiter. An application will typically
1466
- * leave that data in the streambuf for a subsequent async_read_until operation
1467
- * to examine.
2454
+ * @note After a successful async_read_until operation, the dynamic buffer
2455
+ * sequence may contain additional data beyond the delimiter. An application
2456
+ * will typically leave that data in the dynamic buffer sequence for a
2457
+ * subsequent async_read_until operation to examine.
1468
2458
  *
1469
2459
  * @par Example
1470
- * To asynchronously read data into a streambuf until a newline is encountered:
1471
- * @code boost::asio::streambuf b;
2460
+ * To asynchronously read data into a @c std::string until a newline is
2461
+ * encountered:
2462
+ * @code std::string data;
1472
2463
  * ...
1473
2464
  * void handler(const boost::system::error_code& e, std::size_t size)
1474
2465
  * {
1475
2466
  * if (!e)
1476
2467
  * {
1477
- * std::istream is(&b);
1478
- * std::string line;
1479
- * std::getline(is, line);
2468
+ * std::string line = data.substr(0, n);
2469
+ * data.erase(0, n);
1480
2470
  * ...
1481
2471
  * }
1482
2472
  * }
1483
2473
  * ...
1484
- * boost::asio::async_read_until(s, b, '\n', handler); @endcode
2474
+ * boost::asio::async_read_until(s, data, '\n', handler); @endcode
1485
2475
  * After the @c async_read_until operation completes successfully, the buffer
1486
- * @c b contains the delimiter:
2476
+ * @c data contains the delimiter:
1487
2477
  * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
1488
- * The call to @c std::getline then extracts the data up to and including the
1489
- * newline (which is discarded), so that the string @c line contains:
1490
- * @code { 'a', 'b', ..., 'c' } @endcode
1491
- * The remaining data is left in the buffer @c b as follows:
2478
+ * The call to @c substr then extracts the data up to and including the
2479
+ * delimiter, so that the string @c line contains:
2480
+ * @code { 'a', 'b', ..., 'c', '\n' } @endcode
2481
+ * After the call to @c erase, the remaining data is left in the buffer @c data
2482
+ * as follows:
1492
2483
  * @code { 'd', 'e', ... } @endcode
1493
2484
  * This data may be the start of a new line, to be extracted by a subsequent
1494
2485
  * @c async_read_until operation.
1495
2486
  */
1496
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1497
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2487
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2488
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2489
+ std::size_t)) ReadHandler
2490
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2491
+ typename AsyncReadStream::executor_type)>
2492
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1498
2493
  void (boost::system::error_code, std::size_t))
1499
- async_read_until(AsyncReadStream& s,
1500
- boost::asio::basic_streambuf<Allocator>& b,
1501
- char delim, BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
2494
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers, char delim,
2495
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2496
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2497
+ typename AsyncReadStream::executor_type),
2498
+ typename enable_if<
2499
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2500
+ >::type* = 0);
1502
2501
 
1503
- /// Start an asynchronous operation to read data into a streambuf until it
1504
- /// contains a specified delimiter.
2502
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2503
+ /// until it contains a specified delimiter.
1505
2504
  /**
1506
- * This function is used to asynchronously read data into the specified
1507
- * streambuf until the streambuf's get area contains the specified delimiter.
1508
- * The function call always returns immediately. The asynchronous operation
1509
- * will continue until one of the following conditions is true:
2505
+ * This function is used to asynchronously read data into the specified dynamic
2506
+ * buffer sequence until the dynamic buffer sequence's get area contains the
2507
+ * specified delimiter. The function call always returns immediately. The
2508
+ * asynchronous operation will continue until one of the following conditions
2509
+ * is true:
1510
2510
  *
1511
- * @li The get area of the streambuf contains the specified delimiter.
2511
+ * @li The get area of the dynamic buffer sequence contains the specified
2512
+ * delimiter.
1512
2513
  *
1513
2514
  * @li An error occurred.
1514
2515
  *
1515
2516
  * This operation is implemented in terms of zero or more calls to the stream's
1516
2517
  * async_read_some function, and is known as a <em>composed operation</em>. If
1517
- * the streambuf's get area already contains the delimiter, this asynchronous
1518
- * operation completes immediately. The program must ensure that the stream
1519
- * performs no other read operations (such as async_read, async_read_until, the
1520
- * stream's async_read_some function, or any other composed operations that
1521
- * perform reads) until this operation completes.
2518
+ * the dynamic buffer sequence's get area already contains the delimiter, this
2519
+ * asynchronous operation completes immediately. The program must ensure that
2520
+ * the stream performs no other read operations (such as async_read,
2521
+ * async_read_until, the stream's async_read_some function, or any other
2522
+ * composed operations that perform reads) until this operation completes.
1522
2523
  *
1523
2524
  * @param s The stream from which the data is to be read. The type must support
1524
2525
  * the AsyncReadStream concept.
1525
2526
  *
1526
- * @param b A streambuf object into which the data will be read. Ownership of
1527
- * the streambuf is retained by the caller, which must guarantee that it remains
1528
- * valid until the handler is called.
2527
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2528
+ * Although the buffers object may be copied as necessary, ownership of the
2529
+ * underlying memory blocks is retained by the caller, which must guarantee
2530
+ * that they remain valid until the handler is called.
1529
2531
  *
1530
2532
  * @param delim The delimiter string.
1531
2533
  *
@@ -1536,87 +2538,99 @@ async_read_until(AsyncReadStream& s,
1536
2538
  * // Result of operation.
1537
2539
  * const boost::system::error_code& error,
1538
2540
  *
1539
- * // The number of bytes in the streambuf's get
1540
- * // area up to and including the delimiter.
2541
+ * // The number of bytes in the dynamic buffer sequence's
2542
+ * // get area up to and including the delimiter.
1541
2543
  * // 0 if an error occurred.
1542
2544
  * std::size_t bytes_transferred
1543
2545
  * ); @endcode
1544
2546
  * Regardless of whether the asynchronous operation completes immediately or
1545
- * not, the handler will not be invoked from within this function. Invocation of
1546
- * the handler will be performed in a manner equivalent to using
1547
- * boost::asio::io_context::post().
2547
+ * not, the handler will not be invoked from within this function. On
2548
+ * immediate completion, invocation of the handler will be performed in a
2549
+ * manner equivalent to using boost::asio::post().
1548
2550
  *
1549
- * @note After a successful async_read_until operation, the streambuf may
1550
- * contain additional data beyond the delimiter. An application will typically
1551
- * leave that data in the streambuf for a subsequent async_read_until operation
1552
- * to examine.
2551
+ * @note After a successful async_read_until operation, the dynamic buffer
2552
+ * sequence may contain additional data beyond the delimiter. An application
2553
+ * will typically leave that data in the dynamic buffer sequence for a
2554
+ * subsequent async_read_until operation to examine.
1553
2555
  *
1554
2556
  * @par Example
1555
- * To asynchronously read data into a streambuf until a newline is encountered:
1556
- * @code boost::asio::streambuf b;
2557
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
2558
+ * encountered:
2559
+ * @code std::string data;
1557
2560
  * ...
1558
2561
  * void handler(const boost::system::error_code& e, std::size_t size)
1559
2562
  * {
1560
2563
  * if (!e)
1561
2564
  * {
1562
- * std::istream is(&b);
1563
- * std::string line;
1564
- * std::getline(is, line);
2565
+ * std::string line = data.substr(0, n);
2566
+ * data.erase(0, n);
1565
2567
  * ...
1566
2568
  * }
1567
2569
  * }
1568
2570
  * ...
1569
- * boost::asio::async_read_until(s, b, "\r\n", handler); @endcode
1570
- * After the @c async_read_until operation completes successfully, the buffer
1571
- * @c b contains the delimiter:
2571
+ * boost::asio::async_read_until(s, data, "\r\n", handler); @endcode
2572
+ * After the @c async_read_until operation completes successfully, the string
2573
+ * @c data contains the delimiter:
1572
2574
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1573
- * The call to @c std::getline then extracts the data up to and including the
1574
- * newline (which is discarded), so that the string @c line contains:
1575
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
1576
- * The remaining data is left in the buffer @c b as follows:
2575
+ * The call to @c substr then extracts the data up to and including the
2576
+ * delimiter, so that the string @c line contains:
2577
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2578
+ * After the call to @c erase, the remaining data is left in the string @c data
2579
+ * as follows:
1577
2580
  * @code { 'd', 'e', ... } @endcode
1578
2581
  * This data may be the start of a new line, to be extracted by a subsequent
1579
2582
  * @c async_read_until operation.
1580
2583
  */
1581
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1582
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2584
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2585
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2586
+ std::size_t)) ReadHandler
2587
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2588
+ typename AsyncReadStream::executor_type)>
2589
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1583
2590
  void (boost::system::error_code, std::size_t))
1584
- async_read_until(AsyncReadStream& s,
1585
- boost::asio::basic_streambuf<Allocator>& b,
2591
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
1586
2592
  BOOST_ASIO_STRING_VIEW_PARAM delim,
1587
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
2593
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2594
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2595
+ typename AsyncReadStream::executor_type),
2596
+ typename enable_if<
2597
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2598
+ >::type* = 0);
1588
2599
 
2600
+ #if !defined(BOOST_ASIO_NO_EXTENSIONS)
1589
2601
  #if defined(BOOST_ASIO_HAS_BOOST_REGEX) \
1590
2602
  || defined(GENERATING_DOCUMENTATION)
1591
2603
 
1592
- /// Start an asynchronous operation to read data into a streambuf until some
1593
- /// part of its data matches a regular expression.
2604
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2605
+ /// until some part of its data matches a regular expression.
1594
2606
  /**
1595
- * This function is used to asynchronously read data into the specified
1596
- * streambuf until the streambuf's get area contains some data that matches a
1597
- * regular expression. The function call always returns immediately. The
1598
- * asynchronous operation will continue until one of the following conditions
1599
- * is true:
2607
+ * This function is used to asynchronously read data into the specified dynamic
2608
+ * buffer sequence until the dynamic buffer sequence's get area contains some
2609
+ * data that matches a regular expression. The function call always returns
2610
+ * immediately. The asynchronous operation will continue until one of the
2611
+ * following conditions is true:
1600
2612
  *
1601
- * @li A substring of the streambuf's get area matches the regular expression.
2613
+ * @li A substring of the dynamic buffer sequence's get area matches the regular
2614
+ * expression.
1602
2615
  *
1603
2616
  * @li An error occurred.
1604
2617
  *
1605
2618
  * This operation is implemented in terms of zero or more calls to the stream's
1606
2619
  * async_read_some function, and is known as a <em>composed operation</em>. If
1607
- * the streambuf's get area already contains data that matches the regular
1608
- * expression, this asynchronous operation completes immediately. The program
1609
- * must ensure that the stream performs no other read operations (such as
1610
- * async_read, async_read_until, the stream's async_read_some function, or any
1611
- * other composed operations that perform reads) until this operation
1612
- * completes.
2620
+ * the dynamic buffer sequence's get area already contains data that matches
2621
+ * the regular expression, this asynchronous operation completes immediately.
2622
+ * The program must ensure that the stream performs no other read operations
2623
+ * (such as async_read, async_read_until, the stream's async_read_some
2624
+ * function, or any other composed operations that perform reads) until this
2625
+ * operation completes.
1613
2626
  *
1614
2627
  * @param s The stream from which the data is to be read. The type must support
1615
2628
  * the AsyncReadStream concept.
1616
2629
  *
1617
- * @param b A streambuf object into which the data will be read. Ownership of
1618
- * the streambuf is retained by the caller, which must guarantee that it remains
1619
- * valid until the handler is called.
2630
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2631
+ * Although the buffers object may be copied as necessary, ownership of the
2632
+ * underlying memory blocks is retained by the caller, which must guarantee
2633
+ * that they remain valid until the handler is called.
1620
2634
  *
1621
2635
  * @param expr The regular expression.
1622
2636
  *
@@ -1627,68 +2641,79 @@ async_read_until(AsyncReadStream& s,
1627
2641
  * // Result of operation.
1628
2642
  * const boost::system::error_code& error,
1629
2643
  *
1630
- * // The number of bytes in the streambuf's get
1631
- * // area up to and including the substring
1632
- * // that matches the regular. expression.
2644
+ * // The number of bytes in the dynamic buffer
2645
+ * // sequence's get area up to and including the
2646
+ * // substring that matches the regular expression.
1633
2647
  * // 0 if an error occurred.
1634
2648
  * std::size_t bytes_transferred
1635
2649
  * ); @endcode
1636
2650
  * Regardless of whether the asynchronous operation completes immediately or
1637
- * not, the handler will not be invoked from within this function. Invocation of
1638
- * the handler will be performed in a manner equivalent to using
1639
- * boost::asio::io_context::post().
2651
+ * not, the handler will not be invoked from within this function. On
2652
+ * immediate completion, invocation of the handler will be performed in a
2653
+ * manner equivalent to using boost::asio::post().
1640
2654
  *
1641
- * @note After a successful async_read_until operation, the streambuf may
1642
- * contain additional data beyond that which matched the regular expression. An
1643
- * application will typically leave that data in the streambuf for a subsequent
1644
- * async_read_until operation to examine.
2655
+ * @note After a successful async_read_until operation, the dynamic buffer
2656
+ * sequence may contain additional data beyond that which matched the regular
2657
+ * expression. An application will typically leave that data in the dynamic
2658
+ * buffer sequence for a subsequent async_read_until operation to examine.
1645
2659
  *
1646
2660
  * @par Example
1647
- * To asynchronously read data into a streambuf until a CR-LF sequence is
2661
+ * To asynchronously read data into a @c std::string until a CR-LF sequence is
1648
2662
  * encountered:
1649
- * @code boost::asio::streambuf b;
2663
+ * @code std::string data;
1650
2664
  * ...
1651
2665
  * void handler(const boost::system::error_code& e, std::size_t size)
1652
2666
  * {
1653
2667
  * if (!e)
1654
2668
  * {
1655
- * std::istream is(&b);
1656
- * std::string line;
1657
- * std::getline(is, line);
2669
+ * std::string line = data.substr(0, n);
2670
+ * data.erase(0, n);
1658
2671
  * ...
1659
2672
  * }
1660
2673
  * }
1661
2674
  * ...
1662
- * boost::asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
1663
- * After the @c async_read_until operation completes successfully, the buffer
1664
- * @c b contains the data which matched the regular expression:
2675
+ * boost::asio::async_read_until(s, data,
2676
+ * boost::regex("\r\n"), handler); @endcode
2677
+ * After the @c async_read_until operation completes successfully, the string
2678
+ * @c data contains the data which matched the regular expression:
1665
2679
  * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
1666
- * The call to @c std::getline then extracts the data up to and including the
1667
- * newline (which is discarded), so that the string @c line contains:
1668
- * @code { 'a', 'b', ..., 'c', '\r' } @endcode
1669
- * The remaining data is left in the buffer @c b as follows:
2680
+ * The call to @c substr then extracts the data up to and including the match,
2681
+ * so that the string @c line contains:
2682
+ * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
2683
+ * After the call to @c erase, the remaining data is left in the string @c data
2684
+ * as follows:
1670
2685
  * @code { 'd', 'e', ... } @endcode
1671
2686
  * This data may be the start of a new line, to be extracted by a subsequent
1672
2687
  * @c async_read_until operation.
1673
2688
  */
1674
- template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
1675
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2689
+ template <typename AsyncReadStream, typename DynamicBuffer_v2,
2690
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2691
+ std::size_t)) ReadHandler
2692
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2693
+ typename AsyncReadStream::executor_type)>
2694
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1676
2695
  void (boost::system::error_code, std::size_t))
1677
- async_read_until(AsyncReadStream& s,
1678
- boost::asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
1679
- BOOST_ASIO_MOVE_ARG(ReadHandler) handler);
2696
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2697
+ const boost::regex& expr,
2698
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2699
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2700
+ typename AsyncReadStream::executor_type),
2701
+ typename enable_if<
2702
+ is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2703
+ >::type* = 0);
1680
2704
 
1681
2705
  #endif // defined(BOOST_ASIO_HAS_BOOST_REGEX)
1682
2706
  // || defined(GENERATING_DOCUMENTATION)
1683
2707
 
1684
- /// Start an asynchronous operation to read data into a streambuf until a
1685
- /// function object indicates a match.
2708
+ /// Start an asynchronous operation to read data into a dynamic buffer sequence
2709
+ /// until a function object indicates a match.
1686
2710
  /**
1687
- * This function is used to asynchronously read data into the specified
1688
- * streambuf until a user-defined match condition function object, when applied
1689
- * to the data contained in the streambuf, indicates a successful match. The
1690
- * function call always returns immediately. The asynchronous operation will
1691
- * continue until one of the following conditions is true:
2711
+ * This function is used to asynchronously read data into the specified dynamic
2712
+ * buffer sequence until a user-defined match condition function object, when
2713
+ * applied to the data contained in the dynamic buffer sequence, indicates a
2714
+ * successful match. The function call always returns immediately. The
2715
+ * asynchronous operation will continue until one of the following conditions
2716
+ * is true:
1692
2717
  *
1693
2718
  * @li The match condition function object returns a std::pair where the second
1694
2719
  * element evaluates to true.
@@ -1706,14 +2731,17 @@ async_read_until(AsyncReadStream& s,
1706
2731
  * @param s The stream from which the data is to be read. The type must support
1707
2732
  * the AsyncReadStream concept.
1708
2733
  *
1709
- * @param b A streambuf object into which the data will be read.
2734
+ * @param buffers The dynamic buffer sequence into which the data will be read.
2735
+ * Although the buffers object may be copied as necessary, ownership of the
2736
+ * underlying memory blocks is retained by the caller, which must guarantee
2737
+ * that they remain valid until the handler is called.
1710
2738
  *
1711
2739
  * @param match_condition The function object to be called to determine whether
1712
2740
  * a match exists. The signature of the function object must be:
1713
2741
  * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
1714
2742
  * @endcode
1715
2743
  * where @c iterator represents the type:
1716
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
2744
+ * @code buffers_iterator<typename DynamicBuffer_v2::const_buffers_type>
1717
2745
  * @endcode
1718
2746
  * The iterator parameters @c begin and @c end define the range of bytes to be
1719
2747
  * scanned to determine whether there is a match. The @c first member of the
@@ -1730,20 +2758,20 @@ async_read_until(AsyncReadStream& s,
1730
2758
  * // Result of operation.
1731
2759
  * const boost::system::error_code& error,
1732
2760
  *
1733
- * // The number of bytes in the streambuf's get
1734
- * // area that have been fully consumed by the
1735
- * // match function. O if an error occurred.
2761
+ * // The number of bytes in the dynamic buffer sequence's
2762
+ * // get area that have been fully consumed by the match
2763
+ * // function. O if an error occurred.
1736
2764
  * std::size_t bytes_transferred
1737
2765
  * ); @endcode
1738
2766
  * Regardless of whether the asynchronous operation completes immediately or
1739
- * not, the handler will not be invoked from within this function. Invocation of
1740
- * the handler will be performed in a manner equivalent to using
1741
- * boost::asio::io_context::post().
2767
+ * not, the handler will not be invoked from within this function. On
2768
+ * immediate completion, invocation of the handler will be performed in a
2769
+ * manner equivalent to using boost::asio::post().
1742
2770
  *
1743
- * @note After a successful async_read_until operation, the streambuf may
1744
- * contain additional data beyond that which matched the function object. An
1745
- * application will typically leave that data in the streambuf for a subsequent
1746
- * async_read_until operation to examine.
2771
+ * @note After a successful async_read_until operation, the dynamic buffer
2772
+ * sequence may contain additional data beyond that which matched the function
2773
+ * object. An application will typically leave that data in the dynamic buffer
2774
+ * sequence for a subsequent async_read_until operation to examine.
1747
2775
  *
1748
2776
  * @note The default implementation of the @c is_match_condition type trait
1749
2777
  * evaluates to true for function pointers and function objects with a
@@ -1751,9 +2779,10 @@ async_read_until(AsyncReadStream& s,
1751
2779
  * function objects.
1752
2780
  *
1753
2781
  * @par Examples
1754
- * To asynchronously read data into a streambuf until whitespace is encountered:
2782
+ * To asynchronously read data into a @c std::string until whitespace is
2783
+ * encountered:
1755
2784
  * @code typedef boost::asio::buffers_iterator<
1756
- * boost::asio::streambuf::const_buffers_type> iterator;
2785
+ * boost::asio::const_buffers_1> iterator;
1757
2786
  *
1758
2787
  * std::pair<iterator, bool>
1759
2788
  * match_whitespace(iterator begin, iterator end)
@@ -1767,12 +2796,12 @@ async_read_until(AsyncReadStream& s,
1767
2796
  * ...
1768
2797
  * void handler(const boost::system::error_code& e, std::size_t size);
1769
2798
  * ...
1770
- * boost::asio::streambuf b;
1771
- * boost::asio::async_read_until(s, b, match_whitespace, handler);
2799
+ * std::string data;
2800
+ * boost::asio::async_read_until(s, data, match_whitespace, handler);
1772
2801
  * @endcode
1773
2802
  *
1774
- * To asynchronously read data into a streambuf until a matching character is
1775
- * found:
2803
+ * To asynchronously read data into a @c std::string until a matching character
2804
+ * is found:
1776
2805
  * @code class match_char
1777
2806
  * {
1778
2807
  * public:
@@ -1800,20 +2829,28 @@ async_read_until(AsyncReadStream& s,
1800
2829
  * ...
1801
2830
  * void handler(const boost::system::error_code& e, std::size_t size);
1802
2831
  * ...
1803
- * boost::asio::streambuf b;
1804
- * boost::asio::async_read_until(s, b, match_char('a'), handler);
2832
+ * std::string data;
2833
+ * boost::asio::async_read_until(s, data, match_char('a'), handler);
1805
2834
  * @endcode
1806
2835
  */
1807
- template <typename AsyncReadStream, typename Allocator,
1808
- typename MatchCondition, typename ReadHandler>
1809
- BOOST_ASIO_INITFN_RESULT_TYPE(ReadHandler,
2836
+ template <typename AsyncReadStream,
2837
+ typename DynamicBuffer_v2, typename MatchCondition,
2838
+ BOOST_ASIO_COMPLETION_TOKEN_FOR(void (boost::system::error_code,
2839
+ std::size_t)) ReadHandler
2840
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN_TYPE(
2841
+ typename AsyncReadStream::executor_type)>
2842
+ BOOST_ASIO_INITFN_AUTO_RESULT_TYPE(ReadHandler,
1810
2843
  void (boost::system::error_code, std::size_t))
1811
- async_read_until(AsyncReadStream& s,
1812
- boost::asio::basic_streambuf<Allocator>& b,
1813
- MatchCondition match_condition, BOOST_ASIO_MOVE_ARG(ReadHandler) handler,
1814
- typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
2844
+ async_read_until(AsyncReadStream& s, DynamicBuffer_v2 buffers,
2845
+ MatchCondition match_condition,
2846
+ BOOST_ASIO_MOVE_ARG(ReadHandler) handler
2847
+ BOOST_ASIO_DEFAULT_COMPLETION_TOKEN(
2848
+ typename AsyncReadStream::executor_type),
2849
+ typename enable_if<
2850
+ is_match_condition<MatchCondition>::value
2851
+ && is_dynamic_buffer_v2<DynamicBuffer_v2>::value
2852
+ >::type* = 0);
1815
2853
 
1816
- #endif // !defined(BOOST_ASIO_NO_IOSTREAM)
1817
2854
  #endif // !defined(BOOST_ASIO_NO_EXTENSIONS)
1818
2855
 
1819
2856
  /*@}*/