passenger 6.0.14 → 6.0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (963) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +28 -1
  3. data/CONTRIBUTORS +2 -0
  4. data/build/common_library.rb +1 -0
  5. data/src/agent/Core/Config.h +1 -1
  6. data/src/agent/Core/Controller/Config.h +1 -1
  7. data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +24 -2
  8. data/src/agent/Watchdog/Config.h +1 -1
  9. data/src/agent/Watchdog/WatchdogMain.cpp +4 -0
  10. data/src/cxx_supportlib/BackgroundEventLoop.cpp +4 -0
  11. data/src/cxx_supportlib/Constants.h +1 -1
  12. data/src/cxx_supportlib/LoggingKit/Context.h +1 -1
  13. data/src/cxx_supportlib/SafeLibev.h +2 -0
  14. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +11 -3
  15. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_iterator.hpp +27 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +34 -0
  17. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +42 -39
  18. data/src/cxx_supportlib/vendor-modified/boost/asio/append.hpp +80 -0
  19. data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +141 -0
  20. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +4 -4
  21. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_cancellation_slot.hpp +4 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +4 -4
  23. data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
  24. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +363 -1
  25. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +10 -1
  26. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +208 -115
  27. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +28 -16
  28. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_file.hpp +831 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  30. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +703 -0
  31. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +210 -117
  32. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +637 -0
  33. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +84 -47
  34. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +123 -30
  35. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +36 -14
  36. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +58 -26
  37. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +303 -150
  38. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +1 -1
  39. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +1 -1
  40. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +756 -0
  41. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +153 -84
  42. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  43. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  44. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +28 -16
  45. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +633 -0
  46. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +724 -0
  47. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +11 -8
  48. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +36 -20
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +222 -42
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +330 -0
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +38 -6
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +34 -5
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +38 -6
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_signal.hpp +10 -64
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_state.hpp +1 -1
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/cancellation_type.hpp +1 -1
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +33 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +682 -12
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +132 -61
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/connect_pipe.hpp +85 -0
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +1 -1
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +128 -42
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +677 -0
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +6 -5
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  74. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +4 -1
  75. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_cancellation_state.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
  77. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +1 -1
  78. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +1 -1
  79. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  80. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +192 -1
  81. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  85. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  86. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +1 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  88. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +1 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  90. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +233 -10
  91. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +38 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +3 -1
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +1 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +42 -2
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +3 -1
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +3 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +10 -2
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +4 -2
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/exception.hpp +42 -0
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +1 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +2 -2
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +1 -1
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +1 -1
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +1 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +330 -5
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +13 -1
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_descriptor_service.ipp +207 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_file_service.ipp +142 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.hpp +114 -0
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_service.ipp +882 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/io_uring_socket_service_base.ipp +251 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +1 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{reactive_serial_port_service.ipp → posix_serial_port_service.ipp} +38 -19
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +9 -2
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +1 -1
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +19 -4
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +36 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +108 -3
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +126 -121
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +4 -4
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +1 -1
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/thread_context.ipp +1 -1
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +10 -6
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +11 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_at_op.hpp +194 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_read_op.hpp +189 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_service.hpp +681 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_at_op.hpp +188 -0
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_descriptor_write_op.hpp +184 -0
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_file_service.hpp +264 -0
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_null_buffers_op.hpp +115 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_operation.hpp +86 -0
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_service.hpp +320 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_accept_op.hpp +283 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_connect_op.hpp +141 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recv_op.hpp +204 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvfrom_op.hpp +205 -0
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_recvmsg_op.hpp +191 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_send_op.hpp +190 -0
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_sendto_op.hpp +193 -0
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service.hpp +633 -0
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_socket_service_base.hpp +665 -0
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_uring_wait_op.hpp +113 -0
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +27 -1
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +4 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +17 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -5
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +19 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +1 -1
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +9 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{reactive_serial_port_service.hpp → posix_serial_port_service.hpp} +30 -18
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +12 -2
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +29 -8
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +1 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +5 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +3 -1
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +3 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +3 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +3 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +3 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +3 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +41 -13
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +5 -4
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +1 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +29 -5
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +3 -1
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +1 -1
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +16 -4
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_task.hpp +51 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +27 -1
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +1 -1
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +5 -1
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +57 -3
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +37 -45
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +1 -1
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +1 -1
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +5 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +18 -9
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +7 -3
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +3 -1
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +3 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +9 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/utility.hpp +86 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +1 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +4 -2
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +126 -42
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +30 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +7 -2
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +1 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +1 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +1 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +1 -1
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +1 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +1 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +1 -1
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +1 -1
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +1 -1
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +1 -1
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +1 -1
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +1 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +1 -1
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +1 -1
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +1 -1
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +1 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +100 -32
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/append.hpp +6 -41
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_single.hpp +6 -5
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/as_tuple.hpp +6 -101
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/awaitable_operators.hpp +14 -14
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +493 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +493 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/cancellation_condition.hpp +1 -1
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel.hpp +72 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_error.hpp +88 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/channel_traits.hpp +233 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +189 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/concurrent_channel.hpp +72 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/coro.hpp +95 -887
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/{detail/coro_traits.hpp → coro_traits.hpp} +65 -20
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/deferred.hpp +6 -575
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_handler.hpp +72 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_message.hpp +124 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_operation.hpp +201 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_payload.hpp +95 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +114 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +134 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +142 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +499 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/completion_handler_erasure.hpp +82 -46
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +3 -3
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/has_signature.hpp +56 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +611 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +11 -12
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +1 -1
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/channel_error.ipp +63 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1197 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/parallel_group.hpp +14 -28
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/promise.hpp +6 -2
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/use_coro.hpp +270 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +27 -37
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/prepend.hpp +6 -41
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +27 -405
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +116 -229
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/file_base.hpp +168 -0
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +1 -1
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/any_io_executor.ipp +131 -0
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/append.hpp +18 -19
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/as_tuple.hpp +13 -15
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +400 -5
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +13 -3
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +13 -3
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancellation_signal.ipp +98 -0
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +71 -7
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +21 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +67 -34
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.hpp +75 -0
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect_pipe.ipp +151 -0
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +23 -13
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/deferred.hpp +31 -40
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +23 -13
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +1 -1
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +1 -1
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +1 -1
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +53 -47
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +1 -1
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +1 -1
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +23 -13
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/prepend.hpp +16 -17
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +97 -51
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +51 -31
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +119 -59
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1321 -277
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +11 -2
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +1 -1
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +18 -8
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +1 -1
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +95 -50
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +53 -31
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +111 -114
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +15 -3
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +75 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +35 -1
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +1 -1
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +130 -64
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +1 -1
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +1 -1
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +1 -1
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +1 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +2 -2
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +1 -1
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +2 -2
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +1 -1
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/is_contiguous_iterator.hpp +47 -0
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +1 -1
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +1 -1
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +1 -1
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +89 -16
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +95 -27
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +1 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +1 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +128 -42
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +1 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/prepend.hpp +80 -0
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +1 -1
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/random_access_file.hpp +37 -0
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +245 -153
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +110 -53
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +301 -166
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/readable_pipe.hpp +37 -0
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/recycling_allocator.hpp +140 -0
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +3 -3
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +358 -0
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +1 -1
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +1 -1
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +1 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +1 -1
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +647 -87
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +1 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +4 -1
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +1 -1
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +19 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +7 -3
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +1 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +1 -1
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +16 -1
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +1 -1
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +140 -64
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +25 -3
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +1 -1
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +1 -1
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +1 -1
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +154 -53
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -1
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +1 -1
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +12 -1
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_file.hpp +37 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +1 -1
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +1 -1
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +11 -11
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +10 -1
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +1 -1
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +1 -1
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +1 -1
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +1 -1
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +1 -1
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +1 -1
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +1 -1
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +1 -1
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +1 -1
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +1 -1
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +1 -1
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +1 -1
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +1 -1
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +1 -1
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +1 -1
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +1 -1
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +1 -1
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +1 -1
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +1 -1
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +1 -1
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +1 -1
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +1 -1
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +1 -1
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  590. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  591. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +1 -1
  592. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  593. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  594. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  595. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +4 -3
  596. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +10 -7
  597. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  598. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  599. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  600. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +70 -12
  601. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +100 -1
  602. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +98 -29
  603. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +95 -28
  604. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +1 -1
  605. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +1 -1
  606. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +1 -1
  607. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +1 -1
  608. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +1 -1
  609. data/src/cxx_supportlib/vendor-modified/boost/asio/writable_pipe.hpp +37 -0
  610. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +242 -150
  611. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +112 -53
  612. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  613. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +21 -1
  614. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +115 -25
  615. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +8 -2
  616. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +2 -2
  617. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +5 -1
  618. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +183 -64
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +166 -66
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +80 -11
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +40 -11
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +8 -1
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +8 -1
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_arm.hpp +8 -1
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +19 -10
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +19 -5
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +105 -100
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +1 -1
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +73 -72
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +8 -1
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +4 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_ppc_asm_common.hpp +33 -0
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +15 -6
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +3 -3
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +143 -0
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +42 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +46 -0
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_darwin_ulock.hpp +58 -0
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +3 -1
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +65 -0
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +158 -0
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +55 -26
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +8 -2
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +2 -2
  645. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +1 -1
  646. data/src/cxx_supportlib/vendor-modified/boost/bind/detail/result_traits.hpp +12 -2
  647. data/src/cxx_supportlib/vendor-modified/boost/bind/protect.hpp +1 -1
  648. data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +6 -3
  649. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
  650. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_style.hpp +1 -1
  651. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  652. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/timezone.hpp +2 -1
  653. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx03.hpp +1 -1
  654. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx11.hpp +1 -4
  655. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx14.hpp +1 -1
  656. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx17.hpp +4 -1
  657. data/src/cxx_supportlib/vendor-modified/boost/config/assert_cxx20.hpp +4 -1
  658. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +6 -1
  659. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +2 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang_version.hpp +77 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +3 -2
  662. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +2 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +1 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/config/detail/cxx_composite.hpp +4 -3
  666. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +51 -35
  667. data/src/cxx_supportlib/vendor-modified/boost/config/platform/wasm.hpp +6 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +14 -19
  669. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -45
  670. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +23 -1
  671. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +11 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +12 -6
  673. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +8 -3
  674. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +1 -3
  675. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +70 -59
  676. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +6 -5
  677. data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -10
  678. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +31 -40
  679. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +13 -10
  680. data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +17 -15
  681. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +87 -84
  682. data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +59 -32
  683. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +3 -1
  684. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +46 -35
  685. data/src/cxx_supportlib/vendor-modified/boost/container/detail/hash_table.hpp +1278 -0
  686. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +91 -0
  687. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +6 -0
  688. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +88 -69
  689. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +2 -2
  690. data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +2 -2
  691. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +240 -105
  692. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -1
  693. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +19 -91
  694. data/src/cxx_supportlib/vendor-modified/boost/container/detail/placement_new.hpp +2 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +3 -7
  696. data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +28 -28
  697. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +118 -244
  698. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +1 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +5 -10
  700. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +66 -38
  701. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +28 -9
  702. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +27 -8
  703. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +14 -71
  704. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +11 -8
  705. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +9 -2
  706. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +1 -1
  707. data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +3 -3
  708. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +23 -6
  709. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +6 -1
  710. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +3 -3
  711. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
  712. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -3
  713. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +3 -3
  714. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +11 -8
  715. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -87
  716. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +100 -147
  717. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +41 -35
  718. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +74 -46
  719. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +207 -187
  720. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +2 -2
  721. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +86 -71
  722. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +40 -35
  723. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +7 -81
  724. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +426 -207
  725. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_traits.hpp +112 -0
  726. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +28 -14
  727. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +100 -1
  728. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +19 -9
  729. data/src/cxx_supportlib/vendor-modified/boost/core/detail/splitmix64.hpp +3 -3
  730. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +1256 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +9 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +7 -1
  733. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +5 -51
  734. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +3 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +1 -1
  736. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +111 -60
  737. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  738. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +399 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +1157 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/core/verbose_terminate_handler.hpp +88 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +1 -1
  742. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +1 -1
  743. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +1 -1
  744. data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +3 -3
  745. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +38 -22
  746. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +84 -2
  747. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +1 -1
  748. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +9 -0
  749. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +16 -0
  750. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +85 -80
  751. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +39 -39
  752. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +27 -27
  753. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +37 -40
  754. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +24 -15
  755. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +75 -6
  756. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +2 -2
  757. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +25 -25
  758. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/array_initializer.hpp +3 -2
  759. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +14 -14
  760. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/bstree_algorithms_base.hpp +4 -4
  761. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +76 -7
  762. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +1 -1
  763. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/empty_node_checker.hpp +1 -1
  764. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/exception_disposer.hpp +0 -31
  765. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +182 -102
  766. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -8
  767. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +106 -76
  768. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +3 -3
  769. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +4 -4
  770. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +3 -3
  771. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +3 -3
  773. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
  774. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +18 -18
  775. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/reverse_iterator.hpp +3 -140
  776. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  777. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +11 -4
  778. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +2 -2
  779. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +2 -2
  780. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +6 -6
  781. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/value_functors.hpp +10 -0
  782. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +3 -3
  783. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +1525 -882
  784. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +2 -0
  785. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +81 -8
  786. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -8
  787. data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +2 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +17 -3
  789. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +10 -8
  790. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +12 -4
  791. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +9 -2
  792. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +36 -36
  793. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +16 -16
  794. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +32 -35
  795. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +27 -27
  796. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +14 -14
  797. data/src/cxx_supportlib/vendor-modified/boost/intrusive/trivial_value_traits.hpp +2 -2
  798. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +27 -20
  799. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +6 -6
  800. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +11 -0
  801. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +6 -6
  802. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -1
  803. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +5 -5
  804. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +8 -4
  805. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  806. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +1 -1
  807. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +1 -1
  808. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  809. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  810. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +1 -1
  811. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  812. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  813. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  814. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
  815. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  816. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +43 -30
  817. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +72 -56
  818. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +172 -128
  819. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +19 -9
  820. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +9 -0
  821. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +108 -146
  822. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +24 -15
  823. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +14 -4
  824. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/search.hpp +79 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +8 -2
  826. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +4 -0
  827. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +10 -10
  828. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +21 -0
  829. data/src/cxx_supportlib/vendor-modified/boost/move/detail/addressof.hpp +61 -0
  830. data/src/cxx_supportlib/vendor-modified/boost/move/detail/force_ptr.hpp +36 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_traits.hpp +108 -9
  832. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +8 -32
  833. data/src/cxx_supportlib/vendor-modified/boost/move/detail/nsec_clock.hpp +6 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/move/detail/reverse_iterator.hpp +40 -33
  835. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +5 -1
  836. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_end.hpp +2 -0
  837. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +1 -2
  838. data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +5 -3
  839. data/src/cxx_supportlib/vendor-modified/boost/move/make_unique.hpp +10 -0
  840. data/src/cxx_supportlib/vendor-modified/boost/move/utility_core.hpp +31 -28
  841. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +1306 -0
  842. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/config.hpp +138 -0
  843. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_append.hpp +185 -0
  844. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_copy_if.hpp +48 -0
  845. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_count.hpp +147 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_fold.hpp +62 -0
  847. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_front.hpp +38 -0
  848. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_is_list.hpp +39 -0
  849. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_list.hpp +24 -0
  850. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +87 -0
  851. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_min_element.hpp +51 -0
  852. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_plus.hpp +81 -0
  853. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_remove_if.hpp +48 -0
  854. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_rename.hpp +41 -0
  855. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_void.hpp +32 -0
  856. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_with_index.hpp +385 -0
  857. data/src/cxx_supportlib/vendor-modified/boost/mp11/function.hpp +222 -0
  858. data/src/cxx_supportlib/vendor-modified/boost/mp11/integer_sequence.hpp +112 -0
  859. data/src/cxx_supportlib/vendor-modified/boost/mp11/integral.hpp +41 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/mp11/list.hpp +304 -0
  861. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +188 -0
  862. data/src/cxx_supportlib/vendor-modified/boost/mp11/utility.hpp +263 -0
  863. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +16 -0
  864. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +1 -1
  865. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  866. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp +1 -1
  867. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/template_arity.hpp +1 -1
  868. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/yes_no.hpp +2 -1
  869. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +1 -1
  870. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +1 -1
  871. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +1 -1
  872. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +1 -1
  873. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_hash.hpp +49 -0
  874. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +34 -23
  875. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +85 -24
  876. data/src/cxx_supportlib/vendor-modified/boost/optional/optional_io.hpp +3 -2
  877. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +22 -9
  878. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/loongarch.h +41 -0
  879. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +2 -2
  880. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  881. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +1 -1
  882. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +2 -2
  883. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -0
  884. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  885. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +8 -1
  886. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +1 -1
  887. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +3 -2
  888. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +1 -0
  889. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +4 -3
  890. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +23 -13
  891. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +1 -1
  892. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +2 -0
  893. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +3 -2
  894. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +6 -0
  895. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +3 -1
  896. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +235 -104
  897. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +1 -1
  898. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +4 -2
  899. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +1 -1
  900. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
  901. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
  902. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +1 -1
  903. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +3 -6
  904. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -1
  905. data/src/cxx_supportlib/vendor-modified/boost/system/detail/append_int.hpp +32 -0
  906. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +18 -2
  907. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category.hpp +31 -7
  908. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_category_impl.hpp +78 -21
  909. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.hpp +211 -42
  910. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_condition.hpp +77 -19
  911. data/src/cxx_supportlib/vendor-modified/boost/system/detail/snprintf.hpp +3 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category.hpp +9 -67
  913. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_category_impl.hpp +97 -0
  914. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_impl.hpp +5 -17
  915. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_message.hpp +71 -0
  916. data/src/cxx_supportlib/vendor-modified/boost/system/errc.hpp +7 -0
  917. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +30 -59
  918. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +1 -1
  919. data/src/cxx_supportlib/vendor-modified/boost/thread/scoped_thread.hpp +9 -0
  920. data/src/cxx_supportlib/vendor-modified/boost/thread/thread_guard.hpp +5 -0
  921. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +103 -5
  922. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -2
  923. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +22 -21
  924. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  925. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  926. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  927. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +4 -1
  928. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
  929. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +2 -1
  930. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +1 -1
  931. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +1 -1
  932. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +819 -0
  933. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +2 -1
  934. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +1647 -2909
  935. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +8 -14
  936. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/prime_fmod.hpp +262 -0
  937. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +8 -13
  938. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +301 -142
  939. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +10 -1
  940. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +199 -76
  941. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +10 -1
  942. data/src/cxx_supportlib/vendor-modified/boost/utility/base_from_member.hpp +2 -1
  943. data/src/cxx_supportlib/vendor-modified/boost/utility/binary.hpp +3 -2
  944. data/src/cxx_supportlib/vendor-modified/boost/utility/in_place_factory.hpp +6 -0
  945. data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +13 -2
  946. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +6 -2
  947. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +24 -3
  948. data/src/cxx_supportlib/vendor-modified/boost/utility/typed_in_place_factory.hpp +6 -1
  949. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +5 -1
  950. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  951. data/src/cxx_supportlib/vendor-modified/jsoncpp/json-forwards.h +261 -143
  952. data/src/cxx_supportlib/vendor-modified/jsoncpp/json.h +947 -763
  953. data/src/cxx_supportlib/vendor-modified/jsoncpp/jsoncpp.cpp +1487 -1477
  954. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +1 -1
  955. data/src/ruby_supportlib/phusion_passenger/platform_info/ruby.rb +2 -2
  956. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +9 -0
  957. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  958. metadata +129 -14
  959. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +0 -42
  960. data/src/cxx_supportlib/vendor-modified/boost/checked_delete.hpp +0 -17
  961. data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +0 -55
  962. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/indexed_bit_flag.hpp +0 -54
  963. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_obsolete.hpp +0 -32
