couchbase 3.0.1-universal-darwin-19 → 3.0.2-universal-darwin-19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1318) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +73 -4
  3. data/ext/extconf.rb +0 -95
  4. data/lib/couchbase.rb +1 -0
  5. data/lib/couchbase/analytics_options.rb +1 -71
  6. data/lib/couchbase/binary_collection.rb +60 -22
  7. data/lib/couchbase/binary_collection_options.rb +0 -76
  8. data/lib/couchbase/bucket.rb +40 -36
  9. data/lib/couchbase/cluster.rb +89 -156
  10. data/lib/couchbase/collection.rb +290 -72
  11. data/lib/couchbase/collection_options.rb +30 -243
  12. data/lib/couchbase/datastructures/couchbase_list.rb +5 -16
  13. data/lib/couchbase/datastructures/couchbase_map.rb +5 -16
  14. data/lib/couchbase/datastructures/couchbase_queue.rb +5 -16
  15. data/lib/couchbase/datastructures/couchbase_set.rb +5 -16
  16. data/lib/couchbase/diagnostics.rb +181 -0
  17. data/lib/couchbase/json_transcoder.rb +1 -1
  18. data/lib/couchbase/libcouchbase.bundle +0 -0
  19. data/lib/couchbase/{common_options.rb → logger.rb} +24 -11
  20. data/lib/couchbase/management/query_index_manager.rb +1 -1
  21. data/lib/couchbase/management/user_manager.rb +3 -0
  22. data/lib/couchbase/options.rb +2094 -0
  23. data/lib/couchbase/query_options.rb +1 -144
  24. data/lib/couchbase/scope.rb +8 -25
  25. data/lib/couchbase/search_options.rb +0 -93
  26. data/lib/couchbase/version.rb +20 -1
  27. data/lib/couchbase/view_options.rb +1 -91
  28. metadata +8 -1296
  29. data/ext/CMakeLists.txt +0 -127
  30. data/ext/LICENSE.txt +0 -202
  31. data/ext/build_config.hxx.in +0 -20
  32. data/ext/build_version.hxx.in +0 -27
  33. data/ext/cmake/Backtrace.cmake +0 -35
  34. data/ext/cmake/BuildTracing.cmake +0 -6
  35. data/ext/cmake/Cache.cmake +0 -29
  36. data/ext/cmake/CompilerWarnings.cmake +0 -78
  37. data/ext/cmake/PreventInSourceBuilds.cmake +0 -18
  38. data/ext/cmake/Sanitizers.cmake +0 -66
  39. data/ext/cmake/StandardProjectSettings.cmake +0 -40
  40. data/ext/cmake/StaticAnalyzers.cmake +0 -37
  41. data/ext/cmake/Testing.cmake +0 -52
  42. data/ext/cmake/ThirdPartyDependencies.cmake +0 -20
  43. data/ext/cmake/VersionInfo.cmake +0 -37
  44. data/ext/couchbase/bucket.hxx +0 -338
  45. data/ext/couchbase/capabilities.hxx +0 -117
  46. data/ext/couchbase/cbcrypto/cbcrypto.cc +0 -888
  47. data/ext/couchbase/cbcrypto/cbcrypto.h +0 -89
  48. data/ext/couchbase/cbsasl/client.cc +0 -48
  49. data/ext/couchbase/cbsasl/client.h +0 -127
  50. data/ext/couchbase/cbsasl/context.cc +0 -33
  51. data/ext/couchbase/cbsasl/context.h +0 -52
  52. data/ext/couchbase/cbsasl/error.h +0 -72
  53. data/ext/couchbase/cbsasl/mechanism.cc +0 -48
  54. data/ext/couchbase/cbsasl/mechanism.h +0 -55
  55. data/ext/couchbase/cbsasl/plain/plain.cc +0 -36
  56. data/ext/couchbase/cbsasl/plain/plain.h +0 -53
  57. data/ext/couchbase/cbsasl/scram-sha/scram-sha.cc +0 -390
  58. data/ext/couchbase/cbsasl/scram-sha/scram-sha.h +0 -185
  59. data/ext/couchbase/cbsasl/scram-sha/stringutils.cc +0 -81
  60. data/ext/couchbase/cbsasl/scram-sha/stringutils.h +0 -48
  61. data/ext/couchbase/cluster.hxx +0 -267
  62. data/ext/couchbase/cluster_options.hxx +0 -54
  63. data/ext/couchbase/collections_manifest.hxx +0 -88
  64. data/ext/couchbase/configuration.hxx +0 -650
  65. data/ext/couchbase/couchbase.cxx +0 -6431
  66. data/ext/couchbase/diagnostics.hxx +0 -251
  67. data/ext/couchbase/document_id.hxx +0 -40
  68. data/ext/couchbase/error_map.hxx +0 -261
  69. data/ext/couchbase/errors.hxx +0 -706
  70. data/ext/couchbase/io/dns_client.hxx +0 -217
  71. data/ext/couchbase/io/dns_codec.hxx +0 -207
  72. data/ext/couchbase/io/dns_config.hxx +0 -116
  73. data/ext/couchbase/io/dns_message.hxx +0 -555
  74. data/ext/couchbase/io/http_command.hxx +0 -95
  75. data/ext/couchbase/io/http_context.hxx +0 -37
  76. data/ext/couchbase/io/http_message.hxx +0 -47
  77. data/ext/couchbase/io/http_parser.hxx +0 -176
  78. data/ext/couchbase/io/http_session.hxx +0 -442
  79. data/ext/couchbase/io/http_session_manager.hxx +0 -182
  80. data/ext/couchbase/io/mcbp_command.hxx +0 -246
  81. data/ext/couchbase/io/mcbp_message.hxx +0 -63
  82. data/ext/couchbase/io/mcbp_parser.hxx +0 -101
  83. data/ext/couchbase/io/mcbp_session.hxx +0 -1283
  84. data/ext/couchbase/io/query_cache.hxx +0 -61
  85. data/ext/couchbase/io/retry_action.hxx +0 -30
  86. data/ext/couchbase/io/retry_context.hxx +0 -38
  87. data/ext/couchbase/io/retry_orchestrator.hxx +0 -112
  88. data/ext/couchbase/io/retry_reason.hxx +0 -235
  89. data/ext/couchbase/io/retry_strategy.hxx +0 -156
  90. data/ext/couchbase/io/streams.hxx +0 -216
  91. data/ext/couchbase/mutation_token.hxx +0 -38
  92. data/ext/couchbase/operations.hxx +0 -104
  93. data/ext/couchbase/operations/analytics_dataset_create.hxx +0 -117
  94. data/ext/couchbase/operations/analytics_dataset_drop.hxx +0 -103
  95. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +0 -107
  96. data/ext/couchbase/operations/analytics_dataverse_create.hxx +0 -104
  97. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +0 -104
  98. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +0 -91
  99. data/ext/couchbase/operations/analytics_index_create.hxx +0 -128
  100. data/ext/couchbase/operations/analytics_index_drop.hxx +0 -110
  101. data/ext/couchbase/operations/analytics_index_get_all.hxx +0 -106
  102. data/ext/couchbase/operations/analytics_link_connect.hxx +0 -102
  103. data/ext/couchbase/operations/analytics_link_disconnect.hxx +0 -101
  104. data/ext/couchbase/operations/bucket_create.hxx +0 -147
  105. data/ext/couchbase/operations/bucket_drop.hxx +0 -68
  106. data/ext/couchbase/operations/bucket_flush.hxx +0 -68
  107. data/ext/couchbase/operations/bucket_get.hxx +0 -72
  108. data/ext/couchbase/operations/bucket_get_all.hxx +0 -65
  109. data/ext/couchbase/operations/bucket_settings.hxx +0 -150
  110. data/ext/couchbase/operations/bucket_update.hxx +0 -124
  111. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +0 -63
  112. data/ext/couchbase/operations/collection_create.hxx +0 -95
  113. data/ext/couchbase/operations/collection_drop.hxx +0 -85
  114. data/ext/couchbase/operations/collections_manifest_get.hxx +0 -70
  115. data/ext/couchbase/operations/design_document.hxx +0 -59
  116. data/ext/couchbase/operations/document_analytics.hxx +0 -293
  117. data/ext/couchbase/operations/document_decrement.hxx +0 -87
  118. data/ext/couchbase/operations/document_exists.hxx +0 -84
  119. data/ext/couchbase/operations/document_get.hxx +0 -69
  120. data/ext/couchbase/operations/document_get_and_lock.hxx +0 -71
  121. data/ext/couchbase/operations/document_get_and_touch.hxx +0 -71
  122. data/ext/couchbase/operations/document_get_projected.hxx +0 -249
  123. data/ext/couchbase/operations/document_increment.hxx +0 -89
  124. data/ext/couchbase/operations/document_insert.hxx +0 -81
  125. data/ext/couchbase/operations/document_lookup_in.hxx +0 -111
  126. data/ext/couchbase/operations/document_mutate_in.hxx +0 -145
  127. data/ext/couchbase/operations/document_query.hxx +0 -422
  128. data/ext/couchbase/operations/document_remove.hxx +0 -74
  129. data/ext/couchbase/operations/document_replace.hxx +0 -83
  130. data/ext/couchbase/operations/document_search.hxx +0 -370
  131. data/ext/couchbase/operations/document_touch.hxx +0 -67
  132. data/ext/couchbase/operations/document_unlock.hxx +0 -67
  133. data/ext/couchbase/operations/document_upsert.hxx +0 -81
  134. data/ext/couchbase/operations/document_view.hxx +0 -228
  135. data/ext/couchbase/operations/group_drop.hxx +0 -71
  136. data/ext/couchbase/operations/group_get.hxx +0 -75
  137. data/ext/couchbase/operations/group_get_all.hxx +0 -70
  138. data/ext/couchbase/operations/group_upsert.hxx +0 -118
  139. data/ext/couchbase/operations/query_index_build_deferred.hxx +0 -86
  140. data/ext/couchbase/operations/query_index_create.hxx +0 -145
  141. data/ext/couchbase/operations/query_index_drop.hxx +0 -119
  142. data/ext/couchbase/operations/query_index_get_all.hxx +0 -117
  143. data/ext/couchbase/operations/rbac.hxx +0 -276
  144. data/ext/couchbase/operations/role_get_all.hxx +0 -70
  145. data/ext/couchbase/operations/scope_create.hxx +0 -88
  146. data/ext/couchbase/operations/scope_drop.hxx +0 -82
  147. data/ext/couchbase/operations/scope_get_all.hxx +0 -76
  148. data/ext/couchbase/operations/search_get_stats.hxx +0 -59
  149. data/ext/couchbase/operations/search_index.hxx +0 -79
  150. data/ext/couchbase/operations/search_index_analyze_document.hxx +0 -92
  151. data/ext/couchbase/operations/search_index_control_ingest.hxx +0 -80
  152. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +0 -80
  153. data/ext/couchbase/operations/search_index_control_query.hxx +0 -80
  154. data/ext/couchbase/operations/search_index_drop.hxx +0 -77
  155. data/ext/couchbase/operations/search_index_get.hxx +0 -80
  156. data/ext/couchbase/operations/search_index_get_all.hxx +0 -82
  157. data/ext/couchbase/operations/search_index_get_documents_count.hxx +0 -89
  158. data/ext/couchbase/operations/search_index_get_stats.hxx +0 -81
  159. data/ext/couchbase/operations/search_index_upsert.hxx +0 -106
  160. data/ext/couchbase/operations/user_drop.hxx +0 -72
  161. data/ext/couchbase/operations/user_get.hxx +0 -76
  162. data/ext/couchbase/operations/user_get_all.hxx +0 -71
  163. data/ext/couchbase/operations/user_upsert.hxx +0 -125
  164. data/ext/couchbase/operations/view_index_drop.hxx +0 -67
  165. data/ext/couchbase/operations/view_index_get.hxx +0 -90
  166. data/ext/couchbase/operations/view_index_get_all.hxx +0 -125
  167. data/ext/couchbase/operations/view_index_upsert.hxx +0 -87
  168. data/ext/couchbase/origin.hxx +0 -178
  169. data/ext/couchbase/platform/backtrace.c +0 -189
  170. data/ext/couchbase/platform/backtrace.h +0 -54
  171. data/ext/couchbase/platform/base64.cc +0 -234
  172. data/ext/couchbase/platform/base64.h +0 -47
  173. data/ext/couchbase/platform/random.cc +0 -119
  174. data/ext/couchbase/platform/random.h +0 -39
  175. data/ext/couchbase/platform/string_hex.cc +0 -99
  176. data/ext/couchbase/platform/string_hex.h +0 -50
  177. data/ext/couchbase/platform/terminate_handler.cc +0 -123
  178. data/ext/couchbase/platform/terminate_handler.h +0 -36
  179. data/ext/couchbase/platform/uuid.cc +0 -96
  180. data/ext/couchbase/platform/uuid.h +0 -56
  181. data/ext/couchbase/protocol/client_opcode.hxx +0 -264
  182. data/ext/couchbase/protocol/client_request.hxx +0 -160
  183. data/ext/couchbase/protocol/client_response.hxx +0 -218
  184. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +0 -79
  185. data/ext/couchbase/protocol/cmd_decrement.hxx +0 -187
  186. data/ext/couchbase/protocol/cmd_exists.hxx +0 -171
  187. data/ext/couchbase/protocol/cmd_get.hxx +0 -122
  188. data/ext/couchbase/protocol/cmd_get_and_lock.hxx +0 -142
  189. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +0 -142
  190. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +0 -126
  191. data/ext/couchbase/protocol/cmd_get_collection_id.hxx +0 -117
  192. data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +0 -99
  193. data/ext/couchbase/protocol/cmd_get_error_map.hxx +0 -126
  194. data/ext/couchbase/protocol/cmd_hello.hxx +0 -156
  195. data/ext/couchbase/protocol/cmd_increment.hxx +0 -187
  196. data/ext/couchbase/protocol/cmd_info.hxx +0 -25
  197. data/ext/couchbase/protocol/cmd_insert.hxx +0 -172
  198. data/ext/couchbase/protocol/cmd_lookup_in.hxx +0 -219
  199. data/ext/couchbase/protocol/cmd_mutate_in.hxx +0 -365
  200. data/ext/couchbase/protocol/cmd_remove.hxx +0 -134
  201. data/ext/couchbase/protocol/cmd_replace.hxx +0 -172
  202. data/ext/couchbase/protocol/cmd_sasl_auth.hxx +0 -106
  203. data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +0 -100
  204. data/ext/couchbase/protocol/cmd_sasl_step.hxx +0 -104
  205. data/ext/couchbase/protocol/cmd_select_bucket.hxx +0 -85
  206. data/ext/couchbase/protocol/cmd_touch.hxx +0 -102
  207. data/ext/couchbase/protocol/cmd_unlock.hxx +0 -95
  208. data/ext/couchbase/protocol/cmd_upsert.hxx +0 -172
  209. data/ext/couchbase/protocol/datatype.hxx +0 -48
  210. data/ext/couchbase/protocol/durability_level.hxx +0 -67
  211. data/ext/couchbase/protocol/frame_info_id.hxx +0 -187
  212. data/ext/couchbase/protocol/hello_feature.hxx +0 -255
  213. data/ext/couchbase/protocol/magic.hxx +0 -83
  214. data/ext/couchbase/protocol/server_opcode.hxx +0 -57
  215. data/ext/couchbase/protocol/server_request.hxx +0 -122
  216. data/ext/couchbase/protocol/status.hxx +0 -343
  217. data/ext/couchbase/protocol/unsigned_leb128.h +0 -195
  218. data/ext/couchbase/service_type.hxx +0 -60
  219. data/ext/couchbase/timeout_defaults.hxx +0 -41
  220. data/ext/couchbase/utils/byteswap.hxx +0 -33
  221. data/ext/couchbase/utils/connection_string.hxx +0 -379
  222. data/ext/couchbase/utils/crc32.hxx +0 -48
  223. data/ext/couchbase/utils/url_codec.hxx +0 -225
  224. data/ext/couchbase/version.hxx +0 -24
  225. data/ext/test/test_helper.hxx +0 -141
  226. data/ext/test/test_helper_native.hxx +0 -59
  227. data/ext/test/test_helper_ruby.hxx +0 -72
  228. data/ext/test/test_native_diagnostics.cxx +0 -385
  229. data/ext/test/test_native_trivial_crud.cxx +0 -83
  230. data/ext/test/test_ruby_trivial_crud.cxx +0 -35
  231. data/ext/test/test_ruby_trivial_query.cxx +0 -34
  232. data/ext/third_party/asio/asio/include/asio.hpp +0 -182
  233. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +0 -71
  234. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +0 -125
  235. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +0 -166
  236. data/ext/third_party/asio/asio/include/asio/async_result.hpp +0 -582
  237. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +0 -133
  238. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +0 -1215
  239. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +0 -693
  240. data/ext/third_party/asio/asio/include/asio/basic_io_object.hpp +0 -290
  241. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +0 -1206
  242. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +0 -761
  243. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +0 -907
  244. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +0 -568
  245. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +0 -1894
  246. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +0 -2501
  247. data/ext/third_party/asio/asio/include/asio/basic_socket_iostream.hpp +0 -407
  248. data/ext/third_party/asio/asio/include/asio/basic_socket_streambuf.hpp +0 -687
  249. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +0 -1053
  250. data/ext/third_party/asio/asio/include/asio/basic_streambuf.hpp +0 -452
  251. data/ext/third_party/asio/asio/include/asio/basic_streambuf_fwd.hpp +0 -36
  252. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +0 -811
  253. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +0 -575
  254. data/ext/third_party/asio/asio/include/asio/buffer.hpp +0 -2496
  255. data/ext/third_party/asio/asio/include/asio/buffered_read_stream.hpp +0 -253
  256. data/ext/third_party/asio/asio/include/asio/buffered_read_stream_fwd.hpp +0 -25
  257. data/ext/third_party/asio/asio/include/asio/buffered_stream.hpp +0 -279
  258. data/ext/third_party/asio/asio/include/asio/buffered_stream_fwd.hpp +0 -25
  259. data/ext/third_party/asio/asio/include/asio/buffered_write_stream.hpp +0 -245
  260. data/ext/third_party/asio/asio/include/asio/buffered_write_stream_fwd.hpp +0 -25
  261. data/ext/third_party/asio/asio/include/asio/buffers_iterator.hpp +0 -521
  262. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +0 -471
  263. data/ext/third_party/asio/asio/include/asio/completion_condition.hpp +0 -218
  264. data/ext/third_party/asio/asio/include/asio/compose.hpp +0 -136
  265. data/ext/third_party/asio/asio/include/asio/connect.hpp +0 -1076
  266. data/ext/third_party/asio/asio/include/asio/coroutine.hpp +0 -328
  267. data/ext/third_party/asio/asio/include/asio/deadline_timer.hpp +0 -38
  268. data/ext/third_party/asio/asio/include/asio/defer.hpp +0 -130
  269. data/ext/third_party/asio/asio/include/asio/detached.hpp +0 -112
  270. data/ext/third_party/asio/asio/include/asio/detail/array.hpp +0 -38
  271. data/ext/third_party/asio/asio/include/asio/detail/array_fwd.hpp +0 -34
  272. data/ext/third_party/asio/asio/include/asio/detail/assert.hpp +0 -32
  273. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +0 -64
  274. data/ext/third_party/asio/asio/include/asio/detail/base_from_completion_cond.hpp +0 -69
  275. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +0 -934
  276. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +0 -107
  277. data/ext/third_party/asio/asio/include/asio/detail/buffer_resize_guard.hpp +0 -66
  278. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +0 -650
  279. data/ext/third_party/asio/asio/include/asio/detail/buffered_stream_storage.hpp +0 -126
  280. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +0 -88
  281. data/ext/third_party/asio/asio/include/asio/detail/call_stack.hpp +0 -125
  282. data/ext/third_party/asio/asio/include/asio/detail/chrono.hpp +0 -66
  283. data/ext/third_party/asio/asio/include/asio/detail/chrono_time_traits.hpp +0 -190
  284. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +0 -88
  285. data/ext/third_party/asio/asio/include/asio/detail/concurrency_hint.hpp +0 -94
  286. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +0 -120
  287. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_mutex.hpp +0 -149
  288. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +0 -1822
  289. data/ext/third_party/asio/asio/include/asio/detail/consuming_buffers.hpp +0 -414
  290. data/ext/third_party/asio/asio/include/asio/detail/cstddef.hpp +0 -31
  291. data/ext/third_party/asio/asio/include/asio/detail/cstdint.hpp +0 -60
  292. data/ext/third_party/asio/asio/include/asio/detail/date_time_fwd.hpp +0 -34
  293. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +0 -295
  294. data/ext/third_party/asio/asio/include/asio/detail/dependent_type.hpp +0 -36
  295. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +0 -139
  296. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +0 -148
  297. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +0 -148
  298. data/ext/third_party/asio/asio/include/asio/detail/dev_poll_reactor.hpp +0 -218
  299. data/ext/third_party/asio/asio/include/asio/detail/epoll_reactor.hpp +0 -266
  300. data/ext/third_party/asio/asio/include/asio/detail/event.hpp +0 -48
  301. data/ext/third_party/asio/asio/include/asio/detail/eventfd_select_interrupter.hpp +0 -83
  302. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +0 -203
  303. data/ext/third_party/asio/asio/include/asio/detail/executor_op.hpp +0 -84
  304. data/ext/third_party/asio/asio/include/asio/detail/fd_set_adapter.hpp +0 -39
  305. data/ext/third_party/asio/asio/include/asio/detail/fenced_block.hpp +0 -80
  306. data/ext/third_party/asio/asio/include/asio/detail/functional.hpp +0 -38
  307. data/ext/third_party/asio/asio/include/asio/detail/future.hpp +0 -33
  308. data/ext/third_party/asio/asio/include/asio/detail/gcc_arm_fenced_block.hpp +0 -91
  309. data/ext/third_party/asio/asio/include/asio/detail/gcc_hppa_fenced_block.hpp +0 -68
  310. data/ext/third_party/asio/asio/include/asio/detail/gcc_sync_fenced_block.hpp +0 -65
  311. data/ext/third_party/asio/asio/include/asio/detail/gcc_x86_fenced_block.hpp +0 -99
  312. data/ext/third_party/asio/asio/include/asio/detail/global.hpp +0 -52
  313. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +0 -284
  314. data/ext/third_party/asio/asio/include/asio/detail/handler_cont_helpers.hpp +0 -45
  315. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +0 -80
  316. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +0 -264
  317. data/ext/third_party/asio/asio/include/asio/detail/handler_type_requirements.hpp +0 -556
  318. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +0 -438
  319. data/ext/third_party/asio/asio/include/asio/detail/hash_map.hpp +0 -331
  320. data/ext/third_party/asio/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp +0 -118
  321. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +0 -608
  322. data/ext/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.hpp +0 -91
  323. data/ext/third_party/asio/asio/include/asio/detail/impl/dev_poll_reactor.ipp +0 -446
  324. data/ext/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.hpp +0 -89
  325. data/ext/third_party/asio/asio/include/asio/detail/impl/epoll_reactor.ipp +0 -787
  326. data/ext/third_party/asio/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp +0 -169
  327. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +0 -396
  328. data/ext/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.hpp +0 -93
  329. data/ext/third_party/asio/asio/include/asio/detail/impl/kqueue_reactor.ipp +0 -570
  330. data/ext/third_party/asio/asio/include/asio/detail/impl/null_event.ipp +0 -74
  331. data/ext/third_party/asio/asio/include/asio/detail/impl/pipe_select_interrupter.ipp +0 -129
  332. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_event.ipp +0 -59
  333. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_mutex.ipp +0 -46
  334. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_thread.ipp +0 -84
  335. data/ext/third_party/asio/asio/include/asio/detail/impl/posix_tss_ptr.ipp +0 -46
  336. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_descriptor_service.ipp +0 -223
  337. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +0 -149
  338. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_socket_service_base.ipp +0 -300
  339. data/ext/third_party/asio/asio/include/asio/detail/impl/resolver_service_base.ipp +0 -158
  340. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +0 -654
  341. data/ext/third_party/asio/asio/include/asio/detail/impl/select_reactor.hpp +0 -100
  342. data/ext/third_party/asio/asio/include/asio/detail/impl/select_reactor.ipp +0 -338
  343. data/ext/third_party/asio/asio/include/asio/detail/impl/service_registry.hpp +0 -94
  344. data/ext/third_party/asio/asio/include/asio/detail/impl/service_registry.ipp +0 -197
  345. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +0 -668
  346. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +0 -3962
  347. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_select_interrupter.ipp +0 -185
  348. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +0 -385
  349. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.ipp +0 -134
  350. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +0 -117
  351. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +0 -178
  352. data/ext/third_party/asio/asio/include/asio/detail/impl/throw_error.ipp +0 -60
  353. data/ext/third_party/asio/asio/include/asio/detail/impl/timer_queue_ptime.ipp +0 -91
  354. data/ext/third_party/asio/asio/include/asio/detail/impl/timer_queue_set.ipp +0 -101
  355. data/ext/third_party/asio/asio/include/asio/detail/impl/win_event.ipp +0 -76
  356. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_handle_service.ipp +0 -525
  357. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.hpp +0 -103
  358. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +0 -603
  359. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp +0 -192
  360. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp +0 -801
  361. data/ext/third_party/asio/asio/include/asio/detail/impl/win_mutex.ipp +0 -84
  362. data/ext/third_party/asio/asio/include/asio/detail/impl/win_object_handle_service.ipp +0 -448
  363. data/ext/third_party/asio/asio/include/asio/detail/impl/win_static_mutex.ipp +0 -136
  364. data/ext/third_party/asio/asio/include/asio/detail/impl/win_thread.ipp +0 -150
  365. data/ext/third_party/asio/asio/include/asio/detail/impl/win_tss_ptr.ipp +0 -57
  366. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp +0 -626
  367. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp +0 -92
  368. data/ext/third_party/asio/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp +0 -121
  369. data/ext/third_party/asio/asio/include/asio/detail/impl/winsock_init.ipp +0 -82
  370. data/ext/third_party/asio/asio/include/asio/detail/io_control.hpp +0 -84
  371. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +0 -175
  372. data/ext/third_party/asio/asio/include/asio/detail/is_buffer_sequence.hpp +0 -312
  373. data/ext/third_party/asio/asio/include/asio/detail/is_executor.hpp +0 -126
  374. data/ext/third_party/asio/asio/include/asio/detail/keyword_tss_ptr.hpp +0 -70
  375. data/ext/third_party/asio/asio/include/asio/detail/kqueue_reactor.hpp +0 -242
  376. data/ext/third_party/asio/asio/include/asio/detail/limits.hpp +0 -26
  377. data/ext/third_party/asio/asio/include/asio/detail/local_free_on_block_exit.hpp +0 -59
  378. data/ext/third_party/asio/asio/include/asio/detail/macos_fenced_block.hpp +0 -62
  379. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +0 -73
  380. data/ext/third_party/asio/asio/include/asio/detail/mutex.hpp +0 -48
  381. data/ext/third_party/asio/asio/include/asio/detail/non_const_lvalue.hpp +0 -54
  382. data/ext/third_party/asio/asio/include/asio/detail/noncopyable.hpp +0 -43
  383. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +0 -106
  384. data/ext/third_party/asio/asio/include/asio/detail/null_fenced_block.hpp +0 -47
  385. data/ext/third_party/asio/asio/include/asio/detail/null_global.hpp +0 -59
  386. data/ext/third_party/asio/asio/include/asio/detail/null_mutex.hpp +0 -64
  387. data/ext/third_party/asio/asio/include/asio/detail/null_reactor.hpp +0 -68
  388. data/ext/third_party/asio/asio/include/asio/detail/null_signal_blocker.hpp +0 -69
  389. data/ext/third_party/asio/asio/include/asio/detail/null_socket_service.hpp +0 -519
  390. data/ext/third_party/asio/asio/include/asio/detail/null_static_mutex.hpp +0 -60
  391. data/ext/third_party/asio/asio/include/asio/detail/null_thread.hpp +0 -67
  392. data/ext/third_party/asio/asio/include/asio/detail/null_tss_ptr.hpp +0 -68
  393. data/ext/third_party/asio/asio/include/asio/detail/object_pool.hpp +0 -171
  394. data/ext/third_party/asio/asio/include/asio/detail/old_win_sdk_compat.hpp +0 -214
  395. data/ext/third_party/asio/asio/include/asio/detail/op_queue.hpp +0 -162
  396. data/ext/third_party/asio/asio/include/asio/detail/operation.hpp +0 -38
  397. data/ext/third_party/asio/asio/include/asio/detail/pipe_select_interrupter.hpp +0 -89
  398. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +0 -141
  399. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +0 -175
  400. data/ext/third_party/asio/asio/include/asio/detail/posix_fd_set_adapter.hpp +0 -118
  401. data/ext/third_party/asio/asio/include/asio/detail/posix_global.hpp +0 -80
  402. data/ext/third_party/asio/asio/include/asio/detail/posix_mutex.hpp +0 -76
  403. data/ext/third_party/asio/asio/include/asio/detail/posix_signal_blocker.hpp +0 -85
  404. data/ext/third_party/asio/asio/include/asio/detail/posix_static_mutex.hpp +0 -64
  405. data/ext/third_party/asio/asio/include/asio/detail/posix_thread.hpp +0 -109
  406. data/ext/third_party/asio/asio/include/asio/detail/posix_tss_ptr.hpp +0 -79
  407. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +0 -185
  408. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +0 -416
  409. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +0 -98
  410. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +0 -237
  411. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +0 -242
  412. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +0 -123
  413. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +0 -159
  414. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +0 -164
  415. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +0 -145
  416. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +0 -162
  417. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +0 -156
  418. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +0 -528
  419. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +0 -541
  420. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +0 -98
  421. data/ext/third_party/asio/asio/include/asio/detail/reactor.hpp +0 -32
  422. data/ext/third_party/asio/asio/include/asio/detail/reactor_fwd.hpp +0 -40
  423. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +0 -67
  424. data/ext/third_party/asio/asio/include/asio/detail/reactor_op_queue.hpp +0 -168
  425. data/ext/third_party/asio/asio/include/asio/detail/recycling_allocator.hpp +0 -106
  426. data/ext/third_party/asio/asio/include/asio/detail/regex_fwd.hpp +0 -35
  427. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +0 -140
  428. data/ext/third_party/asio/asio/include/asio/detail/resolve_op.hpp +0 -45
  429. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +0 -150
  430. data/ext/third_party/asio/asio/include/asio/detail/resolver_service.hpp +0 -145
  431. data/ext/third_party/asio/asio/include/asio/detail/resolver_service_base.hpp +0 -143
  432. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +0 -232
  433. data/ext/third_party/asio/asio/include/asio/detail/scheduler_operation.hpp +0 -78
  434. data/ext/third_party/asio/asio/include/asio/detail/scheduler_thread_info.hpp +0 -40
  435. data/ext/third_party/asio/asio/include/asio/detail/scoped_lock.hpp +0 -101
  436. data/ext/third_party/asio/asio/include/asio/detail/scoped_ptr.hpp +0 -87
  437. data/ext/third_party/asio/asio/include/asio/detail/select_interrupter.hpp +0 -46
  438. data/ext/third_party/asio/asio/include/asio/detail/select_reactor.hpp +0 -238
  439. data/ext/third_party/asio/asio/include/asio/detail/service_registry.hpp +0 -164
  440. data/ext/third_party/asio/asio/include/asio/detail/signal_blocker.hpp +0 -44
  441. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +0 -90
  442. data/ext/third_party/asio/asio/include/asio/detail/signal_init.hpp +0 -47
  443. data/ext/third_party/asio/asio/include/asio/detail/signal_op.hpp +0 -49
  444. data/ext/third_party/asio/asio/include/asio/detail/signal_set_service.hpp +0 -229
  445. data/ext/third_party/asio/asio/include/asio/detail/socket_holder.hpp +0 -98
  446. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +0 -383
  447. data/ext/third_party/asio/asio/include/asio/detail/socket_option.hpp +0 -316
  448. data/ext/third_party/asio/asio/include/asio/detail/socket_select_interrupter.hpp +0 -91
  449. data/ext/third_party/asio/asio/include/asio/detail/socket_types.hpp +0 -416
  450. data/ext/third_party/asio/asio/include/asio/detail/solaris_fenced_block.hpp +0 -62
  451. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +0 -45
  452. data/ext/third_party/asio/asio/include/asio/detail/static_mutex.hpp +0 -52
  453. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +0 -188
  454. data/ext/third_party/asio/asio/include/asio/detail/std_fenced_block.hpp +0 -62
  455. data/ext/third_party/asio/asio/include/asio/detail/std_global.hpp +0 -70
  456. data/ext/third_party/asio/asio/include/asio/detail/std_mutex.hpp +0 -73
  457. data/ext/third_party/asio/asio/include/asio/detail/std_static_mutex.hpp +0 -81
  458. data/ext/third_party/asio/asio/include/asio/detail/std_thread.hpp +0 -71
  459. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +0 -166
  460. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +0 -145
  461. data/ext/third_party/asio/asio/include/asio/detail/string_view.hpp +0 -47
  462. data/ext/third_party/asio/asio/include/asio/detail/thread.hpp +0 -60
  463. data/ext/third_party/asio/asio/include/asio/detail/thread_context.hpp +0 -42
  464. data/ext/third_party/asio/asio/include/asio/detail/thread_group.hpp +0 -95
  465. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +0 -183
  466. data/ext/third_party/asio/asio/include/asio/detail/throw_error.hpp +0 -53
  467. data/ext/third_party/asio/asio/include/asio/detail/throw_exception.hpp +0 -51
  468. data/ext/third_party/asio/asio/include/asio/detail/timer_queue.hpp +0 -360
  469. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_base.hpp +0 -68
  470. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_ptime.hpp +0 -99
  471. data/ext/third_party/asio/asio/include/asio/detail/timer_queue_set.hpp +0 -66
  472. data/ext/third_party/asio/asio/include/asio/detail/timer_scheduler.hpp +0 -35
  473. data/ext/third_party/asio/asio/include/asio/detail/timer_scheduler_fwd.hpp +0 -40
  474. data/ext/third_party/asio/asio/include/asio/detail/tss_ptr.hpp +0 -69
  475. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +0 -148
  476. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +0 -294
  477. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +0 -90
  478. data/ext/third_party/asio/asio/include/asio/detail/wait_op.hpp +0 -45
  479. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +0 -164
  480. data/ext/third_party/asio/asio/include/asio/detail/win_fd_set_adapter.hpp +0 -149
  481. data/ext/third_party/asio/asio/include/asio/detail/win_fenced_block.hpp +0 -90
  482. data/ext/third_party/asio/asio/include/asio/detail/win_global.hpp +0 -71
  483. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +0 -117
  484. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_service.hpp +0 -335
  485. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +0 -110
  486. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +0 -342
  487. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +0 -127
  488. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_operation.hpp +0 -96
  489. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +0 -96
  490. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +0 -171
  491. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_serial_port_service.hpp +0 -232
  492. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +0 -312
  493. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +0 -135
  494. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +0 -124
  495. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +0 -133
  496. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +0 -125
  497. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +0 -118
  498. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_service.hpp +0 -581
  499. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_service_base.hpp +0 -600
  500. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_thread_info.hpp +0 -34
  501. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +0 -128
  502. data/ext/third_party/asio/asio/include/asio/detail/win_mutex.hpp +0 -78
  503. data/ext/third_party/asio/asio/include/asio/detail/win_object_handle_service.hpp +0 -195
  504. data/ext/third_party/asio/asio/include/asio/detail/win_static_mutex.hpp +0 -74
  505. data/ext/third_party/asio/asio/include/asio/detail/win_thread.hpp +0 -147
  506. data/ext/third_party/asio/asio/include/asio/detail/win_tss_ptr.hpp +0 -79
  507. data/ext/third_party/asio/asio/include/asio/detail/winapp_thread.hpp +0 -124
  508. data/ext/third_party/asio/asio/include/asio/detail/wince_thread.hpp +0 -124
  509. data/ext/third_party/asio/asio/include/asio/detail/winrt_async_manager.hpp +0 -305
  510. data/ext/third_party/asio/asio/include/asio/detail/winrt_async_op.hpp +0 -65
  511. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +0 -125
  512. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolver_service.hpp +0 -212
  513. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +0 -98
  514. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +0 -119
  515. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +0 -110
  516. data/ext/third_party/asio/asio/include/asio/detail/winrt_ssocket_service.hpp +0 -250
  517. data/ext/third_party/asio/asio/include/asio/detail/winrt_ssocket_service_base.hpp +0 -362
  518. data/ext/third_party/asio/asio/include/asio/detail/winrt_timer_scheduler.hpp +0 -147
  519. data/ext/third_party/asio/asio/include/asio/detail/winrt_utils.hpp +0 -106
  520. data/ext/third_party/asio/asio/include/asio/detail/winsock_init.hpp +0 -128
  521. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +0 -148
  522. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +0 -327
  523. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +0 -121
  524. data/ext/third_party/asio/asio/include/asio/error.hpp +0 -356
  525. data/ext/third_party/asio/asio/include/asio/error_code.hpp +0 -202
  526. data/ext/third_party/asio/asio/include/asio/execution.hpp +0 -48
  527. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +0 -249
  528. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +0 -2264
  529. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +0 -47
  530. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +0 -1351
  531. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +0 -1064
  532. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +0 -390
  533. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +0 -1018
  534. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +0 -486
  535. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +0 -185
  536. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +0 -201
  537. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +0 -152
  538. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +0 -105
  539. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +0 -128
  540. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +0 -261
  541. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +0 -233
  542. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +0 -90
  543. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +0 -264
  544. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +0 -238
  545. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +0 -40
  546. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +0 -36
  547. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +0 -71
  548. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +0 -917
  549. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +0 -178
  550. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +0 -94
  551. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +0 -721
  552. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +0 -327
  553. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +0 -280
  554. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +0 -48
  555. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +0 -720
  556. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +0 -290
  557. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +0 -86
  558. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +0 -311
  559. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +0 -253
  560. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +0 -253
  561. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +0 -486
  562. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +0 -250
  563. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +0 -450
  564. data/ext/third_party/asio/asio/include/asio/execution_context.hpp +0 -412
  565. data/ext/third_party/asio/asio/include/asio/executor.hpp +0 -347
  566. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +0 -287
  567. data/ext/third_party/asio/asio/include/asio/generic/basic_endpoint.hpp +0 -193
  568. data/ext/third_party/asio/asio/include/asio/generic/datagram_protocol.hpp +0 -123
  569. data/ext/third_party/asio/asio/include/asio/generic/detail/endpoint.hpp +0 -133
  570. data/ext/third_party/asio/asio/include/asio/generic/detail/impl/endpoint.ipp +0 -110
  571. data/ext/third_party/asio/asio/include/asio/generic/raw_protocol.hpp +0 -121
  572. data/ext/third_party/asio/asio/include/asio/generic/seq_packet_protocol.hpp +0 -122
  573. data/ext/third_party/asio/asio/include/asio/generic/stream_protocol.hpp +0 -127
  574. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +0 -104
  575. data/ext/third_party/asio/asio/include/asio/handler_continuation_hook.hpp +0 -54
  576. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +0 -111
  577. data/ext/third_party/asio/asio/include/asio/high_resolution_timer.hpp +0 -44
  578. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +0 -436
  579. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +0 -527
  580. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +0 -507
  581. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +0 -298
  582. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +0 -635
  583. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +0 -916
  584. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +0 -248
  585. data/ext/third_party/asio/asio/include/asio/impl/detached.hpp +0 -130
  586. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +0 -243
  587. data/ext/third_party/asio/asio/include/asio/impl/error.ipp +0 -128
  588. data/ext/third_party/asio/asio/include/asio/impl/error_code.ipp +0 -206
  589. data/ext/third_party/asio/asio/include/asio/impl/execution_context.hpp +0 -109
  590. data/ext/third_party/asio/asio/include/asio/impl/execution_context.ipp +0 -82
  591. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +0 -301
  592. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +0 -43
  593. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +0 -61
  594. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +0 -440
  595. data/ext/third_party/asio/asio/include/asio/impl/io_context.ipp +0 -175
  596. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +0 -49
  597. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +0 -248
  598. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +0 -1202
  599. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +0 -744
  600. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +0 -3335
  601. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +0 -390
  602. data/ext/third_party/asio/asio/include/asio/impl/serial_port_base.hpp +0 -59
  603. data/ext/third_party/asio/asio/include/asio/impl/serial_port_base.ipp +0 -554
  604. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +0 -526
  605. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +0 -85
  606. data/ext/third_party/asio/asio/include/asio/impl/system_context.hpp +0 -34
  607. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +0 -92
  608. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +0 -186
  609. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +0 -350
  610. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +0 -141
  611. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +0 -279
  612. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +0 -1028
  613. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +0 -1104
  614. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +0 -666
  615. data/ext/third_party/asio/asio/include/asio/io_context.hpp +0 -1530
  616. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +0 -376
  617. data/ext/third_party/asio/asio/include/asio/io_service.hpp +0 -33
  618. data/ext/third_party/asio/asio/include/asio/io_service_strand.hpp +0 -20
  619. data/ext/third_party/asio/asio/include/asio/ip/address.hpp +0 -268
  620. data/ext/third_party/asio/asio/include/asio/ip/address_v4.hpp +0 -335
  621. data/ext/third_party/asio/asio/include/asio/ip/address_v4_iterator.hpp +0 -162
  622. data/ext/third_party/asio/asio/include/asio/ip/address_v4_range.hpp +0 -134
  623. data/ext/third_party/asio/asio/include/asio/ip/address_v6.hpp +0 -341
  624. data/ext/third_party/asio/asio/include/asio/ip/address_v6_iterator.hpp +0 -183
  625. data/ext/third_party/asio/asio/include/asio/ip/address_v6_range.hpp +0 -129
  626. data/ext/third_party/asio/asio/include/asio/ip/bad_address_cast.hpp +0 -53
  627. data/ext/third_party/asio/asio/include/asio/ip/basic_endpoint.hpp +0 -264
  628. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +0 -1030
  629. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_entry.hpp +0 -113
  630. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_iterator.hpp +0 -192
  631. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_query.hpp +0 -244
  632. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver_results.hpp +0 -311
  633. data/ext/third_party/asio/asio/include/asio/ip/detail/endpoint.hpp +0 -141
  634. data/ext/third_party/asio/asio/include/asio/ip/detail/impl/endpoint.ipp +0 -199
  635. data/ext/third_party/asio/asio/include/asio/ip/detail/socket_option.hpp +0 -566
  636. data/ext/third_party/asio/asio/include/asio/ip/host_name.hpp +0 -42
  637. data/ext/third_party/asio/asio/include/asio/ip/icmp.hpp +0 -115
  638. data/ext/third_party/asio/asio/include/asio/ip/impl/address.hpp +0 -67
  639. data/ext/third_party/asio/asio/include/asio/ip/impl/address.ipp +0 -239
  640. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v4.hpp +0 -67
  641. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v4.ipp +0 -210
  642. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v6.hpp +0 -67
  643. data/ext/third_party/asio/asio/include/asio/ip/impl/address_v6.ipp +0 -350
  644. data/ext/third_party/asio/asio/include/asio/ip/impl/basic_endpoint.hpp +0 -43
  645. data/ext/third_party/asio/asio/include/asio/ip/impl/host_name.ipp +0 -54
  646. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v4.hpp +0 -54
  647. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v4.ipp +0 -216
  648. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v6.hpp +0 -53
  649. data/ext/third_party/asio/asio/include/asio/ip/impl/network_v6.ipp +0 -185
  650. data/ext/third_party/asio/asio/include/asio/ip/multicast.hpp +0 -191
  651. data/ext/third_party/asio/asio/include/asio/ip/network_v4.hpp +0 -261
  652. data/ext/third_party/asio/asio/include/asio/ip/network_v6.hpp +0 -235
  653. data/ext/third_party/asio/asio/include/asio/ip/resolver_base.hpp +0 -129
  654. data/ext/third_party/asio/asio/include/asio/ip/resolver_query_base.hpp +0 -43
  655. data/ext/third_party/asio/asio/include/asio/ip/tcp.hpp +0 -155
  656. data/ext/third_party/asio/asio/include/asio/ip/udp.hpp +0 -111
  657. data/ext/third_party/asio/asio/include/asio/ip/unicast.hpp +0 -70
  658. data/ext/third_party/asio/asio/include/asio/ip/v6_only.hpp +0 -69
  659. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +0 -61
  660. data/ext/third_party/asio/asio/include/asio/is_executor.hpp +0 -46
  661. data/ext/third_party/asio/asio/include/asio/is_read_buffered.hpp +0 -59
  662. data/ext/third_party/asio/asio/include/asio/is_write_buffered.hpp +0 -59
  663. data/ext/third_party/asio/asio/include/asio/local/basic_endpoint.hpp +0 -247
  664. data/ext/third_party/asio/asio/include/asio/local/connect_pair.hpp +0 -101
  665. data/ext/third_party/asio/asio/include/asio/local/datagram_protocol.hpp +0 -80
  666. data/ext/third_party/asio/asio/include/asio/local/detail/endpoint.hpp +0 -139
  667. data/ext/third_party/asio/asio/include/asio/local/detail/impl/endpoint.ipp +0 -136
  668. data/ext/third_party/asio/asio/include/asio/local/stream_protocol.hpp +0 -90
  669. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +0 -58
  670. data/ext/third_party/asio/asio/include/asio/packaged_task.hpp +0 -126
  671. data/ext/third_party/asio/asio/include/asio/placeholders.hpp +0 -151
  672. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +0 -697
  673. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +0 -470
  674. data/ext/third_party/asio/asio/include/asio/posix/descriptor.hpp +0 -37
  675. data/ext/third_party/asio/asio/include/asio/posix/descriptor_base.hpp +0 -90
  676. data/ext/third_party/asio/asio/include/asio/posix/stream_descriptor.hpp +0 -37
  677. data/ext/third_party/asio/asio/include/asio/post.hpp +0 -126
  678. data/ext/third_party/asio/asio/include/asio/prefer.hpp +0 -656
  679. data/ext/third_party/asio/asio/include/asio/query.hpp +0 -296
  680. data/ext/third_party/asio/asio/include/asio/read.hpp +0 -1288
  681. data/ext/third_party/asio/asio/include/asio/read_at.hpp +0 -694
  682. data/ext/third_party/asio/asio/include/asio/read_until.hpp +0 -2863
  683. data/ext/third_party/asio/asio/include/asio/redirect_error.hpp +0 -66
  684. data/ext/third_party/asio/asio/include/asio/require.hpp +0 -524
  685. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +0 -310
  686. data/ext/third_party/asio/asio/include/asio/serial_port.hpp +0 -36
  687. data/ext/third_party/asio/asio/include/asio/serial_port_base.hpp +0 -167
  688. data/ext/third_party/asio/asio/include/asio/signal_set.hpp +0 -28
  689. data/ext/third_party/asio/asio/include/asio/socket_base.hpp +0 -559
  690. data/ext/third_party/asio/asio/include/asio/spawn.hpp +0 -344
  691. data/ext/third_party/asio/asio/include/asio/ssl.hpp +0 -28
  692. data/ext/third_party/asio/asio/include/asio/ssl/context.hpp +0 -761
  693. data/ext/third_party/asio/asio/include/asio/ssl/context_base.hpp +0 -209
  694. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +0 -119
  695. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +0 -165
  696. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +0 -67
  697. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +0 -349
  698. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/openssl_init.ipp +0 -165
  699. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +0 -415
  700. data/ext/third_party/asio/asio/include/asio/ssl/detail/openssl_init.hpp +0 -101
  701. data/ext/third_party/asio/asio/include/asio/ssl/detail/openssl_types.hpp +0 -34
  702. data/ext/third_party/asio/asio/include/asio/ssl/detail/password_callback.hpp +0 -66
  703. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +0 -72
  704. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +0 -69
  705. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +0 -169
  706. data/ext/third_party/asio/asio/include/asio/ssl/detail/verify_callback.hpp +0 -62
  707. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +0 -76
  708. data/ext/third_party/asio/asio/include/asio/ssl/error.hpp +0 -125
  709. data/ext/third_party/asio/asio/include/asio/ssl/host_name_verification.hpp +0 -90
  710. data/ext/third_party/asio/asio/include/asio/ssl/impl/context.hpp +0 -67
  711. data/ext/third_party/asio/asio/include/asio/ssl/impl/context.ipp +0 -1238
  712. data/ext/third_party/asio/asio/include/asio/ssl/impl/error.ipp +0 -102
  713. data/ext/third_party/asio/asio/include/asio/ssl/impl/host_name_verification.ipp +0 -73
  714. data/ext/third_party/asio/asio/include/asio/ssl/impl/rfc2818_verification.ipp +0 -164
  715. data/ext/third_party/asio/asio/include/asio/ssl/impl/src.hpp +0 -29
  716. data/ext/third_party/asio/asio/include/asio/ssl/rfc2818_verification.hpp +0 -98
  717. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +0 -900
  718. data/ext/third_party/asio/asio/include/asio/ssl/stream_base.hpp +0 -52
  719. data/ext/third_party/asio/asio/include/asio/ssl/verify_context.hpp +0 -67
  720. data/ext/third_party/asio/asio/include/asio/ssl/verify_mode.hpp +0 -63
  721. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +0 -31
  722. data/ext/third_party/asio/asio/include/asio/steady_timer.hpp +0 -42
  723. data/ext/third_party/asio/asio/include/asio/strand.hpp +0 -537
  724. data/ext/third_party/asio/asio/include/asio/streambuf.hpp +0 -33
  725. data/ext/third_party/asio/asio/include/asio/system_context.hpp +0 -90
  726. data/ext/third_party/asio/asio/include/asio/system_error.hpp +0 -131
  727. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +0 -662
  728. data/ext/third_party/asio/asio/include/asio/system_timer.hpp +0 -42
  729. data/ext/third_party/asio/asio/include/asio/this_coro.hpp +0 -45
  730. data/ext/third_party/asio/asio/include/asio/thread.hpp +0 -92
  731. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +0 -1111
  732. data/ext/third_party/asio/asio/include/asio/time_traits.hpp +0 -86
  733. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +0 -114
  734. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +0 -114
  735. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +0 -112
  736. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +0 -112
  737. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +0 -100
  738. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +0 -108
  739. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +0 -108
  740. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +0 -108
  741. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +0 -108
  742. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +0 -108
  743. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +0 -108
  744. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +0 -108
  745. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +0 -108
  746. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +0 -108
  747. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +0 -108
  748. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +0 -108
  749. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +0 -108
  750. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +0 -108
  751. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +0 -108
  752. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +0 -108
  753. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +0 -112
  754. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +0 -112
  755. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +0 -234
  756. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +0 -234
  757. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +0 -108
  758. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +0 -108
  759. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +0 -108
  760. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +0 -123
  761. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +0 -123
  762. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +0 -112
  763. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +0 -112
  764. data/ext/third_party/asio/asio/include/asio/ts/buffer.hpp +0 -24
  765. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +0 -35
  766. data/ext/third_party/asio/asio/include/asio/ts/internet.hpp +0 -40
  767. data/ext/third_party/asio/asio/include/asio/ts/io_context.hpp +0 -20
  768. data/ext/third_party/asio/asio/include/asio/ts/net.hpp +0 -26
  769. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +0 -262
  770. data/ext/third_party/asio/asio/include/asio/ts/socket.hpp +0 -27
  771. data/ext/third_party/asio/asio/include/asio/ts/timer.hpp +0 -26
  772. data/ext/third_party/asio/asio/include/asio/unyield.hpp +0 -21
  773. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +0 -169
  774. data/ext/third_party/asio/asio/include/asio/use_future.hpp +0 -160
  775. data/ext/third_party/asio/asio/include/asio/uses_executor.hpp +0 -71
  776. data/ext/third_party/asio/asio/include/asio/version.hpp +0 -23
  777. data/ext/third_party/asio/asio/include/asio/wait_traits.hpp +0 -56
  778. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +0 -435
  779. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +0 -361
  780. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +0 -490
  781. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +0 -474
  782. data/ext/third_party/asio/asio/include/asio/windows/object_handle.hpp +0 -38
  783. data/ext/third_party/asio/asio/include/asio/windows/overlapped_handle.hpp +0 -39
  784. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +0 -145
  785. data/ext/third_party/asio/asio/include/asio/windows/random_access_handle.hpp +0 -37
  786. data/ext/third_party/asio/asio/include/asio/windows/stream_handle.hpp +0 -37
  787. data/ext/third_party/asio/asio/include/asio/write.hpp +0 -1246
  788. data/ext/third_party/asio/asio/include/asio/write_at.hpp +0 -702
  789. data/ext/third_party/asio/asio/include/asio/yield.hpp +0 -23
  790. data/ext/third_party/gsl/CMakeLists.txt +0 -127
  791. data/ext/third_party/gsl/LICENSE +0 -21
  792. data/ext/third_party/gsl/ThirdPartyNotices.txt +0 -41
  793. data/ext/third_party/gsl/include/gsl/gsl +0 -29
  794. data/ext/third_party/gsl/include/gsl/gsl_algorithm +0 -61
  795. data/ext/third_party/gsl/include/gsl/gsl_assert +0 -133
  796. data/ext/third_party/gsl/include/gsl/gsl_byte +0 -209
  797. data/ext/third_party/gsl/include/gsl/gsl_narrow +0 -52
  798. data/ext/third_party/gsl/include/gsl/gsl_util +0 -129
  799. data/ext/third_party/gsl/include/gsl/multi_span +0 -2263
  800. data/ext/third_party/gsl/include/gsl/pointers +0 -287
  801. data/ext/third_party/gsl/include/gsl/span +0 -816
  802. data/ext/third_party/gsl/include/gsl/span_ext +0 -198
  803. data/ext/third_party/gsl/include/gsl/string_span +0 -706
  804. data/ext/third_party/http_parser/LICENSE-MIT +0 -19
  805. data/ext/third_party/http_parser/http_parser.c +0 -2575
  806. data/ext/third_party/http_parser/http_parser.h +0 -449
  807. data/ext/third_party/json/CMakeLists.txt +0 -44
  808. data/ext/third_party/json/LICENSE +0 -21
  809. data/ext/third_party/json/LICENSE.double-conversion +0 -32
  810. data/ext/third_party/json/LICENSE.itoa +0 -19
  811. data/ext/third_party/json/LICENSE.ryu +0 -201
  812. data/ext/third_party/json/include/tao/json.hpp +0 -45
  813. data/ext/third_party/json/include/tao/json/basic_value.hpp +0 -942
  814. data/ext/third_party/json/include/tao/json/binary.hpp +0 -103
  815. data/ext/third_party/json/include/tao/json/binary_view.hpp +0 -31
  816. data/ext/third_party/json/include/tao/json/binding.hpp +0 -71
  817. data/ext/third_party/json/include/tao/json/binding/constant.hpp +0 -232
  818. data/ext/third_party/json/include/tao/json/binding/element.hpp +0 -182
  819. data/ext/third_party/json/include/tao/json/binding/factory.hpp +0 -251
  820. data/ext/third_party/json/include/tao/json/binding/for_nothing_value.hpp +0 -17
  821. data/ext/third_party/json/include/tao/json/binding/for_unknown_key.hpp +0 -17
  822. data/ext/third_party/json/include/tao/json/binding/inherit.hpp +0 -14
  823. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +0 -104
  824. data/ext/third_party/json/include/tao/json/binding/internal/inherit.hpp +0 -45
  825. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +0 -268
  826. data/ext/third_party/json/include/tao/json/binding/internal/type_key.hpp +0 -54
  827. data/ext/third_party/json/include/tao/json/binding/member.hpp +0 -32
  828. data/ext/third_party/json/include/tao/json/binding/member_kind.hpp +0 -17
  829. data/ext/third_party/json/include/tao/json/binding/versions.hpp +0 -129
  830. data/ext/third_party/json/include/tao/json/cbor.hpp +0 -19
  831. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +0 -34
  832. data/ext/third_party/json/include/tao/json/cbor/consume_string.hpp +0 -32
  833. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +0 -43
  834. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +0 -27
  835. data/ext/third_party/json/include/tao/json/cbor/events/from_input.hpp +0 -43
  836. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +0 -37
  837. data/ext/third_party/json/include/tao/json/cbor/events/to_stream.hpp +0 -161
  838. data/ext/third_party/json/include/tao/json/cbor/events/to_string.hpp +0 -31
  839. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +0 -32
  840. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +0 -33
  841. data/ext/third_party/json/include/tao/json/cbor/from_input.hpp +0 -33
  842. data/ext/third_party/json/include/tao/json/cbor/from_string.hpp +0 -32
  843. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +0 -418
  844. data/ext/third_party/json/include/tao/json/cbor/internal/major.hpp +0 -28
  845. data/ext/third_party/json/include/tao/json/cbor/parts_parser.hpp +0 -392
  846. data/ext/third_party/json/include/tao/json/cbor/to_stream.hpp +0 -27
  847. data/ext/third_party/json/include/tao/json/cbor/to_string.hpp +0 -28
  848. data/ext/third_party/json/include/tao/json/consume.hpp +0 -43
  849. data/ext/third_party/json/include/tao/json/consume_file.hpp +0 -33
  850. data/ext/third_party/json/include/tao/json/consume_string.hpp +0 -31
  851. data/ext/third_party/json/include/tao/json/contrib/array_traits.hpp +0 -43
  852. data/ext/third_party/json/include/tao/json/contrib/deque_traits.hpp +0 -41
  853. data/ext/third_party/json/include/tao/json/contrib/diff.hpp +0 -106
  854. data/ext/third_party/json/include/tao/json/contrib/get.hpp +0 -152
  855. data/ext/third_party/json/include/tao/json/contrib/internal/array_traits.hpp +0 -92
  856. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +0 -76
  857. data/ext/third_party/json/include/tao/json/contrib/internal/object_traits.hpp +0 -105
  858. data/ext/third_party/json/include/tao/json/contrib/internal/type_traits.hpp +0 -36
  859. data/ext/third_party/json/include/tao/json/contrib/list_traits.hpp +0 -41
  860. data/ext/third_party/json/include/tao/json/contrib/map_traits.hpp +0 -43
  861. data/ext/third_party/json/include/tao/json/contrib/multimap_traits.hpp +0 -43
  862. data/ext/third_party/json/include/tao/json/contrib/multiset_traits.hpp +0 -41
  863. data/ext/third_party/json/include/tao/json/contrib/pair_traits.hpp +0 -21
  864. data/ext/third_party/json/include/tao/json/contrib/patch.hpp +0 -105
  865. data/ext/third_party/json/include/tao/json/contrib/pointer_traits.hpp +0 -59
  866. data/ext/third_party/json/include/tao/json/contrib/position.hpp +0 -166
  867. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +0 -113
  868. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +0 -1874
  869. data/ext/third_party/json/include/tao/json/contrib/set_traits.hpp +0 -41
  870. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +0 -98
  871. data/ext/third_party/json/include/tao/json/contrib/traits.hpp +0 -121
  872. data/ext/third_party/json/include/tao/json/contrib/tuple_traits.hpp +0 -51
  873. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +0 -97
  874. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +0 -43
  875. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +0 -41
  876. data/ext/third_party/json/include/tao/json/contrib/vector_bool_traits.hpp +0 -45
  877. data/ext/third_party/json/include/tao/json/contrib/vector_traits.hpp +0 -51
  878. data/ext/third_party/json/include/tao/json/events.hpp +0 -47
  879. data/ext/third_party/json/include/tao/json/events/apply.hpp +0 -20
  880. data/ext/third_party/json/include/tao/json/events/binary_to_base64.hpp +0 -26
  881. data/ext/third_party/json/include/tao/json/events/binary_to_base64url.hpp +0 -28
  882. data/ext/third_party/json/include/tao/json/events/binary_to_exception.hpp +0 -27
  883. data/ext/third_party/json/include/tao/json/events/binary_to_hex.hpp +0 -26
  884. data/ext/third_party/json/include/tao/json/events/compare.hpp +0 -255
  885. data/ext/third_party/json/include/tao/json/events/debug.hpp +0 -145
  886. data/ext/third_party/json/include/tao/json/events/discard.hpp +0 -43
  887. data/ext/third_party/json/include/tao/json/events/from_file.hpp +0 -28
  888. data/ext/third_party/json/include/tao/json/events/from_input.hpp +0 -45
  889. data/ext/third_party/json/include/tao/json/events/from_stream.hpp +0 -33
  890. data/ext/third_party/json/include/tao/json/events/from_string.hpp +0 -38
  891. data/ext/third_party/json/include/tao/json/events/from_value.hpp +0 -202
  892. data/ext/third_party/json/include/tao/json/events/hash.hpp +0 -174
  893. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +0 -50
  894. data/ext/third_party/json/include/tao/json/events/invalid_string_to_exception.hpp +0 -49
  895. data/ext/third_party/json/include/tao/json/events/invalid_string_to_hex.hpp +0 -48
  896. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +0 -62
  897. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +0 -57
  898. data/ext/third_party/json/include/tao/json/events/limit_nesting_depth.hpp +0 -82
  899. data/ext/third_party/json/include/tao/json/events/limit_value_count.hpp +0 -46
  900. data/ext/third_party/json/include/tao/json/events/non_finite_to_exception.hpp +0 -31
  901. data/ext/third_party/json/include/tao/json/events/non_finite_to_null.hpp +0 -32
  902. data/ext/third_party/json/include/tao/json/events/non_finite_to_string.hpp +0 -40
  903. data/ext/third_party/json/include/tao/json/events/prefer_signed.hpp +0 -32
  904. data/ext/third_party/json/include/tao/json/events/prefer_unsigned.hpp +0 -32
  905. data/ext/third_party/json/include/tao/json/events/produce.hpp +0 -22
  906. data/ext/third_party/json/include/tao/json/events/ref.hpp +0 -111
  907. data/ext/third_party/json/include/tao/json/events/statistics.hpp +0 -112
  908. data/ext/third_party/json/include/tao/json/events/tee.hpp +0 -386
  909. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +0 -172
  910. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +0 -142
  911. data/ext/third_party/json/include/tao/json/events/to_string.hpp +0 -33
  912. data/ext/third_party/json/include/tao/json/events/to_value.hpp +0 -137
  913. data/ext/third_party/json/include/tao/json/events/transformer.hpp +0 -70
  914. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +0 -411
  915. data/ext/third_party/json/include/tao/json/events/validate_keys.hpp +0 -51
  916. data/ext/third_party/json/include/tao/json/events/virtual_base.hpp +0 -192
  917. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +0 -176
  918. data/ext/third_party/json/include/tao/json/external/double.hpp +0 -1313
  919. data/ext/third_party/json/include/tao/json/external/itoa.hpp +0 -149
  920. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +0 -44
  921. data/ext/third_party/json/include/tao/json/external/pegtl/apply_mode.hpp +0 -19
  922. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +0 -49
  923. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +0 -54
  924. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +0 -212
  925. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +0 -38
  926. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +0 -53
  927. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +0 -62
  928. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +0 -36
  929. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +0 -50
  930. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +0 -61
  931. data/ext/third_party/json/include/tao/json/external/pegtl/config.hpp +0 -11
  932. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/abnf.hpp +0 -35
  933. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +0 -67
  934. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +0 -176
  935. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +0 -275
  936. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +0 -77
  937. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +0 -151
  938. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +0 -16
  939. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +0 -272
  940. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +0 -66
  941. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +0 -196
  942. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +0 -196
  943. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +0 -103
  944. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +0 -56
  945. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +0 -431
  946. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian.hpp +0 -62
  947. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian_gcc.hpp +0 -206
  948. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/endian_win.hpp +0 -106
  949. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_mask_uint.hpp +0 -54
  950. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_mask_uint8.hpp +0 -33
  951. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_uint.hpp +0 -45
  952. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_uint8.hpp +0 -32
  953. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_utf16.hpp +0 -54
  954. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/peek_utf32.hpp +0 -43
  955. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/read_uint.hpp +0 -77
  956. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +0 -52
  957. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/json.hpp +0 -88
  958. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/json_pointer.hpp +0 -33
  959. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +0 -440
  960. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +0 -105
  961. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +0 -75
  962. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +0 -53
  963. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +0 -234
  964. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +0 -69
  965. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +0 -117
  966. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +0 -94
  967. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +0 -43
  968. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +0 -193
  969. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +0 -118
  970. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/to_string.hpp +0 -38
  971. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +0 -227
  972. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint16.hpp +0 -62
  973. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint32.hpp +0 -62
  974. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint64.hpp +0 -63
  975. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uint8.hpp +0 -36
  976. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +0 -199
  977. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +0 -106
  978. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/utf16.hpp +0 -49
  979. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/utf32.hpp +0 -49
  980. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +0 -32
  981. data/ext/third_party/json/include/tao/json/external/pegtl/demangle.hpp +0 -138
  982. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +0 -35
  983. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +0 -37
  984. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +0 -39
  985. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +0 -39
  986. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +0 -35
  987. data/ext/third_party/json/include/tao/json/external/pegtl/eol.hpp +0 -37
  988. data/ext/third_party/json/include/tao/json/external/pegtl/eol_pair.hpp +0 -18
  989. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +0 -44
  990. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +0 -54
  991. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +0 -106
  992. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +0 -58
  993. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +0 -53
  994. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +0 -51
  995. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0_single.hpp +0 -34
  996. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +0 -34
  997. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +0 -55
  998. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +0 -32
  999. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +0 -31
  1000. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +0 -45
  1001. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +0 -29
  1002. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +0 -43
  1003. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +0 -54
  1004. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +0 -32
  1005. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +0 -32
  1006. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +0 -32
  1007. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +0 -49
  1008. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstring_reader.hpp +0 -40
  1009. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dependent_false.hpp +0 -16
  1010. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +0 -54
  1011. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +0 -34
  1012. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +0 -54
  1013. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable_control.hpp +0 -25
  1014. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +0 -32
  1015. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +0 -32
  1016. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +0 -33
  1017. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +0 -32
  1018. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +0 -134
  1019. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +0 -213
  1020. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +0 -117
  1021. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +0 -21
  1022. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +0 -21
  1023. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +0 -40
  1024. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +0 -21
  1025. data/ext/third_party/json/include/tao/json/external/pegtl/internal/identifier.hpp +0 -22
  1026. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +0 -54
  1027. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +0 -47
  1028. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +0 -21
  1029. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +0 -51
  1030. data/ext/third_party/json/include/tao/json/external/pegtl/internal/input_pair.hpp +0 -29
  1031. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +0 -39
  1032. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +0 -72
  1033. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +0 -49
  1034. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +0 -37
  1035. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +0 -32
  1036. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list.hpp +0 -19
  1037. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_must.hpp +0 -20
  1038. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +0 -22
  1039. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +0 -22
  1040. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +0 -80
  1041. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +0 -21
  1042. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +0 -28
  1043. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +0 -26
  1044. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +0 -64
  1045. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +0 -55
  1046. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +0 -55
  1047. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +0 -57
  1048. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pad.hpp +0 -19
  1049. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pad_opt.hpp +0 -20
  1050. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +0 -26
  1051. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +0 -32
  1052. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +0 -89
  1053. data/ext/third_party/json/include/tao/json/external/pegtl/internal/pegtl_string.hpp +0 -90
  1054. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +0 -60
  1055. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +0 -44
  1056. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +0 -56
  1057. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +0 -103
  1058. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +0 -72
  1059. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +0 -67
  1060. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min.hpp +0 -20
  1061. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +0 -81
  1062. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +0 -61
  1063. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +0 -42
  1064. data/ext/third_party/json/include/tao/json/external/pegtl/internal/result_on_found.hpp +0 -19
  1065. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +0 -61
  1066. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +0 -58
  1067. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +0 -67
  1068. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +0 -52
  1069. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star_must.hpp +0 -19
  1070. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +0 -59
  1071. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +0 -58
  1072. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +0 -32
  1073. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +0 -64
  1074. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +0 -88
  1075. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +0 -32
  1076. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +0 -169
  1077. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +0 -365
  1078. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +0 -79
  1079. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +0 -64
  1080. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +0 -87
  1081. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +0 -19
  1082. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +0 -51
  1083. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +0 -114
  1084. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +0 -83
  1085. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +0 -54
  1086. data/ext/third_party/json/include/tao/json/external/pegtl/require_apply.hpp +0 -16
  1087. data/ext/third_party/json/include/tao/json/external/pegtl/require_apply0.hpp +0 -16
  1088. data/ext/third_party/json/include/tao/json/external/pegtl/rewind_mode.hpp +0 -20
  1089. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +0 -68
  1090. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +0 -64
  1091. data/ext/third_party/json/include/tao/json/external/pegtl/tracking_mode.hpp +0 -19
  1092. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +0 -46
  1093. data/ext/third_party/json/include/tao/json/external/pegtl/utf8.hpp +0 -28
  1094. data/ext/third_party/json/include/tao/json/external/pegtl/version.hpp +0 -13
  1095. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +0 -66
  1096. data/ext/third_party/json/include/tao/json/external/ryu.hpp +0 -1216
  1097. data/ext/third_party/json/include/tao/json/forward.hpp +0 -44
  1098. data/ext/third_party/json/include/tao/json/from_file.hpp +0 -32
  1099. data/ext/third_party/json/include/tao/json/from_input.hpp +0 -32
  1100. data/ext/third_party/json/include/tao/json/from_stream.hpp +0 -45
  1101. data/ext/third_party/json/include/tao/json/from_string.hpp +0 -41
  1102. data/ext/third_party/json/include/tao/json/internal/action.hpp +0 -268
  1103. data/ext/third_party/json/include/tao/json/internal/base64.hpp +0 -55
  1104. data/ext/third_party/json/include/tao/json/internal/base64url.hpp +0 -53
  1105. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +0 -14
  1106. data/ext/third_party/json/include/tao/json/internal/endian.hpp +0 -60
  1107. data/ext/third_party/json/include/tao/json/internal/endian_gcc.hpp +0 -198
  1108. data/ext/third_party/json/include/tao/json/internal/endian_win.hpp +0 -103
  1109. data/ext/third_party/json/include/tao/json/internal/errors.hpp +0 -85
  1110. data/ext/third_party/json/include/tao/json/internal/escape.hpp +0 -77
  1111. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -57
  1112. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +0 -229
  1113. data/ext/third_party/json/include/tao/json/internal/hexdump.hpp +0 -31
  1114. data/ext/third_party/json/include/tao/json/internal/identity.hpp +0 -22
  1115. data/ext/third_party/json/include/tao/json/internal/number_state.hpp +0 -80
  1116. data/ext/third_party/json/include/tao/json/internal/number_traits.hpp +0 -267
  1117. data/ext/third_party/json/include/tao/json/internal/pair.hpp +0 -42
  1118. data/ext/third_party/json/include/tao/json/internal/parse_util.hpp +0 -112
  1119. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +0 -218
  1120. data/ext/third_party/json/include/tao/json/internal/single.hpp +0 -40
  1121. data/ext/third_party/json/include/tao/json/internal/string_t.hpp +0 -35
  1122. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +0 -96
  1123. data/ext/third_party/json/include/tao/json/internal/unescape_action.hpp +0 -24
  1124. data/ext/third_party/json/include/tao/json/internal/uri_fragment.hpp +0 -182
  1125. data/ext/third_party/json/include/tao/json/jaxn.hpp +0 -19
  1126. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +0 -34
  1127. data/ext/third_party/json/include/tao/json/jaxn/consume_string.hpp +0 -32
  1128. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +0 -28
  1129. data/ext/third_party/json/include/tao/json/jaxn/events/from_input.hpp +0 -45
  1130. data/ext/third_party/json/include/tao/json/jaxn/events/from_stream.hpp +0 -33
  1131. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +0 -39
  1132. data/ext/third_party/json/include/tao/json/jaxn/events/to_pretty_stream.hpp +0 -69
  1133. data/ext/third_party/json/include/tao/json/jaxn/events/to_stream.hpp +0 -67
  1134. data/ext/third_party/json/include/tao/json/jaxn/events/to_string.hpp +0 -33
  1135. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +0 -33
  1136. data/ext/third_party/json/include/tao/json/jaxn/from_input.hpp +0 -33
  1137. data/ext/third_party/json/include/tao/json/jaxn/from_stream.hpp +0 -48
  1138. data/ext/third_party/json/include/tao/json/jaxn/from_string.hpp +0 -42
  1139. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +0 -355
  1140. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +0 -114
  1141. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +0 -108
  1142. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +0 -375
  1143. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +0 -255
  1144. data/ext/third_party/json/include/tao/json/jaxn/internal/unescape_action.hpp +0 -28
  1145. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +0 -27
  1146. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +0 -261
  1147. data/ext/third_party/json/include/tao/json/jaxn/to_stream.hpp +0 -36
  1148. data/ext/third_party/json/include/tao/json/jaxn/to_string.hpp +0 -33
  1149. data/ext/third_party/json/include/tao/json/message_extension.hpp +0 -49
  1150. data/ext/third_party/json/include/tao/json/msgpack.hpp +0 -19
  1151. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +0 -34
  1152. data/ext/third_party/json/include/tao/json/msgpack/consume_string.hpp +0 -32
  1153. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +0 -43
  1154. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +0 -27
  1155. data/ext/third_party/json/include/tao/json/msgpack/events/from_input.hpp +0 -43
  1156. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +0 -37
  1157. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +0 -214
  1158. data/ext/third_party/json/include/tao/json/msgpack/events/to_string.hpp +0 -31
  1159. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +0 -32
  1160. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +0 -33
  1161. data/ext/third_party/json/include/tao/json/msgpack/from_input.hpp +0 -33
  1162. data/ext/third_party/json/include/tao/json/msgpack/from_string.hpp +0 -32
  1163. data/ext/third_party/json/include/tao/json/msgpack/internal/format.hpp +0 -57
  1164. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +0 -250
  1165. data/ext/third_party/json/include/tao/json/msgpack/parts_parser.hpp +0 -311
  1166. data/ext/third_party/json/include/tao/json/msgpack/to_stream.hpp +0 -27
  1167. data/ext/third_party/json/include/tao/json/msgpack/to_string.hpp +0 -28
  1168. data/ext/third_party/json/include/tao/json/operators.hpp +0 -490
  1169. data/ext/third_party/json/include/tao/json/parts_parser.hpp +0 -302
  1170. data/ext/third_party/json/include/tao/json/pointer.hpp +0 -432
  1171. data/ext/third_party/json/include/tao/json/produce.hpp +0 -61
  1172. data/ext/third_party/json/include/tao/json/self_contained.hpp +0 -131
  1173. data/ext/third_party/json/include/tao/json/span.hpp +0 -496
  1174. data/ext/third_party/json/include/tao/json/stream.hpp +0 -38
  1175. data/ext/third_party/json/include/tao/json/to_stream.hpp +0 -42
  1176. data/ext/third_party/json/include/tao/json/to_string.hpp +0 -23
  1177. data/ext/third_party/json/include/tao/json/traits.hpp +0 -971
  1178. data/ext/third_party/json/include/tao/json/type.hpp +0 -112
  1179. data/ext/third_party/json/include/tao/json/ubjson.hpp +0 -19
  1180. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +0 -34
  1181. data/ext/third_party/json/include/tao/json/ubjson/consume_string.hpp +0 -32
  1182. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +0 -43
  1183. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +0 -27
  1184. data/ext/third_party/json/include/tao/json/ubjson/events/from_input.hpp +0 -43
  1185. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +0 -37
  1186. data/ext/third_party/json/include/tao/json/ubjson/events/to_stream.hpp +0 -174
  1187. data/ext/third_party/json/include/tao/json/ubjson/events/to_string.hpp +0 -31
  1188. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +0 -32
  1189. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +0 -33
  1190. data/ext/third_party/json/include/tao/json/ubjson/from_input.hpp +0 -33
  1191. data/ext/third_party/json/include/tao/json/ubjson/from_string.hpp +0 -32
  1192. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +0 -415
  1193. data/ext/third_party/json/include/tao/json/ubjson/internal/marker.hpp +0 -46
  1194. data/ext/third_party/json/include/tao/json/ubjson/parts_parser.hpp +0 -393
  1195. data/ext/third_party/json/include/tao/json/ubjson/to_stream.hpp +0 -28
  1196. data/ext/third_party/json/include/tao/json/ubjson/to_string.hpp +0 -29
  1197. data/ext/third_party/json/include/tao/json/utf8.hpp +0 -57
  1198. data/ext/third_party/json/include/tao/json/value.hpp +0 -12
  1199. data/ext/third_party/snappy/CMakeLists.txt +0 -345
  1200. data/ext/third_party/snappy/COPYING +0 -54
  1201. data/ext/third_party/snappy/cmake/SnappyConfig.cmake.in +0 -33
  1202. data/ext/third_party/snappy/cmake/config.h.in +0 -59
  1203. data/ext/third_party/snappy/snappy-c.cc +0 -90
  1204. data/ext/third_party/snappy/snappy-c.h +0 -138
  1205. data/ext/third_party/snappy/snappy-internal.h +0 -315
  1206. data/ext/third_party/snappy/snappy-sinksource.cc +0 -121
  1207. data/ext/third_party/snappy/snappy-sinksource.h +0 -182
  1208. data/ext/third_party/snappy/snappy-stubs-internal.cc +0 -42
  1209. data/ext/third_party/snappy/snappy-stubs-internal.h +0 -493
  1210. data/ext/third_party/snappy/snappy-stubs-public.h.in +0 -63
  1211. data/ext/third_party/snappy/snappy.cc +0 -1774
  1212. data/ext/third_party/snappy/snappy.h +0 -209
  1213. data/ext/third_party/spdlog/CMakeLists.txt +0 -291
  1214. data/ext/third_party/spdlog/LICENSE +0 -26
  1215. data/ext/third_party/spdlog/cmake/ide.cmake +0 -18
  1216. data/ext/third_party/spdlog/cmake/pch.h.in +0 -258
  1217. data/ext/third_party/spdlog/cmake/spdlog.pc.in +0 -13
  1218. data/ext/third_party/spdlog/cmake/spdlogCPack.cmake +0 -46
  1219. data/ext/third_party/spdlog/cmake/spdlogConfig.cmake.in +0 -15
  1220. data/ext/third_party/spdlog/cmake/utils.cmake +0 -61
  1221. data/ext/third_party/spdlog/cmake/version.rc.in +0 -42
  1222. data/ext/third_party/spdlog/include/spdlog/async.h +0 -93
  1223. data/ext/third_party/spdlog/include/spdlog/async_logger-inl.h +0 -92
  1224. data/ext/third_party/spdlog/include/spdlog/async_logger.h +0 -68
  1225. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +0 -44
  1226. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +0 -38
  1227. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +0 -119
  1228. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +0 -29
  1229. data/ext/third_party/spdlog/include/spdlog/common-inl.h +0 -76
  1230. data/ext/third_party/spdlog/include/spdlog/common.h +0 -245
  1231. data/ext/third_party/spdlog/include/spdlog/details/backtracer-inl.h +0 -69
  1232. data/ext/third_party/spdlog/include/spdlog/details/backtracer.h +0 -45
  1233. data/ext/third_party/spdlog/include/spdlog/details/circular_q.h +0 -141
  1234. data/ext/third_party/spdlog/include/spdlog/details/console_globals.h +0 -32
  1235. data/ext/third_party/spdlog/include/spdlog/details/file_helper-inl.h +0 -132
  1236. data/ext/third_party/spdlog/include/spdlog/details/file_helper.h +0 -59
  1237. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +0 -116
  1238. data/ext/third_party/spdlog/include/spdlog/details/log_msg-inl.h +0 -37
  1239. data/ext/third_party/spdlog/include/spdlog/details/log_msg.h +0 -36
  1240. data/ext/third_party/spdlog/include/spdlog/details/log_msg_buffer-inl.h +0 -58
  1241. data/ext/third_party/spdlog/include/spdlog/details/log_msg_buffer.h +0 -33
  1242. data/ext/third_party/spdlog/include/spdlog/details/mpmc_blocking_q.h +0 -120
  1243. data/ext/third_party/spdlog/include/spdlog/details/null_mutex.h +0 -49
  1244. data/ext/third_party/spdlog/include/spdlog/details/os-inl.h +0 -554
  1245. data/ext/third_party/spdlog/include/spdlog/details/os.h +0 -111
  1246. data/ext/third_party/spdlog/include/spdlog/details/periodic_worker-inl.h +0 -49
  1247. data/ext/third_party/spdlog/include/spdlog/details/periodic_worker.h +0 -40
  1248. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +0 -313
  1249. data/ext/third_party/spdlog/include/spdlog/details/registry.h +0 -115
  1250. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +0 -24
  1251. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +0 -175
  1252. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +0 -146
  1253. data/ext/third_party/spdlog/include/spdlog/details/thread_pool-inl.h +0 -124
  1254. data/ext/third_party/spdlog/include/spdlog/details/thread_pool.h +0 -120
  1255. data/ext/third_party/spdlog/include/spdlog/details/windows_include.h +0 -11
  1256. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +0 -216
  1257. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/LICENSE.rst +0 -27
  1258. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +0 -1123
  1259. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +0 -566
  1260. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +0 -665
  1261. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +0 -1882
  1262. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +0 -1453
  1263. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +0 -3729
  1264. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +0 -78
  1265. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +0 -450
  1266. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +0 -167
  1267. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +0 -2
  1268. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +0 -751
  1269. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +0 -386
  1270. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +0 -20
  1271. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +0 -27
  1272. data/ext/third_party/spdlog/include/spdlog/fmt/ostr.h +0 -20
  1273. data/ext/third_party/spdlog/include/spdlog/formatter.h +0 -18
  1274. data/ext/third_party/spdlog/include/spdlog/fwd.h +0 -14
  1275. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +0 -257
  1276. data/ext/third_party/spdlog/include/spdlog/logger.h +0 -366
  1277. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +0 -1373
  1278. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +0 -126
  1279. data/ext/third_party/spdlog/include/spdlog/sinks/android_sink.h +0 -119
  1280. data/ext/third_party/spdlog/include/spdlog/sinks/ansicolor_sink-inl.h +0 -143
  1281. data/ext/third_party/spdlog/include/spdlog/sinks/ansicolor_sink.h +0 -118
  1282. data/ext/third_party/spdlog/include/spdlog/sinks/base_sink-inl.h +0 -63
  1283. data/ext/third_party/spdlog/include/spdlog/sinks/base_sink.h +0 -52
  1284. data/ext/third_party/spdlog/include/spdlog/sinks/basic_file_sink-inl.h +0 -43
  1285. data/ext/third_party/spdlog/include/spdlog/sinks/basic_file_sink.h +0 -58
  1286. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +0 -204
  1287. data/ext/third_party/spdlog/include/spdlog/sinks/dist_sink.h +0 -97
  1288. data/ext/third_party/spdlog/include/spdlog/sinks/dup_filter_sink.h +0 -90
  1289. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +0 -49
  1290. data/ext/third_party/spdlog/include/spdlog/sinks/null_sink.h +0 -44
  1291. data/ext/third_party/spdlog/include/spdlog/sinks/ostream_sink.h +0 -50
  1292. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +0 -74
  1293. data/ext/third_party/spdlog/include/spdlog/sinks/rotating_file_sink-inl.h +0 -131
  1294. data/ext/third_party/spdlog/include/spdlog/sinks/rotating_file_sink.h +0 -78
  1295. data/ext/third_party/spdlog/include/spdlog/sinks/sink-inl.h +0 -25
  1296. data/ext/third_party/spdlog/include/spdlog/sinks/sink.h +0 -35
  1297. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks-inl.h +0 -38
  1298. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_color_sinks.h +0 -45
  1299. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +0 -123
  1300. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +0 -87
  1301. data/ext/third_party/spdlog/include/spdlog/sinks/syslog_sink.h +0 -109
  1302. data/ext/third_party/spdlog/include/spdlog/sinks/systemd_sink.h +0 -103
  1303. data/ext/third_party/spdlog/include/spdlog/sinks/tcp_sink.h +0 -81
  1304. data/ext/third_party/spdlog/include/spdlog/sinks/win_eventlog_sink.h +0 -266
  1305. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +0 -170
  1306. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink.h +0 -94
  1307. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +0 -125
  1308. data/ext/third_party/spdlog/include/spdlog/spdlog.h +0 -295
  1309. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +0 -61
  1310. data/ext/third_party/spdlog/include/spdlog/tweakme.h +0 -116
  1311. data/ext/third_party/spdlog/include/spdlog/version.h +0 -10
  1312. data/ext/third_party/spdlog/src/async.cpp +0 -13
  1313. data/ext/third_party/spdlog/src/cfg.cpp +0 -8
  1314. data/ext/third_party/spdlog/src/color_sinks.cpp +0 -51
  1315. data/ext/third_party/spdlog/src/file_sinks.cpp +0 -20
  1316. data/ext/third_party/spdlog/src/fmt.cpp +0 -63
  1317. data/ext/third_party/spdlog/src/spdlog.cpp +0 -26
  1318. data/ext/third_party/spdlog/src/stdout_sinks.cpp +0 -29
