couchbase 3.0.0.alpha.5-x86_64-linux → 3.5.0-x86_64-linux

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