@@ -1,4 +1,4 @@
1
- /// Json-cpp amalgated header (http://jsoncpp.sourceforge.net/).
1
+ /// Json-cpp amalgamated header (http://jsoncpp.sourceforge.net/).
2
2
  /// It is intended to be used with #include "json/json.h"
3
3
 
4
4
  // //////////////////////////////////////////////////////////////////////
@@ -10,13 +10,13 @@ The JsonCpp library's source code, including accompanying documentation,
10
10
  tests and demonstration applications, are licensed under the following
11
11
  conditions...
12
12
 
13
- The JsonCpp Authors explicitly disclaim copyright in all
13
+ Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all
14
14
  jurisdictions which recognize such a disclaimer. In such jurisdictions,
15
15
  this software is released into the Public Domain.
16
16
 
17
17
  In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
18
- 2010), this software is Copyright (c) 2007-2010 by The JsonCpp Authors, and is
19
- released under the terms of the MIT License (see below).
18
+ 2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
19
+ The JsonCpp Authors, and is released under the terms of the MIT License (see below).
20
20
 
21
21
  In jurisdictions which recognize Public Domain property, the user of this
22
22
  software may choose to accept it either as 1) Public Domain, 2) under the
@@ -31,7 +31,7 @@ described in clear, concise terms at:
31
31
  The full text of the MIT License follows:
32
32
 
33
33
  ========================================================================
34
- Copyright (c) 2007-2010 The JsonCpp Authors
34
+ Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
35
35
 
36
36
  Permission is hereby granted, free of charge, to any person
37
37
  obtaining a copy of this software and associated documentation
@@ -72,9 +72,9 @@ license you like.
72
72
 
73
73
 
74
74
 
75
- #ifndef JSON_AMALGATED_H_INCLUDED
76
- # define JSON_AMALGATED_H_INCLUDED
77
- /// If defined, indicates that the source file is amalgated
75
+ #ifndef JSON_AMALGAMATED_H_INCLUDED
76
+ # define JSON_AMALGAMATED_H_INCLUDED
77
+ /// If defined, indicates that the source file is amalgamated
78
78
  /// to prevent private header inclusion.
79
79
  #define JSON_IS_AMALGAMATION
80
80
 
@@ -82,17 +82,25 @@ license you like.
82
82
  // Beginning of content of file: include/json/version.h
83
83
  // //////////////////////////////////////////////////////////////////////
84
84
 
85
- // DO NOT EDIT. This file (and "version") is generated by CMake.
86
- // Run CMake configure step to update it.
87
85
  #ifndef JSON_VERSION_H_INCLUDED
88
- # define JSON_VERSION_H_INCLUDED
89
-
90
- # define JSONCPP_VERSION_STRING "1.8.1"
91
- # define JSONCPP_VERSION_MAJOR 1
92
- # define JSONCPP_VERSION_MINOR 8
93
- # define JSONCPP_VERSION_PATCH 1
94
- # define JSONCPP_VERSION_QUALIFIER
95
- # define JSONCPP_VERSION_HEXA ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | (JSONCPP_VERSION_PATCH << 8))
86
+ #define JSON_VERSION_H_INCLUDED
87
+
88
+ // Note: version must be updated in three places when doing a release. This
89
+ // annoying process ensures that amalgamate, CMake, and meson all report the
90
+ // correct version.
91
+ // 1. /meson.build
92
+ // 2. /include/json/version.h
93
+ // 3. /CMakeLists.txt
94
+ // IMPORTANT: also update the SOVERSION!!
95
+
96
+ #define JSONCPP_VERSION_STRING "1.9.5"
97
+ #define JSONCPP_VERSION_MAJOR 1
98
+ #define JSONCPP_VERSION_MINOR 9
99
+ #define JSONCPP_VERSION_PATCH 5
100
+ #define JSONCPP_VERSION_QUALIFIER
101
+ #define JSONCPP_VERSION_HEXA \
102
+ ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | \
103
+ (JSONCPP_VERSION_PATCH << 8))
96
104
 
97
105
  #ifdef JSONCPP_USING_SECURE_MEMORY
98
106
  #undef JSONCPP_USING_SECURE_MEMORY
@@ -112,30 +120,129 @@ license you like.
112
120
 
113
121
 
114
122
 
123
+ // //////////////////////////////////////////////////////////////////////
124
+ // Beginning of content of file: include/json/allocator.h
125
+ // //////////////////////////////////////////////////////////////////////
126
+
127
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
128
+ // Distributed under MIT license, or public domain if desired and
129
+ // recognized in your jurisdiction.
130
+ // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
131
+
132
+ #ifndef JSON_ALLOCATOR_H_INCLUDED
133
+ #define JSON_ALLOCATOR_H_INCLUDED
134
+
135
+ #include <cstring>
136
+ #include <memory>
137
+
138
+ #pragma pack(push, 8)
139
+
140
+ namespace Passenger {
141
+ namespace Json {
142
+ template <typename T> class SecureAllocator {
143
+ public:
144
+ // Type definitions
145
+ using value_type = T;
146
+ using pointer = T*;
147
+ using const_pointer = const T*;
148
+ using reference = T&;
149
+ using const_reference = const T&;
150
+ using size_type = std::size_t;
151
+ using difference_type = std::ptrdiff_t;
152
+
153
+ /**
154
+ * Allocate memory for N items using the standard allocator.
155
+ */
156
+ pointer allocate(size_type n) {
157
+ // allocate using "global operator new"
158
+ return static_cast<pointer>(::operator new(n * sizeof(T)));
159
+ }
160
+
161
+ /**
162
+ * Release memory which was allocated for N items at pointer P.
163
+ *
164
+ * The memory block is filled with zeroes before being released.
165
+ */
166
+ void deallocate(pointer p, size_type n) {
167
+ // memset_s is used because memset may be optimized away by the compiler
168
+ memset_s(p, n * sizeof(T), 0, n * sizeof(T));
169
+ // free using "global operator delete"
170
+ ::operator delete(p);
171
+ }
172
+
173
+ /**
174
+ * Construct an item in-place at pointer P.
175
+ */
176
+ template <typename... Args> void construct(pointer p, Args&&... args) {
177
+ // construct using "placement new" and "perfect forwarding"
178
+ ::new (static_cast<void*>(p)) T(std::forward<Args>(args)...);
179
+ }
180
+
181
+ size_type max_size() const { return size_t(-1) / sizeof(T); }
182
+
183
+ pointer address(reference x) const { return std::addressof(x); }
184
+
185
+ const_pointer address(const_reference x) const { return std::addressof(x); }
186
+
187
+ /**
188
+ * Destroy an item in-place at pointer P.
189
+ */
190
+ void destroy(pointer p) {
191
+ // destroy using "explicit destructor"
192
+ p->~T();
193
+ }
194
+
195
+ // Boilerplate
196
+ SecureAllocator() {}
197
+ template <typename U> SecureAllocator(const SecureAllocator<U>&) {}
198
+ template <typename U> struct rebind { using other = SecureAllocator<U>; };
199
+ };
200
+
201
+ template <typename T, typename U>
202
+ bool operator==(const SecureAllocator<T>&, const SecureAllocator<U>&) {
203
+ return true;
204
+ }
205
+
206
+ template <typename T, typename U>
207
+ bool operator!=(const SecureAllocator<T>&, const SecureAllocator<U>&) {
208
+ return false;
209
+ }
210
+
211
+ } // namespace Json
212
+ } // namespace Passenger
213
+
214
+ #pragma pack(pop)
215
+
216
+ #endif // JSON_ALLOCATOR_H_INCLUDED
217
+
218
+ // //////////////////////////////////////////////////////////////////////
219
+ // End of content of file: include/json/allocator.h
220
+ // //////////////////////////////////////////////////////////////////////
221
+
222
+
223
+
224
+
225
+
226
+
115
227
  // //////////////////////////////////////////////////////////////////////
116
228
  // Beginning of content of file: include/json/config.h
117
229
  // //////////////////////////////////////////////////////////////////////
118
230
 
119
- // Copyright 2007-2010 Baptiste Lepilleur
231
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
120
232
  // Distributed under MIT license, or public domain if desired and
121
233
  // recognized in your jurisdiction.
122
234
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
123
235
 
124
236
  #ifndef JSON_CONFIG_H_INCLUDED
125
237
  #define JSON_CONFIG_H_INCLUDED
126
- #include <stddef.h>
127
- #include <string> //typedef String
128
- #include <stdint.h> //typedef int64_t, uint64_t
129
-
130
- /// If defined, indicates that json library is embedded in CppTL library.
131
- //# define JSON_IN_CPPTL 1
132
-
133
- /// If defined, indicates that json may leverage CppTL library
134
- //# define JSON_USE_CPPTL 1
135
- /// If defined, indicates that cpptl vector based map should be used instead of
136
- /// std::map
137
- /// as Value container.
138
- //# define JSON_USE_CPPTL_SMALLMAP 1
238
+ #include <cstddef>
239
+ #include <cstdint>
240
+ #include <istream>
241
+ #include <memory>
242
+ #include <ostream>
243
+ #include <sstream>
244
+ #include <string>
245
+ #include <type_traits>
139
246
 
140
247
  // If non-zero, the library uses exceptions to report bad input instead of C
141
248
  // assertion macros. The default is to use exceptions.
@@ -143,163 +250,134 @@ license you like.
143
250
  #define JSON_USE_EXCEPTION 1
144
251
  #endif
145
252
 
146
- /// If defined, indicates that the source file is amalgated
253
+ // Temporary, tracked for removal with issue #982.
254
+ #ifndef JSON_USE_NULLREF
255
+ #define JSON_USE_NULLREF 1
256
+ #endif
257
+
258
+ /// If defined, indicates that the source file is amalgamated
147
259
  /// to prevent private header inclusion.
148
- /// Remarks: it is automatically defined in the generated amalgated header.
260
+ /// Remarks: it is automatically defined in the generated amalgamated header.
149
261
  // #define JSON_IS_AMALGAMATION
150
262
 
151
- #ifdef JSON_IN_CPPTL
152
- #include <cpptl/config.h>
153
- #ifndef JSON_USE_CPPTL
154
- #define JSON_USE_CPPTL 1
155
- #endif
156
- #endif
157
-
158
- #ifdef JSON_IN_CPPTL
159
- #define JSON_API CPPTL_API
160
- #elif defined(JSON_DLL_BUILD)
263
+ // Export macros for DLL visibility
264
+ #if defined(JSON_DLL_BUILD)
161
265
  #if defined(_MSC_VER) || defined(__MINGW32__)
162
266
  #define JSON_API __declspec(dllexport)
163
267
  #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
268
+ #elif defined(__GNUC__) || defined(__clang__)
269
+ #define JSON_API __attribute__((visibility("default")))
164
270
  #endif // if defined(_MSC_VER)
271
+
165
272
  #elif defined(JSON_DLL)
166
273
  #if defined(_MSC_VER) || defined(__MINGW32__)
167
274
  #define JSON_API __declspec(dllimport)
168
275
  #define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
169
276
  #endif // if defined(_MSC_VER)
170
- #endif // ifdef JSON_IN_CPPTL
277
+ #endif // ifdef JSON_DLL_BUILD
278
+
171
279
  #if !defined(JSON_API)
172
280
  #define JSON_API
173
281
  #endif
174
282
 
175
- // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
176
- // integer
177
- // Storages, and 64 bits integer support is disabled.
178
- // #define JSON_NO_INT64 1
283
+ #if defined(_MSC_VER) && _MSC_VER < 1800
284
+ #error \
285
+ "ERROR: Visual Studio 12 (2013) with _MSC_VER=1800 is the oldest supported compiler with sufficient C++11 capabilities"
286
+ #endif
179
287
 
180
- #if defined(_MSC_VER) // MSVC
181
- # if _MSC_VER <= 1200 // MSVC 6
182
- // Microsoft Visual Studio 6 only support conversion from __int64 to double
183
- // (no conversion from unsigned __int64).
184
- # define JSON_USE_INT64_DOUBLE_CONVERSION 1
185
- // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
186
- // characters in the debug information)
187
- // All projects I've ever seen with VS6 were using this globally (not bothering
188
- // with pragma push/pop).
189
- # pragma warning(disable : 4786)
190
- # endif // MSVC 6
191
-
192
- # if _MSC_VER >= 1500 // MSVC 2008
193
- /// Indicates that the following function is deprecated.
194
- # define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
195
- # endif
196
-
197
- #endif // defined(_MSC_VER)
198
-
199
- // In c++11 the override keyword allows you to explicity define that a function
200
- // is intended to override the base-class version. This makes the code more
201
- // managable and fixes a set of common hard-to-find bugs.
202
- #if __cplusplus >= 201103L
203
- # define JSONCPP_OVERRIDE override
204
- # define JSONCPP_NOEXCEPT noexcept
205
- #elif defined(_MSC_VER) && _MSC_VER > 1600 && _MSC_VER < 1900
206
- # define JSONCPP_OVERRIDE override
207
- # define JSONCPP_NOEXCEPT throw()
208
- #elif defined(_MSC_VER) && _MSC_VER >= 1900
209
- # define JSONCPP_OVERRIDE override
210
- # define JSONCPP_NOEXCEPT noexcept
288
+ #if defined(_MSC_VER) && _MSC_VER < 1900
289
+ // As recommended at
290
+ // https://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010
291
+ extern JSON_API int msvc_pre1900_c99_snprintf(char* outBuf, size_t size,
292
+ const char* format, ...);
293
+ #define jsoncpp_snprintf msvc_pre1900_c99_snprintf
211
294
  #else
212
- # define JSONCPP_OVERRIDE
213
- # define JSONCPP_NOEXCEPT throw()
295
+ #define jsoncpp_snprintf std::snprintf
214
296
  #endif
215
297
 
216
- #ifndef JSON_HAS_RVALUE_REFERENCES
298
+ // If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
299
+ // integer
300
+ // Storages, and 64 bits integer support is disabled.
301
+ // #define JSON_NO_INT64 1
217
302
 
218
- #if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010
219
- #define JSON_HAS_RVALUE_REFERENCES 1
220
- #endif // MSVC >= 2010
303
+ // JSONCPP_OVERRIDE is maintained for backwards compatibility of external tools.
304
+ // C++11 should be used directly in JSONCPP.
305
+ #define JSONCPP_OVERRIDE override
221
306
 
222
307
  #ifdef __clang__