@@ -1,52 +0,0 @@
1
- ///////////////////////////////////////////////////////////////////////////////
2
- //
3
- // Copyright (c) 2015 Microsoft Corporation. All rights reserved.
4
- //
5
- // This code is licensed under the MIT License (MIT).
6
- //
7
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
10
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
13
- // THE SOFTWARE.
14
- //
15
- ///////////////////////////////////////////////////////////////////////////////
16
-
17
- #ifndef GSL_NARROW_H
18
- #define GSL_NARROW_H
19
- #include <gsl/gsl_assert> // for Expects
20
- #include <gsl/gsl_util> // for narrow_cast
21
- namespace gsl
22
- {
23
- struct narrowing_error : public std::exception
24
- {
25
- const char* what() const noexcept override
26
- {
27
- return "narrowing_error";
28
- }
29
- };
30
-
31
- // narrow() : a checked version of narrow_cast() that throws if the cast changed the value
32
- template <class T, class U>
33
- GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
34
- GSL_SUPPRESS(f.6) // NO-FORMAT: attribute // TODO: MSVC /analyze does not recognise noexcept(false)
35
- constexpr
36
- T narrow(U u) noexcept(false)
37
- {
38
- constexpr const bool is_different_signedness = (std::is_signed<T>::value != std::is_signed<U>::value);
39
-
40
- const T t = narrow_cast<T>(u);
41
-
42
- if (static_cast<U>(t) != u
43
- || (is_different_signedness
44
- && ((t < T{}) != (u < U{}))))
45
- {
46
- throw narrowing_error{};
47
- }
48
-
49
- return t;
50
- }
51
- }
52
- #endif // GSL_NARROW_H
@@ -1,129 +0,0 @@
1
- ///////////////////////////////////////////////////////////////////////////////
2
- //
3
- // Copyright (c) 2015 Microsoft Corporation. All rights reserved.
4
- //
5
- // This code is licensed under the MIT License (MIT).
6
- //
7
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
10
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
13
- // THE SOFTWARE.
14
- //
15
- ///////////////////////////////////////////////////////////////////////////////
16
-
17
- #ifndef GSL_UTIL_H
18
- #define GSL_UTIL_H
19
-
20
- #include <gsl/gsl_assert> // for Expects
21
-
22
- #include <array>
23
- #include <cstddef> // for ptrdiff_t, size_t
24
- #include <initializer_list> // for initializer_list
25
- #include <type_traits> // for is_signed, integral_constant
26
- #include <utility> // for exchange, forward
27
-
28
- #if defined(_MSC_VER) && !defined(__clang__)
29
-
30
- #pragma warning(push)
31
- #pragma warning(disable : 4127) // conditional expression is constant
32
-
33
- #endif // _MSC_VER
34
-
35
- #if defined(__cplusplus) && (__cplusplus >= 201703L)
36
- #define GSL_NODISCARD [[nodiscard]]
37
- #else
38
- #define GSL_NODISCARD
39
- #endif // defined(__cplusplus) && (__cplusplus >= 201703L)
40
-
41
- namespace gsl
42
- {
43
- //
44
- // GSL.util: utilities
45
- //
46
-
47
- // index type for all container indexes/subscripts/sizes
48
- using index = std::ptrdiff_t;
49
-
50
- // final_action allows you to ensure something gets run at the end of a scope
51
- template <class F>
52
- class final_action
53
- {
54
- public:
55
- static_assert(!std::is_reference<F>::value && !std::is_const<F>::value && !std::is_volatile<F>::value, "Final_action should store its callable by value");
56
-
57
- explicit final_action(F f) noexcept : f_(std::move(f)) {}
58
-
59
- final_action(final_action&& other) noexcept : f_(std::move(other.f_)), invoke_(std::exchange(other.invoke_, false)) {}
60
-
61
- final_action(const final_action&) = delete;
62
- final_action& operator=(const final_action&) = delete;
63
- final_action& operator=(final_action&&) = delete;
64
-
65
- GSL_SUPPRESS(f.6) // NO-FORMAT: attribute // terminate if throws
66
- ~final_action() noexcept
67
- {
68
- if (invoke_) f_();
69
- }
70
-
71
- private:
72
- F f_;
73
- bool invoke_{true};
74
- };
75
-
76
- // finally() - convenience function to generate a final_action
77
- template <class F>
78
- GSL_NODISCARD final_action<typename std::remove_cv<typename std::remove_reference<F>::type>::type> finally(F&& f) noexcept
79
- {
80
- return final_action<typename std::remove_cv<typename std::remove_reference<F>::type>::type>(std::forward<F>(f));
81
- }
82
-
83
- // narrow_cast(): a searchable way to do narrowing casts of values
84
- template <class T, class U>
85
- GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
86
- constexpr T narrow_cast(U&& u) noexcept
87
- {
88
- return static_cast<T>(std::forward<U>(u));
89
- }
90
-
91
- //
92
- // at() - Bounds-checked way of accessing builtin arrays, std::array, std::vector
93
- //
94
- template <class T, std::size_t N>
95
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
96
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
97
- constexpr T& at(T (&arr)[N], const index i)
98
- {
99
- Expects(i >= 0 && i < narrow_cast<index>(N));
100
- return arr[narrow_cast<std::size_t>(i)];
101
- }
102
-
103
- template <class Cont>
104
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
105
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
106
- constexpr auto at(Cont& cont, const index i) -> decltype(cont[cont.size()])
107
- {
108
- Expects(i >= 0 && i < narrow_cast<index>(cont.size()));
109
- using size_type = decltype(cont.size());
110
- return cont[narrow_cast<size_type>(i)];
111
- }
112
-
113
- template <class T>
114
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
115
- constexpr T at(const std::initializer_list<T> cont, const index i)
116
- {
117
- Expects(i >= 0 && i < narrow_cast<index>(cont.size()));
118
- return *(cont.begin() + i);
119
- }
120
-
121
- } // namespace gsl
122
-
123
- #if defined(_MSC_VER) && !defined(__clang__)
124
-
125
- #pragma warning(pop)
126
-
127
- #endif // _MSC_VER
128
-
129
- #endif // GSL_UTIL_H
@@ -1,2263 +0,0 @@
1
- ///////////////////////////////////////////////////////////////////////////////
2
- //
3
- // Copyright (c) 2015 Microsoft Corporation. All rights reserved.
4
- //
5
- // This code is licensed under the MIT License (MIT).
6
- //
7
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
9
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
10
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
11
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
12
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
13
- // THE SOFTWARE.
14
- //
15
- ///////////////////////////////////////////////////////////////////////////////
16
-
17
- #ifndef GSL_MULTI_SPAN_H
18
- #define GSL_MULTI_SPAN_H
19
-
20
- #include <gsl/gsl_assert> // for Expects
21
- #include <gsl/gsl_byte> // for byte
22
- #include <gsl/gsl_util> // for narrow_cast
23
-
24
- #include <algorithm> // for transform, lexicographical_compare
25
- #include <array> // for array
26
- #include <cstddef> // for std::ptrdiff_t, size_t, nullptr_t
27
- #include <cstdint> // for PTRDIFF_MAX
28
- #include <functional> // for divides, multiplies, minus, negate, plus
29
- #include <initializer_list> // for initializer_list
30
- #include <iterator> // for iterator, random_access_iterator_tag
31
- #include <limits> // for numeric_limits
32
- #include <new>
33
- #include <numeric>
34
- #include <stdexcept>
35
- #include <string> // for basic_string
36
- #include <type_traits> // for enable_if_t, remove_cv_t, is_same, is_co...
37
- #include <utility>
38
-
39
- #if defined(_MSC_VER) && !defined(__clang__)
40
-
41
- // turn off some warnings that are noisy about our Expects statements
42
- #pragma warning(push)
43
- #pragma warning(disable : 4127) // conditional expression is constant
44
- #pragma warning(disable : 4702) // unreachable code
45
-
46
- // Turn MSVC /analyze rules that generate too much noise. TODO: fix in the tool.
47
- #pragma warning(disable : 26495) // uninitalized member when constructor calls constructor
48
- #pragma warning(disable : 26473) // in some instantiations we cast to the same type
49
- #pragma warning(disable : 26490) // TODO: bug in parser - attributes and templates
50
- #pragma warning(disable : 26465) // TODO: bug - suppression does not work on template functions
51
- #pragma warning(disable : 4996) // use of function or classes marked [[deprecated]]
52
-
53
- #endif // _MSC_VER
54
-
55
- #if defined(__GNUC__) || defined(__clang__)
56
- #pragma GCC diagnostic push
57
- #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
58
- #endif
59
-
60
- // GCC 7 does not like the signed unsigned missmatch (size_t std::ptrdiff_t)
61
- // While there is a conversion from signed to unsigned, it happens at
62
- // compiletime, so the compiler wouldn't have to warn indiscriminently, but
63
- // could check if the source value actually doesn't fit into the target type
64
- // and only warn in those cases.
65
- #if defined(__GNUC__) && __GNUC__ > 6
66
- #pragma GCC diagnostic push
67
- #pragma GCC diagnostic ignored "-Wsign-conversion"
68
- #endif
69
-
70
- namespace gsl
71
- {
72
-
73
- /*
74
- ** begin definitions of index and bounds
75
- */
76
- namespace details
77
- {
78
- template <typename SizeType>
79
- struct [[deprecated]] SizeTypeTraits
80
- {
81
- static const SizeType max_value = std::numeric_limits<SizeType>::max();
82
- };
83
-
84
- template <typename... Ts>
85
- class [[deprecated]] are_integral : public std::integral_constant<bool, true>
86
- {
87
- };
88
-
89
- template <typename T, typename... Ts>
90
- class [[deprecated]] are_integral<T, Ts...>
91
- : public std::integral_constant<bool,
92
- std::is_integral<T>::value && are_integral<Ts...>::value>
93
- {
94
- };
95
- } // namespace details
96
-
97
- template <std::size_t Rank>
98
- class [[deprecated]] multi_span_index final {
99
- static_assert(Rank > 0, "Rank must be greater than 0!");
100
-
101
- template <std::size_t OtherRank>
102
- friend class multi_span_index;
103
-
104
- public:
105
- static const std::size_t rank = Rank;
106
- using value_type = std::ptrdiff_t;
107
- using size_type = value_type;
108
- using reference = std::add_lvalue_reference_t<value_type>;
109
- using const_reference = std::add_lvalue_reference_t<std::add_const_t<value_type>>;
110
-
111
- constexpr multi_span_index() noexcept {}
112
-
113
- constexpr multi_span_index(const value_type(&values)[Rank]) noexcept
114
- {
115
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
116
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
117
- std::copy(values, values + Rank, elems);
118
- }
119
-
120
- template <typename... Ts, typename = std::enable_if_t<(sizeof...(Ts) == Rank) &&
121
- details::are_integral<Ts...>::value>>
122
- constexpr multi_span_index(Ts... ds) noexcept : elems{narrow_cast<value_type>(ds)...}
123
- {}
124
-
125
- constexpr multi_span_index(const multi_span_index& other) noexcept = default;
126
-
127
- constexpr multi_span_index& operator=(const multi_span_index& rhs) noexcept = default;
128
-
129
- // Preconditions: component_idx < rank
130
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
131
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
132
- constexpr reference operator[](std::size_t component_idx)
133
- {
134
- Expects(component_idx < Rank); // Component index must be less than rank
135
- return elems[component_idx];
136
- }
137
-
138
- // Preconditions: component_idx < rank
139
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
140
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
141
- constexpr const_reference operator[](std::size_t component_idx) const
142
- {
143
- Expects(component_idx < Rank); // Component index must be less than rank
144
- return elems[component_idx];
145
- }
146
-
147
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
148
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
149
- constexpr bool operator==(const multi_span_index& rhs) const
150
- {
151
- return std::equal(elems, elems + rank, rhs.elems);
152
- }
153
-
154
- constexpr bool operator!=(const multi_span_index& rhs) const { return !(*this == rhs); }
155
-
156
- constexpr multi_span_index operator+() const noexcept { return *this; }
157
-
158
- constexpr multi_span_index operator-() const
159
- {
160
- multi_span_index ret = *this;
161
- std::transform(ret, ret + rank, ret, std::negate<value_type>{});
162
- return ret;
163
- }
164
-
165
- constexpr multi_span_index operator+(const multi_span_index& rhs) const
166
- {
167
- multi_span_index ret = *this;
168
- ret += rhs;
169
- return ret;
170
- }
171
-
172
- constexpr multi_span_index operator-(const multi_span_index& rhs) const
173
- {
174
- multi_span_index ret = *this;
175
- ret -= rhs;
176
- return ret;
177
- }
178
-
179
- constexpr multi_span_index& operator+=(const multi_span_index& rhs)
180
- {
181
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
182
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
183
- std::transform(elems, elems + rank, rhs.elems, elems, std::plus<value_type>{});
184
- return *this;
185
- }
186
-
187
- constexpr multi_span_index& operator-=(const multi_span_index& rhs)
188
- {
189
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
190
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
191
- std::transform(elems, elems + rank, rhs.elems, elems, std::minus<value_type>{});
192
- return *this;
193
- }
194
-
195
- constexpr multi_span_index operator*(value_type v) const
196
- {
197
- multi_span_index ret = *this;
198
- ret *= v;
199
- return ret;
200
- }
201
-
202
- constexpr multi_span_index operator/(value_type v) const
203
- {
204
- multi_span_index ret = *this;
205
- ret /= v;
206
- return ret;
207
- }
208
-
209
- friend constexpr multi_span_index operator*(value_type v, const multi_span_index& rhs)
210
- {
211
- return rhs * v;
212
- }
213
-
214
- constexpr multi_span_index& operator*=(value_type v)
215
- {
216
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
217
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
218
- std::transform(elems, elems + rank, elems,
219
- [v](value_type x) { return std::multiplies<value_type>{}(x, v); });
220
- return *this;
221
- }
222
-
223
- constexpr multi_span_index& operator/=(value_type v)
224
- {
225
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
226
- GSL_SUPPRESS(bounds.3) // NO-FORMAT: attribute
227
- std::transform(elems, elems + rank, elems,
228
- [v](value_type x) { return std::divides<value_type>{}(x, v); });
229
- return *this;
230
- }
231
-
232
- private:
233
- value_type elems[Rank] = {};
234
- };
235
-
236
- #if !defined(_MSC_VER) || _MSC_VER >= 1910
237
-
238
- struct [[deprecated]] static_bounds_dynamic_range_t
239
- {
240
- template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
241
- constexpr operator T() const noexcept
242
- {
243
- return narrow_cast<T>(-1);
244
- }
245
- };
246
-
247
- constexpr bool operator==(static_bounds_dynamic_range_t, static_bounds_dynamic_range_t) noexcept
248
- {
249
- return true;
250
- }
251
-
252
- constexpr bool operator!=(static_bounds_dynamic_range_t, static_bounds_dynamic_range_t) noexcept
253
- {
254
- return false;
255
- }
256
-
257
- template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
258
- constexpr bool operator==(static_bounds_dynamic_range_t, T other) noexcept
259
- {
260
- return narrow_cast<T>(-1) == other;
261
- }
262
-
263
- template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
264
- constexpr bool operator==(T left, static_bounds_dynamic_range_t right) noexcept
265
- {
266
- return right == left;
267
- }
268
-
269
- template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
270
- constexpr bool operator!=(static_bounds_dynamic_range_t, T other) noexcept
271
- {
272
- return narrow_cast<T>(-1) != other;
273
- }
274
-
275
- template <typename T, typename = std::enable_if_t<std::is_integral<T>::value>>
276
- constexpr bool operator!=(T left, static_bounds_dynamic_range_t right) noexcept
277
- {
278
- return right != left;
279
- }
280
-
281
- constexpr static_bounds_dynamic_range_t dynamic_range{};
282
- #else
283
- const std::ptrdiff_t dynamic_range = -1;
284
- #endif
285
-
286
- struct [[deprecated]] generalized_mapping_tag
287
- {
288
- };
289
- struct[[deprecated]] contiguous_mapping_tag : generalized_mapping_tag{};
290
-
291
- namespace details
292
- {
293
-
294
- template <std::ptrdiff_t Left, std::ptrdiff_t Right>
295
- struct [[deprecated]] LessThan
296
- {
297
- static const bool value = Left < Right;
298
- };
299
-
300
- template <std::ptrdiff_t... Ranges>
301
- struct [[deprecated]] BoundsRanges {
302
- using size_type = std::ptrdiff_t;
303
- static const size_type Depth = 0;
304
- static const size_type DynamicNum = 0;
305
- static const size_type CurrentRange = 1;
306
- static const size_type TotalSize = 1;
307
-
308
- // TODO : following signature is for work around VS bug
309
- template <typename OtherRange>
310
- constexpr BoundsRanges(const OtherRange&, bool /* firstLevel */)
311
- {}
312
-
313
- constexpr BoundsRanges(const std::ptrdiff_t* const) {}
314
- constexpr BoundsRanges() noexcept = default;
315
-
316
- template <typename T, std::size_t Dim>
317
- constexpr void serialize(T&) const
318
- {}
319
-
320
- template <typename T, std::size_t Dim>
321
- constexpr size_type linearize(const T&) const
322
- {
323
- return 0;
324
- }
325
-
326
- template <typename T, std::size_t Dim>
327
- constexpr size_type contains(const T&) const
328
- {
329
- return -1;
330
- }
331
-
332
- constexpr size_type elementNum(std::size_t) const noexcept { return 0; }
333
-
334
- constexpr size_type totalSize() const noexcept { return TotalSize; }
335
-
336
- constexpr bool operator==(const BoundsRanges&) const noexcept { return true; }
337
- };
338
-
339
- template <std::ptrdiff_t... RestRanges>
340
- struct[[deprecated]] BoundsRanges<dynamic_range, RestRanges...> : BoundsRanges<RestRanges...>
341
- {
342
- using Base = BoundsRanges<RestRanges...>;
343
- using size_type = std::ptrdiff_t;
344
- static const std::size_t Depth = Base::Depth + 1;
345
- static const std::size_t DynamicNum = Base::DynamicNum + 1;
346
- static const size_type CurrentRange = dynamic_range;
347
- static const size_type TotalSize = dynamic_range;
348
-
349
- private:
350
- size_type m_bound;
351
-
352
- public:
353
- GSL_SUPPRESS(
354
- f.23) // NO-FORMAT: attribute // this pointer type is cannot be assigned nullptr - issue in not_null
355
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
356
- constexpr BoundsRanges(const std::ptrdiff_t* const arr)
357
- : Base(arr + 1), m_bound(*arr * this->Base::totalSize())
358
- {
359
- Expects(0 <= *arr);
360
- }
361
-
362
- constexpr BoundsRanges() noexcept : m_bound(0) {}
363
-
364
- template <std::ptrdiff_t OtherRange, std::ptrdiff_t... RestOtherRanges>
365
- constexpr BoundsRanges(const BoundsRanges<OtherRange, RestOtherRanges...>& other,
366
- bool /* firstLevel */ = true)
367
- : Base(static_cast<const BoundsRanges<RestOtherRanges...>&>(other), false)
368
- , m_bound(other.totalSize())
369
- {}
370
-
371
- template <typename T, std::size_t Dim = 0>
372
- constexpr void serialize(T & arr) const
373
- {
374
- arr[Dim] = elementNum();
375
- this->Base::template serialize<T, Dim + 1>(arr);
376
- }
377
-
378
- template <typename T, std::size_t Dim = 0>
379
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
380
- constexpr size_type linearize(const T& arr) const
381
- {
382
- const size_type index = this->Base::totalSize() * arr[Dim];
383
- Expects(index < m_bound);
384
- return index + this->Base::template linearize<T, Dim + 1>(arr);
385
- }
386
-
387
- template <typename T, std::size_t Dim = 0>
388
- constexpr size_type contains(const T& arr) const
389
- {
390
- const std::ptrdiff_t last = this->Base::template contains<T, Dim + 1>(arr);
391
- if (last == -1) return -1;
392
- const std::ptrdiff_t cur = this->Base::totalSize() * arr[Dim];
393
- return cur < m_bound ? cur + last : -1;
394
- }
395
-
396
- GSL_SUPPRESS(
397
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
398
- constexpr size_type totalSize() const noexcept { return m_bound; }
399
-
400
- GSL_SUPPRESS(
401
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
402
- constexpr size_type elementNum() const noexcept
403
- {
404
- return totalSize() / this->Base::totalSize();
405
- }
406
-
407
- GSL_SUPPRESS(
408
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
409
- constexpr size_type elementNum(std::size_t dim) const noexcept
410
- {
411
- if (dim > 0)
412
- return this->Base::elementNum(dim - 1);
413
- else
414
- return elementNum();
415
- }
416
-
417
- constexpr bool operator==(const BoundsRanges& rhs) const noexcept
418
- {
419
- return m_bound == rhs.m_bound &&
420
- static_cast<const Base&>(*this) == static_cast<const Base&>(rhs);
421
- }
422
- };
423
-
424
- template <std::ptrdiff_t CurRange, std::ptrdiff_t... RestRanges>
425
- struct[[deprecated]] BoundsRanges<CurRange, RestRanges...> : BoundsRanges<RestRanges...>
426
- {
427
- using Base = BoundsRanges<RestRanges...>;
428
- using size_type = std::ptrdiff_t;
429
- static const std::size_t Depth = Base::Depth + 1;
430
- static const std::size_t DynamicNum = Base::DynamicNum;
431
- static const size_type CurrentRange = CurRange;
432
- static const size_type TotalSize =
433
- Base::TotalSize == dynamic_range ? dynamic_range : CurrentRange * Base::TotalSize;
434
-
435
- constexpr BoundsRanges(const std::ptrdiff_t* const arr) : Base(arr) {}
436
- constexpr BoundsRanges() = default;
437
-
438
- template <std::ptrdiff_t OtherRange, std::ptrdiff_t... RestOtherRanges>
439
- constexpr BoundsRanges(const BoundsRanges<OtherRange, RestOtherRanges...>& other,
440
- bool firstLevel = true)
441
- : Base(static_cast<const BoundsRanges<RestOtherRanges...>&>(other), false)
442
- {
443
- GSL_SUPPRESS(type.4) // NO-FORMAT: attribute // TODO: false positive
444
- (void) firstLevel;
445
- }
446
-
447
- template <typename T, std::size_t Dim = 0>
448
- constexpr void serialize(T & arr) const
449
- {
450
- arr[Dim] = elementNum();
451
- this->Base::template serialize<T, Dim + 1>(arr);
452
- }
453
-
454
- template <typename T, std::size_t Dim = 0>
455
- constexpr size_type linearize(const T& arr) const
456
- {
457
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
458
- Expects(arr[Dim] >= 0 && arr[Dim] < CurrentRange); // Index is out of range
459
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
460
- const std::ptrdiff_t d = arr[Dim];
461
- return this->Base::totalSize() * d + this->Base::template linearize<T, Dim + 1>(arr);
462
- }
463
-
464
- template <typename T, std::size_t Dim = 0>
465
- constexpr size_type contains(const T& arr) const
466
- {
467
- if (arr[Dim] >= CurrentRange) return -1;
468
- const size_type last = this->Base::template contains<T, Dim + 1>(arr);
469
- if (last == -1) return -1;
470
- return this->Base::totalSize() * arr[Dim] + last;
471
- }
472
-
473
- GSL_SUPPRESS(
474
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
475
- constexpr size_type totalSize() const noexcept
476
- {
477
- return CurrentRange * this->Base::totalSize();
478
- }
479
-
480
- GSL_SUPPRESS(
481
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
482
- constexpr size_type elementNum() const noexcept { return CurrentRange; }
483
-
484
- GSL_SUPPRESS(
485
- c.128) // NO-FORMAT: attribute // no pointers to BoundsRanges should be ever used
486
- constexpr size_type elementNum(std::size_t dim) const noexcept
487
- {
488
- if (dim > 0)
489
- return this->Base::elementNum(dim - 1);
490
- else
491
- return elementNum();
492
- }
493
-
494
- constexpr bool operator==(const BoundsRanges& rhs) const noexcept
495
- {
496
- return static_cast<const Base&>(*this) == static_cast<const Base&>(rhs);
497
- }
498
- };
499
-
500
- template <typename SourceType, typename TargetType>
501
- struct[[deprecated]] BoundsRangeConvertible
502
- : public std::integral_constant<bool, (SourceType::TotalSize >= TargetType::TotalSize ||
503
- TargetType::TotalSize == dynamic_range ||
504
- SourceType::TotalSize == dynamic_range ||
505
- TargetType::TotalSize == 0)>{};
506
-
507
- template <typename TypeChain>
508
- struct [[deprecated]] TypeListIndexer {
509
- const TypeChain& obj_;
510
- constexpr TypeListIndexer(const TypeChain& obj) : obj_(obj) {}
511
-
512
- template <std::size_t N>
513
- constexpr const TypeChain& getObj(std::true_type)
514
- {
515
- return obj_;
516
- }
517
-
518
- template <std::size_t N, typename MyChain = TypeChain,
519
- typename MyBase = typename MyChain::Base>
520
- constexpr auto getObj(std::false_type)
521
- ->decltype(TypeListIndexer<MyBase>(static_cast<const MyBase&>(obj_)).template get<N>())
522
- {
523
- return TypeListIndexer<MyBase>(static_cast<const MyBase&>(obj_)).template get<N>();
524
- }
525
-
526
- template <std::size_t N>
527
- constexpr auto get()->decltype(getObj<N - 1>(std::integral_constant<bool, N == 0>()))
528
- {
529
- return getObj<N - 1>(std::integral_constant<bool, N == 0>());
530
- }
531
- };
532
-
533
- template <typename TypeChain>
534
- constexpr TypeListIndexer<TypeChain> createTypeListIndexer(const TypeChain& obj)
535
- {
536
- return TypeListIndexer<TypeChain>(obj);
537
- }
538
-
539
- template <std::size_t Rank, bool Enabled = (Rank > 1),
540
- typename Ret = std::enable_if_t<Enabled, multi_span_index<Rank - 1>>>
541
- constexpr Ret shift_left(const multi_span_index<Rank>& other) noexcept
542
- {
543
- Ret ret{};
544
- for (std::size_t i = 0; i < Rank - 1; ++i)
545
- {
546
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
547
- ret[i] = other[i + 1];
548
- }
549
- return ret;
550
- }
551
- } // namespace details
552
-
553
- template <typename IndexType>
554
- class [[deprecated]] bounds_iterator;
555
-
556
- template <std::ptrdiff_t... Ranges>
557
- class [[deprecated]] static_bounds {
558
- public:
559
- static_bounds(const details::BoundsRanges<Ranges...>&) {}
560
- };
561
-
562
- template <std::ptrdiff_t FirstRange, std::ptrdiff_t... RestRanges>
563
- class[[deprecated]] static_bounds<FirstRange, RestRanges...>
564
- {
565
- using MyRanges = details::BoundsRanges<FirstRange, RestRanges...>;
566
-
567
- MyRanges m_ranges;
568
- constexpr static_bounds(const MyRanges& range) noexcept : m_ranges(range) {}
569
-
570
- template <std::ptrdiff_t... OtherRanges>
571
- friend class static_bounds;
572
-
573
- public:
574
- static const std::size_t rank = MyRanges::Depth;
575
- static const std::size_t dynamic_rank = MyRanges::DynamicNum;
576
- static const std::ptrdiff_t static_size = MyRanges::TotalSize;
577
-
578
- using size_type = std::ptrdiff_t;
579
- using index_type = multi_span_index<rank>;
580
- using const_index_type = std::add_const_t<index_type>;
581
- using iterator = bounds_iterator<const_index_type>;
582
- using const_iterator = bounds_iterator<const_index_type>;
583
- using difference_type = std::ptrdiff_t;
584
- using sliced_type = static_bounds<RestRanges...>;
585
- using mapping_type = contiguous_mapping_tag;
586
-
587
- constexpr static_bounds() /*noexcept*/ = default;
588
-
589
- template <typename SourceType, typename TargetType, std::size_t Rank>
590
- struct BoundsRangeConvertible2;
591
-
592
- template <std::size_t Rank, typename SourceType, typename TargetType,
593
- typename Ret = BoundsRangeConvertible2<typename SourceType::Base,
594
- typename TargetType::Base, Rank>>
595
- static auto helpBoundsRangeConvertible(SourceType, TargetType, std::true_type)->Ret;
596
-
597
- template <std::size_t Rank, typename SourceType, typename TargetType>
598
- static auto helpBoundsRangeConvertible(SourceType, TargetType, ...)->std::false_type;
599
-
600
- template <typename SourceType, typename TargetType, std::size_t Rank>
601
- struct BoundsRangeConvertible2
602
- : decltype(helpBoundsRangeConvertible<Rank - 1>(
603
- SourceType(), TargetType(),
604
- std::integral_constant<bool,
605
- SourceType::Depth == TargetType::Depth &&
606
- (SourceType::CurrentRange == TargetType::CurrentRange ||
607
- TargetType::CurrentRange == dynamic_range ||
608
- SourceType::CurrentRange == dynamic_range)>()))
609
- {
610
- };
611
-
612
- template <typename SourceType, typename TargetType>
613
- struct BoundsRangeConvertible2<SourceType, TargetType, 0> : std::true_type
614
- {
615
- };
616
-
617
- template <typename SourceType, typename TargetType, std::ptrdiff_t Rank = TargetType::Depth>
618
- struct BoundsRangeConvertible
619
- : decltype(helpBoundsRangeConvertible<Rank - 1>(
620
- SourceType(), TargetType(),
621
- std::integral_constant<bool,
622
- SourceType::Depth == TargetType::Depth &&
623
- (!details::LessThan<SourceType::CurrentRange,
624
- TargetType::CurrentRange>::value ||
625
- TargetType::CurrentRange == dynamic_range ||
626
- SourceType::CurrentRange == dynamic_range)>()))
627
- {
628
- };
629
-
630
- template <typename SourceType, typename TargetType>
631
- struct BoundsRangeConvertible<SourceType, TargetType, 0> : std::true_type
632
- {
633
- };
634
-
635
- template <std::ptrdiff_t... Ranges,
636
- typename = std::enable_if_t<details::BoundsRangeConvertible<
637
- details::BoundsRanges<Ranges...>,
638
- details::BoundsRanges<FirstRange, RestRanges...>>::value>>
639
- constexpr static_bounds(const static_bounds<Ranges...>& other) : m_ranges(other.m_ranges)
640
- {
641
- Expects((MyRanges::DynamicNum == 0 && details::BoundsRanges<Ranges...>::DynamicNum == 0) ||
642
- MyRanges::DynamicNum > 0 || other.m_ranges.totalSize() >= m_ranges.totalSize());
643
- }
644
-
645
- constexpr static_bounds(std::initializer_list<size_type> il) : m_ranges(il.begin())
646
- {
647
- // Size of the initializer list must match the rank of the array
648
- Expects((MyRanges::DynamicNum == 0 && il.size() == 1 && *il.begin() == static_size) ||
649
- MyRanges::DynamicNum == il.size());
650
- // Size of the range must be less than the max element of the size type
651
- Expects(m_ranges.totalSize() <= PTRDIFF_MAX);
652
- }
653
-
654
- constexpr sliced_type slice() const noexcept
655
- {
656
- return sliced_type{static_cast<const details::BoundsRanges<RestRanges...>&>(m_ranges)};
657
- }
658
-
659
- constexpr size_type stride() const noexcept { return rank > 1 ? slice().size() : 1; }
660
-
661
- constexpr size_type size() const noexcept { return m_ranges.totalSize(); }
662
-
663
- constexpr size_type total_size() const noexcept { return m_ranges.totalSize(); }
664
-
665
- constexpr size_type linearize(const index_type& idx) const { return m_ranges.linearize(idx); }
666
-
667
- constexpr bool contains(const index_type& idx) const noexcept
668
- {
669
- return m_ranges.contains(idx) != -1;
670
- }
671
-
672
- constexpr size_type operator[](std::size_t idx) const noexcept
673
- {
674
- return m_ranges.elementNum(idx);
675
- }
676
-
677
- template <std::size_t Dim = 0>
678
- constexpr size_type extent() const noexcept
679
- {
680
- static_assert(Dim < rank,
681
- "dimension should be less than rank (dimension count starts from 0)");
682
- return details::createTypeListIndexer(m_ranges).template get<Dim>().elementNum();
683
- }
684
-
685
- template <typename IntType>
686
- constexpr size_type extent(IntType dim) const
687
- {
688
- static_assert(std::is_integral<IntType>::value,
689
- "Dimension parameter must be supplied as an integral type.");
690
- auto real_dim = narrow_cast<std::size_t>(dim);
691
- Expects(real_dim < rank);
692
-
693
- return m_ranges.elementNum(real_dim);
694
- }
695
-
696
- constexpr index_type index_bounds() const noexcept
697
- {
698
- size_type extents[rank] = {};
699
- m_ranges.serialize(extents);
700
- return {extents};
701
- }
702
-
703
- template <std::ptrdiff_t... Ranges>
704
- constexpr bool operator==(const static_bounds<Ranges...>& rhs) const noexcept
705
- {
706
- return this->size() == rhs.size();
707
- }
708
-
709
- template <std::ptrdiff_t... Ranges>
710
- constexpr bool operator!=(const static_bounds<Ranges...>& rhs) const noexcept
711
- {
712
- return !(*this == rhs);
713
- }
714
-
715
- constexpr const_iterator begin() const noexcept { return const_iterator(*this, index_type{}); }
716
-
717
- constexpr const_iterator end() const noexcept
718
- {
719
- return const_iterator(*this, this->index_bounds());
720
- }
721
- };
722
-
723
- template <std::size_t Rank>
724
- class [[deprecated]] strided_bounds {
725
- template <std::size_t OtherRank>
726
- friend class strided_bounds;
727
-
728
- public:
729
- static const std::size_t rank = Rank;
730
- using value_type = std::ptrdiff_t;
731
- using reference = std::add_lvalue_reference_t<value_type>;
732
- using const_reference = std::add_const_t<reference>;
733
- using size_type = value_type;
734
- using difference_type = value_type;
735
- using index_type = multi_span_index<rank>;
736
- using const_index_type = std::add_const_t<index_type>;
737
- using iterator = bounds_iterator<const_index_type>;
738
- using const_iterator = bounds_iterator<const_index_type>;
739
- static const value_type dynamic_rank = rank;
740
- static const value_type static_size = dynamic_range;
741
- using sliced_type = std::conditional_t<rank != 0, strided_bounds<rank - 1>, void>;
742
- using mapping_type = generalized_mapping_tag;
743
-
744
- constexpr strided_bounds(const strided_bounds&) noexcept = default;
745
-
746
- constexpr strided_bounds& operator=(const strided_bounds&) noexcept = default;
747
-
748
- constexpr strided_bounds(const value_type(&values)[rank], index_type strides)
749
- : m_extents(values), m_strides(std::move(strides))
750
- {}
751
-
752
- constexpr strided_bounds(const index_type& extents, const index_type& strides) noexcept
753
- : m_extents(extents), m_strides(strides)
754
- {}
755
-
756
- constexpr index_type strides() const noexcept { return m_strides; }
757
-
758
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
759
- constexpr size_type total_size() const noexcept
760
- {
761
- size_type ret = 0;
762
- for (std::size_t i = 0; i < rank; ++i) { ret += (m_extents[i] - 1) * m_strides[i]; }
763
- return ret + 1;
764
- }
765
-
766
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
767
- constexpr size_type size() const noexcept
768
- {
769
- size_type ret = 1;
770
- for (std::size_t i = 0; i < rank; ++i) { ret *= m_extents[i]; }
771
- return ret;
772
- }
773
-
774
- constexpr bool contains(const index_type& idx) const noexcept
775
- {
776
- for (std::size_t i = 0; i < rank; ++i)
777
- {
778
- if (idx[i] < 0 || idx[i] >= m_extents[i]) return false;
779
- }
780
- return true;
781
- }
782
-
783
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
784
- constexpr size_type linearize(const index_type& idx) const
785
- {
786
- size_type ret = 0;
787
- for (std::size_t i = 0; i < rank; i++)
788
- {
789
- Expects(idx[i] < m_extents[i]); // index is out of bounds of the array
790
- ret += idx[i] * m_strides[i];
791
- }
792
- return ret;
793
- }
794
-
795
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
796
- constexpr size_type stride() const noexcept { return m_strides[0]; }
797
-
798
- template <bool Enabled = (rank > 1), typename Ret = std::enable_if_t<Enabled, sliced_type>>
799
- constexpr sliced_type slice() const
800
- {
801
- return {details::shift_left(m_extents), details::shift_left(m_strides)};
802
- }
803
-
804
- template <std::size_t Dim = 0>
805
-
806
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
807
- constexpr size_type extent() const noexcept
808
- {
809
- static_assert(Dim < Rank,
810
- "dimension should be less than rank (dimension count starts from 0)");
811
- return m_extents[Dim];
812
- }
813
-
814
- constexpr index_type index_bounds() const noexcept { return m_extents; }
815
-
816
- constexpr const_iterator begin() const noexcept { return const_iterator{*this, index_type{}}; }
817
-
818
- constexpr const_iterator end() const noexcept { return const_iterator{*this, index_bounds()}; }
819
-
820
- private:
821
- index_type m_extents;
822
- index_type m_strides;
823
- };
824
-
825
- template <typename T>
826
- struct[[deprecated]] is_bounds : std::integral_constant<bool, false>{};
827
- template <std::ptrdiff_t... Ranges>
828
- struct[[deprecated]] is_bounds<static_bounds<Ranges...>> : std::integral_constant<bool, true>{};
829
- template <std::size_t Rank>
830
- struct[[deprecated]] is_bounds<strided_bounds<Rank>> : std::integral_constant<bool, true>{};
831
-
832
- template <typename IndexType>
833
- class [[deprecated]] bounds_iterator {
834
- public:
835
- static const std::size_t rank = IndexType::rank;
836
- using iterator_category = std::random_access_iterator_tag;
837
- using value_type = IndexType;
838
- using difference_type = std::ptrdiff_t;
839
- using pointer = value_type*;
840
- using reference = value_type&;
841
- using index_type = value_type;
842
- using index_size_type = typename IndexType::value_type;
843
- template <typename Bounds>
844
- explicit bounds_iterator(const Bounds& bnd, value_type curr) noexcept
845
- : boundary_(bnd.index_bounds()), curr_(std::move(curr))
846
- {
847
- static_assert(is_bounds<Bounds>::value, "Bounds type must be provided");
848
- }
849
-
850
- constexpr reference operator*() const noexcept { return curr_; }
851
-
852
- constexpr pointer operator->() const noexcept { return &curr_; }
853
-
854
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
855
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
856
- constexpr bounds_iterator& operator++() noexcept
857
-
858
- {
859
- for (std::size_t i = rank; i-- > 0;)
860
- {
861
- if (curr_[i] < boundary_[i] - 1)
862
- {
863
- curr_[i]++;
864
- return *this;
865
- }
866
- curr_[i] = 0;
867
- }
868
- // If we're here we've wrapped over - set to past-the-end.
869
- curr_ = boundary_;
870
- return *this;
871
- }
872
-
873
- constexpr bounds_iterator operator++(int) noexcept
874
- {
875
- auto ret = *this;
876
- ++(*this);
877
- return ret;
878
- }
879
-
880
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
881
- constexpr bounds_iterator& operator--()
882
- {
883
- if (!less(curr_, boundary_))
884
- {
885
- // if at the past-the-end, set to last element
886
- for (std::size_t i = 0; i < rank; ++i) { curr_[i] = boundary_[i] - 1; }
887
- return *this;
888
- }
889
- for (std::size_t i = rank; i-- > 0;)
890
- {
891
- if (curr_[i] >= 1)
892
- {
893
- curr_[i]--;
894
- return *this;
895
- }
896
- curr_[i] = boundary_[i] - 1;
897
- }
898
- // If we're here the preconditions were violated
899
- // "pre: there exists s such that r == ++s"
900
- Expects(false);
901
- return *this;
902
- }
903
-
904
- constexpr bounds_iterator operator--(int) noexcept
905
- {
906
- auto ret = *this;
907
- --(*this);
908
- return ret;
909
- }
910
-
911
- constexpr bounds_iterator operator+(difference_type n) const noexcept
912
- {
913
- bounds_iterator ret{*this};
914
- return ret += n;
915
- }
916
-
917
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
918
- constexpr bounds_iterator& operator+=(difference_type n)
919
- {
920
- auto linear_idx = linearize(curr_) + n;
921
- std::remove_const_t<value_type> stride = 0;
922
- stride[rank - 1] = 1;
923
- for (std::size_t i = rank - 1; i-- > 0;) { stride[i] = stride[i + 1] * boundary_[i + 1]; }
924
- for (std::size_t i = 0; i < rank; ++i)
925
- {
926
- curr_[i] = linear_idx / stride[i];
927
- linear_idx = linear_idx % stride[i];
928
- }
929
- // index is out of bounds of the array
930
- Expects(!less(curr_, index_type{}) && !less(boundary_, curr_));
931
- return *this;
932
- }
933
-
934
- constexpr bounds_iterator operator-(difference_type n) const noexcept
935
- {
936
- bounds_iterator ret{*this};
937
- return ret -= n;
938
- }
939
-
940
- constexpr bounds_iterator& operator-=(difference_type n) noexcept { return *this += -n; }
941
-
942
- constexpr difference_type operator-(const bounds_iterator& rhs) const noexcept
943
- {
944
- return linearize(curr_) - linearize(rhs.curr_);
945
- }
946
-
947
- constexpr value_type operator[](difference_type n) const noexcept { return *(*this + n); }
948
-
949
- constexpr bool operator==(const bounds_iterator& rhs) const noexcept
950
- {
951
- return curr_ == rhs.curr_;
952
- }
953
-
954
- constexpr bool operator!=(const bounds_iterator& rhs) const noexcept { return !(*this == rhs); }
955
-
956
- constexpr bool operator<(const bounds_iterator& rhs) const noexcept
957
- {
958
- return less(curr_, rhs.curr_);
959
- }
960
-
961
- constexpr bool operator<=(const bounds_iterator& rhs) const noexcept { return !(rhs < *this); }
962
-
963
- constexpr bool operator>(const bounds_iterator& rhs) const noexcept { return rhs < *this; }
964
-
965
- constexpr bool operator>=(const bounds_iterator& rhs) const noexcept { return !(rhs > *this); }
966
-
967
- void swap(bounds_iterator & rhs) noexcept
968
- {
969
- std::swap(boundary_, rhs.boundary_);
970
- std::swap(curr_, rhs.curr_);
971
- }
972
-
973
- private:
974
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
975
- constexpr bool less(index_type & one, index_type & other) const noexcept
976
- {
977
- for (std::size_t i = 0; i < rank; ++i)
978
- {
979
- if (one[i] < other[i]) return true;
980
- }
981
- return false;
982
- }
983
-
984
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
985
- constexpr index_size_type linearize(const value_type& idx) const noexcept
986
- {
987
- // TODO: Smarter impl.
988
- // Check if past-the-end
989
- index_size_type multiplier = 1;
990
- index_size_type res = 0;
991
- if (!less(idx, boundary_))
992
- {
993
- res = 1;
994
- for (std::size_t i = rank; i-- > 0;)
995
- {
996
- res += (idx[i] - 1) * multiplier;
997
- multiplier *= boundary_[i];
998
- }
999
- }
1000
- else
1001
- {
1002
- for (std::size_t i = rank; i-- > 0;)
1003
- {
1004
- res += idx[i] * multiplier;
1005
- multiplier *= boundary_[i];
1006
- }
1007
- }
1008
- return res;
1009
- }
1010
-
1011
- value_type boundary_;
1012
- std::remove_const_t<value_type> curr_;
1013
- };
1014
-
1015
- template <typename IndexType>
1016
- bounds_iterator<IndexType> operator+(typename bounds_iterator<IndexType>::difference_type n,
1017
- const bounds_iterator<IndexType>& rhs) noexcept
1018
- {
1019
- return rhs + n;
1020
- }
1021
-
1022
- namespace details
1023
- {
1024
- template <typename Bounds>
1025
- constexpr std::enable_if_t<
1026
- std::is_same<typename Bounds::mapping_type, generalized_mapping_tag>::value,
1027
- typename Bounds::index_type>
1028
- make_stride(const Bounds& bnd) noexcept
1029
- {
1030
- return bnd.strides();
1031
- }
1032
-
1033
- // Make a stride vector from bounds, assuming contiguous memory.
1034
- template <typename Bounds>
1035
- constexpr std::enable_if_t<
1036
- std::is_same<typename Bounds::mapping_type, contiguous_mapping_tag>::value,
1037
- typename Bounds::index_type>
1038
- make_stride(const Bounds& bnd) noexcept
1039
- {
1040
- auto extents = bnd.index_bounds();
1041
- typename Bounds::size_type stride[Bounds::rank] = {};
1042
-
1043
- stride[Bounds::rank - 1] = 1;
1044
- for (std::size_t i = 1; i < Bounds::rank; ++i)
1045
- {
1046
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
1047
- GSL_SUPPRESS(bounds.2) // NO-FORMAT: attribute
1048
- stride[Bounds::rank - i - 1] = stride[Bounds::rank - i] * extents[Bounds::rank - i];
1049
- }
1050
- return {stride};
1051
- }
1052
-
1053
- template <typename BoundsSrc, typename BoundsDest>
1054
- void verifyBoundsReshape(const BoundsSrc& src, const BoundsDest& dest)
1055
- {
1056
- static_assert(is_bounds<BoundsSrc>::value && is_bounds<BoundsDest>::value,
1057
- "The src type and dest type must be bounds");
1058
- static_assert(std::is_same<typename BoundsSrc::mapping_type, contiguous_mapping_tag>::value,
1059
- "The source type must be a contiguous bounds");
1060
- static_assert(BoundsDest::static_size == dynamic_range ||
1061
- BoundsSrc::static_size == dynamic_range ||
1062
- BoundsDest::static_size == BoundsSrc::static_size,
1063
- "The source bounds must have same size as dest bounds");
1064
- Expects(src.size() == dest.size());
1065
- }
1066
-
1067
- } // namespace details
1068
-
1069
- template <typename Span>
1070
- class [[deprecated]] contiguous_span_iterator;
1071
- template <typename Span>
1072
- class [[deprecated]] general_span_iterator;
1073
-
1074
- template <std::ptrdiff_t DimSize = dynamic_range>
1075
- struct [[deprecated]] dim_t
1076
- {
1077
- static const std::ptrdiff_t value = DimSize;
1078
- };
1079
- template <>
1080
- struct [[deprecated]] dim_t<dynamic_range>
1081
- {
1082
- static const std::ptrdiff_t value = dynamic_range;
1083
- const std::ptrdiff_t dvalue;
1084
- constexpr dim_t(std::ptrdiff_t size) noexcept : dvalue(size) {}
1085
- };
1086
-
1087
- template <std::ptrdiff_t N, class = std::enable_if_t<(N >= 0)>>
1088
- constexpr dim_t<N> dim() noexcept
1089
- {
1090
- return dim_t<N>();
1091
- }
1092
-
1093
- template <std::ptrdiff_t N = dynamic_range, class = std::enable_if_t<N == dynamic_range>>
1094
- constexpr dim_t<N> dim(std::ptrdiff_t n) noexcept
1095
- {
1096
- return dim_t<>(n);
1097
- }
1098
-
1099
- template <typename ValueType, std::ptrdiff_t FirstDimension = dynamic_range,
1100
- std::ptrdiff_t... RestDimensions>
1101
- class [[deprecated("gsl::multi_span is deprecated because it is not in the C++ Core Guidelines")]] multi_span;
1102
-
1103
- template <typename ValueType, std::size_t Rank>
1104
- class [[deprecated("gsl::strided_span is deprecated because it is not in the C++ Core Guidelines")]] strided_span;
1105
-
1106
- namespace details
1107
- {
1108
- template <typename T, typename = std::true_type>
1109
- struct [[deprecated]] SpanTypeTraits
1110
- {
1111
- using value_type = T;
1112
- using size_type = std::size_t;
1113
- };
1114
-
1115
- template <typename Traits>
1116
- struct [[deprecated]] SpanTypeTraits<
1117
- Traits, typename std::is_reference<typename Traits::span_traits&>::type>
1118
- {
1119
- using value_type = typename Traits::span_traits::value_type;
1120
- using size_type = typename Traits::span_traits::size_type;
1121
- };
1122
-
1123
- template <typename T, std::ptrdiff_t... Ranks>
1124
- struct [[deprecated]] SpanArrayTraits
1125
- {
1126
- using type = multi_span<T, Ranks...>;
1127
- using value_type = T;
1128
- using bounds_type = static_bounds<Ranks...>;
1129
- using pointer = T*;
1130
- using reference = T&;
1131
- };
1132
- template <typename T, std::ptrdiff_t N, std::ptrdiff_t... Ranks>
1133
- struct [[deprecated]] SpanArrayTraits<T[N], Ranks...> : SpanArrayTraits<T, Ranks..., N>
1134
- {
1135
- };
1136
-
1137
- template <typename BoundsType>
1138
- BoundsType newBoundsHelperImpl(std::ptrdiff_t totalSize, std::true_type) // dynamic size
1139
- {
1140
- Expects(totalSize >= 0 && totalSize <= PTRDIFF_MAX);
1141
- return BoundsType{totalSize};
1142
- }
1143
- template <typename BoundsType>
1144
- BoundsType newBoundsHelperImpl(std::ptrdiff_t totalSize, std::false_type) // static size
1145
- {
1146
- Expects(BoundsType::static_size <= totalSize);
1147
- return {};
1148
- }
1149
- template <typename BoundsType>
1150
- BoundsType newBoundsHelper(std::ptrdiff_t totalSize)
1151
- {
1152
- static_assert(BoundsType::dynamic_rank <= 1, "dynamic rank must less or equal to 1");
1153
- return newBoundsHelperImpl<BoundsType>(
1154
- totalSize, std::integral_constant<bool, BoundsType::dynamic_rank == 1>());
1155
- }
1156
-
1157
- struct [[deprecated]] Sep
1158
- {
1159
- };
1160
-
1161
- template <typename T, typename... Args>
1162
- T static_as_multi_span_helper(Sep, Args... args)
1163
- {
1164
- return T{narrow_cast<typename T::size_type>(args)...};
1165
- }
1166
- template <typename T, typename Arg, typename... Args>
1167
- std::enable_if_t<
1168
- !std::is_same<Arg, dim_t<dynamic_range>>::value && !std::is_same<Arg, Sep>::value, T>
1169
- static_as_multi_span_helper(Arg, Args... args)
1170
- {
1171
- return static_as_multi_span_helper<T>(args...);
1172
- }
1173
- template <typename T, typename... Args>
1174
- T static_as_multi_span_helper(dim_t<dynamic_range> val, Args... args)
1175
- {
1176
- return static_as_multi_span_helper<T>(args..., val.dvalue);
1177
- }
1178
-
1179
- template <typename... Dimensions>
1180
- struct [[deprecated]] static_as_multi_span_static_bounds_helper
1181
- {
1182
- using type = static_bounds<(Dimensions::value)...>;
1183
- };
1184
-
1185
- template <typename T>
1186
- struct [[deprecated]] is_multi_span_oracle : std::false_type
1187
- {
1188
- };
1189
-
1190
- template <typename ValueType, std::ptrdiff_t FirstDimension, std::ptrdiff_t... RestDimensions>
1191
- struct [[deprecated]] is_multi_span_oracle<multi_span<ValueType, FirstDimension, RestDimensions...>>
1192
- : std::true_type
1193
- {
1194
- };
1195
-
1196
- template <typename ValueType, std::ptrdiff_t Rank>
1197
- struct [[deprecated]] is_multi_span_oracle<strided_span<ValueType, Rank>> : std::true_type
1198
- {
1199
- };
1200
-
1201
- template <typename T>
1202
- struct [[deprecated]] is_multi_span : is_multi_span_oracle<std::remove_cv_t<T>>
1203
- {
1204
- };
1205
- } // namespace details
1206
-
1207
- template <typename ValueType, std::ptrdiff_t FirstDimension, std::ptrdiff_t... RestDimensions>
1208
- class [[deprecated("gsl::multi_span is deprecated because it is not in the C++ Core Guidelines")]] multi_span {
1209
- // TODO do we still need this?
1210
- template <typename ValueType2, std::ptrdiff_t FirstDimension2,
1211
- std::ptrdiff_t... RestDimensions2>
1212
- friend class multi_span;
1213
-
1214
- public:
1215
- using bounds_type = static_bounds<FirstDimension, RestDimensions...>;
1216
- static const std::size_t Rank = bounds_type::rank;
1217
- using size_type = typename bounds_type::size_type;
1218
- using index_type = typename bounds_type::index_type;
1219
- using value_type = ValueType;
1220
- using const_value_type = std::add_const_t<value_type>;
1221
- using pointer = std::add_pointer_t<value_type>;
1222
- using reference = std::add_lvalue_reference_t<value_type>;
1223
- using iterator = contiguous_span_iterator<multi_span>;
1224
- using const_span = multi_span<const_value_type, FirstDimension, RestDimensions...>;
1225
- using const_iterator = contiguous_span_iterator<const_span>;
1226
- using reverse_iterator = std::reverse_iterator<iterator>;
1227
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
1228
- using sliced_type =
1229
- std::conditional_t<Rank == 1, value_type, multi_span<value_type, RestDimensions...>>;
1230
-
1231
- private:
1232
- pointer data_;
1233
- bounds_type bounds_;
1234
-
1235
- friend iterator;
1236
- friend const_iterator;
1237
-
1238
- public:
1239
- // default constructor - same as constructing from nullptr_t
1240
- GSL_SUPPRESS(type.6) // NO-FORMAT: attribute // TODO: false positive
1241
- constexpr multi_span() noexcept : multi_span(nullptr, bounds_type{})
1242
- {
1243
- static_assert(bounds_type::dynamic_rank != 0 ||
1244
- (bounds_type::dynamic_rank == 0 && bounds_type::static_size == 0),
1245
- "Default construction of multi_span<T> only possible "
1246
- "for dynamic or fixed, zero-length spans.");
1247
- }
1248
-
1249
- // construct from nullptr - get an empty multi_span
1250
- GSL_SUPPRESS(type.6) // NO-FORMAT: attribute // TODO: false positive
1251
- constexpr multi_span(std::nullptr_t) noexcept : multi_span(nullptr, bounds_type{})
1252
- {
1253
- static_assert(bounds_type::dynamic_rank != 0 ||
1254
- (bounds_type::dynamic_rank == 0 && bounds_type::static_size == 0),
1255
- "nullptr_t construction of multi_span<T> only possible "
1256
- "for dynamic or fixed, zero-length spans.");
1257
- }
1258
-
1259
- // construct from nullptr with size of 0 (helps with template function calls)
1260
- template <class IntType, typename = std::enable_if_t<std::is_integral<IntType>::value>>
1261
-
1262
- // GSL_SUPPRESS(type.6) // NO-FORMAT: attribute // TODO: false positive // TODO: parser bug
1263
- constexpr multi_span(std::nullptr_t, IntType size) : multi_span(nullptr, bounds_type{})
1264
- {
1265
- static_assert(bounds_type::dynamic_rank != 0 ||
1266
- (bounds_type::dynamic_rank == 0 && bounds_type::static_size == 0),
1267
- "nullptr_t construction of multi_span<T> only possible "
1268
- "for dynamic or fixed, zero-length spans.");
1269
- Expects(size == 0);
1270
- }
1271
-
1272
- // construct from a single element
1273
-
1274
- GSL_SUPPRESS(type.6) // NO-FORMAT: attribute // TODO: false positive
1275
- constexpr multi_span(reference data) noexcept : multi_span(&data, bounds_type{1})
1276
- {
1277
- static_assert(bounds_type::dynamic_rank > 0 || bounds_type::static_size == 0 ||
1278
- bounds_type::static_size == 1,
1279
- "Construction from a single element only possible "
1280
- "for dynamic or fixed spans of length 0 or 1.");
1281
- }
1282
-
1283
- // prevent constructing from temporaries for single-elements
1284
- constexpr multi_span(value_type &&) = delete;
1285
-
1286
- // construct from pointer + length
1287
- GSL_SUPPRESS(type.6) // NO-FORMAT: attribute // TODO: false positive
1288
- constexpr multi_span(pointer ptr, size_type size) : multi_span(ptr, bounds_type{size}) {}
1289
-
1290
- // construct from pointer + length - multidimensional
1291
- constexpr multi_span(pointer data, bounds_type bounds) : data_(data), bounds_(std::move(bounds))
1292
- {
1293
- Expects((bounds_.size() > 0 && data != nullptr) || bounds_.size() == 0);
1294
- }
1295
-
1296
- // construct from begin,end pointer pair
1297
- template <typename Ptr,
1298
- typename = std::enable_if_t<std::is_convertible<Ptr, pointer>::value &&
1299
- details::LessThan<bounds_type::dynamic_rank, 2>::value>>
1300
- constexpr multi_span(pointer begin, Ptr end)
1301
- : multi_span(begin,
1302
- details::newBoundsHelper<bounds_type>(static_cast<pointer>(end) - begin))
1303
- {
1304
- Expects(begin != nullptr && end != nullptr && begin <= static_cast<pointer>(end));
1305
- }
1306
-
1307
- // construct from n-dimensions static array
1308
- template <typename T, std::size_t N, typename Helper = details::SpanArrayTraits<T, N>>
1309
- constexpr multi_span(T(&arr)[N])
1310
- : multi_span(reinterpret_cast<pointer>(arr), bounds_type{typename Helper::bounds_type{}})
1311
- {
1312
- static_assert(std::is_convertible<typename Helper::value_type(*)[], value_type(*)[]>::value,
1313
- "Cannot convert from source type to target multi_span type.");
1314
- static_assert(std::is_convertible<typename Helper::bounds_type, bounds_type>::value,
1315
- "Cannot construct a multi_span from an array with fewer elements.");
1316
- }
1317
-
1318
- // construct from n-dimensions dynamic array (e.g. new int[m][4])
1319
- // (precedence will be lower than the 1-dimension pointer)
1320
- template <typename T, typename Helper = details::SpanArrayTraits<T, dynamic_range>>
1321
- constexpr multi_span(T* const& data, size_type size)
1322
- : multi_span(reinterpret_cast<pointer>(data), typename Helper::bounds_type{size})
1323
- {
1324
- static_assert(std::is_convertible<typename Helper::value_type(*)[], value_type(*)[]>::value,
1325
- "Cannot convert from source type to target multi_span type.");
1326
- }
1327
-
1328
- // construct from std::array
1329
- template <typename T, std::size_t N>
1330
- constexpr multi_span(std::array<T, N> & arr)
1331
- : multi_span(arr.data(), bounds_type{static_bounds<N>{}})
1332
- {
1333
- static_assert(
1334
- std::is_convertible<T(*)[], typename std::remove_const_t<value_type>(*)[]>::value,
1335
- "Cannot convert from source type to target multi_span type.");
1336
- static_assert(std::is_convertible<static_bounds<N>, bounds_type>::value,
1337
- "You cannot construct a multi_span from a std::array of smaller size.");
1338
- }
1339
-
1340
- // construct from const std::array
1341
- template <typename T, std::size_t N>
1342
- constexpr multi_span(const std::array<T, N>& arr)
1343
- : multi_span(arr.data(), bounds_type{static_bounds<N>{}})
1344
- {
1345
- static_assert(
1346
- std::is_convertible<T(*)[], typename std::remove_const_t<value_type>(*)[]>::value,
1347
- "Cannot convert from source type to target multi_span type.");
1348
- static_assert(std::is_convertible<static_bounds<N>, bounds_type>::value,
1349
- "You cannot construct a multi_span from a std::array of smaller size.");
1350
- }
1351
-
1352
- // prevent constructing from temporary std::array
1353
- template <typename T, std::size_t N>
1354
- constexpr multi_span(std::array<T, N> && arr) = delete;
1355
-
1356
- // construct from containers
1357
- // future: could use contiguous_iterator_traits to identify only contiguous containers
1358
- // type-requirements: container must have .size(), operator[] which are value_type compatible
1359
- template <typename Cont, typename DataType = typename Cont::value_type,
1360
- typename = std::enable_if_t<
1361
- !details::is_multi_span<Cont>::value &&
1362
- std::is_convertible<DataType(*)[], value_type(*)[]>::value &&
1363
- std::is_same<std::decay_t<decltype(std::declval<Cont>().size(),
1364
- *std::declval<Cont>().data())>,
1365
- DataType>::value>>
1366
- constexpr multi_span(Cont & cont)
1367
- : multi_span(static_cast<pointer>(cont.data()),
1368
- details::newBoundsHelper<bounds_type>(narrow_cast<size_type>(cont.size())))
1369
- {}
1370
-
1371
- // prevent constructing from temporary containers
1372
- template <typename Cont, typename DataType = typename Cont::value_type,
1373
- typename = std::enable_if_t<
1374
- !details::is_multi_span<Cont>::value &&
1375
- std::is_convertible<DataType(*)[], value_type(*)[]>::value &&
1376
- std::is_same<std::decay_t<decltype(std::declval<Cont>().size(),
1377
- *std::declval<Cont>().data())>,
1378
- DataType>::value>>
1379
- explicit constexpr multi_span(Cont && cont) = delete;
1380
-
1381
- // construct from a convertible multi_span
1382
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1383
- typename OtherBounds = static_bounds<OtherDimensions...>,
1384
- typename = std::enable_if_t<std::is_convertible<OtherValueType, ValueType>::value &&
1385
- std::is_convertible<OtherBounds, bounds_type>::value>>
1386
- constexpr multi_span(multi_span<OtherValueType, OtherDimensions...> other)
1387
- : data_(other.data_), bounds_(other.bounds_)
1388
- {}
1389
-
1390
- // trivial copy and move
1391
- constexpr multi_span(const multi_span&) = default;
1392
- constexpr multi_span(multi_span &&) = default;
1393
-
1394
- // trivial assignment
1395
- constexpr multi_span& operator=(const multi_span&) = default;
1396
- constexpr multi_span& operator=(multi_span&&) = default;
1397
-
1398
- // first() - extract the first Count elements into a new multi_span
1399
- template <std::ptrdiff_t Count>
1400
-
1401
- constexpr multi_span<ValueType, Count> first() const
1402
- {
1403
- static_assert(Count >= 0, "Count must be >= 0.");
1404
- static_assert(bounds_type::static_size == dynamic_range ||
1405
- Count <= bounds_type::static_size,
1406
- "Count is out of bounds.");
1407
-
1408
- Expects(bounds_type::static_size != dynamic_range || Count <= this->size());
1409
- return {this->data(), Count};
1410
- }
1411
-
1412
- // first() - extract the first count elements into a new multi_span
1413
- constexpr multi_span<ValueType, dynamic_range> first(size_type count) const
1414
- {
1415
- Expects(count >= 0 && count <= this->size());
1416
- return {this->data(), count};
1417
- }
1418
-
1419
- // last() - extract the last Count elements into a new multi_span
1420
- template <std::ptrdiff_t Count>
1421
- constexpr multi_span<ValueType, Count> last() const
1422
- {
1423
- static_assert(Count >= 0, "Count must be >= 0.");
1424
- static_assert(bounds_type::static_size == dynamic_range ||
1425
- Count <= bounds_type::static_size,
1426
- "Count is out of bounds.");
1427
-
1428
- Expects(bounds_type::static_size != dynamic_range || Count <= this->size());
1429
- return {this->data() + this->size() - Count, Count};
1430
- }
1431
-
1432
- // last() - extract the last count elements into a new multi_span
1433
- constexpr multi_span<ValueType, dynamic_range> last(size_type count) const
1434
- {
1435
- Expects(count >= 0 && count <= this->size());
1436
- return {this->data() + this->size() - count, count};
1437
- }
1438
-
1439
- // subspan() - create a subview of Count elements starting at Offset
1440
- template <std::ptrdiff_t Offset, std::ptrdiff_t Count>
1441
- constexpr multi_span<ValueType, Count> subspan() const
1442
- {
1443
- static_assert(Count >= 0, "Count must be >= 0.");
1444
- static_assert(Offset >= 0, "Offset must be >= 0.");
1445
- static_assert(bounds_type::static_size == dynamic_range ||
1446
- ((Offset <= bounds_type::static_size) &&
1447
- Count <= bounds_type::static_size - Offset),
1448
- "You must describe a sub-range within bounds of the multi_span.");
1449
-
1450
- Expects(bounds_type::static_size != dynamic_range ||
1451
- (Offset <= this->size() && Count <= this->size() - Offset));
1452
- return {this->data() + Offset, Count};
1453
- }
1454
-
1455
- // subspan() - create a subview of count elements starting at offset
1456
- // supplying dynamic_range for count will consume all available elements from offset
1457
- constexpr multi_span<ValueType, dynamic_range> subspan(size_type offset,
1458
- size_type count = dynamic_range) const
1459
- {
1460
- Expects((offset >= 0 && offset <= this->size()) &&
1461
- (count == dynamic_range || (count <= this->size() - offset)));
1462
- return {this->data() + offset, count == dynamic_range ? this->length() - offset : count};
1463
- }
1464
-
1465
- // section - creates a non-contiguous, strided multi_span from a contiguous one
1466
- constexpr strided_span<ValueType, Rank> section(index_type origin, index_type extents) const
1467
- {
1468
- const size_type size = this->bounds().total_size() - this->bounds().linearize(origin);
1469
- return {&this->operator[](origin), size,
1470
- strided_bounds<Rank>{extents, details::make_stride(bounds())}};
1471
- }
1472
-
1473
- // length of the multi_span in elements
1474
- constexpr size_type size() const noexcept { return bounds_.size(); }
1475
-
1476
- // length of the multi_span in elements
1477
- constexpr size_type length() const noexcept { return this->size(); }
1478
-
1479
- // length of the multi_span in bytes
1480
- constexpr size_type size_bytes() const noexcept
1481
- {
1482
- return narrow_cast<size_type>(sizeof(value_type)) * this->size();
1483
- }
1484
-
1485
- // length of the multi_span in bytes
1486
- constexpr size_type length_bytes() const noexcept { return this->size_bytes(); }
1487
-
1488
- constexpr bool empty() const noexcept { return this->size() == 0; }
1489
-
1490
- static constexpr std::size_t rank() { return Rank; }
1491
-
1492
- template <std::size_t Dim = 0>
1493
- constexpr size_type extent() const noexcept
1494
- {
1495
- static_assert(Dim < Rank,
1496
- "Dimension should be less than rank (dimension count starts from 0).");
1497
- return bounds_.template extent<Dim>();
1498
- }
1499
-
1500
- template <typename IntType>
1501
- constexpr size_type extent(IntType dim) const
1502
- {
1503
- return bounds_.extent(dim);
1504
- }
1505
-
1506
- constexpr bounds_type bounds() const noexcept { return bounds_; }
1507
-
1508
- constexpr pointer data() const noexcept { return data_; }
1509
-
1510
- template <typename FirstIndex>
1511
- constexpr reference operator()(FirstIndex idx)
1512
- {
1513
- return this->operator[](narrow_cast<std::ptrdiff_t>(idx));
1514
- }
1515
-
1516
- template <typename FirstIndex, typename... OtherIndices>
1517
- constexpr reference operator()(FirstIndex firstIndex, OtherIndices... indices)
1518
- {
1519
- const index_type idx = {narrow_cast<std::ptrdiff_t>(firstIndex),
1520
- narrow_cast<std::ptrdiff_t>(indices)...};
1521
- return this->operator[](idx);
1522
- }
1523
-
1524
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
1525
- constexpr reference operator[](const index_type& idx) const
1526
- {
1527
- return data_[bounds_.linearize(idx)];
1528
- }
1529
-
1530
- template <bool Enabled = (Rank > 1), typename Ret = std::enable_if_t<Enabled, sliced_type>>
1531
-
1532
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
1533
- constexpr Ret operator[](size_type idx) const
1534
- {
1535
- Expects(idx >= 0 && idx < bounds_.size()); // index is out of bounds of the array
1536
- const size_type ridx = idx * bounds_.stride();
1537
-
1538
- // index is out of bounds of the underlying data
1539
- Expects(ridx < bounds_.total_size());
1540
- return Ret{data_ + ridx, bounds_.slice()};
1541
- }
1542
-
1543
- constexpr iterator begin() const noexcept { return iterator{this, true}; }
1544
-
1545
- constexpr iterator end() const noexcept { return iterator{this, false}; }
1546
-
1547
- GSL_SUPPRESS(type.1) // NO-FORMAT: attribute
1548
- constexpr const_iterator cbegin() const noexcept
1549
- {
1550
- return const_iterator{reinterpret_cast<const const_span*>(this), true};
1551
- }
1552
-
1553
- constexpr const_iterator cend() const noexcept
1554
- {
1555
- return const_iterator{reinterpret_cast<const const_span*>(this), false};
1556
- }
1557
-
1558
- constexpr reverse_iterator rbegin() const noexcept { return reverse_iterator{end()}; }
1559
-
1560
- constexpr reverse_iterator rend() const noexcept { return reverse_iterator{begin()}; }
1561
-
1562
- constexpr const_reverse_iterator crbegin() const noexcept
1563
- {
1564
- return const_reverse_iterator{cend()};
1565
- }
1566
-
1567
- constexpr const_reverse_iterator crend() const noexcept
1568
- {
1569
- return const_reverse_iterator{cbegin()};
1570
- }
1571
-
1572
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1573
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1574
- std::remove_cv_t<OtherValueType>>::value>>
1575
- constexpr bool operator==(const multi_span<OtherValueType, OtherDimensions...>& other) const
1576
- {
1577
- return bounds_.size() == other.bounds_.size() &&
1578
- (data_ == other.data_ || std::equal(this->begin(), this->end(), other.begin()));
1579
- }
1580
-
1581
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1582
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1583
- std::remove_cv_t<OtherValueType>>::value>>
1584
- constexpr bool operator!=(const multi_span<OtherValueType, OtherDimensions...>& other) const
1585
- {
1586
- return !(*this == other);
1587
- }
1588
-
1589
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1590
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1591
- std::remove_cv_t<OtherValueType>>::value>>
1592
- constexpr bool operator<(const multi_span<OtherValueType, OtherDimensions...>& other) const
1593
- {
1594
- return std::lexicographical_compare(this->begin(), this->end(), other.begin(), other.end());
1595
- }
1596
-
1597
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1598
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1599
- std::remove_cv_t<OtherValueType>>::value>>
1600
- constexpr bool operator<=(const multi_span<OtherValueType, OtherDimensions...>& other) const
1601
- {
1602
- return !(other < *this);
1603
- }
1604
-
1605
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1606
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1607
- std::remove_cv_t<OtherValueType>>::value>>
1608
- constexpr bool operator>(const multi_span<OtherValueType, OtherDimensions...>& other)
1609
- const noexcept
1610
- {
1611
- return (other < *this);
1612
- }
1613
-
1614
- template <typename OtherValueType, std::ptrdiff_t... OtherDimensions,
1615
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1616
- std::remove_cv_t<OtherValueType>>::value>>
1617
- constexpr bool operator>=(const multi_span<OtherValueType, OtherDimensions...>& other) const
1618
- {
1619
- return !(*this < other);
1620
- }
1621
- };
1622
-
1623
- //
1624
- // Free functions for manipulating spans
1625
- //
1626
-
1627
- // reshape a multi_span into a different dimensionality
1628
- // DimCount and Enabled here are workarounds for a bug in MSVC 2015
1629
- template <typename SpanType, typename... Dimensions2, std::size_t DimCount = sizeof...(Dimensions2),
1630
- bool Enabled = (DimCount > 0), typename = std::enable_if_t<Enabled>>
1631
- constexpr auto as_multi_span(SpanType s, Dimensions2... dims)
1632
- -> multi_span<typename SpanType::value_type, Dimensions2::value...>
1633
- {
1634
- static_assert(details::is_multi_span<SpanType>::value,
1635
- "Variadic as_multi_span() is for reshaping existing spans.");
1636
- using BoundsType =
1637
- typename multi_span<typename SpanType::value_type, (Dimensions2::value)...>::bounds_type;
1638
- const auto tobounds = details::static_as_multi_span_helper<BoundsType>(dims..., details::Sep{});
1639
- details::verifyBoundsReshape(s.bounds(), tobounds);
1640
- return {s.data(), tobounds};
1641
- }
1642
-
1643
- // convert a multi_span<T> to a multi_span<const byte>
1644
- template <typename U, std::ptrdiff_t... Dimensions>
1645
- multi_span<const byte, dynamic_range>
1646
- as_bytes(multi_span<U, Dimensions...> s) noexcept
1647
- {
1648
- static_assert(std::is_trivial<std::decay_t<U>>::value,
1649
- "The value_type of multi_span must be a trivial type.");
1650
- return {reinterpret_cast<const byte*>(s.data()), s.size_bytes()};
1651
- }
1652
-
1653
- // convert a multi_span<T> to a multi_span<byte> (a writeable byte multi_span)
1654
- // this is not currently a portable function that can be relied upon to work
1655
- // on all implementations. It should be considered an experimental extension
1656
- // to the standard GSL interface.
1657
- template <typename U, std::ptrdiff_t... Dimensions>
1658
- multi_span<byte> as_writeable_bytes(multi_span<U, Dimensions...> s) noexcept
1659
- {
1660
- static_assert(std::is_trivial<std::decay_t<U>>::value,
1661
- "The value_type of multi_span must be a trivial type.");
1662
- return {reinterpret_cast<byte*>(s.data()), s.size_bytes()};
1663
- }
1664
-
1665
- // convert a multi_span<const byte> to a multi_span<const T>
1666
- // this is not currently a portable function that can be relied upon to work
1667
- // on all implementations. It should be considered an experimental extension
1668
- // to the standard GSL interface.
1669
- template <typename U, std::ptrdiff_t... Dimensions>
1670
- constexpr auto as_multi_span(multi_span<const byte, Dimensions...> s) -> multi_span<
1671
- const U, static_cast<std::ptrdiff_t>(
1672
- multi_span<const byte, Dimensions...>::bounds_type::static_size != dynamic_range
1673
- ? (static_cast<std::size_t>(
1674
- multi_span<const byte, Dimensions...>::bounds_type::static_size) /
1675
- sizeof(U))
1676
- : dynamic_range)>
1677
- {
1678
- using ConstByteSpan = multi_span<const byte, Dimensions...>;
1679
- static_assert(
1680
- std::is_trivial<std::decay_t<U>>::value &&
1681
- (ConstByteSpan::bounds_type::static_size == dynamic_range ||
1682
- ConstByteSpan::bounds_type::static_size % narrow_cast<std::ptrdiff_t>(sizeof(U)) == 0),
1683
- "Target type must be a trivial type and its size must match the byte array size");
1684
-
1685
- Expects((s.size_bytes() % narrow_cast<std::ptrdiff_t>(sizeof(U))) == 0 &&
1686
- (s.size_bytes() / narrow_cast<std::ptrdiff_t>(sizeof(U))) < PTRDIFF_MAX);
1687
- return {reinterpret_cast<const U*>(s.data()),
1688
- s.size_bytes() / narrow_cast<std::ptrdiff_t>(sizeof(U))};
1689
- }
1690
-
1691
- // convert a multi_span<byte> to a multi_span<T>
1692
- // this is not currently a portable function that can be relied upon to work
1693
- // on all implementations. It should be considered an experimental extension
1694
- // to the standard GSL interface.
1695
- template <typename U, std::ptrdiff_t... Dimensions>
1696
- constexpr auto as_multi_span(multi_span<byte, Dimensions...> s)
1697
- -> multi_span<U, narrow_cast<std::ptrdiff_t>(
1698
- multi_span<byte, Dimensions...>::bounds_type::static_size != dynamic_range
1699
- ? static_cast<std::size_t>(
1700
- multi_span<byte, Dimensions...>::bounds_type::static_size) /
1701
- sizeof(U)
1702
- : dynamic_range)>
1703
- {
1704
- using ByteSpan = multi_span<byte, Dimensions...>;
1705
- static_assert(std::is_trivial<std::decay_t<U>>::value &&
1706
- (ByteSpan::bounds_type::static_size == dynamic_range ||
1707
- ByteSpan::bounds_type::static_size % sizeof(U) == 0),
1708
- "Target type must be a trivial type and its size must match the byte array size");
1709
-
1710
- Expects((s.size_bytes() % sizeof(U)) == 0);
1711
- return {reinterpret_cast<U*>(s.data()),
1712
- s.size_bytes() / narrow_cast<std::ptrdiff_t>(sizeof(U))};
1713
- }
1714
-
1715
- template <typename T, std::ptrdiff_t... Dimensions>
1716
- constexpr auto as_multi_span(T* const& ptr, dim_t<Dimensions>... args)
1717
- -> multi_span<std::remove_all_extents_t<T>, Dimensions...>
1718
- {
1719
- return {reinterpret_cast<std::remove_all_extents_t<T>*>(ptr),
1720
- details::static_as_multi_span_helper<static_bounds<Dimensions...>>(args...,
1721
- details::Sep{})};
1722
- }
1723
-
1724
- template <typename T>
1725
- constexpr auto as_multi_span(T* arr, std::ptrdiff_t len) ->
1726
- typename details::SpanArrayTraits<T, dynamic_range>::type
1727
- {
1728
- return {reinterpret_cast<std::remove_all_extents_t<T>*>(arr), len};
1729
- }
1730
-
1731
- template <typename T, std::size_t N>
1732
- constexpr auto as_multi_span(T (&arr)[N]) ->
1733
- typename details::SpanArrayTraits<T, N>::type
1734
- {
1735
- return {arr};
1736
- }
1737
-
1738
- template <typename T, std::size_t N>
1739
- constexpr multi_span<const T, N> as_multi_span(const std::array<T, N>& arr)
1740
- {
1741
- return {arr};
1742
- }
1743
-
1744
- template <typename T, std::size_t N>
1745
- constexpr multi_span<const T, N> as_multi_span(const std::array<T, N>&&) = delete;
1746
-
1747
- template <typename T, std::size_t N>
1748
- constexpr multi_span<T, N> as_multi_span(std::array<T, N>& arr)
1749
- {
1750
- return {arr};
1751
- }
1752
-
1753
- template <typename T>
1754
- constexpr multi_span<T, dynamic_range> as_multi_span(T* begin, T* end)
1755
- {
1756
- return {begin, end};
1757
- }
1758
-
1759
- template <typename Cont>
1760
- constexpr auto as_multi_span(Cont& arr) -> std::enable_if_t<
1761
- !details::is_multi_span<std::decay_t<Cont>>::value,
1762
- multi_span<std::remove_reference_t<decltype(arr.size(), *arr.data())>, dynamic_range>>
1763
- {
1764
- Expects(arr.size() < PTRDIFF_MAX);
1765
- return {arr.data(), narrow_cast<std::ptrdiff_t>(arr.size())};
1766
- }
1767
-
1768
- template <typename Cont>
1769
- constexpr auto as_multi_span(Cont&& arr) -> std::enable_if_t<
1770
- !details::is_multi_span<std::decay_t<Cont>>::value,
1771
- multi_span<std::remove_reference_t<decltype(arr.size(), *arr.data())>, dynamic_range>> = delete;
1772
-
1773
- // from basic_string which doesn't have nonconst .data() member like other contiguous containers
1774
- template <typename CharT, typename Traits, typename Allocator>
1775
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
1776
- constexpr auto as_multi_span(std::basic_string<CharT, Traits, Allocator>& str)
1777
- -> multi_span<CharT, dynamic_range>
1778
- {
1779
- Expects(str.size() < PTRDIFF_MAX);
1780
- return {&str[0], narrow_cast<std::ptrdiff_t>(str.size())};
1781
- }
1782
-
1783
- // strided_span is an extension that is not strictly part of the GSL at this time.
1784
- // It is kept here while the multidimensional interface is still being defined.
1785
- template <typename ValueType, std::size_t Rank>
1786
- class [[deprecated("gsl::strided_span is deprecated because it is not in the C++ Core Guidelines")]] strided_span
1787
- {
1788
- public:
1789
- using bounds_type = strided_bounds<Rank>;
1790
- using size_type = typename bounds_type::size_type;
1791
- using index_type = typename bounds_type::index_type;
1792
- using value_type = ValueType;
1793
- using const_value_type = std::add_const_t<value_type>;
1794
- using pointer = std::add_pointer_t<value_type>;
1795
- using reference = std::add_lvalue_reference_t<value_type>;
1796
- using iterator = general_span_iterator<strided_span>;
1797
- using const_strided_span = strided_span<const_value_type, Rank>;
1798
- using const_iterator = general_span_iterator<const_strided_span>;
1799
- using reverse_iterator = std::reverse_iterator<iterator>;
1800
- using const_reverse_iterator = std::reverse_iterator<const_iterator>;
1801
- using sliced_type =
1802
- std::conditional_t<Rank == 1, value_type, strided_span<value_type, Rank - 1>>;
1803
-
1804
- private:
1805
- pointer data_;
1806
- bounds_type bounds_;
1807
-
1808
- friend iterator;
1809
- friend const_iterator;
1810
- template <typename OtherValueType, std::size_t OtherRank>
1811
- friend class strided_span;
1812
-
1813
- public:
1814
- // from raw data
1815
- constexpr strided_span(pointer ptr, size_type size, bounds_type bounds)
1816
- : data_(ptr), bounds_(std::move(bounds))
1817
- {
1818
- Expects((bounds_.size() > 0 && ptr != nullptr) || bounds_.size() == 0);
1819
- // Bounds cross data boundaries
1820
- Expects(this->bounds().total_size() <= size);
1821
- GSL_SUPPRESS(type.4) // NO-FORMAT: attribute // TODO: false positive
1822
- (void) size;
1823
- }
1824
-
1825
- // from static array of size N
1826
- template <size_type N>
1827
- constexpr strided_span(value_type (&values)[N], bounds_type bounds)
1828
- : strided_span(values, N, std::move(bounds))
1829
- {}
1830
-
1831
- // from array view
1832
- template <typename OtherValueType, std::ptrdiff_t... Dimensions,
1833
- bool Enabled1 = (sizeof...(Dimensions) == Rank),
1834
- bool Enabled2 = std::is_convertible<OtherValueType*, ValueType*>::value,
1835
- typename = std::enable_if_t<Enabled1 && Enabled2>>
1836
- constexpr strided_span(multi_span<OtherValueType, Dimensions...> av, bounds_type bounds)
1837
- : strided_span(av.data(), av.bounds().total_size(), std::move(bounds))
1838
- {}
1839
-
1840
- // convertible
1841
- template <typename OtherValueType, typename = std::enable_if_t<std::is_convertible<
1842
- OtherValueType (*)[], value_type (*)[]>::value>>
1843
- constexpr strided_span(const strided_span<OtherValueType, Rank>& other)
1844
- : data_(other.data_), bounds_(other.bounds_)
1845
- {}
1846
-
1847
- // convert from bytes
1848
- template <typename OtherValueType>
1849
- constexpr strided_span<
1850
- typename std::enable_if<std::is_same<value_type, const byte>::value, OtherValueType>::type,
1851
- Rank>
1852
- as_strided_span() const
1853
- {
1854
- static_assert((sizeof(OtherValueType) >= sizeof(value_type)) &&
1855
- (sizeof(OtherValueType) % sizeof(value_type) == 0),
1856
- "OtherValueType should have a size to contain a multiple of ValueTypes");
1857
- auto d = narrow_cast<size_type>(sizeof(OtherValueType) / sizeof(value_type));
1858
-
1859
- const size_type size = this->bounds().total_size() / d;
1860
-
1861
- GSL_SUPPRESS(type.3) // NO-FORMAT: attribute
1862
- return {const_cast<OtherValueType*>(reinterpret_cast<const OtherValueType*>(this->data())),
1863
- size,
1864
- bounds_type{resize_extent(this->bounds().index_bounds(), d),
1865
- resize_stride(this->bounds().strides(), d)}};
1866
- }
1867
-
1868
- constexpr strided_span section(index_type origin, index_type extents) const
1869
- {
1870
- const size_type size = this->bounds().total_size() - this->bounds().linearize(origin);
1871
- return {&this->operator[](origin), size,
1872
- bounds_type{extents, details::make_stride(bounds())}};
1873
- }
1874
-
1875
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
1876
- constexpr reference operator[](const index_type& idx) const
1877
- {
1878
- return data_[bounds_.linearize(idx)];
1879
- }
1880
-
1881
- template <bool Enabled = (Rank > 1), typename Ret = std::enable_if_t<Enabled, sliced_type>>
1882
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
1883
- constexpr Ret operator[](size_type idx) const
1884
- {
1885
- Expects(idx < bounds_.size()); // index is out of bounds of the array
1886
- const size_type ridx = idx * bounds_.stride();
1887
-
1888
- // index is out of bounds of the underlying data
1889
- Expects(ridx < bounds_.total_size());
1890
- return {data_ + ridx, bounds_.slice().total_size(), bounds_.slice()};
1891
- }
1892
-
1893
- constexpr bounds_type bounds() const noexcept { return bounds_; }
1894
-
1895
- template <std::size_t Dim = 0>
1896
- constexpr size_type extent() const noexcept
1897
- {
1898
- static_assert(Dim < Rank,
1899
- "dimension should be less than Rank (dimension count starts from 0)");
1900
- return bounds_.template extent<Dim>();
1901
- }
1902
-
1903
- constexpr size_type size() const noexcept { return bounds_.size(); }
1904
-
1905
- constexpr pointer data() const noexcept { return data_; }
1906
-
1907
- constexpr bool empty() const noexcept { return this->size() == 0; }
1908
-
1909
- constexpr explicit operator bool() const noexcept { return data_ != nullptr; }
1910
-
1911
- constexpr iterator begin() const { return iterator{this, true}; }
1912
-
1913
- constexpr iterator end() const { return iterator{this, false}; }
1914
-
1915
- constexpr const_iterator cbegin() const
1916
- {
1917
- return const_iterator{reinterpret_cast<const const_strided_span*>(this), true};
1918
- }
1919
-
1920
- constexpr const_iterator cend() const
1921
- {
1922
- return const_iterator{reinterpret_cast<const const_strided_span*>(this), false};
1923
- }
1924
-
1925
- constexpr reverse_iterator rbegin() const { return reverse_iterator{end()}; }
1926
-
1927
- constexpr reverse_iterator rend() const { return reverse_iterator{begin()}; }
1928
-
1929
- constexpr const_reverse_iterator crbegin() const { return const_reverse_iterator{cend()}; }
1930
-
1931
- constexpr const_reverse_iterator crend() const { return const_reverse_iterator{cbegin()}; }
1932
-
1933
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1934
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1935
- std::remove_cv_t<OtherValueType>>::value>>
1936
- constexpr bool operator==(const strided_span<OtherValueType, OtherRank>& other) const
1937
- {
1938
- return bounds_.size() == other.bounds_.size() &&
1939
- (data_ == other.data_ || std::equal(this->begin(), this->end(), other.begin()));
1940
- }
1941
-
1942
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1943
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1944
- std::remove_cv_t<OtherValueType>>::value>>
1945
- constexpr bool operator!=(const strided_span<OtherValueType, OtherRank>& other) const
1946
- {
1947
- return !(*this == other);
1948
- }
1949
-
1950
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1951
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1952
- std::remove_cv_t<OtherValueType>>::value>>
1953
- constexpr bool operator<(const strided_span<OtherValueType, OtherRank>& other) const
1954
- {
1955
- return std::lexicographical_compare(this->begin(), this->end(), other.begin(), other.end());
1956
- }
1957
-
1958
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1959
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1960
- std::remove_cv_t<OtherValueType>>::value>>
1961
- constexpr bool operator<=(const strided_span<OtherValueType, OtherRank>& other) const
1962
- {
1963
- return !(other < *this);
1964
- }
1965
-
1966
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1967
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1968
- std::remove_cv_t<OtherValueType>>::value>>
1969
- constexpr bool operator>(const strided_span<OtherValueType, OtherRank>& other) const
1970
- {
1971
- return (other < *this);
1972
- }
1973
-
1974
- template <typename OtherValueType, std::ptrdiff_t OtherRank,
1975
- typename = std::enable_if_t<std::is_same<std::remove_cv_t<value_type>,
1976
- std::remove_cv_t<OtherValueType>>::value>>
1977
- constexpr bool operator>=(const strided_span<OtherValueType, OtherRank>& other) const
1978
- {
1979
- return !(*this < other);
1980
- }
1981
-
1982
- private:
1983
- static index_type resize_extent(const index_type& extent, std::ptrdiff_t d)
1984
- {
1985
- // The last dimension of the array needs to contain a multiple of new type elements
1986
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
1987
- Expects(extent[Rank - 1] >= d && (extent[Rank - 1] % d == 0));
1988
-
1989
- index_type ret = extent;
1990
- ret[Rank - 1] /= d;
1991
-
1992
- return ret;
1993
- }
1994
-
1995
- template <bool Enabled = (Rank == 1), typename = std::enable_if_t<Enabled>>
1996
- static index_type resize_stride(const index_type& strides, std::ptrdiff_t, void* = nullptr)
1997
- {
1998
- // Only strided arrays with regular strides can be resized
1999
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
2000
- Expects(strides[Rank - 1] == 1);
2001
-
2002
- return strides;
2003
- }
2004
-
2005
- template <bool Enabled = (Rank > 1), typename = std::enable_if_t<Enabled>>
2006
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
2007
- static index_type resize_stride(const index_type& strides, std::ptrdiff_t d)
2008
- {
2009
- // Only strided arrays with regular strides can be resized
2010
- Expects(strides[Rank - 1] == 1);
2011
- // The strides must have contiguous chunks of
2012
- // memory that can contain a multiple of new type elements
2013
- Expects(strides[Rank - 2] >= d && (strides[Rank - 2] % d == 0));
2014
-
2015
- for (std::size_t i = Rank - 1; i > 0; --i)
2016
- {
2017
- // Only strided arrays with regular strides can be resized
2018
- Expects((strides[i - 1] >= strides[i]) && (strides[i - 1] % strides[i] == 0));
2019
- }
2020
-
2021
- index_type ret = strides / d;
2022
- ret[Rank - 1] = 1;
2023
-
2024
- return ret;
2025
- }
2026
- };
2027
-
2028
- template <class Span>
2029
- class [[deprecated]] contiguous_span_iterator {
2030
- public:
2031
- using iterator_category = std::random_access_iterator_tag;
2032
- using value_type = typename Span::value_type;
2033
- using difference_type = std::ptrdiff_t;
2034
- using pointer = value_type*;
2035
- using reference = value_type&;
2036
-
2037
- private:
2038
- template <typename ValueType, std::ptrdiff_t FirstDimension, std::ptrdiff_t... RestDimensions>
2039
- friend class multi_span;
2040
-
2041
- pointer data_;
2042
- const Span* m_validator;
2043
-
2044
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
2045
- void validateThis() const
2046
- {
2047
- // iterator is out of range of the array
2048
- Expects(data_ >= m_validator->data_ && data_ < m_validator->data_ + m_validator->size());
2049
- }
2050
-
2051
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
2052
- contiguous_span_iterator(const Span* container, bool isbegin)
2053
- : data_(isbegin ? container->data_ : container->data_ + container->size())
2054
- , m_validator(container)
2055
- {}
2056
-
2057
- public:
2058
- reference operator*() const
2059
- {
2060
- validateThis();
2061
- return *data_;
2062
- }
2063
- pointer operator->() const
2064
- {
2065
- validateThis();
2066
- return data_;
2067
- }
2068
-
2069
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
2070
- contiguous_span_iterator& operator++() noexcept
2071
- {
2072
- ++data_;
2073
- return *this;
2074
- }
2075
- contiguous_span_iterator operator++(int) noexcept
2076
- {
2077
- auto ret = *this;
2078
- ++(*this);
2079
- return ret;
2080
- }
2081
-
2082
- GSL_SUPPRESS(bounds.1) // NO-FORMAT: attribute
2083
- contiguous_span_iterator& operator--() noexcept
2084
- {
2085
- --data_;
2086
- return *this;
2087
- }
2088
- contiguous_span_iterator operator--(int) noexcept
2089
- {
2090
- auto ret = *this;
2091
- --(*this);
2092
- return ret;
2093
- }
2094
- contiguous_span_iterator operator+(difference_type n) const noexcept
2095
- {
2096
- contiguous_span_iterator ret{*this};
2097
- return ret += n;
2098
- }
2099
- contiguous_span_iterator& operator+=(difference_type n) noexcept
2100
- {
2101
- data_ += n;
2102
- return *this;
2103
- }
2104
- contiguous_span_iterator operator-(difference_type n) const noexcept
2105
- {
2106
- contiguous_span_iterator ret{*this};
2107
- return ret -= n;
2108
- }
2109
-
2110
- contiguous_span_iterator& operator-=(difference_type n) { return *this += -n; }
2111
- difference_type operator-(const contiguous_span_iterator& rhs) const
2112
- {
2113
- Expects(m_validator == rhs.m_validator);
2114
- return data_ - rhs.data_;
2115
- }
2116
- reference operator[](difference_type n) const { return *(*this + n); }
2117
- bool operator==(const contiguous_span_iterator& rhs) const
2118
- {
2119
- Expects(m_validator == rhs.m_validator);
2120
- return data_ == rhs.data_;
2121
- }
2122
-
2123
- bool operator!=(const contiguous_span_iterator& rhs) const { return !(*this == rhs); }
2124
-
2125
- bool operator<(const contiguous_span_iterator& rhs) const
2126
- {
2127
- Expects(m_validator == rhs.m_validator);
2128
- return data_ < rhs.data_;
2129
- }
2130
-
2131
- bool operator<=(const contiguous_span_iterator& rhs) const { return !(rhs < *this); }
2132
- bool operator>(const contiguous_span_iterator& rhs) const { return rhs < *this; }
2133
- bool operator>=(const contiguous_span_iterator& rhs) const { return !(rhs > *this); }
2134
-
2135
- void swap(contiguous_span_iterator & rhs) noexcept
2136
- {
2137
- std::swap(data_, rhs.data_);
2138
- std::swap(m_validator, rhs.m_validator);
2139
- }
2140
- };
2141
-
2142
- template <typename Span>
2143
- contiguous_span_iterator<Span> operator+(typename contiguous_span_iterator<Span>::difference_type n,
2144
- const contiguous_span_iterator<Span>& rhs) noexcept
2145
- {
2146
- return rhs + n;
2147
- }
2148
-
2149
- template <typename Span>
2150
- class [[deprecated]] general_span_iterator {
2151
- public:
2152
- using iterator_category = std::random_access_iterator_tag;
2153
- using value_type = typename Span::value_type;
2154
- using difference_type = std::ptrdiff_t;
2155
- using pointer = value_type*;
2156
- using reference = value_type&;
2157
-
2158
- private:
2159
- template <typename ValueType, std::size_t Rank>
2160
- friend class strided_span;
2161
-
2162
- const Span* m_container;
2163
- typename Span::bounds_type::iterator m_itr;
2164
- general_span_iterator(const Span* container, bool isbegin)
2165
- : m_container(container)
2166
- , m_itr(isbegin ? m_container->bounds().begin() : m_container->bounds().end())
2167
- {}
2168
-
2169
- public:
2170
- reference operator*() noexcept { return (*m_container)[*m_itr]; }
2171
- pointer operator->() noexcept { return &(*m_container)[*m_itr]; }
2172
- general_span_iterator& operator++() noexcept
2173
- {
2174
- ++m_itr;
2175
- return *this;
2176
- }
2177
- general_span_iterator operator++(int) noexcept
2178
- {
2179
- auto ret = *this;
2180
- ++(*this);
2181
- return ret;
2182
- }
2183
- general_span_iterator& operator--() noexcept
2184
- {
2185
- --m_itr;
2186
- return *this;
2187
- }
2188
- general_span_iterator operator--(int) noexcept
2189
- {
2190
- auto ret = *this;
2191
- --(*this);
2192
- return ret;
2193
- }
2194
- general_span_iterator operator+(difference_type n) const noexcept
2195
- {
2196
- general_span_iterator ret{*this};
2197
- return ret += n;
2198
- }
2199
- general_span_iterator& operator+=(difference_type n) noexcept
2200
- {
2201
- m_itr += n;
2202
- return *this;
2203
- }
2204
- general_span_iterator operator-(difference_type n) const noexcept
2205
- {
2206
- general_span_iterator ret{*this};
2207
- return ret -= n;
2208
- }
2209
- general_span_iterator& operator-=(difference_type n) noexcept { return *this += -n; }
2210
- difference_type operator-(const general_span_iterator& rhs) const
2211
- {
2212
- Expects(m_container == rhs.m_container);
2213
- return m_itr - rhs.m_itr;
2214
- }
2215
-
2216
- GSL_SUPPRESS(bounds.4) // NO-FORMAT: attribute
2217
- value_type operator[](difference_type n) const { return (*m_container)[m_itr[n]]; }
2218
-
2219
- bool operator==(const general_span_iterator& rhs) const
2220
- {
2221
- Expects(m_container == rhs.m_container);
2222
- return m_itr == rhs.m_itr;
2223
- }
2224
- bool operator!=(const general_span_iterator& rhs) const { return !(*this == rhs); }
2225
- bool operator<(const general_span_iterator& rhs) const
2226
- {
2227
- Expects(m_container == rhs.m_container);
2228
- return m_itr < rhs.m_itr;
2229
- }
2230
- bool operator<=(const general_span_iterator& rhs) const { return !(rhs < *this); }
2231
- bool operator>(const general_span_iterator& rhs) const { return rhs < *this; }
2232
- bool operator>=(const general_span_iterator& rhs) const { return !(rhs > *this); }
2233
- void swap(general_span_iterator & rhs) noexcept
2234
- {
2235
- std::swap(m_itr, rhs.m_itr);
2236
- std::swap(m_container, rhs.m_container);
2237
- }
2238
- };
2239
-
2240
- template <typename Span>
2241
- general_span_iterator<Span> operator+(typename general_span_iterator<Span>::difference_type n,
2242
- const general_span_iterator<Span>& rhs) noexcept
2243
- {
2244
- return rhs + n;
2245
- }
2246
-
2247
- } // namespace gsl
2248
-
2249
- #if defined(_MSC_VER) && !defined(__clang__)
2250
-
2251
- #pragma warning(pop)
2252
-
2253
- #endif // _MSC_VER
2254
-
2255
- #if defined(__GNUC__) && __GNUC__ > 6
2256
- #pragma GCC diagnostic pop
2257
- #endif // __GNUC__ > 6
2258
-
2259
- #if defined(__GNUC__) || defined(__clang__)
2260
- #pragma GCC diagnostic pop
2261
- #endif
2262
-
2263
- #endif // GSL_MULTI_SPAN_H