223
- #if __has_feature(cxx_rvalue_references)
224
- #define JSON_HAS_RVALUE_REFERENCES 1
225
- #endif // has_feature
226
-
227
- #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
228
- #if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
229
- #define JSON_HAS_RVALUE_REFERENCES 1
230
- #endif // GXX_EXPERIMENTAL
231
-
232
- #endif // __clang__ || __GNUC__
233
-
234
- #endif // not defined JSON_HAS_RVALUE_REFERENCES
235
-
236
- #ifndef JSON_HAS_RVALUE_REFERENCES
237
- #define JSON_HAS_RVALUE_REFERENCES 0
308
+ #if __has_extension(attribute_deprecated_with_message)
309
+ #define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
238
310
  #endif
239
-
240
- #ifdef __clang__
241
- #elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
242
- # if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
243
- # define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
244
- # elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
245
- # define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
246
- # endif // GNUC version
247
- #endif // __clang__ || __GNUC__
311
+ #elif defined(__GNUC__) // not clang (gcc comes later since clang emulates gcc)
312
+ #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
313
+ #define JSONCPP_DEPRECATED(message) __attribute__((deprecated(message)))
314
+ #elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
315
+ #define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
316
+ #endif // GNUC version
317
+ #elif defined(_MSC_VER) // MSVC (after clang because clang on Windows emulates
318
+ // MSVC)
319
+ #define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
320
+ #endif // __clang__ || __GNUC__ || _MSC_VER
248
321
 
249
322
  #if !defined(JSONCPP_DEPRECATED)
250
323
  #define JSONCPP_DEPRECATED(message)
251
324
  #endif // if !defined(JSONCPP_DEPRECATED)
252
325
 
253
- #if __GNUC__ >= 6
254
- # define JSON_USE_INT64_DOUBLE_CONVERSION 1
326
+ #if defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 6))
327
+ #define JSON_USE_INT64_DOUBLE_CONVERSION 1
255
328
  #endif
256
329
 
257
330
  #if !defined(JSON_IS_AMALGAMATION)
258
331
 
259
- # include "version.h"
260
-
261
- # if JSONCPP_USING_SECURE_MEMORY
262
- # include "allocator.h" //typedef Allocator
263
- # endif
332
+ #include "allocator.h"
333
+ #include "version.h"
264
334
 
265
335
  #endif // if !defined(JSON_IS_AMALGAMATION)
266
336
 
267
337
  namespace Passenger {
268
338
  namespace Json {
269
- typedef int Int;
270
- typedef unsigned int UInt;
339
+ using Int = int;
340
+ using UInt = unsigned int;
271
341
  #if defined(JSON_NO_INT64)
272
- typedef int LargestInt;
273
- typedef unsigned int LargestUInt;
342
+ using LargestInt = int;
343
+ using LargestUInt = unsigned int;
274
344
  #undef JSON_HAS_INT64
275
345
  #else // if defined(JSON_NO_INT64)
276
346
  // For Microsoft Visual use specific types as long long is not supported
277
347
  #if defined(_MSC_VER) // Microsoft Visual Studio
278
- typedef __int64 Int64;
279
- typedef unsigned __int64 UInt64;
348
+ using Int64 = __int64;
349
+ using UInt64 = unsigned __int64;
280
350
  #else // if defined(_MSC_VER) // Other platforms, use long long
281
- typedef int64_t Int64;
282
- typedef uint64_t UInt64;
283
- #endif // if defined(_MSC_VER)
284
- typedef Int64 LargestInt;
285
- typedef UInt64 LargestUInt;
351
+ using Int64 = int64_t;
352
+ using UInt64 = uint64_t;
353
+ #endif // if defined(_MSC_VER)
354
+ using LargestInt = Int64;
355
+ using LargestUInt = UInt64;
286
356
  #define JSON_HAS_INT64
287
357
  #endif // if defined(JSON_NO_INT64)
288
- #if JSONCPP_USING_SECURE_MEMORY
289
- #define JSONCPP_STRING std::basic_string<char, std::char_traits<char>, Json::SecureAllocator<char> >
290
- #define JSONCPP_OSTRINGSTREAM std::basic_ostringstream<char, std::char_traits<char>, Json::SecureAllocator<char> >
291
- #define JSONCPP_OSTREAM std::basic_ostream<char, std::char_traits<char>>
292
- #define JSONCPP_ISTRINGSTREAM std::basic_istringstream<char, std::char_traits<char>, Json::SecureAllocator<char> >
293
- #define JSONCPP_ISTREAM std::istream
294
- #else
295
- #define JSONCPP_STRING std::string
296
- #define JSONCPP_OSTRINGSTREAM std::ostringstream
297
- #define JSONCPP_OSTREAM std::ostream
298
- #define JSONCPP_ISTRINGSTREAM std::istringstream
299
- #define JSONCPP_ISTREAM std::istream
300
- #endif // if JSONCPP_USING_SECURE_MEMORY
301
- } // end namespace Json
302
- } // end namespace Passenger
358
+
359
+ template <typename T>
360
+ using Allocator =
361
+ typename std::conditional<JSONCPP_USING_SECURE_MEMORY, SecureAllocator<T>,
362
+ std::allocator<T>>::type;
363
+ using String = std::basic_string<char, std::char_traits<char>, Allocator<char>>;
364
+ using IStringStream =
365
+ std::basic_istringstream<String::value_type, String::traits_type,
366
+ String::allocator_type>;
367
+ using OStringStream =
368
+ std::basic_ostringstream<String::value_type, String::traits_type,
369
+ String::allocator_type>;
370
+ using IStream = std::istream;
371
+ using OStream = std::ostream;
372
+ } // namespace Json
373
+ } // namespace Passenger
374
+
375
+ // Legacy names (formerly macros).
376
+ using JSONCPP_STRING = Passenger::Json::String;
377
+ using JSONCPP_ISTRINGSTREAM = Passenger::Json::IStringStream;
378
+ using JSONCPP_OSTRINGSTREAM = Passenger::Json::OStringStream;
379
+ using JSONCPP_ISTREAM = Passenger::Json::IStream;
380
+ using JSONCPP_OSTREAM = Passenger::Json::OStream;
303
381
 
304
382
  #endif // JSON_CONFIG_H_INCLUDED
305
383
 
@@ -316,7 +394,7 @@ typedef UInt64 LargestUInt;
316
394
  // Beginning of content of file: include/json/forwards.h
317
395
  // //////////////////////////////////////////////////////////////////////
318
396
 
319
- // Copyright 2007-2010 Baptiste Lepilleur
397
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
320
398
  // Distributed under MIT license, or public domain if desired and
321
399
  // recognized in your jurisdiction.
322
400
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
@@ -332,17 +410,23 @@ namespace Passenger {
332
410
  namespace Json {
333
411
 
334
412
  // writer.h
413
+ class StreamWriter;
414
+ class StreamWriterBuilder;
415
+ class Writer;
335
416
  class FastWriter;
336
417
  class StyledWriter;
418
+ class StyledStreamWriter;
337
419
 
338
420
  // reader.h
339
421
  class Reader;
422
+ class CharReader;
423
+ class CharReaderBuilder;
340
424
 
341
- // features.h
425
+ // json_features.h
342
426
  class Features;
343
427
 
344
428
  // value.h
345
- typedef unsigned int ArrayIndex;
429
+ using ArrayIndex = unsigned int;
346
430
  class StaticString;
347
431
  class Path;
348
432
  class PathArgument;
@@ -366,16 +450,16 @@ class ValueConstIterator;
366
450
 
367
451
 
368
452
  // //////////////////////////////////////////////////////////////////////
369
- // Beginning of content of file: include/json/features.h
453
+ // Beginning of content of file: include/json/json_features.h
370
454
  // //////////////////////////////////////////////////////////////////////
371
455
 
372
- // Copyright 2007-2010 Baptiste Lepilleur
456
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
373
457
  // Distributed under MIT license, or public domain if desired and
374
458
  // recognized in your jurisdiction.
375
459
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
376
460
 
377
- #ifndef CPPTL_JSON_FEATURES_H_INCLUDED
378
- #define CPPTL_JSON_FEATURES_H_INCLUDED
461
+ #ifndef JSON_FEATURES_H_INCLUDED
462
+ #define JSON_FEATURES_H_INCLUDED
379
463
 
380
464
  #if !defined(JSON_IS_AMALGAMATION)
381
465
  #include "forwards.h"
@@ -413,17 +497,17 @@ public:
413
497
  Features();
414
498
 
415
499
  /// \c true if comments are allowed. Default: \c true.
416
- bool allowComments_;
500
+ bool allowComments_{true};
417
501
 
418
502
  /// \c true if root must be either an array or an object value. Default: \c
419
503
  /// false.
420
- bool strictRoot_;
504
+ bool strictRoot_{false};
421
505
 
422
506
  /// \c true if dropped null placeholders are allowed. Default: \c false.
423
- bool allowDroppedNullPlaceholders_;
507
+ bool allowDroppedNullPlaceholders_{false};
424
508
 
425
509
  /// \c true if numeric object key are allowed. Default: \c false.
426
- bool allowNumericKeys_;
510
+ bool allowNumericKeys_{false};
427
511
  };
428
512
 
429
513
  } // namespace Json
@@ -431,10 +515,10 @@ public:
431
515
 
432
516
  #pragma pack(pop)
433
517
 
434
- #endif // CPPTL_JSON_FEATURES_H_INCLUDED
518
+ #endif // JSON_FEATURES_H_INCLUDED
435
519
 
436
520
  // //////////////////////////////////////////////////////////////////////
437
- // End of content of file: include/json/features.h
521
+ // End of content of file: include/json/json_features.h
438
522
  // //////////////////////////////////////////////////////////////////////
439
523
 
440
524
 
@@ -446,48 +530,59 @@ public:
446
530
  // Beginning of content of file: include/json/value.h
447
531
  // //////////////////////////////////////////////////////////////////////
448
532
 
449
- // Copyright 2007-2010 Baptiste Lepilleur
533
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
450
534
  // Distributed under MIT license, or public domain if desired and
451
535
  // recognized in your jurisdiction.
452
536
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
453
537
 
454
- #ifndef CPPTL_JSON_H_INCLUDED
455
- #define CPPTL_JSON_H_INCLUDED
538
+ #ifndef JSON_H_INCLUDED
539
+ #define JSON_H_INCLUDED
456
540
 
457
541
  #if !defined(JSON_IS_AMALGAMATION)
458
542
  #include "forwards.h"
459
543
  #endif // if !defined(JSON_IS_AMALGAMATION)
460
- #include <string>
461
- #include <vector>
462
- #include <exception>
463
544
 
464
- #ifndef JSON_USE_CPPTL_SMALLMAP
465
- #include <map>
545
+ // Conditional NORETURN attribute on the throw functions would:
546
+ // a) suppress false positives from static code analysis
547
+ // b) possibly improve optimization opportunities.
548
+ #if !defined(JSONCPP_NORETURN)
549
+ #if defined(_MSC_VER) && _MSC_VER == 1800
550
+ #define JSONCPP_NORETURN __declspec(noreturn)
466
551
  #else
467
- #include <cpptl/smallmap.h>
552
+ #define JSONCPP_NORETURN [[noreturn]]
468
553
  #endif
469
- #ifdef JSON_USE_CPPTL
470
- #include <cpptl/forwards.h>
471
554
  #endif
472
555
 
473
- //Conditional NORETURN attribute on the throw functions would:
474
- // a) suppress false positives from static code analysis
475
- // b) possibly improve optimization opportunities.
476
- #if !defined(JSONCPP_NORETURN)
477
- # if defined(_MSC_VER)
478
- # define JSONCPP_NORETURN __declspec(noreturn)
479
- # elif defined(__GNUC__)
480
- # define JSONCPP_NORETURN __attribute__ ((__noreturn__))
481
- # else
482
- # define JSONCPP_NORETURN
483
- # endif
556
+ // Support for '= delete' with template declarations was a late addition
557
+ // to the c++11 standard and is rejected by clang 3.8 and Apple clang 8.2
558
+ // even though these declare themselves to be c++11 compilers.
559
+ #if !defined(JSONCPP_TEMPLATE_DELETE)
560
+ #if defined(__clang__) && defined(__apple_build_version__)
561
+ #if __apple_build_version__ <= 8000042
562
+ #define JSONCPP_TEMPLATE_DELETE
484
563
  #endif
564
+ #elif defined(__clang__)
565
+ #if __clang_major__ == 3 && __clang_minor__ <= 8
566
+ #define JSONCPP_TEMPLATE_DELETE
567
+ #endif
568
+ #endif
569
+ #if !defined(JSONCPP_TEMPLATE_DELETE)
570
+ #define JSONCPP_TEMPLATE_DELETE = delete
571
+ #endif
572
+ #endif
573
+
574
+ #include <array>
575
+ #include <exception>
576
+ #include <map>
577
+ #include <memory>
578
+ #include <string>
579
+ #include <vector>
485
580
 
486
581
  // Disable warning C4251: <data member>: <type> needs to have dll-interface to
487
582
  // be used by...
488
583
  #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
489
584
  #pragma warning(push)
490
- #pragma warning(disable : 4251)
585
+ #pragma warning(disable : 4251 4275)
491
586
  #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
492
587
 
493
588
  #pragma pack(push, 8)
@@ -497,17 +592,19 @@ public:
497
592
  namespace Passenger {
498
593
  namespace Json {
499
594
 
595
+ #if JSON_USE_EXCEPTION
500
596
  /** Base class for all exceptions we throw.
501
597
  *
502
598
  * We use nothing but these internally. Of course, STL can throw others.
503
599
  */
504
600
  class JSON_API Exception : public std::exception {
505
601
  public:
506
- Exception(JSONCPP_STRING const& msg);
507
- ~Exception() JSONCPP_NOEXCEPT JSONCPP_OVERRIDE;
508
- char const* what() const JSONCPP_NOEXCEPT JSONCPP_OVERRIDE;
602
+ Exception(String msg);
603
+ ~Exception() noexcept override;
604
+ char const* what() const noexcept override;
605
+
509
606
  protected:
510
- JSONCPP_STRING msg_;
607
+ String msg_;
511
608
  };
512
609
 
513
610
  /** Exceptions which the user cannot easily avoid.
@@ -518,7 +615,7 @@ protected:
518
615
  */
519
616
  class JSON_API RuntimeError : public Exception {
520
617
  public:
521
- RuntimeError(JSONCPP_STRING const& msg);
618
+ RuntimeError(String const& msg);
522
619
  };
523
620
 
524
621
  /** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros.
@@ -529,13 +626,14 @@ public:
529
626
  */
530
627
  class JSON_API LogicError : public Exception {
531
628
  public:
532
- LogicError(JSONCPP_STRING const& msg);
629
+ LogicError(String const& msg);
533
630
  };
631
+ #endif
534
632
 
535
633
  /// used internally
536
- JSONCPP_NORETURN void throwRuntimeError(JSONCPP_STRING const& msg);
634
+ JSONCPP_NORETURN void throwRuntimeError(String const& msg);
537
635
  /// used internally
538
- JSONCPP_NORETURN void throwLogicError(JSONCPP_STRING const& msg);
636
+ JSONCPP_NORETURN void throwLogicError(String const& msg);
539
637
 
540
638
  /** \brief Type of the value held by a Value object.
541
639
  */
@@ -558,14 +656,16 @@ enum CommentPlacement {
558
656
  numberOfCommentPlacement
559
657
  };
560
658
 
561
- //# ifdef JSON_USE_CPPTL
562
- // typedef CppTL::AnyEnumerator<const char *> EnumMemberNames;
563
- // typedef CppTL::AnyEnumerator<const Value &> EnumValues;
564
- //# endif
659
+ /** \brief Type of precision for formatting of real values.
660
+ */
661
+ enum PrecisionType {
662
+ significantDigits = 0, ///< we set max number of significant digits in string
663
+ decimalPlaces ///< we set max number of digits after "." in string
664
+ };
565
665
 
566
666
  /** \brief Lightweight wrapper to tag static string.
567
667
  *
568
- * Value constructor and objectValue member assignement takes advantage of the
668
+ * Value constructor and objectValue member assignment takes advantage of the
569
669
  * StaticString and avoid the cost of string duplication when storing the
570
670
  * string or the member name.
571
671
  *
@@ -614,7 +714,7 @@ private:
614
714
  * The get() methods can be used to obtain default value in the case the
615
715
  * required element does not exist.
616
716
  *
617
- * It is possible to iterate over the list of a #objectValue values using
717
+ * It is possible to iterate over the list of member keys of an object using
618
718
  * the getMemberNames() method.
619
719
  *
620
720
  * \note #Value string-length fit in size_t, but keys must be < 2^30.
@@ -625,68 +725,86 @@ private:
625
725
  */
626
726
  class JSON_API Value {
627
727
  friend class ValueIteratorBase;
728
+
628
729
  public:
629
- typedef std::vector<JSONCPP_STRING> Members;
630
- typedef ValueIterator iterator;
631
- typedef ValueConstIterator const_iterator;
632
- typedef Json::UInt UInt;
633
- typedef Json::Int Int;
730
+ using Members = std::vector<String>;
731
+ using iterator = ValueIterator;
732
+ using const_iterator = ValueConstIterator;
733
+ using UInt = Json::UInt;
734
+ using Int = Json::Int;
634
735
  #if defined(JSON_HAS_INT64)
635
- typedef Json::UInt64 UInt64;
636
- typedef Json::Int64 Int64;
736
+ using UInt64 = Json::UInt64;
737
+ using Int64 = Json::Int64;
637
738
  #endif // defined(JSON_HAS_INT64)
638
- typedef Json::LargestInt LargestInt;
639
- typedef Json::LargestUInt LargestUInt;
640
- typedef Json::ArrayIndex ArrayIndex;
739
+ using LargestInt = Json::LargestInt;
740
+ using LargestUInt = Json::LargestUInt;
741
+ using ArrayIndex = Json::ArrayIndex;
641
742
 
642
- static const Value& null; ///< We regret this reference to a global instance; prefer the simpler Value().
643
- static const Value& nullRef; ///< just a kludge for binary-compatibility; same as null
644
- static Value const& nullSingleton(); ///< Prefer this to null or nullRef.
743
+ // Required for boost integration, e. g. BOOST_TEST
744
+ using value_type = std::string;
745
+
746
+ #if JSON_USE_NULLREF
747
+ // Binary compatibility kludges, do not use.
748
+ static const Value& null;
749
+ static const Value& nullRef;
750
+ #endif
751
+
752
+ // null and nullRef are deprecated, use this instead.
753
+ static Value const& nullSingleton();
645
754
 
646
755
  /// Minimum signed integer value that can be stored in a Json::Value.
647
- static const LargestInt minLargestInt;
756
+ static constexpr LargestInt minLargestInt =
757
+ LargestInt(~(LargestUInt(-1) / 2));
648
758
  /// Maximum signed integer value that can be stored in a Json::Value.
649
- static const LargestInt maxLargestInt;
759
+ static constexpr LargestInt maxLargestInt = LargestInt(LargestUInt(-1) / 2);
650
760
  /// Maximum unsigned integer value that can be stored in a Json::Value.
651
- static const LargestUInt maxLargestUInt;
761
+ static constexpr LargestUInt maxLargestUInt = LargestUInt(-1);
652
762
 
653
763
  /// Minimum signed int value that can be stored in a Json::Value.
654
- static const Int minInt;
764
+ static constexpr Int minInt = Int(~(UInt(-1) / 2));
655
765
  /// Maximum signed int value that can be stored in a Json::Value.
656
- static const Int maxInt;
766
+ static constexpr Int maxInt = Int(UInt(-1) / 2);
657
767
  /// Maximum unsigned int value that can be stored in a Json::Value.
658
- static const UInt maxUInt;
768
+ static constexpr UInt maxUInt = UInt(-1);
659
769
 
660
770
  #if defined(JSON_HAS_INT64)
661
771
  /// Minimum signed 64 bits int value that can be stored in a Json::Value.
662
- static const Int64 minInt64;
772
+ static constexpr Int64 minInt64 = Int64(~(UInt64(-1) / 2));
663
773
  /// Maximum signed 64 bits int value that can be stored in a Json::Value.
664
- static const Int64 maxInt64;
774
+ static constexpr Int64 maxInt64 = Int64(UInt64(-1) / 2);
665
775
  /// Maximum unsigned 64 bits int value that can be stored in a Json::Value.
666
- static const UInt64 maxUInt64;
776
+ static constexpr UInt64 maxUInt64 = UInt64(-1);
667
777
  #endif // defined(JSON_HAS_INT64)
668
-
778
+ /// Default precision for real value for string representation.
779
+ static constexpr UInt defaultRealPrecision = 17;
780
+ // The constant is hard-coded because some compiler have trouble
781
+ // converting Value::maxUInt64 to a double correctly (AIX/xlC).
782
+ // Assumes that UInt64 is a 64 bits integer.
783
+ static constexpr double maxUInt64AsDouble = 18446744073709551615.0;
784
+ // Workaround for bug in the NVIDIAs CUDA 9.1 nvcc compiler
785
+ // when using gcc and clang backend compilers. CZString
786
+ // cannot be defined as private. See issue #486
787
+ #ifdef __NVCC__
788
+ public:
789
+ #else
669
790
  private:
791
+ #endif
670
792
  #ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
671
793
  class CZString {
672
794
  public:
673
- enum DuplicationPolicy {
674
- noDuplication = 0,
675
- duplicate,
676
- duplicateOnCopy
677
- };
795
+ enum DuplicationPolicy { noDuplication = 0, duplicate, duplicateOnCopy };
678
796
  CZString(ArrayIndex index);
679
797
  CZString(char const* str, unsigned length, DuplicationPolicy allocate);
680
798
  CZString(CZString const& other);
681
- #if JSON_HAS_RVALUE_REFERENCES
682
- CZString(CZString&& other);
683
- #endif
799
+ CZString(CZString&& other) noexcept;
684
800
  ~CZString();
685
- CZString& operator=(CZString other);
801
+ CZString& operator=(const CZString& other);
802
+ CZString& operator=(CZString&& other) noexcept;
803
+
686
804
  bool operator<(CZString const& other) const;
687
805
  bool operator==(CZString const& other) const;
688
806
  ArrayIndex index() const;
689
- //const char* c_str() const; ///< \deprecated
807
+ // const char* c_str() const; ///< \deprecated
690
808
  char const* data() const;
691
809
  unsigned length() const;
692
810
  bool isStaticString() const;
@@ -695,11 +813,11 @@ private:
695
813
  void swap(CZString& other);
696
814
 
697
815
  struct StringStorage {
698
- unsigned policy_: 2;
699
- unsigned length_: 30; // 1GB max
816
+ unsigned policy_ : 2;
817
+ unsigned length_ : 30; // 1GB max
700
818
  };
701
819
 
702
- char const* cstr_; // actually, a prefixed string, unless policy is noDup
820
+ char const* cstr_; // actually, a prefixed string, unless policy is noDup
703
821
  union {
704
822
  ArrayIndex index_;
705
823
  StringStorage storage_;
@@ -707,29 +825,26 @@ private:
707
825
  };
708
826
 
709
827
  public:
710
- #ifndef JSON_USE_CPPTL_SMALLMAP
711
828
  typedef std::map<CZString, Value> ObjectValues;
712
- #else
713
- typedef CppTL::SmallMap<CZString, Value> ObjectValues;
714
- #endif // ifndef JSON_USE_CPPTL_SMALLMAP
715
829
  #endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION
716
830
 
717
831
  public:
718
- /** \brief Create a default Value of the given type.
719
-
720
- This is a very useful constructor.
721
- To create an empty array, pass arrayValue.
722
- To create an empty object, pass objectValue.
723
- Another Value can then be set to this one by assignment.
724
- This is useful since clear() and resize() will not alter types.
725
-
726
- Examples:
727
- \code
728
- Json::Value null_value; // null
729
- Json::Value arr_value(Json::arrayValue); // []
730
- Json::Value obj_value(Json::objectValue); // {}
731
- \endcode
732
- */
832
+ /**
833
+ * \brief Create a default Value of the given type.
834
+ *
835
+ * This is a very useful constructor.
836
+ * To create an empty array, pass arrayValue.
837
+ * To create an empty object, pass objectValue.
838
+ * Another Value can then be set to this one by assignment.
839
+ * This is useful since clear() and resize() will not alter types.
840
+ *
841
+ * Examples:
842
+ * \code
843
+ * Json::Value null_value; // null
844
+ * Json::Value arr_value(Json::arrayValue); // []
845
+ * Json::Value obj_value(Json::objectValue); // {}
846
+ * \endcode
847
+ */
733
848
  Value(ValueType type = nullValue);
734
849
  Value(Int value);
735
850
  Value(UInt value);
@@ -740,43 +855,46 @@ Json::Value obj_value(Json::objectValue); // {}
740
855
  Value(double value);
741
856
  Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.)
742
857
  Value(const char* begin, const char* end); ///< Copy all, incl zeroes.
743
- /** \brief Constructs a value from a static string.
744
-
858
+ /**
859
+ * \brief Constructs a value from a static string.
860
+ *
745
861
  * Like other value string constructor but do not duplicate the string for
746
- * internal storage. The given string must remain alive after the call to this
747
- * constructor.
862
+ * internal storage. The given string must remain alive after the call to
863
+ * this constructor.
864
+ *
748
865
  * \note This works only for null-terminated strings. (We cannot change the
749
- * size of this class, so we have nowhere to store the length,
750
- * which might be computed later for various operations.)
866
+ * size of this class, so we have nowhere to store the length, which might be
867
+ * computed later for various operations.)
751
868
  *
752
869
  * Example of usage:
753
- * \code
754
- * static StaticString foo("some text");
755
- * Json::Value aValue(foo);
756
- * \endcode
870
+ * \code
871
+ * static StaticString foo("some text");
872
+ * Json::Value aValue(foo);
873
+ * \endcode
757
874
  */
758
875
  Value(const StaticString& value);
759
- Value(const JSONCPP_STRING& value); ///< Copy data() til size(). Embedded zeroes too.
760
- #ifdef JSON_USE_CPPTL
761
- Value(const CppTL::ConstString& value);
762
- #endif
876
+ Value(const String& value);
763
877
  Value(bool value);
764
- /// Deep copy.
878
+ Value(std::nullptr_t ptr) = delete;
765
879
  Value(const Value& other);
766
- #if JSON_HAS_RVALUE_REFERENCES
767
- /// Move constructor
768
- Value(Value&& other);
769
- #endif
880
+ Value(Value&& other) noexcept;
770
881
  virtual ~Value();
771
882
 
772
- /// Deep copy, then swap(other).
773
- /// \note Over-write existing comments. To preserve comments, use #swapPayload().
774
- Value& operator=(Value other);
883
+ /// \note Overwrite existing comments. To preserve comments, use
884
+ /// #swapPayload().
885
+ Value& operator=(const Value& other);
886
+ Value& operator=(Value&& other) noexcept;
887
+
775
888
  /// Swap everything.
776
889
  void swap(Value& other);
777
890
  /// Swap values but leave comments and source offsets in place.
778
891
  void swapPayload(Value& other);
779
892
 
893
+ /// copy everything.
894
+ void copy(const Value& other);
895
+ /// copy values but leave comments and source offsets in place.
896
+ void copyPayload(const Value& other);
897
+
780
898
  ValueType type() const;
781
899
 
782
900
  /// Compare payload only, not comments etc.
@@ -790,17 +908,14 @@ Json::Value obj_value(Json::objectValue); // {}
790
908
 
791
909
  const char* asCString() const; ///< Embedded zeroes could cause you trouble!
792
910
  #if JSONCPP_USING_SECURE_MEMORY
793
- unsigned getCStringLength() const; //Allows you to understand the length of the CString
911
+ unsigned getCStringLength() const; // Allows you to understand the length of
912
+ // the CString
794
913
  #endif
795
- JSONCPP_STRING asString() const; ///< Embedded zeroes are possible.
914
+ String asString() const; ///< Embedded zeroes are possible.
796
915
  /** Get raw char* of string-value.
797
916
  * \return false if !string. (Seg-fault if str or end are NULL.)
798
917
  */
799
- bool getString(
800
- char const** begin, char const** end) const;
801
- #ifdef JSON_USE_CPPTL
802
- CppTL::ConstString asConstString() const;
803
- #endif
918
+ bool getString(char const** begin, char const** end) const;
804
919
  Int asInt() const;
805
920
  UInt asUInt() const;
806
921
  #if defined(JSON_HAS_INT64)
@@ -826,6 +941,10 @@ Json::Value obj_value(Json::objectValue); // {}
826
941
  bool isArray() const;
827
942
  bool isObject() const;
828
943
 
944
+ /// The `as<T>` and `is<T>` member function templates and specializations.
945
+ template <typename T> T as() const JSONCPP_TEMPLATE_DELETE;
946
+ template <typename T> bool is() const JSONCPP_TEMPLATE_DELETE;
947
+
829
948
  bool isConvertibleTo(ValueType other) const;
830
949
 
831
950
  /// Number of values in array or object
@@ -835,50 +954,41 @@ Json::Value obj_value(Json::objectValue); // {}
835
954
  /// otherwise, false.
836
955
  bool empty() const;
837
956
 
838
- /// Return isNull()
839
- bool operator!() const;
957
+ /// Return !isNull()
958
+ explicit operator bool() const;
840
959
 
841
960
  /// Remove all object members and array elements.
842
961
  /// \pre type() is arrayValue, objectValue, or nullValue
843
962
  /// \post type() is unchanged
844
963
  void clear();
845
964
 
846
- /// Resize the array to size elements.
965
+ /// Resize the array to newSize elements.
847
966
  /// New elements are initialized to null.
848
967
  /// May only be called on nullValue or arrayValue.
849
968
  /// \pre type() is arrayValue or nullValue
850
969
  /// \post type() is arrayValue
851
- void resize(ArrayIndex size);
970
+ void resize(ArrayIndex newSize);
852
971
 
853
- /// Access an array element (zero based index ).
854
- /// If the array contains less than index element, then null value are
855
- /// inserted
856
- /// in the array so that its size is index+1.
972
+ //@{
973
+ /// Access an array element (zero based index). If the array contains less
974
+ /// than index element, then null value are inserted in the array so that
975
+ /// its size is index+1.
857
976
  /// (You may need to say 'value[0u]' to get your compiler to distinguish
858
- /// this from the operator[] which takes a string.)
977
+ /// this from the operator[] which takes a string.)
859
978
  Value& operator[](ArrayIndex index);
860
-
861
- /// Access an array element (zero based index ).
862
- /// If the array contains less than index element, then null value are
863
- /// inserted
864
- /// in the array so that its size is index+1.
865
- /// (You may need to say 'value[0u]' to get your compiler to distinguish
866
- /// this from the operator[] which takes a string.)
867
979
  Value& operator[](int index);
980
+ //@}
868
981
 
869
- /// Access an array element (zero based index )
982
+ //@{
983
+ /// Access an array element (zero based index).
870
984
  /// (You may need to say 'value[0u]' to get your compiler to distinguish
871
- /// this from the operator[] which takes a string.)
985
+ /// this from the operator[] which takes a string.)
872
986
  const Value& operator[](ArrayIndex index) const;
873
-
874
- /// Access an array element (zero based index )
875
- /// (You may need to say 'value[0u]' to get your compiler to distinguish
876
- /// this from the operator[] which takes a string.)
877
987
  const Value& operator[](int index) const;
988
+ //@}
878
989
 
879
990
  /// If the array contains at least index+1 elements, returns the element
880
- /// value,
881
- /// otherwise returns defaultValue.
991
+ /// value, otherwise returns defaultValue.
882
992
  Value get(ArrayIndex index, const Value& defaultValue) const;
883
993
  /// Return true if index < size().
884
994
  bool isValidIndex(ArrayIndex index) const;
@@ -886,57 +996,51 @@ Json::Value obj_value(Json::objectValue); // {}
886
996
  ///
887
997
  /// Equivalent to jsonvalue[jsonvalue.size()] = value;
888
998
  Value& append(const Value& value);
999
+ Value& append(Value&& value);
1000
+
1001
+ /// \brief Insert value in array at specific index
1002
+ bool insert(ArrayIndex index, const Value& newValue);
1003
+ bool insert(ArrayIndex index, Value&& newValue);
889
1004
 
890
1005
  /// Access an object value by name, create a null member if it does not exist.
891
1006
  /// \note Because of our implementation, keys are limited to 2^30 -1 chars.
892
- /// Exceeding that will cause an exception.
1007
+ /// Exceeding that will cause an exception.
893
1008
  Value& operator[](const char* key);
894
1009
  /// Access an object value by name, returns null if there is no member with
895
1010
  /// that name.
896
1011
  const Value& operator[](const char* key) const;
897
1012
  /// Access an object value by name, create a null member if it does not exist.
898
1013
  /// \param key may contain embedded nulls.
899
- Value& operator[](const JSONCPP_STRING& key);
1014
+ Value& operator[](const String& key);
900
1015
  /// Access an object value by name, returns null if there is no member with
901
1016
  /// that name.
902
1017
  /// \param key may contain embedded nulls.
903
- const Value& operator[](const JSONCPP_STRING& key) const;
1018
+ const Value& operator[](const String& key) const;
904
1019
  /** \brief Access an object value by name, create a null member if it does not
905
- exist.
906
-
907
- * If the object has no entry for that name, then the member name used to store
908
- * the new entry is not duplicated.
1020
+ * exist.
1021
+ *
1022
+ * If the object has no entry for that name, then the member name used to
1023
+ * store the new entry is not duplicated.
909
1024
  * Example of use:
910
- * \code
911
- * Json::Value object;
912
- * static const StaticString code("code");
913
- * object[code] = 1234;
914
- * \endcode
1025
+ * \code
1026
+ * Json::Value object;
1027
+ * static const StaticString code("code");
1028
+ * object[code] = 1234;
1029
+ * \endcode
915
1030
  */
916
1031
  Value& operator[](const StaticString& key);
917
- #ifdef JSON_USE_CPPTL
918
- /// Access an object value by name, create a null member if it does not exist.
919
- Value& operator[](const CppTL::ConstString& key);
920
- /// Access an object value by name, returns null if there is no member with
921
- /// that name.
922
- const Value& operator[](const CppTL::ConstString& key) const;
923
- #endif
924
1032
  /// Return the member named key if it exist, defaultValue otherwise.
925
1033
  /// \note deep copy
926
1034
  Value get(const char* key, const Value& defaultValue) const;
927
1035
  /// Return the member named key if it exist, defaultValue otherwise.
928
1036
  /// \note deep copy
929
1037
  /// \note key may contain embedded nulls.
930
- Value get(const char* begin, const char* end, const Value& defaultValue) const;
1038
+ Value get(const char* begin, const char* end,
1039
+ const Value& defaultValue) const;
931
1040
  /// Return the member named key if it exist, defaultValue otherwise.
932
1041
  /// \note deep copy
933
1042
  /// \param key may contain embedded nulls.
934
- Value get(const JSONCPP_STRING& key, const Value& defaultValue) const;
935
- #ifdef JSON_USE_CPPTL
936
- /// Return the member named key if it exist, defaultValue otherwise.
937
- /// \note deep copy
938
- Value get(const CppTL::ConstString& key, const Value& defaultValue) const;
939
- #endif
1043
+ Value get(const String& key, const Value& defaultValue) const;
940
1044
  /// Most general and efficient version of isMember()const, get()const,
941
1045
  /// and operator[]const
942
1046
  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
@@ -944,51 +1048,44 @@ Json::Value obj_value(Json::objectValue); // {}
944
1048
  /// Most general and efficient version of object-mutators.
945
1049
  /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30
946
1050
  /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue.
947
- Value const* demand(char const* begin, char const* end);
1051
+ Value* demand(char const* begin, char const* end);
948
1052
  /// \brief Remove and return the named member.
949
1053
  ///
950
1054
  /// Do nothing if it did not exist.
951
- /// \return the removed Value, or null.
952
1055
  /// \pre type() is objectValue or nullValue
953
1056
  /// \post type() is unchanged
954
- /// \deprecated
955
- Value removeMember(const char* key);
1057
+ void removeMember(const char* key);
956
1058
  /// Same as removeMember(const char*)
957
1059
  /// \param key may contain embedded nulls.
958
- /// \deprecated
959
- Value removeMember(const JSONCPP_STRING& key);
1060
+ void removeMember(const String& key);
960
1061
  /// Same as removeMember(const char* begin, const char* end, Value* removed),
961
1062
  /// but 'key' is null-terminated.
962
1063
  bool removeMember(const char* key, Value* removed);
963
1064
  /** \brief Remove the named map member.
964
-
965
- Update 'removed' iff removed.
966
- \param key may contain embedded nulls.
967
- \return true iff removed (no exceptions)
968
- */
969
- bool removeMember(JSONCPP_STRING const& key, Value* removed);
970
- /// Same as removeMember(JSONCPP_STRING const& key, Value* removed)
1065
+ *
1066
+ * Update 'removed' iff removed.
1067
+ * \param key may contain embedded nulls.
1068
+ * \return true iff removed (no exceptions)
1069
+ */
1070
+ bool removeMember(String const& key, Value* removed);
1071
+ /// Same as removeMember(String const& key, Value* removed)
971
1072
  bool removeMember(const char* begin, const char* end, Value* removed);
972
1073
  /** \brief Remove the indexed array element.
973
-
974
- O(n) expensive operations.
975
- Update 'removed' iff removed.
976
- \return true iff removed (no exceptions)
977
- */
978
- bool removeIndex(ArrayIndex i, Value* removed);
1074
+ *
1075
+ * O(n) expensive operations.
1076
+ * Update 'removed' iff removed.
1077
+ * \return true if removed (no exceptions)
1078
+ */
1079
+ bool removeIndex(ArrayIndex index, Value* removed);
979
1080
 
980
1081
  /// Return true if the object has a member named key.
981
1082
  /// \note 'key' must be null-terminated.
982
1083
  bool isMember(const char* key) const;
983
1084
  /// Return true if the object has a member named key.
984
1085
  /// \param key may contain embedded nulls.
985
- bool isMember(const JSONCPP_STRING& key) const;
986
- /// Same as isMember(JSONCPP_STRING const& key)const
1086
+ bool isMember(const String& key) const;
1087
+ /// Same as isMember(String const& key)const
987
1088
  bool isMember(const char* begin, const char* end) const;
988
- #ifdef JSON_USE_CPPTL
989
- /// Return true if the object has a member named key.
990
- bool isMember(const CppTL::ConstString& key) const;
991
- #endif
992
1089
 
993
1090
  /// \brief Return a list of the member names.
994
1091
  ///
@@ -997,23 +1094,22 @@ Json::Value obj_value(Json::objectValue); // {}
997
1094
  /// \post if type() was nullValue, it remains nullValue
998
1095
  Members getMemberNames() const;
999
1096
 
1000
- //# ifdef JSON_USE_CPPTL
1001
- // EnumMemberNames enumMemberNames() const;
1002
- // EnumValues enumValues() const;
1003
- //# endif
1004
-
1005
1097
  /// \deprecated Always pass len.
1006
- JSONCPP_DEPRECATED("Use setComment(JSONCPP_STRING const&) instead.")
1007
- void setComment(const char* comment, CommentPlacement placement);
1098
+ JSONCPP_DEPRECATED("Use setComment(String const&) instead.")
1099
+ void setComment(const char* comment, CommentPlacement placement) {
1100
+ setComment(String(comment, strlen(comment)), placement);
1101
+ }
1008
1102
  /// Comments must be //... or /* ... */
1009
- void setComment(const char* comment, size_t len, CommentPlacement placement);
1103
+ void setComment(const char* comment, size_t len, CommentPlacement placement) {
1104
+ setComment(String(comment, len), placement);
1105
+ }
1010
1106
  /// Comments must be //... or /* ... */
1011
- void setComment(const JSONCPP_STRING& comment, CommentPlacement placement);
1107
+ void setComment(String comment, CommentPlacement placement);
1012
1108
  bool hasComment(CommentPlacement placement) const;
1013
1109
  /// Include delimiters and embedded newlines.
1014
- JSONCPP_STRING getComment(CommentPlacement placement) const;
1110
+ String getComment(CommentPlacement placement) const;
1015
1111
 
1016
- JSONCPP_STRING toStyledString() const;
1112
+ String toStyledString() const;
1017
1113
 
1018
1114
  const_iterator begin() const;
1019
1115
  const_iterator end() const;
@@ -1029,20 +1125,20 @@ Json::Value obj_value(Json::objectValue); // {}
1029
1125
  ptrdiff_t getOffsetLimit() const;
1030
1126
 
1031
1127
  private:
1128
+ void setType(ValueType v) {
1129
+ bits_.value_type_ = static_cast<unsigned char>(v);
1130
+ }
1131
+ bool isAllocated() const { return bits_.allocated_; }
1132
+ void setIsAllocated(bool v) { bits_.allocated_ = v; }
1133
+
1032
1134
  void initBasic(ValueType type, bool allocated = false);
1135
+ void dupPayload(const Value& other);
1136
+ void releasePayload();
1137
+ void dupMeta(const Value& other);
1033
1138
 
1034
1139
  Value& resolveReference(const char* key);
1035
1140
  Value& resolveReference(const char* key, const char* end);
1036
1141
 
1037
- struct CommentInfo {
1038
- CommentInfo();
1039
- ~CommentInfo();
1040
-
1041
- void setComment(const char* text, size_t len);
1042
-
1043
- char* comment_;
1044
- };
1045
-
1046
1142
  // struct MemberNamesTransform
1047
1143
  //{
1048
1144
  // typedef const char *result_type;
@@ -1057,13 +1153,33 @@ private:
1057
1153
  LargestUInt uint_;
1058
1154
  double real_;
1059
1155
  bool bool_;
1060
- char* string_; // actually ptr to unsigned, followed by str, unless !allocated_
1156
+ char* string_; // if allocated_, ptr to { unsigned, char[] }.
1061
1157
  ObjectValues* map_;
1062
1158
  } value_;
1063
- ValueType type_ : 8;
1064
- unsigned int allocated_ : 1; // Notes: if declared as bool, bitfield is useless.
1065
- // If not allocated_, string_ must be null-terminated.
1066
- CommentInfo* comments_;
1159
+
1160
+ struct {
1161
+ // Really a ValueType, but types should agree for bitfield packing.
1162
+ unsigned int value_type_ : 8;
1163
+ // Unless allocated_, string_ must be null-terminated.
1164
+ unsigned int allocated_ : 1;
1165
+ } bits_;
1166
+
1167
+ class Comments {
1168
+ public:
1169
+ Comments() = default;
1170
+ Comments(const Comments& that);
1171
+ Comments(Comments&& that) noexcept;
1172
+ Comments& operator=(const Comments& that);
1173
+ Comments& operator=(Comments&& that) noexcept;
1174
+ bool has(CommentPlacement slot) const;
1175
+ String get(CommentPlacement slot) const;
1176
+ void set(CommentPlacement slot, String comment);
1177
+
1178
+ private:
1179
+ using Array = std::array<String, numberOfCommentPlacement>;
1180
+ std::unique_ptr<Array> ptr_;
1181
+ };
1182
+ Comments comments_;
1067
1183
 
1068
1184
  // [start, limit) byte offsets in the source JSON text from which this Value
1069
1185
  // was extracted.
@@ -1071,6 +1187,36 @@ private:
1071
1187
  ptrdiff_t limit_;
1072
1188
  };
1073
1189
 
1190
+ template <> inline bool Value::as<bool>() const { return asBool(); }
1191
+ template <> inline bool Value::is<bool>() const { return isBool(); }
1192
+
1193
+ template <> inline Int Value::as<Int>() const { return asInt(); }
1194
+ template <> inline bool Value::is<Int>() const { return isInt(); }
1195
+
1196
+ template <> inline UInt Value::as<UInt>() const { return asUInt(); }
1197
+ template <> inline bool Value::is<UInt>() const { return isUInt(); }
1198
+
1199
+ #if defined(JSON_HAS_INT64)
1200
+ template <> inline Int64 Value::as<Int64>() const { return asInt64(); }
1201
+ template <> inline bool Value::is<Int64>() const { return isInt64(); }
1202
+
1203
+ template <> inline UInt64 Value::as<UInt64>() const { return asUInt64(); }
1204
+ template <> inline bool Value::is<UInt64>() const { return isUInt64(); }
1205
+ #endif
1206
+
1207
+ template <> inline double Value::as<double>() const { return asDouble(); }
1208
+ template <> inline bool Value::is<double>() const { return isDouble(); }
1209
+
1210
+ template <> inline String Value::as<String>() const { return asString(); }
1211
+ template <> inline bool Value::is<String>() const { return isString(); }
1212
+
1213
+ /// These `as` specializations are type conversions, and do not have a
1214
+ /// corresponding `is`.
1215
+ template <> inline float Value::as<float>() const { return asFloat(); }
1216
+ template <> inline const char* Value::as<const char*>() const {
1217
+ return asCString();
1218
+ }
1219
+
1074
1220
  /** \brief Experimental and untested: represents an element of the "path" to
1075
1221
  * access a node.
1076
1222
  */
@@ -1081,17 +1227,13 @@ public:
1081
1227
  PathArgument();
1082
1228
  PathArgument(ArrayIndex index);
1083
1229
  PathArgument(const char* key);
1084
- PathArgument(const JSONCPP_STRING& key);
1230
+ PathArgument(String key);
1085
1231
 
1086
1232
  private:
1087
- enum Kind {
1088
- kindNone = 0,
1089
- kindIndex,
1090
- kindKey
1091
- };
1092
- JSONCPP_STRING key_;
1093
- ArrayIndex index_;
1094
- Kind kind_;
1233
+ enum Kind { kindNone = 0, kindIndex, kindKey };
1234
+ String key_;
1235
+ ArrayIndex index_{};
1236
+ Kind kind_{kindNone};
1095
1237
  };
1096
1238
 
1097
1239
  /** \brief Experimental and untested: represents a "path" to access a node.
@@ -1103,12 +1245,11 @@ private:
1103
1245
  * - ".name1.name2.name3"
1104
1246
  * - ".[0][1][2].name1[3]"
1105
1247
  * - ".%" => member name is provided as parameter
1106
- * - ".[%]" => index is provied as parameter
1248
+ * - ".[%]" => index is provided as parameter
1107
1249
  */
1108
1250
  class JSON_API Path {
1109
1251
  public:
1110
- Path(const JSONCPP_STRING& path,
1111
- const PathArgument& a1 = PathArgument(),
1252
+ Path(const String& path, const PathArgument& a1 = PathArgument(),
1112
1253
  const PathArgument& a2 = PathArgument(),
1113
1254
  const PathArgument& a3 = PathArgument(),
1114
1255
  const PathArgument& a4 = PathArgument(),
@@ -1121,15 +1262,13 @@ public:
1121
1262
  Value& make(Value& root) const;
1122
1263
 
1123
1264
  private:
1124
- typedef std::vector<const PathArgument*> InArgs;
1125
- typedef std::vector<PathArgument> Args;
1265
+ using InArgs = std::vector<const PathArgument*>;
1266
+ using Args = std::vector<PathArgument>;
1126
1267
 
1127
- void makePath(const JSONCPP_STRING& path, const InArgs& in);
1128
- void addPathInArg(const JSONCPP_STRING& path,
1129
- const InArgs& in,
1130
- InArgs::const_iterator& itInArg,
1131
- PathArgument::Kind kind);
1132
- void invalidPath(const JSONCPP_STRING& path, int location);
1268
+ void makePath(const String& path, const InArgs& in);
1269
+ void addPathInArg(const String& path, const InArgs& in,
1270
+ InArgs::const_iterator& itInArg, PathArgument::Kind kind);
1271
+ static void invalidPath(const String& path, int location);
1133
1272
 
1134
1273
  Args args_;
1135
1274
  };
@@ -1139,10 +1278,10 @@ private:
1139
1278
  */
1140
1279
  class JSON_API ValueIteratorBase {
1141
1280
  public:
1142
- typedef std::bidirectional_iterator_tag iterator_category;
1143
- typedef unsigned int size_t;
1144
- typedef int difference_type;
1145
- typedef ValueIteratorBase SelfType;
1281
+ using iterator_category = std::bidirectional_iterator_tag;
1282
+ using size_t = unsigned int;
1283
+ using difference_type = int;
1284
+ using SelfType = ValueIteratorBase;
1146
1285
 
1147
1286
  bool operator==(const SelfType& other) const { return isEqual(other); }
1148
1287
 
@@ -1156,17 +1295,19 @@ public:
1156
1295
  /// Value.
1157
1296
  Value key() const;
1158
1297
 
1159
- /// Return the index of the referenced Value, or -1 if it is not an arrayValue.
1298
+ /// Return the index of the referenced Value, or -1 if it is not an
1299
+ /// arrayValue.
1160
1300
  UInt index() const;
1161
1301
 
1162
1302
  /// Return the member name of the referenced Value, or "" if it is not an
1163
1303
  /// objectValue.
1164
1304
  /// \note Avoid `c_str()` on result, as embedded zeroes are possible.
1165
- JSONCPP_STRING name() const;
1305
+ String name() const;
1166
1306
 
1167
1307
  /// Return the member name of the referenced Value. "" if it is not an
1168
1308
  /// objectValue.
1169
- /// \deprecated This cannot be used for UTF-8 strings, since there can be embedded nulls.
1309
+ /// \deprecated This cannot be used for UTF-8 strings, since there can be
1310
+ /// embedded nulls.
1170
1311
  JSONCPP_DEPRECATED("Use `key = name();` instead.")
1171
1312
  char const* memberName() const;
1172
1313
  /// Return the member name of the referenced Value, or NULL if it is not an
@@ -1175,7 +1316,14 @@ public:
1175
1316
  char const* memberName(char const** end) const;
1176
1317
 
1177
1318
  protected:
1178
- Value& deref() const;
1319
+ /*! Internal utility functions to assist with implementing
1320
+ * other iterator functions. The const and non-const versions
1321
+ * of the "deref" protected methods expose the protected
1322
+ * current_ member variable in a way that can often be
1323
+ * optimized away by the compiler.
1324
+ */
1325
+ const Value& deref() const;
1326
+ Value& deref();
1179
1327
 
1180
1328
  void increment();
1181
1329
 
@@ -1190,7 +1338,7 @@ protected:
1190
1338
  private:
1191
1339
  Value::ObjectValues::iterator current_;
1192
1340
  // Indicates that iterator is for a null value.
1193
- bool isNull_;
1341
+ bool isNull_{true};
1194
1342
 
1195
1343
  public:
1196
1344
  // For some reason, BORLAND needs these at the end, rather
@@ -1206,20 +1354,21 @@ class JSON_API ValueConstIterator : public ValueIteratorBase {
1206
1354
  friend class Value;
1207
1355
 
1208
1356
  public:
1209
- typedef const Value value_type;
1210
- //typedef unsigned int size_t;
1211
- //typedef int difference_type;
1212
- typedef const Value& reference;
1213
- typedef const Value* pointer;
1214
- typedef ValueConstIterator SelfType;
1357
+ using value_type = const Value;
1358
+ // typedef unsigned int size_t;
1359
+ // typedef int difference_type;
1360
+ using reference = const Value&;
1361
+ using pointer = const Value*;
1362
+ using SelfType = ValueConstIterator;
1215
1363
 
1216
1364
  ValueConstIterator();
1217
1365
  ValueConstIterator(ValueIterator const& other);
1218
1366
 
1219
1367
  private:
1220
- /*! \internal Use by Value to create an iterator.
1221
- */
1368
+ /*! \internal Use by Value to create an iterator.
1369
+ */
1222
1370
  explicit ValueConstIterator(const Value::ObjectValues::iterator& current);
1371
+
1223
1372
  public:
1224
1373
  SelfType& operator=(const ValueIteratorBase& other);
1225
1374
 
@@ -1256,21 +1405,22 @@ class JSON_API ValueIterator : public ValueIteratorBase {
1256
1405
  friend class Value;
1257
1406
 
1258
1407
  public:
1259
- typedef Value value_type;
1260
- typedef unsigned int size_t;
1261
- typedef int difference_type;
1262
- typedef Value& reference;
1263
- typedef Value* pointer;
1264
- typedef ValueIterator SelfType;
1408
+ using value_type = Value;
1409
+ using size_t = unsigned int;
1410
+ using difference_type = int;
1411
+ using reference = Value&;
1412
+ using pointer = Value*;
1413
+ using SelfType = ValueIterator;
1265
1414
 
1266
1415
  ValueIterator();
1267
1416
  explicit ValueIterator(const ValueConstIterator& other);
1268
1417
  ValueIterator(const ValueIterator& other);
1269
1418
 
1270
1419
  private:
1271
- /*! \internal Use by Value to create an iterator.
1272
- */
1420
+ /*! \internal Use by Value to create an iterator.
1421
+ */
1273
1422
  explicit ValueIterator(const Value::ObjectValues::iterator& current);
1423
+
1274
1424
  public:
1275
1425
  SelfType& operator=(const SelfType& other);
1276
1426
 
@@ -1296,28 +1446,27 @@ public:
1296
1446
  return *this;
1297
1447
  }
1298
1448
 
1299
- reference operator*() const { return deref(); }
1300
-
1301
- pointer operator->() const { return &deref(); }
1449
+ /*! The return value of non-const iterators can be
1450
+ * changed, so the these functions are not const
1451
+ * because the returned references/pointers can be used
1452
+ * to change state of the base class.
1453
+ */
1454
+ reference operator*() const { return const_cast<reference>(deref()); }
1455
+ pointer operator->() const { return const_cast<pointer>(&deref()); }
1302
1456
  };
1303
1457
 
1458
+ inline void swap(Value& a, Value& b) { a.swap(b); }
1459
+
1304
1460
  } // namespace Json
1305
1461
  } // namespace Passenger
1306
1462
 
1307
-
1308
- namespace std {
1309
- /// Specialize std::swap() for Json::Value.
1310
- template<>
1311
- inline void swap(Passenger::Json::Value& a, Passenger::Json::Value& b) { a.swap(b); }
1312
- }
1313
-
1314
1463
  #pragma pack(pop)
1315
1464
 
1316
1465
  #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
1317
1466
  #pragma warning(pop)
1318
1467
  #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
1319
1468
 
1320
- #endif // CPPTL_JSON_H_INCLUDED
1469
+ #endif // JSON_H_INCLUDED
1321
1470
 
1322
1471
  // //////////////////////////////////////////////////////////////////////
1323
1472
  // End of content of file: include/json/value.h
@@ -1332,23 +1481,23 @@ inline void swap(Passenger::Json::Value& a, Passenger::Json::Value& b) { a.swap(
1332
1481
  // Beginning of content of file: include/json/reader.h
1333
1482
  // //////////////////////////////////////////////////////////////////////
1334
1483
 
1335
- // Copyright 2007-2010 Baptiste Lepilleur
1484
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
1336
1485
  // Distributed under MIT license, or public domain if desired and
1337
1486
  // recognized in your jurisdiction.
1338
1487
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
1339
1488
 
1340
- #ifndef CPPTL_JSON_READER_H_INCLUDED
1341
- #define CPPTL_JSON_READER_H_INCLUDED
1489
+ #ifndef JSON_READER_H_INCLUDED
1490
+ #define JSON_READER_H_INCLUDED
1342
1491
 
1343
1492
  #if !defined(JSON_IS_AMALGAMATION)
1344
- #include "features.h"
1493
+ #include "json_features.h"
1345
1494
  #include "value.h"
1346
1495
  #endif // if !defined(JSON_IS_AMALGAMATION)
1347
1496
  #include <deque>
1348
1497
  #include <iosfwd>
1498
+ #include <istream>
1349
1499
  #include <stack>
1350
1500
  #include <string>
1351
- #include <istream>
1352
1501
 
1353
1502
  // Disable warning C4251: <data member>: <type> needs to have dll-interface to
1354
1503
  // be used by...
@@ -1363,132 +1512,129 @@ namespace Passenger {
1363
1512
  namespace Json {
1364
1513
 
1365
1514
  /** \brief Unserialize a <a HREF="http://www.json.org">JSON</a> document into a
1366
- *Value.
1515
+ * Value.
1367
1516
  *
1368
1517
  * \deprecated Use CharReader and CharReaderBuilder.
1369
1518
  */
1519
+
1370
1520
  class JSON_API Reader {
1371
1521
  public:
1372
- typedef char Char;
1373
- typedef const Char* Location;
1522
+ using Char = char;
1523
+ using Location = const Char*;
1374
1524
 
1375
1525
  /** \brief An error tagged with where in the JSON text it was encountered.
1376
1526
  *
1377
1527
  * The offsets give the [start, limit) range of bytes within the text. Note
1378
1528
  * that this is bytes, not codepoints.
1379
- *
1380
1529
  */
1381
1530
  struct StructuredError {
1382
1531
  ptrdiff_t offset_start;
1383
1532
  ptrdiff_t offset_limit;
1384
- JSONCPP_STRING message;
1533
+ String message;
1385
1534
  };
1386
1535
 
1387
- /** \brief Constructs a Reader allowing all features
1388
- * for parsing.
1536
+ /** \brief Constructs a Reader allowing all features for parsing.
1537
+ * \deprecated Use CharReader and CharReaderBuilder.
1389
1538
  */
1390
1539
  Reader();
1391
1540
 
1392
- /** \brief Constructs a Reader allowing the specified feature set
1393
- * for parsing.
1541
+ /** \brief Constructs a Reader allowing the specified feature set for parsing.
1542
+ * \deprecated Use CharReader and CharReaderBuilder.
1394
1543
  */
1395
1544
  Reader(const Features& features);
1396
1545
 
1397
1546
  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
1398
1547
  * document.
1399
- * \param document UTF-8 encoded string containing the document to read.
1400
- * \param root [out] Contains the root value of the document if it was
1401
- * successfully parsed.
1402
- * \param collectComments \c true to collect comment and allow writing them
1403
- * back during
1404
- * serialization, \c false to discard comments.
1405
- * This parameter is ignored if
1406
- * Features::allowComments_
1407
- * is \c false.
1548
+ *
1549
+ * \param document UTF-8 encoded string containing the document
1550
+ * to read.
1551
+ * \param[out] root Contains the root value of the document if it
1552
+ * was successfully parsed.
1553
+ * \param collectComments \c true to collect comment and allow writing
1554
+ * them back during serialization, \c false to
1555
+ * discard comments. This parameter is ignored
1556
+ * if Features::allowComments_ is \c false.
1408
1557
  * \return \c true if the document was successfully parsed, \c false if an
1409
1558
  * error occurred.
1410
1559
  */
1411
- bool
1412
- parse(const std::string& document, Value& root, bool collectComments = true);
1560
+ bool parse(const std::string& document, Value& root,
1561
+ bool collectComments = true);
1413
1562
 
1414
1563
  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
1415
- document.
1416
- * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
1417
- document to read.
1418
- * \param endDoc Pointer on the end of the UTF-8 encoded string of the
1419
- document to read.
1420
- * Must be >= beginDoc.
1421
- * \param root [out] Contains the root value of the document if it was
1422
- * successfully parsed.
1423
- * \param collectComments \c true to collect comment and allow writing them
1424
- back during
1425
- * serialization, \c false to discard comments.
1426
- * This parameter is ignored if
1427
- Features::allowComments_
1428
- * is \c false.
1564
+ * document.
1565
+ *
1566
+ * \param beginDoc Pointer on the beginning of the UTF-8 encoded
1567
+ * string of the document to read.
1568
+ * \param endDoc Pointer on the end of the UTF-8 encoded string
1569
+ * of the document to read. Must be >= beginDoc.
1570
+ * \param[out] root Contains the root value of the document if it
1571
+ * was successfully parsed.
1572
+ * \param collectComments \c true to collect comment and allow writing
1573
+ * them back during serialization, \c false to
1574
+ * discard comments. This parameter is ignored
1575
+ * if Features::allowComments_ is \c false.
1429
1576
  * \return \c true if the document was successfully parsed, \c false if an
1430
- error occurred.
1577
+ * error occurred.
1431
1578
  */
1432
- bool parse(const char* beginDoc,
1433
- const char* endDoc,
1434
- Value& root,
1579
+ bool parse(const char* beginDoc, const char* endDoc, Value& root,
1435
1580
  bool collectComments = true);
1436
1581
 
1437
1582
  /// \brief Parse from input stream.
1438
1583
  /// \see Json::operator>>(std::istream&, Json::Value&).
1439
- bool parse(JSONCPP_ISTREAM& is, Value& root, bool collectComments = true);
1584
+ bool parse(IStream& is, Value& root, bool collectComments = true);
1440
1585
 
1441
1586
  /** \brief Returns a user friendly string that list errors in the parsed
1442
1587
  * document.
1443
- * \return Formatted error message with the list of errors with their location
1444
- * in
1445
- * the parsed document. An empty string is returned if no error
1446
- * occurred
1447
- * during parsing.
1588
+ *
1589
+ * \return Formatted error message with the list of errors with their
1590
+ * location in the parsed document. An empty string is returned if no error
1591
+ * occurred during parsing.
1448
1592
  * \deprecated Use getFormattedErrorMessages() instead (typo fix).
1449
1593
  */
1450
1594
  JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.")
1451
- JSONCPP_STRING getFormatedErrorMessages() const;
1595
+ String getFormatedErrorMessages() const;
1452
1596
 
1453
1597
  /** \brief Returns a user friendly string that list errors in the parsed
1454
1598
  * document.
1455
- * \return Formatted error message with the list of errors with their location
1456
- * in
1457
- * the parsed document. An empty string is returned if no error
1458
- * occurred
1459
- * during parsing.
1599
+ *
1600
+ * \return Formatted error message with the list of errors with their
1601
+ * location in the parsed document. An empty string is returned if no error
1602
+ * occurred during parsing.
1460
1603
  */
1461
- JSONCPP_STRING getFormattedErrorMessages() const;
1604
+ String getFormattedErrorMessages() const;
1462
1605
 
1463
- /** \brief Returns a vector of structured erros encounted while parsing.
1606
+ /** \brief Returns a vector of structured errors encountered while parsing.
1607
+ *
1464
1608
  * \return A (possibly empty) vector of StructuredError objects. Currently
1465
- * only one error can be returned, but the caller should tolerate
1466
- * multiple
1467
- * errors. This can occur if the parser recovers from a non-fatal
1468
- * parse error and then encounters additional errors.
1609
+ * only one error can be returned, but the caller should tolerate multiple
1610
+ * errors. This can occur if the parser recovers from a non-fatal parse
1611
+ * error and then encounters additional errors.
1469
1612
  */
1470
1613
  std::vector<StructuredError> getStructuredErrors() const;
1471
1614
 
1472
1615
  /** \brief Add a semantic error message.
1473
- * \param value JSON Value location associated with the error
1616
+ *
1617
+ * \param value JSON Value location associated with the error
1474
1618
  * \param message The error message.
1475
- * \return \c true if the error was successfully added, \c false if the
1476
- * Value offset exceeds the document size.
1619
+ * \return \c true if the error was successfully added, \c false if the Value
1620
+ * offset exceeds the document size.
1477
1621
  */
1478
- bool pushError(const Value& value, const JSONCPP_STRING& message);
1622
+ bool pushError(const Value& value, const String& message);
1479
1623
 
1480
1624
  /** \brief Add a semantic error message with extra context.
1481
- * \param value JSON Value location associated with the error
1625
+ *
1626
+ * \param value JSON Value location associated with the error
1482
1627
  * \param message The error message.
1483
- * \param extra Additional JSON Value location to contextualize the error
1628
+ * \param extra Additional JSON Value location to contextualize the error
1484
1629
  * \return \c true if the error was successfully added, \c false if either
1485
1630
  * Value offset exceeds the document size.
1486
1631
  */
1487
- bool pushError(const Value& value, const JSONCPP_STRING& message, const Value& extra);
1632
+ bool pushError(const Value& value, const String& message, const Value& extra);
1488
1633
 
1489
1634
  /** \brief Return whether there are any errors.
1490
- * \return \c true if there are no errors to report \c false if
1491
- * errors have occurred.
1635
+ *
1636
+ * \return \c true if there are no errors to report \c false if errors have
1637
+ * occurred.
1492
1638
  */
1493
1639
  bool good() const;
1494
1640
 
@@ -1520,15 +1666,15 @@ private:
1520
1666
  class ErrorInfo {
1521
1667
  public:
1522
1668
  Token token_;
1523
- JSONCPP_STRING message_;
1669
+ String message_;
1524
1670
  Location extra_;
1525
1671
  };
1526
1672
 
1527
- typedef std::deque<ErrorInfo> Errors;
1673
+ using Errors = std::deque<ErrorInfo>;
1528
1674
 
1529
1675
  bool readToken(Token& token);
1530
1676
  void skipSpaces();
1531
- bool match(Location pattern, int patternLength);
1677
+ bool match(const Char* pattern, int patternLength);
1532
1678
  bool readComment();
1533
1679
  bool readCStyleComment();
1534
1680
  bool readCppStyleComment();
@@ -1540,140 +1686,141 @@ private:
1540
1686
  bool decodeNumber(Token& token);
1541
1687
  bool decodeNumber(Token& token, Value& decoded);
1542
1688
  bool decodeString(Token& token);
1543
- bool decodeString(Token& token, JSONCPP_STRING& decoded);
1689
+ bool decodeString(Token& token, String& decoded);
1544
1690
  bool decodeDouble(Token& token);
1545
1691
  bool decodeDouble(Token& token, Value& decoded);
1546
- bool decodeUnicodeCodePoint(Token& token,
1547
- Location& current,
1548
- Location end,
1692
+ bool decodeUnicodeCodePoint(Token& token, Location& current, Location end,
1549
1693
  unsigned int& unicode);
1550
- bool decodeUnicodeEscapeSequence(Token& token,
1551
- Location& current,
1552
- Location end,
1553
- unsigned int& unicode);
1554
- bool addError(const JSONCPP_STRING& message, Token& token, Location extra = 0);
1694
+ bool decodeUnicodeEscapeSequence(Token& token, Location& current,
1695
+ Location end, unsigned int& unicode);
1696
+ bool addError(const String& message, Token& token, Location extra = nullptr);
1555
1697
  bool recoverFromError(TokenType skipUntilToken);
1556
- bool addErrorAndRecover(const JSONCPP_STRING& message,
1557
- Token& token,
1698
+ bool addErrorAndRecover(const String& message, Token& token,
1558
1699
  TokenType skipUntilToken);
1559
1700
  void skipUntilSpace();
1560
1701
  Value& currentValue();
1561
1702
  Char getNextChar();
1562
- void
1563
- getLocationLineAndColumn(Location location, int& line, int& column) const;
1564
- JSONCPP_STRING getLocationLineAndColumn(Location location) const;
1703
+ void getLocationLineAndColumn(Location location, int& line,
1704
+ int& column) const;
1705
+ String getLocationLineAndColumn(Location location) const;
1565
1706
  void addComment(Location begin, Location end, CommentPlacement placement);
1566
1707
  void skipCommentTokens(Token& token);
1567
1708
 
1568
- typedef std::stack<Value*> Nodes;
1709
+ static bool containsNewLine(Location begin, Location end);
1710
+ static String normalizeEOL(Location begin, Location end);
1711
+
1712
+ using Nodes = std::stack<Value*>;
1569
1713
  Nodes nodes_;
1570
1714
  Errors errors_;
1571
- JSONCPP_STRING document_;
1572
- Location begin_;
1573
- Location end_;
1574
- Location current_;
1575
- Location lastValueEnd_;
1576
- Value* lastValue_;
1577
- JSONCPP_STRING commentsBefore_;
1715
+ String document_;
1716
+ Location begin_{};
1717
+ Location end_{};
1718
+ Location current_{};
1719
+ Location lastValueEnd_{};
1720
+ Value* lastValue_{};
1721
+ String commentsBefore_;
1578
1722
  Features features_;
1579
- bool collectComments_;
1580
- }; // Reader
1723
+ bool collectComments_{};
1724
+ }; // Reader
1581
1725
 
1582
1726
  /** Interface for reading JSON from a char array.
1583
1727
  */
1584
1728
  class JSON_API CharReader {
1585
1729
  public:
1586
- virtual ~CharReader() {}
1730
+ virtual ~CharReader() = default;
1587
1731
  /** \brief Read a Value from a <a HREF="http://www.json.org">JSON</a>
1588
- document.
1589
- * The document must be a UTF-8 encoded string containing the document to read.
1732
+ * document. The document must be a UTF-8 encoded string containing the
1733
+ * document to read.
1590
1734
  *
1591
- * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the
1592
- document to read.
1593
- * \param endDoc Pointer on the end of the UTF-8 encoded string of the
1594
- document to read.
1595
- * Must be >= beginDoc.
1596
- * \param root [out] Contains the root value of the document if it was
1597
- * successfully parsed.
1598
- * \param errs [out] Formatted error messages (if not NULL)
1599
- * a user friendly string that lists errors in the parsed
1600
- * document.
1735
+ * \param beginDoc Pointer on the beginning of the UTF-8 encoded string
1736
+ * of the document to read.
1737
+ * \param endDoc Pointer on the end of the UTF-8 encoded string of the
1738
+ * document to read. Must be >= beginDoc.
1739
+ * \param[out] root Contains the root value of the document if it was
1740
+ * successfully parsed.
1741
+ * \param[out] errs Formatted error messages (if not NULL) a user
1742
+ * friendly string that lists errors in the parsed
1743
+ * document.
1601
1744
  * \return \c true if the document was successfully parsed, \c false if an
1602
- error occurred.
1745
+ * error occurred.
1603
1746
  */
1604
- virtual bool parse(
1605
- char const* beginDoc, char const* endDoc,
1606
- Value* root, JSONCPP_STRING* errs) = 0;
1747
+ virtual bool parse(char const* beginDoc, char const* endDoc, Value* root,
1748
+ String* errs) = 0;
1607
1749
 
1608
1750
  class JSON_API Factory {
1609
1751
  public:
1610
- virtual ~Factory() {}
1752
+ virtual ~Factory() = default;
1611
1753
  /** \brief Allocate a CharReader via operator new().
1612
1754
  * \throw std::exception if something goes wrong (e.g. invalid settings)
1613
1755
  */
1614
1756
  virtual CharReader* newCharReader() const = 0;
1615
- }; // Factory
1616
- }; // CharReader
1757
+ }; // Factory
1758
+ }; // CharReader
1617
1759
 
1618
1760
  /** \brief Build a CharReader implementation.
1619
-
1620
- Usage:
1621
- \code
1622
- using namespace Passenger;
1623
- using namespace Json;
1624
- CharReaderBuilder builder;
1625
- builder["collectComments"] = false;
1626
- Value value;
1627
- JSONCPP_STRING errs;
1628
- bool ok = parseFromStream(builder, std::cin, &value, &errs);
1629
- \endcode
1630
- */
1761
+ *
1762
+ * Usage:
1763
+ * \code
1764
+ * using namespace Json;
1765
+ * CharReaderBuilder builder;
1766
+ * builder["collectComments"] = false;
1767
+ * Value value;
1768
+ * String errs;
1769
+ * bool ok = parseFromStream(builder, std::cin, &value, &errs);
1770
+ * \endcode
1771
+ */
1631
1772
  class JSON_API CharReaderBuilder : public CharReader::Factory {
1632
1773
  public:
1633
1774
  // Note: We use a Json::Value so that we can add data-members to this class
1634
1775
  // without a major version bump.
1635
1776
  /** Configuration of this builder.
1636
- These are case-sensitive.
1637
- Available settings (case-sensitive):
1638
- - `"collectComments": false or true`
1639
- - true to collect comment and allow writing them
1640
- back during serialization, false to discard comments.
1641
- This parameter is ignored if allowComments is false.
1642
- - `"allowComments": false or true`
1643
- - true if comments are allowed.
1644
- - `"strictRoot": false or true`
1645
- - true if root must be either an array or an object value
1646
- - `"allowDroppedNullPlaceholders": false or true`
1647
- - true if dropped null placeholders are allowed. (See StreamWriterBuilder.)
1648
- - `"allowNumericKeys": false or true`
1649
- - true if numeric object keys are allowed.
1650
- - `"allowSingleQuotes": false or true`
1651
- - true if '' are allowed for strings (both keys and values)
1652
- - `"stackLimit": integer`
1653
- - Exceeding stackLimit (recursive depth of `readValue()`) will
1654
- cause an exception.
1655
- - This is a security issue (seg-faults caused by deeply nested JSON),
1656
- so the default is low.
1657
- - `"failIfExtra": false or true`
1658
- - If true, `parse()` returns false when extra non-whitespace trails
1659
- the JSON value in the input string.
1660
- - `"rejectDupKeys": false or true`
1661
- - If true, `parse()` returns false when a key is duplicated within an object.
1662
- - `"allowSpecialFloats": false or true`
1663
- - If true, special float values (NaNs and infinities) are allowed
1664
- and their values are lossfree restorable.
1665
-
1666
- You can examine 'settings_` yourself
1667
- to see the defaults. You can also write and read them just like any
1668
- JSON Value.
1669
- \sa setDefaults()
1670
- */
1777
+ * These are case-sensitive.
1778
+ * Available settings (case-sensitive):
1779
+ * - `"collectComments": false or true`
1780
+ * - true to collect comment and allow writing them back during
1781
+ * serialization, false to discard comments. This parameter is ignored
1782
+ * if allowComments is false.
1783
+ * - `"allowComments": false or true`
1784
+ * - true if comments are allowed.
1785
+ * - `"allowTrailingCommas": false or true`
1786
+ * - true if trailing commas in objects and arrays are allowed.
1787
+ * - `"strictRoot": false or true`
1788
+ * - true if root must be either an array or an object value
1789
+ * - `"allowDroppedNullPlaceholders": false or true`
1790
+ * - true if dropped null placeholders are allowed. (See
1791
+ * StreamWriterBuilder.)
1792
+ * - `"allowNumericKeys": false or true`
1793
+ * - true if numeric object keys are allowed.
1794
+ * - `"allowSingleQuotes": false or true`
1795
+ * - true if '' are allowed for strings (both keys and values)
1796
+ * - `"stackLimit": integer`
1797
+ * - Exceeding stackLimit (recursive depth of `readValue()`) will cause an
1798
+ * exception.
1799
+ * - This is a security issue (seg-faults caused by deeply nested JSON), so
1800
+ * the default is low.
1801
+ * - `"failIfExtra": false or true`
1802
+ * - If true, `parse()` returns false when extra non-whitespace trails the
1803
+ * JSON value in the input string.
1804
+ * - `"rejectDupKeys": false or true`
1805
+ * - If true, `parse()` returns false when a key is duplicated within an
1806
+ * object.
1807
+ * - `"allowSpecialFloats": false or true`
1808
+ * - If true, special float values (NaNs and infinities) are allowed and
1809
+ * their values are lossfree restorable.
1810
+ * - `"skipBom": false or true`
1811
+ * - If true, if the input starts with the Unicode byte order mark (BOM),
1812
+ * it is skipped.
1813
+ *
1814
+ * You can examine 'settings_` yourself to see the defaults. You can also
1815
+ * write and read them just like any JSON Value.
1816
+ * \sa setDefaults()
1817
+ */
1671
1818
  Json::Value settings_;
1672
1819
 
1673
1820
  CharReaderBuilder();
1674
- ~CharReaderBuilder() JSONCPP_OVERRIDE;
1821
+ ~CharReaderBuilder() override;
1675
1822
 
1676
- CharReader* newCharReader() const JSONCPP_OVERRIDE;
1823
+ CharReader* newCharReader() const override;
1677
1824
 
1678
1825
  /** \return true if 'settings' are legal and consistent;
1679
1826
  * otherwise, indicate bad settings via 'invalid'.
@@ -1682,7 +1829,7 @@ public:
1682
1829
 
1683
1830
  /** A simple way to update a specific setting.
1684
1831
  */
1685
- Value& operator[](JSONCPP_STRING key);
1832
+ Value& operator[](const String& key);
1686
1833
 
1687
1834
  /** Called by ctor, but you can use this to reset settings_.
1688
1835
  * \pre 'settings' != NULL (but Json::null is fine)
@@ -1699,39 +1846,37 @@ public:
1699
1846
  };
1700
1847
 
1701
1848
  /** Consume entire stream and use its begin/end.
1702
- * Someday we might have a real StreamReader, but for now this
1703
- * is convenient.
1704
- */
1705
- bool JSON_API parseFromStream(
1706
- CharReader::Factory const&,
1707
- JSONCPP_ISTREAM&,
1708
- Value* root, std::string* errs);
1849
+ * Someday we might have a real StreamReader, but for now this
1850
+ * is convenient.
1851
+ */
1852
+ bool JSON_API parseFromStream(CharReader::Factory const&, IStream&, Value* root,
1853
+ String* errs);
1709
1854
 
1710
1855
  /** \brief Read from 'sin' into 'root'.
1711
-
1712
- Always keep comments from the input JSON.
1713
-
1714
- This can be used to read a file into a particular sub-object.
1715
- For example:
1716
- \code
1717
- Json::Value root;
1718
- cin >> root["dir"]["file"];
1719
- cout << root;
1720
- \endcode
1721
- Result:
1722
- \verbatim
1723
- {
1724
- "dir": {
1725
- "file": {
1726
- // The input stream JSON would be nested here.
1727
- }
1728
- }
1729
- }
1730
- \endverbatim
1731
- \throw std::exception on parse error.
1732
- \see Json::operator<<()
1733
- */
1734
- JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&);
1856
+ *
1857
+ * Always keep comments from the input JSON.
1858
+ *
1859
+ * This can be used to read a file into a particular sub-object.
1860
+ * For example:
1861
+ * \code
1862
+ * Json::Value root;
1863
+ * cin >> root["dir"]["file"];
1864
+ * cout << root;
1865
+ * \endcode
1866
+ * Result:
1867
+ * \verbatim
1868
+ * {
1869
+ * "dir": {
1870
+ * "file": {
1871
+ * // The input stream JSON would be nested here.
1872
+ * }
1873
+ * }
1874
+ * }
1875
+ * \endverbatim
1876
+ * \throw std::exception on parse error.
1877
+ * \see Json::operator<<()
1878
+ */
1879
+ JSON_API IStream& operator>>(IStream&, Value&);
1735
1880
 
1736
1881
  } // namespace Json
1737
1882
  } // namespace Passenger
@@ -1742,7 +1887,7 @@ JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&);
1742
1887
  #pragma warning(pop)
1743
1888
  #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
1744
1889
 
1745
- #endif // CPPTL_JSON_READER_H_INCLUDED
1890
+ #endif // JSON_READER_H_INCLUDED
1746
1891
 
1747
1892
  // //////////////////////////////////////////////////////////////////////
1748
1893
  // End of content of file: include/json/reader.h
@@ -1757,7 +1902,7 @@ JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&);
1757
1902
  // Beginning of content of file: include/json/writer.h
1758
1903
  // //////////////////////////////////////////////////////////////////////
1759
1904
 
1760
- // Copyright 2007-2010 Baptiste Lepilleur
1905
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
1761
1906
  // Distributed under MIT license, or public domain if desired and
1762
1907
  // recognized in your jurisdiction.
1763
1908
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
@@ -1768,13 +1913,13 @@ JSON_API JSONCPP_ISTREAM& operator>>(JSONCPP_ISTREAM&, Value&);
1768
1913
  #if !defined(JSON_IS_AMALGAMATION)
1769
1914
  #include "value.h"
1770
1915
  #endif // if !defined(JSON_IS_AMALGAMATION)
1771
- #include <vector>
1772
- #include <string>
1773
1916
  #include <ostream>
1917
+ #include <string>
1918
+ #include <vector>
1774
1919
 
1775
1920
  // Disable warning C4251: <data member>: <type> needs to have dll-interface to
1776
1921
  // be used by...
1777
- #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
1922
+ #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) && defined(_MSC_VER)
1778
1923
  #pragma warning(push)
1779
1924
  #pragma warning(disable : 4251)
1780
1925
  #endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
@@ -1787,32 +1932,31 @@ namespace Json {
1787
1932
  class Value;
1788
1933
 
1789
1934
  /**
1790
-
1791
- Usage:
1792
- \code
1793
- using namespace Passenger;
1794
- using namespace Json;
1795
- void writeToStdout(StreamWriter::Factory const& factory, Value const& value) {
1796
- std::unique_ptr<StreamWriter> const writer(
1797
- factory.newStreamWriter());
1798
- writer->write(value, &std::cout);
1799
- std::cout << std::endl; // add lf and flush
1800
- }
1801
- \endcode
1802
- */
1935
+ *
1936
+ * Usage:
1937
+ * \code
1938
+ * using namespace Json;
1939
+ * void writeToStdout(StreamWriter::Factory const& factory, Value const& value)
1940
+ * { std::unique_ptr<StreamWriter> const writer( factory.newStreamWriter());
1941
+ * writer->write(value, &std::cout);
1942
+ * std::cout << std::endl; // add lf and flush
1943
+ * }
1944
+ * \endcode
1945
+ */
1803
1946
  class JSON_API StreamWriter {
1804
1947
  protected:
1805
- JSONCPP_OSTREAM* sout_; // not owned; will not delete
1948
+ OStream* sout_; // not owned; will not delete
1806
1949
  public:
1807
1950
  StreamWriter();
1808
1951
  virtual ~StreamWriter();
1809
1952
  /** Write Value into document as configured in sub-class.
1810
- Do not take ownership of sout, but maintain a reference during function.
1811
- \pre sout != NULL
1812
- \return zero on success (For now, we always return zero, so check the stream instead.)
1813
- \throw std::exception possibly, depending on configuration
1953
+ * Do not take ownership of sout, but maintain a reference during function.
1954
+ * \pre sout != NULL
1955
+ * \return zero on success (For now, we always return zero, so check the
1956
+ * stream instead.) \throw std::exception possibly, depending on
1957
+ * configuration
1814
1958
  */
1815
- virtual int write(Value const& root, JSONCPP_OSTREAM* sout) = 0;
1959
+ virtual int write(Value const& root, OStream* sout) = 0;
1816
1960
 
1817
1961
  /** \brief A simple abstract factory.
1818
1962
  */
@@ -1823,65 +1967,71 @@ public:
1823
1967
  * \throw std::exception if something goes wrong (e.g. invalid settings)
1824
1968
  */
1825
1969
  virtual StreamWriter* newStreamWriter() const = 0;
1826
- }; // Factory
1827
- }; // StreamWriter
1970
+ }; // Factory
1971
+ }; // StreamWriter
1828
1972
 
1829
1973
  /** \brief Write into stringstream, then return string, for convenience.
1830
1974
  * A StreamWriter will be created from the factory, used, and then deleted.
1831
1975
  */
1832
- JSONCPP_STRING JSON_API writeString(StreamWriter::Factory const& factory, Value const& root);
1833
-
1976
+ String JSON_API writeString(StreamWriter::Factory const& factory,
1977
+ Value const& root);
1834
1978
 
1835
1979
  /** \brief Build a StreamWriter implementation.
1836
1980
 
1837
- Usage:
1838
- \code
1839
- using namespace Passenger;
1840
- using namespace Json;
1841
- Value value = ...;
1842
- StreamWriterBuilder builder;
1843
- builder["commentStyle"] = "None";
1844
- builder["indentation"] = " "; // or whatever you like
1845
- std::unique_ptr<Json::StreamWriter> writer(
1846
- builder.newStreamWriter());
1847
- writer->write(value, &std::cout);
1848
- std::cout << std::endl; // add lf and flush
1849
- \endcode
1981
+ * Usage:
1982
+ * \code
1983
+ * using namespace Json;
1984
+ * Value value = ...;
1985
+ * StreamWriterBuilder builder;
1986
+ * builder["commentStyle"] = "None";
1987
+ * builder["indentation"] = " "; // or whatever you like
1988
+ * std::unique_ptr<Json::StreamWriter> writer(
1989
+ * builder.newStreamWriter());
1990
+ * writer->write(value, &std::cout);
1991
+ * std::cout << std::endl; // add lf and flush
1992
+ * \endcode
1850
1993
  */
1851
1994
  class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
1852
1995
  public:
1853
1996
  // Note: We use a Json::Value so that we can add data-members to this class
1854
1997
  // without a major version bump.
1855
1998
  /** Configuration of this builder.
1856
- Available settings (case-sensitive):
1857
- - "commentStyle": "None" or "All"
1858
- - "indentation": "<anything>"
1859
- - "enableYAMLCompatibility": false or true
1860
- - slightly change the whitespace around colons
1861
- - "dropNullPlaceholders": false or true
1862
- - Drop the "null" string from the writer's output for nullValues.
1863
- Strictly speaking, this is not valid JSON. But when the output is being
1864
- fed to a browser's Javascript, it makes for smaller output and the
1865
- browser can handle the output just fine.
1866
- - "useSpecialFloats": false or true
1867
- - If true, outputs non-finite floating point values in the following way:
1868
- NaN values as "NaN", positive infinity as "Infinity", and negative infinity
1869
- as "-Infinity".
1870
-
1871
- You can examine 'settings_` yourself
1872
- to see the defaults. You can also write and read them just like any
1873
- JSON Value.
1874
- \sa setDefaults()
1875
- */
1999
+ * Available settings (case-sensitive):
2000
+ * - "commentStyle": "None" or "All"
2001
+ * - "indentation": "<anything>".
2002
+ * - Setting this to an empty string also omits newline characters.
2003
+ * - "enableYAMLCompatibility": false or true
2004
+ * - slightly change the whitespace around colons
2005
+ * - "dropNullPlaceholders": false or true
2006
+ * - Drop the "null" string from the writer's output for nullValues.
2007
+ * Strictly speaking, this is not valid JSON. But when the output is being
2008
+ * fed to a browser's JavaScript, it makes for smaller output and the
2009
+ * browser can handle the output just fine.
2010
+ * - "useSpecialFloats": false or true
2011
+ * - If true, outputs non-finite floating point values in the following way:
2012
+ * NaN values as "NaN", positive infinity as "Infinity", and negative
2013
+ * infinity as "-Infinity".
2014
+ * - "precision": int
2015
+ * - Number of precision digits for formatting of real values.
2016
+ * - "precisionType": "significant"(default) or "decimal"
2017
+ * - Type of precision for formatting of real values.
2018
+ * - "emitUTF8": false or true
2019
+ * - If true, outputs raw UTF8 strings instead of escaping them.
2020
+
2021
+ * You can examine 'settings_` yourself
2022
+ * to see the defaults. You can also write and read them just like any
2023
+ * JSON Value.
2024
+ * \sa setDefaults()
2025
+ */
1876
2026
  Json::Value settings_;
1877
2027
 
1878
2028
  StreamWriterBuilder();
1879
- ~StreamWriterBuilder() JSONCPP_OVERRIDE;
2029
+ ~StreamWriterBuilder() override;
1880
2030
 
1881
2031
  /**
1882
2032
  * \throw std::exception if something goes wrong (e.g. invalid settings)
1883
2033
  */
1884
- StreamWriter* newStreamWriter() const JSONCPP_OVERRIDE;
2034
+ StreamWriter* newStreamWriter() const override;
1885
2035
 
1886
2036
  /** \return true if 'settings' are legal and consistent;
1887
2037
  * otherwise, indicate bad settings via 'invalid'.
@@ -1889,7 +2039,7 @@ public:
1889
2039
  bool validate(Json::Value* invalid) const;
1890
2040
  /** A simple way to update a specific setting.
1891
2041
  */
1892
- Value& operator[](JSONCPP_STRING key);
2042
+ Value& operator[](const String& key);
1893
2043
 
1894
2044
  /** Called by ctor, but you can use this to reset settings_.
1895
2045
  * \pre 'settings' != NULL (but Json::null is fine)
@@ -1906,7 +2056,7 @@ class JSON_API Writer {
1906
2056
  public:
1907
2057
  virtual ~Writer();
1908
2058
 
1909
- virtual JSONCPP_STRING write(const Value& root) = 0;
2059
+ virtual String write(const Value& root) = 0;
1910
2060
  };
1911
2061
 
1912
2062
  /** \brief Outputs a Value in <a HREF="http://www.json.org">JSON</a> format
@@ -1914,21 +2064,25 @@ public:
1914
2064
  *
1915
2065
  * The JSON document is written in a single line. It is not intended for 'human'
1916
2066
  *consumption,
1917
- * but may be usefull to support feature such as RPC where bandwith is limited.
2067
+ * but may be useful to support feature such as RPC where bandwidth is limited.
1918
2068
  * \sa Reader, Value
1919
2069
  * \deprecated Use StreamWriterBuilder.
1920
2070
  */
1921
- class JSON_API FastWriter : public Writer {
1922
-
2071
+ #if defined(_MSC_VER)
2072
+ #pragma warning(push)
2073
+ #pragma warning(disable : 4996) // Deriving from deprecated class
2074
+ #endif
2075
+ class JSON_API FastWriter
2076
+ : public Writer {
1923
2077
  public:
1924
2078
  FastWriter();
1925
- ~FastWriter() JSONCPP_OVERRIDE {}
2079
+ ~FastWriter() override = default;
1926
2080
 
1927
2081
  void enableYAMLCompatibility();
1928
2082
 
1929
2083
  /** \brief Drop the "null" string from the writer's output for nullValues.
1930
2084
  * Strictly speaking, this is not valid JSON. But when the output is being
1931
- * fed to a browser's Javascript, it makes for smaller output and the
2085
+ * fed to a browser's JavaScript, it makes for smaller output and the
1932
2086
  * browser can handle the output just fine.
1933
2087
  */
1934
2088
  void dropNullPlaceholders();
@@ -1936,16 +2090,19 @@ public:
1936
2090
  void omitEndingLineFeed();
1937
2091
 
1938
2092
  public: // overridden from Writer
1939
- JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE;
2093
+ String write(const Value& root) override;
1940
2094
 
1941
2095
  private:
1942
2096
  void writeValue(const Value& value);
1943
2097
 
1944
- JSONCPP_STRING document_;
1945
- bool yamlCompatiblityEnabled_;
1946
- bool dropNullPlaceholders_;
1947
- bool omitEndingLineFeed_;
2098
+ String document_;
2099
+ bool yamlCompatibilityEnabled_{false};
2100
+ bool dropNullPlaceholders_{false};
2101
+ bool omitEndingLineFeed_{false};
1948
2102
  };
2103
+ #if defined(_MSC_VER)
2104
+ #pragma warning(pop)
2105
+ #endif
1949
2106
 
1950
2107
  /** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
1951
2108
  *human friendly way.
@@ -1971,41 +2128,49 @@ private:
1971
2128
  * \sa Reader, Value, Value::setComment()
1972
2129
  * \deprecated Use StreamWriterBuilder.
1973
2130
  */
1974
- class JSON_API StyledWriter : public Writer {
2131
+ #if defined(_MSC_VER)
2132
+ #pragma warning(push)
2133
+ #pragma warning(disable : 4996) // Deriving from deprecated class
2134
+ #endif
2135
+ class JSON_API
2136
+ StyledWriter : public Writer {
1975
2137
  public:
1976
2138
  StyledWriter();
1977
- ~StyledWriter() JSONCPP_OVERRIDE {}
2139
+ ~StyledWriter() override = default;
1978
2140
 
1979
2141
  public: // overridden from Writer
1980
2142
  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
1981
2143
  * \param root Value to serialize.
1982
2144
  * \return String containing the JSON document that represents the root value.
1983
2145
  */
1984
- JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE;
2146
+ String write(const Value& root) override;
1985
2147
 
1986
2148
  private:
1987
2149
  void writeValue(const Value& value);
1988
2150
  void writeArrayValue(const Value& value);
1989
- bool isMultineArray(const Value& value);
1990
- void pushValue(const JSONCPP_STRING& value);
2151
+ bool isMultilineArray(const Value& value);
2152
+ void pushValue(const String& value);
1991
2153
  void writeIndent();
1992
- void writeWithIndent(const JSONCPP_STRING& value);
2154
+ void writeWithIndent(const String& value);
1993
2155
  void indent();
1994
2156
  void unindent();
1995
2157
  void writeCommentBeforeValue(const Value& root);
1996
2158
  void writeCommentAfterValueOnSameLine(const Value& root);
1997
- bool hasCommentForValue(const Value& value);
1998
- static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text);
2159
+ static bool hasCommentForValue(const Value& value);
2160
+ static String normalizeEOL(const String& text);
1999
2161
 
2000
- typedef std::vector<JSONCPP_STRING> ChildValues;
2162
+ using ChildValues = std::vector<String>;
2001
2163
 
2002
2164
  ChildValues childValues_;
2003
- JSONCPP_STRING document_;
2004
- JSONCPP_STRING indentString_;
2005
- unsigned int rightMargin_;
2006
- unsigned int indentSize_;
2007
- bool addChildValues_;
2165
+ String document_;
2166
+ String indentString_;
2167
+ unsigned int rightMargin_{74};
2168
+ unsigned int indentSize_{3};
2169
+ bool addChildValues_{false};
2008
2170
  };
2171
+ #if defined(_MSC_VER)
2172
+ #pragma warning(pop)
2173
+ #endif
2009
2174
 
2010
2175
  /** \brief Writes a Value in <a HREF="http://www.json.org">JSON</a> format in a
2011
2176
  human friendly way,
@@ -2029,14 +2194,21 @@ private:
2029
2194
  * If the Value have comments then they are outputed according to their
2030
2195
  #CommentPlacement.
2031
2196
  *
2032
- * \param indentation Each level will be indented by this amount extra.
2033
2197
  * \sa Reader, Value, Value::setComment()
2034
2198
  * \deprecated Use StreamWriterBuilder.
2035
2199
  */
2036
- class JSON_API StyledStreamWriter {
2200
+ #if defined(_MSC_VER)
2201
+ #pragma warning(push)
2202
+ #pragma warning(disable : 4996) // Deriving from deprecated class
2203
+ #endif
2204
+ class JSON_API
2205
+ StyledStreamWriter {
2037
2206
  public:
2038
- StyledStreamWriter(JSONCPP_STRING indentation = "\t");
2039
- ~StyledStreamWriter() {}
2207
+ /**
2208
+ * \param indentation Each level will be indented by this amount extra.
2209
+ */
2210
+ StyledStreamWriter(String indentation = "\t");
2211
+ ~StyledStreamWriter() = default;
2040
2212
 
2041
2213
  public:
2042
2214
  /** \brief Serialize a Value in <a HREF="http://www.json.org">JSON</a> format.
@@ -2045,46 +2217,51 @@ public:
2045
2217
  * \note There is no point in deriving from Writer, since write() should not
2046
2218
  * return a value.
2047
2219
  */
2048
- void write(JSONCPP_OSTREAM& out, const Value& root);
2220
+ void write(OStream& out, const Value& root);
2049
2221
 
2050
2222
  private:
2051
2223
  void writeValue(const Value& value);
2052
2224
  void writeArrayValue(const Value& value);
2053
- bool isMultineArray(const Value& value);
2054
- void pushValue(const JSONCPP_STRING& value);
2225
+ bool isMultilineArray(const Value& value);
2226
+ void pushValue(const String& value);
2055
2227
  void writeIndent();
2056
- void writeWithIndent(const JSONCPP_STRING& value);
2228
+ void writeWithIndent(const String& value);
2057
2229
  void indent();
2058
2230
  void unindent();
2059
2231
  void writeCommentBeforeValue(const Value& root);
2060
2232
  void writeCommentAfterValueOnSameLine(const Value& root);
2061
- bool hasCommentForValue(const Value& value);
2062
- static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text);
2233
+ static bool hasCommentForValue(const Value& value);
2234
+ static String normalizeEOL(const String& text);
2063
2235
 
2064
- typedef std::vector<JSONCPP_STRING> ChildValues;
2236
+ using ChildValues = std::vector<String>;
2065
2237
 
2066
2238
  ChildValues childValues_;
2067
- JSONCPP_OSTREAM* document_;
2068
- JSONCPP_STRING indentString_;
2069
- unsigned int rightMargin_;
2070
- JSONCPP_STRING indentation_;
2239
+ OStream* document_;
2240
+ String indentString_;
2241
+ unsigned int rightMargin_{74};
2242
+ String indentation_;
2071
2243
  bool addChildValues_ : 1;
2072
2244
  bool indented_ : 1;
2073
2245
  };
2246
+ #if defined(_MSC_VER)
2247
+ #pragma warning(pop)
2248
+ #endif
2074
2249
 
2075
2250
  #if defined(JSON_HAS_INT64)
2076
- JSONCPP_STRING JSON_API valueToString(Int value);
2077
- JSONCPP_STRING JSON_API valueToString(UInt value);
2251
+ String JSON_API valueToString(Int value);
2252
+ String JSON_API valueToString(UInt value);
2078
2253
  #endif // if defined(JSON_HAS_INT64)
2079
- JSONCPP_STRING JSON_API valueToString(LargestInt value);
2080
- JSONCPP_STRING JSON_API valueToString(LargestUInt value);
2081
- JSONCPP_STRING JSON_API valueToString(double value);
2082
- JSONCPP_STRING JSON_API valueToString(bool value);
2083
- JSONCPP_STRING JSON_API valueToQuotedString(const char* value);
2254
+ String JSON_API valueToString(LargestInt value);
2255
+ String JSON_API valueToString(LargestUInt value);
2256
+ String JSON_API valueToString(
2257
+ double value, unsigned int precision = Value::defaultRealPrecision,
2258
+ PrecisionType precisionType = PrecisionType::significantDigits);
2259
+ String JSON_API valueToString(bool value);
2260
+ String JSON_API valueToQuotedString(const char* value);
2084
2261
 
2085
2262
  /// \brief Output using the StyledStreamWriter.
2086
2263
  /// \see Json::operator>>()
2087
- JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root);
2264
+ JSON_API OStream& operator<<(OStream&, const Value& root);
2088
2265
 
2089
2266
  } // namespace Json
2090
2267
  } // namespace Passenger
@@ -2110,15 +2287,15 @@ JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root);
2110
2287
  // Beginning of content of file: include/json/assertions.h
2111
2288
  // //////////////////////////////////////////////////////////////////////
2112
2289
 
2113
- // Copyright 2007-2010 Baptiste Lepilleur
2290
+ // Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
2114
2291
  // Distributed under MIT license, or public domain if desired and
2115
2292
  // recognized in your jurisdiction.
2116
2293
  // See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
2117
2294
 
2118
- #ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED
2119
- #define CPPTL_JSON_ASSERTIONS_H_INCLUDED
2295
+ #ifndef JSON_ASSERTIONS_H_INCLUDED
2296
+ #define JSON_ASSERTIONS_H_INCLUDED
2120
2297
 
2121
- #include <stdlib.h>
2298
+ #include <cstdlib>
2122
2299
  #include <sstream>
2123
2300
 
2124
2301
  #if !defined(JSON_IS_AMALGAMATION)
@@ -2132,38 +2309,45 @@ JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root);
2132
2309
  #if JSON_USE_EXCEPTION
2133
2310
 
2134
2311
  // @todo <= add detail about condition in exception
2135
- # define JSON_ASSERT(condition) \
2136
- {if (!(condition)) {Json::throwLogicError( "assert json failed" );}}
2137
-
2138
- # define JSON_FAIL_MESSAGE(message) \
2139
- { \
2140
- JSONCPP_OSTRINGSTREAM oss; oss << message; \
2312
+ #define JSON_ASSERT(condition) \
2313
+ do { \
2314
+ if (!(condition)) { \
2315
+ Json::throwLogicError("assert json failed"); \
2316
+ } \
2317
+ } while (0)
2318
+
2319
+ #define JSON_FAIL_MESSAGE(message) \
2320
+ do { \
2321
+ OStringStream oss; \
2322
+ oss << message; \
2141
2323
  Json::throwLogicError(oss.str()); \
2142
2324
  abort(); \
2143
- }
2325
+ } while (0)
2144
2326
 
2145
2327
  #else // JSON_USE_EXCEPTION
2146
2328
 
2147
- # define JSON_ASSERT(condition) assert(condition)
2329
+ #define JSON_ASSERT(condition) assert(condition)
2148
2330
 
2149
2331
  // The call to assert() will show the failure message in debug builds. In
2150
2332
  // release builds we abort, for a core-dump or debugger.
2151
- # define JSON_FAIL_MESSAGE(message) \
2333
+ #define JSON_FAIL_MESSAGE(message) \
2152
2334
  { \
2153
- JSONCPP_OSTRINGSTREAM oss; oss << message; \
2335
+ OStringStream oss; \
2336
+ oss << message; \
2154
2337
  assert(false && oss.str().c_str()); \
2155
2338
  abort(); \
2156
2339
  }
2157
2340
 
2158
-
2159
2341
  #endif
2160
2342
 
2161
2343
  #define JSON_ASSERT_MESSAGE(condition, message) \
2162
- if (!(condition)) { \
2163
- JSON_FAIL_MESSAGE(message); \
2164
- }
2344
+ do { \
2345
+ if (!(condition)) { \
2346
+ JSON_FAIL_MESSAGE(message); \
2347
+ } \
2348
+ } while (0)
2165
2349
 
2166
- #endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED
2350
+ #endif // JSON_ASSERTIONS_H_INCLUDED
2167
2351
 
2168
2352
  // //////////////////////////////////////////////////////////////////////
2169
2353
  // End of content of file: include/json/assertions.h
@@ -2173,4 +2357,4 @@ JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root);
2173
2357
 
2174
2358
 
2175
2359
 
2176
- #endif //ifndef JSON_AMALGATED_H_INCLUDED
2360
+ #endif //ifndef JSON_AMALGAMATED_H_INCLUDED