couchbase 3.0.0.alpha.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (887) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +227 -0
  3. data/.rubocop_todo.yml +47 -0
  4. data/.yardopts +1 -0
  5. data/CONTRIBUTING.md +110 -0
  6. data/Gemfile +16 -3
  7. data/README.md +6 -4
  8. data/Rakefile +6 -2
  9. data/couchbase.gemspec +46 -13
  10. data/examples/analytics.rb +236 -0
  11. data/examples/auth.rb +33 -0
  12. data/examples/crud.rb +16 -2
  13. data/examples/managing_analytics_indexes.rb +86 -0
  14. data/examples/managing_buckets.rb +17 -3
  15. data/examples/managing_collections.rb +22 -9
  16. data/examples/managing_query_indexes.rb +39 -19
  17. data/examples/managing_search_indexes.rb +77 -0
  18. data/examples/managing_view_indexes.rb +68 -0
  19. data/examples/query.rb +17 -3
  20. data/examples/query_with_consistency.rb +30 -20
  21. data/examples/search.rb +202 -0
  22. data/examples/search_with_consistency.rb +97 -0
  23. data/examples/subdocument.rb +42 -30
  24. data/examples/view.rb +59 -0
  25. data/ext/.clang-tidy +2 -0
  26. data/ext/.idea/misc.xml +12 -0
  27. data/ext/CMakeLists.txt +50 -3
  28. data/ext/build_config.hxx.in +20 -0
  29. data/ext/build_version.hxx.in +1 -1
  30. data/ext/couchbase/bucket.hxx +228 -51
  31. data/ext/couchbase/cluster.hxx +147 -87
  32. data/ext/couchbase/cluster_options.hxx +53 -0
  33. data/ext/couchbase/configuration.hxx +232 -14
  34. data/ext/couchbase/couchbase.cxx +4250 -1458
  35. data/ext/couchbase/error_map.hxx +202 -2
  36. data/ext/couchbase/errors.hxx +8 -2
  37. data/ext/couchbase/io/dns_client.hxx +217 -0
  38. data/ext/couchbase/io/dns_codec.hxx +207 -0
  39. data/ext/couchbase/io/dns_config.hxx +116 -0
  40. data/ext/couchbase/io/dns_message.hxx +555 -0
  41. data/ext/couchbase/io/http_command.hxx +91 -0
  42. data/ext/couchbase/io/http_session.hxx +119 -47
  43. data/ext/couchbase/io/{session_manager.hxx → http_session_manager.hxx} +34 -34
  44. data/ext/couchbase/io/mcbp_command.hxx +237 -0
  45. data/ext/couchbase/io/mcbp_message.hxx +24 -2
  46. data/ext/couchbase/io/mcbp_parser.hxx +2 -0
  47. data/ext/couchbase/io/mcbp_session.hxx +455 -173
  48. data/ext/couchbase/io/retry_action.hxx +30 -0
  49. data/ext/couchbase/io/retry_context.hxx +39 -0
  50. data/ext/couchbase/io/retry_orchestrator.hxx +96 -0
  51. data/ext/couchbase/io/retry_reason.hxx +235 -0
  52. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  53. data/ext/couchbase/io/streams.hxx +165 -0
  54. data/ext/couchbase/mutation_token.hxx +1 -1
  55. data/ext/couchbase/operations.hxx +33 -1
  56. data/ext/couchbase/operations/analytics_dataset_create.hxx +117 -0
  57. data/ext/couchbase/operations/analytics_dataset_drop.hxx +103 -0
  58. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +107 -0
  59. data/ext/couchbase/operations/analytics_dataverse_create.hxx +104 -0
  60. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +104 -0
  61. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +91 -0
  62. data/ext/couchbase/operations/analytics_index_create.hxx +128 -0
  63. data/ext/couchbase/operations/analytics_index_drop.hxx +110 -0
  64. data/ext/couchbase/operations/analytics_index_get_all.hxx +106 -0
  65. data/ext/couchbase/operations/analytics_link_connect.hxx +102 -0
  66. data/ext/couchbase/operations/analytics_link_disconnect.hxx +101 -0
  67. data/ext/couchbase/operations/bucket_create.hxx +5 -2
  68. data/ext/couchbase/operations/bucket_drop.hxx +5 -2
  69. data/ext/couchbase/operations/bucket_flush.hxx +5 -2
  70. data/ext/couchbase/operations/bucket_get.hxx +5 -2
  71. data/ext/couchbase/operations/bucket_get_all.hxx +5 -2
  72. data/ext/couchbase/operations/bucket_update.hxx +5 -2
  73. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +5 -2
  74. data/ext/couchbase/operations/collection_create.hxx +10 -3
  75. data/ext/couchbase/operations/collection_drop.hxx +5 -2
  76. data/ext/couchbase/operations/design_document.hxx +59 -0
  77. data/ext/couchbase/operations/document_analytics.hxx +288 -0
  78. data/ext/couchbase/operations/document_decrement.hxx +11 -4
  79. data/ext/couchbase/operations/document_exists.hxx +5 -1
  80. data/ext/couchbase/operations/document_get.hxx +8 -1
  81. data/ext/couchbase/operations/document_get_and_lock.hxx +8 -1
  82. data/ext/couchbase/operations/document_get_and_touch.hxx +10 -3
  83. data/ext/couchbase/operations/document_get_projected.hxx +249 -0
  84. data/ext/couchbase/operations/document_increment.hxx +14 -5
  85. data/ext/couchbase/operations/document_insert.hxx +10 -3
  86. data/ext/couchbase/operations/document_lookup_in.hxx +27 -1
  87. data/ext/couchbase/operations/document_mutate_in.hxx +51 -2
  88. data/ext/couchbase/operations/document_query.hxx +31 -11
  89. data/ext/couchbase/operations/document_remove.hxx +8 -1
  90. data/ext/couchbase/operations/document_replace.hxx +10 -3
  91. data/ext/couchbase/operations/document_search.hxx +360 -0
  92. data/ext/couchbase/operations/document_touch.hxx +10 -3
  93. data/ext/couchbase/operations/document_unlock.hxx +8 -1
  94. data/ext/couchbase/operations/document_upsert.hxx +10 -3
  95. data/ext/couchbase/operations/document_view.hxx +228 -0
  96. data/ext/couchbase/operations/query_index_build_deferred.hxx +4 -3
  97. data/ext/couchbase/operations/query_index_create.hxx +18 -7
  98. data/ext/couchbase/operations/query_index_drop.hxx +16 -5
  99. data/ext/couchbase/operations/query_index_get_all.hxx +15 -5
  100. data/ext/couchbase/operations/scope_create.hxx +5 -2
  101. data/ext/couchbase/operations/scope_drop.hxx +5 -2
  102. data/ext/couchbase/operations/scope_get_all.hxx +6 -2
  103. data/ext/couchbase/operations/search_index.hxx +79 -0
  104. data/ext/couchbase/operations/search_index_analyze_document.hxx +92 -0
  105. data/ext/couchbase/operations/search_index_control_ingest.hxx +80 -0
  106. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +80 -0
  107. data/ext/couchbase/operations/search_index_control_query.hxx +80 -0
  108. data/ext/couchbase/operations/search_index_drop.hxx +77 -0
  109. data/ext/couchbase/operations/search_index_get.hxx +80 -0
  110. data/ext/couchbase/operations/search_index_get_all.hxx +82 -0
  111. data/ext/couchbase/operations/search_index_get_documents_count.hxx +81 -0
  112. data/ext/couchbase/operations/search_index_upsert.hxx +106 -0
  113. data/ext/couchbase/operations/view_index_drop.hxx +67 -0
  114. data/ext/couchbase/operations/view_index_get.hxx +90 -0
  115. data/ext/couchbase/operations/view_index_get_all.hxx +125 -0
  116. data/ext/couchbase/operations/view_index_upsert.hxx +87 -0
  117. data/ext/couchbase/origin.hxx +178 -0
  118. data/ext/couchbase/platform/backtrace.c +189 -0
  119. data/ext/couchbase/platform/backtrace.h +54 -0
  120. data/ext/couchbase/platform/terminate_handler.cc +122 -0
  121. data/ext/couchbase/platform/terminate_handler.h +36 -0
  122. data/ext/couchbase/protocol/client_opcode.hxx +17 -3
  123. data/ext/couchbase/protocol/client_response.hxx +1 -1
  124. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +1 -6
  125. data/ext/couchbase/protocol/cmd_decrement.hxx +5 -5
  126. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +5 -5
  127. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +7 -7
  128. data/ext/couchbase/protocol/cmd_get_collection_id.hxx +117 -0
  129. data/ext/couchbase/protocol/cmd_hello.hxx +10 -0
  130. data/ext/couchbase/protocol/cmd_increment.hxx +5 -5
  131. data/ext/couchbase/protocol/cmd_info.hxx +0 -11
  132. data/ext/couchbase/protocol/cmd_insert.hxx +5 -5
  133. data/ext/couchbase/protocol/cmd_lookup_in.hxx +1 -0
  134. data/ext/couchbase/protocol/cmd_mutate_in.hxx +53 -5
  135. data/ext/couchbase/protocol/cmd_replace.hxx +5 -5
  136. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  137. data/ext/couchbase/protocol/cmd_upsert.hxx +5 -5
  138. data/ext/couchbase/protocol/status.hxx +14 -4
  139. data/ext/couchbase/service_type.hxx +38 -1
  140. data/ext/couchbase/timeout_defaults.hxx +41 -0
  141. data/ext/couchbase/utils/connection_string.hxx +370 -0
  142. data/ext/couchbase/version.hxx +2 -2
  143. data/ext/extconf.rb +60 -24
  144. data/ext/test/main.cxx +139 -22
  145. data/ext/third_party/http_parser/Makefile +160 -0
  146. data/ext/third_party/json/Makefile +77 -0
  147. data/lib/couchbase.rb +0 -1
  148. data/lib/couchbase/analytics_options.rb +177 -0
  149. data/lib/couchbase/authenticator.rb +14 -0
  150. data/lib/couchbase/binary_collection.rb +17 -13
  151. data/lib/couchbase/binary_collection_options.rb +14 -8
  152. data/lib/couchbase/bucket.rb +55 -3
  153. data/lib/couchbase/cluster.rb +219 -250
  154. data/lib/couchbase/collection.rb +67 -33
  155. data/lib/couchbase/collection_options.rb +95 -15
  156. data/lib/couchbase/common_options.rb +1 -1
  157. data/{bin/console → lib/couchbase/datastructures.rb} +4 -7
  158. data/lib/couchbase/datastructures/couchbase_list.rb +171 -0
  159. data/lib/couchbase/datastructures/couchbase_map.rb +205 -0
  160. data/lib/couchbase/datastructures/couchbase_queue.rb +145 -0
  161. data/lib/couchbase/datastructures/couchbase_set.rb +139 -0
  162. data/lib/couchbase/errors.rb +76 -66
  163. data/lib/couchbase/json_transcoder.rb +4 -4
  164. data/lib/couchbase/management/analytics_index_manager.rb +139 -25
  165. data/lib/couchbase/management/bucket_manager.rb +19 -5
  166. data/lib/couchbase/management/collection_manager.rb +16 -7
  167. data/lib/couchbase/management/query_index_manager.rb +75 -20
  168. data/lib/couchbase/management/search_index_manager.rb +65 -15
  169. data/lib/couchbase/management/user_manager.rb +2 -2
  170. data/lib/couchbase/management/view_index_manager.rb +70 -11
  171. data/lib/couchbase/mutation_state.rb +13 -0
  172. data/lib/couchbase/query_options.rb +256 -0
  173. data/lib/couchbase/scope.rb +61 -8
  174. data/lib/couchbase/search_options.rb +1512 -0
  175. data/lib/couchbase/subdoc.rb +87 -23
  176. data/lib/couchbase/version.rb +2 -2
  177. data/lib/couchbase/view_options.rb +155 -0
  178. metadata +88 -783
  179. data/.github/workflows/tests-6.0.3.yml +0 -49
  180. data/.github/workflows/tests.yml +0 -47
  181. data/.gitignore +0 -20
  182. data/.gitmodules +0 -18
  183. data/.idea/.gitignore +0 -5
  184. data/.idea/dictionaries/gem_terms.xml +0 -18
  185. data/.idea/inspectionProfiles/Project_Default.xml +0 -8
  186. data/.idea/vcs.xml +0 -12
  187. data/bin/init-cluster +0 -62
  188. data/bin/setup +0 -24
  189. data/ext/couchbase/configuration_monitor.hxx +0 -93
  190. data/ext/couchbase/operations/command.hxx +0 -77
  191. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
  192. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
  193. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
  194. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
  195. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
  196. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
  197. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
  198. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
  199. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
  200. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
  201. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
  202. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
  203. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
  204. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
  205. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
  206. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
  207. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
  208. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
  209. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
  210. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
  211. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
  212. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
  213. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
  214. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
  215. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
  216. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
  217. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
  218. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
  219. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
  220. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
  221. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
  222. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
  223. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
  224. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
  225. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
  226. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
  227. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
  228. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
  229. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
  230. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
  231. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
  232. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
  233. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
  234. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
  235. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
  236. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
  237. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
  238. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
  239. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
  240. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
  241. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
  242. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
  243. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
  244. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
  245. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
  246. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
  247. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
  248. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
  249. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
  250. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
  251. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
  252. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
  253. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
  254. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
  255. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
  256. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
  257. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
  258. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
  259. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
  260. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
  261. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
  262. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
  263. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
  264. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
  265. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
  266. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
  267. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
  268. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
  269. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
  270. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
  271. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
  272. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
  273. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
  274. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
  275. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
  276. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
  277. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
  278. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
  279. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
  280. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
  281. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
  282. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
  283. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
  284. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
  285. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
  286. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
  287. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
  288. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
  289. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
  290. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
  291. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
  292. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
  293. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
  294. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
  295. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
  296. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
  297. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
  298. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
  299. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
  300. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
  301. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
  302. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
  303. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
  304. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
  305. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
  306. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
  307. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
  308. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
  309. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
  310. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
  311. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
  312. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
  313. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
  314. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
  315. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
  316. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
  317. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
  318. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
  319. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
  320. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
  321. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
  322. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
  323. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
  324. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
  325. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
  326. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
  327. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
  328. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
  329. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
  330. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
  331. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
  332. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
  333. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
  334. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
  335. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
  336. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
  337. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
  338. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
  339. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
  340. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
  341. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
  342. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
  343. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
  344. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
  345. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
  346. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
  347. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
  348. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
  349. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
  350. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
  351. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
  352. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
  353. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
  354. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
  355. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
  356. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
  357. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
  358. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
  359. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
  360. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
  361. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
  362. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
  363. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
  364. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
  365. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
  366. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
  367. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
  368. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
  369. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
  370. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
  371. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
  372. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
  373. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
  374. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
  375. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
  376. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
  377. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
  378. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
  379. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
  380. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
  381. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
  382. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
  383. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
  384. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
  385. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
  386. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
  387. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
  388. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
  389. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
  390. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
  391. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
  392. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
  393. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
  394. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
  395. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
  396. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
  397. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
  398. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
  399. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
  400. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
  401. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
  402. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
  403. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
  404. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
  405. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
  406. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
  407. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
  408. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
  409. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
  410. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
  411. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
  412. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
  413. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
  414. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
  415. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
  416. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
  417. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
  418. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
  419. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
  420. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
  421. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
  422. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
  423. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
  424. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
  425. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
  426. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
  427. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
  428. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
  429. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
  430. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
  431. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
  432. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
  433. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
  434. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
  435. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
  436. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
  437. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
  438. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
  439. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
  440. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
  441. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
  442. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
  443. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
  444. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
  445. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
  446. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
  447. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
  448. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
  449. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
  450. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
  451. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
  452. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
  453. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
  454. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
  455. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
  456. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
  457. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
  458. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
  459. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
  460. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
  461. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
  462. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
  463. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
  464. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
  465. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
  466. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
  467. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
  468. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
  469. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
  470. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
  471. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
  472. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
  473. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
  474. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
  475. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
  476. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
  477. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
  478. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
  479. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
  480. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
  481. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
  482. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
  483. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
  484. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
  485. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
  486. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
  487. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
  488. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
  489. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
  490. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
  491. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
  492. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
  493. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
  494. data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
  495. data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
  496. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
  497. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
  498. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
  499. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
  500. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
  501. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
  502. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
  503. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
  504. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
  505. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
  506. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
  507. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
  508. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
  509. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
  510. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
  511. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
  512. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
  513. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
  514. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
  515. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
  516. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
  517. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
  518. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
  519. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
  520. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
  521. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
  522. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
  523. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
  524. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
  525. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
  526. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
  527. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
  528. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
  529. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
  530. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
  531. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
  532. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
  533. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
  534. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
  535. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
  536. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
  537. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
  538. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
  539. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
  540. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
  541. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
  542. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
  543. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
  544. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
  545. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
  546. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
  547. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
  548. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
  549. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
  550. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
  551. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
  552. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
  553. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
  554. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
  555. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
  556. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
  557. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
  558. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
  559. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
  560. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
  561. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
  562. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
  563. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
  564. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
  565. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
  566. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
  567. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
  568. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
  569. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
  570. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
  571. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
  572. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
  573. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
  574. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
  575. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
  576. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
  577. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
  578. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
  579. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
  580. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
  581. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
  582. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
  583. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
  584. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
  585. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
  586. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
  587. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
  588. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
  589. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
  590. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
  591. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
  592. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
  593. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
  594. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
  595. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
  596. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
  597. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
  598. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
  599. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
  600. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
  601. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
  602. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
  603. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
  604. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
  605. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
  606. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
  607. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
  608. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
  609. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
  610. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
  611. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
  612. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
  613. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
  614. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
  615. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
  616. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
  617. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
  618. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
  619. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
  620. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
  621. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
  622. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
  623. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
  624. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
  625. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
  626. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
  627. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
  628. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
  629. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
  630. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
  631. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
  632. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
  633. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
  634. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
  635. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
  636. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
  637. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
  638. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
  639. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
  640. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
  641. data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
  642. data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
  643. data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
  644. data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
  645. data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
  646. data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
  647. data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
  648. data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
  649. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
  650. data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
  651. data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
  652. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
  653. data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
  654. data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
  655. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
  656. data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
  657. data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
  658. data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
  659. data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
  660. data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
  661. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
  662. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
  663. data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
  664. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
  665. data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
  666. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
  667. data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
  668. data/ext/third_party/json/doc/Batteries-Included.md +0 -212
  669. data/ext/third_party/json/doc/Binding-Traits.md +0 -319
  670. data/ext/third_party/json/doc/Changelog.md +0 -31
  671. data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
  672. data/ext/third_party/json/doc/Design-Decisions.md +0 -36
  673. data/ext/third_party/json/doc/Events-Interface.md +0 -140
  674. data/ext/third_party/json/doc/Getting-Started.md +0 -19
  675. data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
  676. data/ext/third_party/json/doc/Interoperability.md +0 -75
  677. data/ext/third_party/json/doc/Overview.md +0 -24
  678. data/ext/third_party/json/doc/Overview.png +0 -0
  679. data/ext/third_party/json/doc/Parser-Interface.md +0 -84
  680. data/ext/third_party/json/doc/README.md +0 -78
  681. data/ext/third_party/json/doc/Scratchpad.md +0 -25
  682. data/ext/third_party/json/doc/Type-Traits.md +0 -364
  683. data/ext/third_party/json/doc/Types.png +0 -0
  684. data/ext/third_party/json/doc/Value-Class.md +0 -525
  685. data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
  686. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
  687. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
  688. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
  689. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
  690. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
  691. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
  692. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
  693. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
  694. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
  695. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
  696. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
  697. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
  698. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
  699. data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
  700. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
  701. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
  702. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
  703. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
  704. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
  705. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
  706. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
  707. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
  708. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
  709. data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
  710. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
  711. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
  712. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
  713. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
  714. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
  715. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
  716. data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
  717. data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
  718. data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
  719. data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
  720. data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
  721. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
  722. data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
  723. data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
  724. data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
  725. data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
  726. data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
  727. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
  728. data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
  729. data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
  730. data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
  731. data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
  732. data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
  733. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
  734. data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
  735. data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
  736. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
  737. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
  738. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
  739. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
  740. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
  741. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
  742. data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
  743. data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
  744. data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
  745. data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
  746. data/ext/third_party/json/src/test/json/double.cpp +0 -182
  747. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
  748. data/ext/third_party/json/src/test/json/escape.cpp +0 -42
  749. data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
  750. data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
  751. data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
  752. data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
  753. data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
  754. data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
  755. data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
  756. data/ext/third_party/json/src/test/json/integer.cpp +0 -118
  757. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
  758. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
  759. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
  760. data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
  761. data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
  762. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
  763. data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
  764. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
  765. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
  766. data/ext/third_party/json/src/test/json/literal.cpp +0 -18
  767. data/ext/third_party/json/src/test/json/main.hpp +0 -20
  768. data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
  769. data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
  770. data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
  771. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
  772. data/ext/third_party/json/src/test/json/operators.cpp +0 -494
  773. data/ext/third_party/json/src/test/json/optional.cpp +0 -79
  774. data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
  775. data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
  776. data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
  777. data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
  778. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
  779. data/ext/third_party/json/src/test/json/test.hpp +0 -74
  780. data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
  781. data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
  782. data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
  783. data/ext/third_party/json/src/test/json/type.cpp +0 -35
  784. data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
  785. data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
  786. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
  787. data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
  788. data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
  789. data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
  790. data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
  791. data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
  792. data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
  793. data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
  794. data/ext/third_party/json/tests/blns.json +0 -496
  795. data/ext/third_party/json/tests/canada.json +0 -9
  796. data/ext/third_party/json/tests/citm_catalog.json +0 -50469
  797. data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
  798. data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
  799. data/ext/third_party/json/tests/draft4/allOf.json +0 -112
  800. data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
  801. data/ext/third_party/json/tests/draft4/default.json +0 -49
  802. data/ext/third_party/json/tests/draft4/definitions.json +0 -32
  803. data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
  804. data/ext/third_party/json/tests/draft4/enum.json +0 -72
  805. data/ext/third_party/json/tests/draft4/items.json +0 -46
  806. data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
  807. data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
  808. data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
  809. data/ext/third_party/json/tests/draft4/maximum.json +0 -42
  810. data/ext/third_party/json/tests/draft4/minItems.json +0 -28
  811. data/ext/third_party/json/tests/draft4/minLength.json +0 -33
  812. data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
  813. data/ext/third_party/json/tests/draft4/minimum.json +0 -42
  814. data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
  815. data/ext/third_party/json/tests/draft4/not.json +0 -96
  816. data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
  817. data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
  818. data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
  819. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  820. data/ext/third_party/json/tests/draft4/pattern.json +0 -34
  821. data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
  822. data/ext/third_party/json/tests/draft4/properties.json +0 -92
  823. data/ext/third_party/json/tests/draft4/ref.json +0 -179
  824. data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
  825. data/ext/third_party/json/tests/draft4/required.json +0 -44
  826. data/ext/third_party/json/tests/draft4/type.json +0 -345
  827. data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
  828. data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
  829. data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
  830. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  831. data/ext/third_party/json/tests/taocpp/number.json +0 -682
  832. data/ext/third_party/json/tests/taocpp/position.json +0 -8
  833. data/ext/third_party/json/tests/taocpp/schema.json +0 -378
  834. data/ext/third_party/json/tests/twitter.json +0 -15482
  835. data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
  836. data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
  837. data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
  838. data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
  839. data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
  840. data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
  841. data/ext/third_party/snappy/testdata/geo.protodata +0 -0
  842. data/ext/third_party/snappy/testdata/html +0 -1
  843. data/ext/third_party/snappy/testdata/html_x_4 +0 -1
  844. data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
  845. data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
  846. data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
  847. data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
  848. data/ext/third_party/snappy/testdata/urls.10K +0 -10000
  849. data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
  850. data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
  851. data/ext/third_party/spdlog/bench/bench.cpp +0 -238
  852. data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
  853. data/ext/third_party/spdlog/bench/latency.cpp +0 -166
  854. data/ext/third_party/spdlog/bench/utils.h +0 -34
  855. data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
  856. data/ext/third_party/spdlog/example/example.cpp +0 -282
  857. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
  858. data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
  859. data/ext/third_party/spdlog/scripts/format.sh +0 -16
  860. data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
  861. data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
  862. data/ext/third_party/spdlog/tests/catch.license +0 -23
  863. data/ext/third_party/spdlog/tests/includes.h +0 -26
  864. data/ext/third_party/spdlog/tests/main.cpp +0 -2
  865. data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
  866. data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
  867. data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
  868. data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
  869. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
  870. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
  871. data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
  872. data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
  873. data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
  874. data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
  875. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
  876. data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
  877. data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
  878. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
  879. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
  880. data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
  881. data/ext/third_party/spdlog/tests/test_sink.h +0 -79
  882. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
  883. data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
  884. data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
  885. data/ext/third_party/spdlog/tests/utils.cpp +0 -125
  886. data/ext/third_party/spdlog/tests/utils.h +0 -18
  887. data/rbi/couchbase.rbi +0 -79
@@ -1,525 +0,0 @@
1
- # Value Class
2
-
3
- * [Overview](#overview)
4
- * [Value and Data Types](#value-and-data-types)
5
- * [Creating Values](#creating-values)
6
- * [Uniform Initialization](#uniform-initialization)
7
- * [Accessing Values](#accessing-values)
8
- * [Manipulating Values](#manipulating-values)
9
- * [Container Functions](#container-functions)
10
- * [Comparing Values](#comparing-values)
11
-
12
- ## Overview
13
-
14
- The Value Class `tao::json::value` is a C++ class that implements the JAXN data model, a superset of the JSON data model.
15
-
16
- It is implemented as sum-type, or discriminated union, of the JSON types, extended for the JAXN data model.
17
- On the C++ level the class consists of an `enum` to indicate which type it contains, and a `union` to store the corresponding data.
18
-
19
- More precisely, class `tao::json::value` is an instantiation of the class template `tao::json::basic_value<>` with the [included default traits](Type-Traits.md) and an [empty Base class](Advanced-Use-Cases.md#custom-base-class-for-values) as template parameters.
20
-
21
- In order to simplify the following discussion, we will mostly ignore the traits and pretend that the behaviour from the [default traits](Type-Traits.md) is hard-wired.
22
- Please read the [page on Type Traits](Type-Traits.md) to see which aspects of the behaviour of the JSON Value Class can be extended and customised, and how.
23
-
24
- Just remember that everywhere `tao::json::value` is referenced it could also be a customised version `tao::json::value< MyTraits, MyBase >` with [custom traits](Type-Traits.md) and [custom Base class for Values](Advanced-Use-Cases.md#custom-base-class-for-values).
25
-
26
- A JSON Value that is an Array or an Object contains -- when not empty -- other JSON Values, whereby a single JSON Value can store arbitrarily large and complicated JSON data structures consisting of arbitrarily nested Arrays and Objects with many sub-values, that are again instances of class `tao::json::value`.
27
-
28
- The Value class API has a large set of functions to create, inspect, and manipulate JSON (or JAXN) values.
29
-
30
- ## Value and Data Types
31
-
32
- The `enum` part of the discriminated union is a `tao::json::type`.
33
-
34
- ```c++
35
- enum class type : std::uint8_t
36
- {
37
- UNINITIALIZED,
38
- DISCARDED,
39
- DESTROYED,
40
- NULL_,
41
- BOOLEAN,
42
- SIGNED,
43
- UNSIGNED,
44
- DOUBLE,
45
- STRING,
46
- STRING_VIEW,
47
- BINARY,
48
- BINARY_VIEW,
49
- ARRAY,
50
- OBJECT,
51
- VALUE_PTR,
52
- OPAQUE_PTR
53
- };
54
- ```
55
-
56
- The set of types is larger than that defined by the data model, with the additional types allowing for greater efficiency and better error detection in some cases.
57
-
58
- The type of a JSON Value can be queried with the member function `tao::json::value::type()` which returns one of the enumeration values given above.
59
-
60
- ### Uninitialized
61
-
62
- A default initialised Value object will enter an explicit uninitialized state and report its type as `type::UNINITIALIZED`, rather than the more common default initialisation to a JSON Null.
63
-
64
- The `explicit operator bool()` returns whether the Value contains *any* valid value, including a `NULL_`.
65
- In other words, it only returns `false` when its `type()` returns `type::UNITIALIZED` (it MUST NOT be called for `type::DISCARDED` or `type::DESTROYED`).
66
-
67
- The function `tao::json::value::reset()` returns a Value to this state from any other type or state (unless `tao::json::type::DESTROYED`).
68
-
69
- ### Discarded
70
-
71
- The `type::DISCARDED` indicates that this value was the source of a move operation, meaning the object is in a moved-from state.
72
- According to the C++ standard the only allowed operations in this state are assigning another value and calling the destructor.
73
- The discarded type is only used when the `NDEBUG` macro is not set.
74
-
75
- ### Destroyed
76
-
77
- The `type::DESTROYED` indicates that this value either never completed a constructor without throwing an exception, or the destructor has already completed.
78
- At this point there is no actual value object, we are outside of its lifetime and just happen to be looking at memory that (nearly) contained a value in the past.
79
- The destroyed type is only used when the `NDEBUG` macro is not set.
80
-
81
- ### Null
82
-
83
- Represents JSON Null.
84
-
85
- Can be tested for with the member function `tao::json::value::is_null()`.
86
-
87
- ### Boolean
88
-
89
- Represents JSON True and False, stored as C++ `bool`.
90
-
91
- Can be tested for with the member function `tao::json::value::is_boolean()`.
92
-
93
- ### Numbers
94
-
95
- JSON Numbers are stored as either `std::int64_t` with `type::SIGNED`, as `std::uint64_t` with `type::UNSIGNED`, or as `double` with `type::DOUBLE`.
96
-
97
- Can be tested for with the member function `is_number()`, which will return `true` for all three types, or with the more specific `is_integer()`, `is_signed()`, `is_unsigned()` and `is_double()`.
98
-
99
- Unlike JSON, non-finite and `NaN` values are allowed for floating point values!
100
-
101
- When serialising to a format that does not support these values, an [Events Transformers](Events-Interface.md#included-transformers) can be used to [transform these values to something else on-the-fly](Common-Use-Cases.md#serialise-with-base64-strings-for-binary-data).
102
-
103
- ### Strings
104
-
105
- Strings are sequences of Unicode code points stored as UTF-8 as `std::string` with `type::STRING`, or as `tao::string_view` with `type::STRING_VIEW`; the view class is an alias for `std::string_view` when available.
106
-
107
- Checking for valid UTF-8, and (un)escaping according to the representation format like JSON, is performed "at the edges" by the respective parsers and encoders (although some parsers might choose to omit this check for performance reasons).
108
-
109
- Can be tested for with the member functions `is_string_type()`, which will return `true` for both types, or with the more specific `is_string()` and `is_string_view()`.
110
-
111
- ### Binary Data
112
-
113
- Binary data is stored as `std::vector< tao::byte >` with `type::BINARY`, or as `tao::binary_view` with `type::BINARY_VIEW`; here `tao::byte` is an alias for `std::byte` when available.
114
-
115
- Can be tested for with the member function `is_binary_type()`, which will return `true` for both types, or with the more specific `is_binary()` and `is_binary_view()`.
116
-
117
- When serialising to a format that does not support binary data, an [Events Transformer](Events-Interface.md#included-transformers) can be used to [transform binary data to something else on-the-fly](Common-Use-Cases.md#serialise-with-base64-strings-for-binary-data).
118
-
119
- ### Arrays
120
-
121
- JSON Arrays are stored as `std::vector< tao::json::value >`.
122
-
123
- Can be tested for with the member function `tao::json::value::is_array()`.
124
-
125
- (The sub-values share the [type traits](Type-Traits.md) and [base class](Advanced-Use-Cases.md#custom-base-class-for-values) of the containing `basic_value<>`.)
126
-
127
- ### Objects
128
-
129
- JSON Objects are stored as `std::map< std::string, tao::json::value >`.
130
-
131
- Can be tested for with the member function `tao::json::value::is_object()`.
132
-
133
- (The sub-values share the [type traits](Type-Traits.md) and [base class](Advanced-Use-Cases.md#custom-base-class-for-values) of the containing `basic_value<>`.)
134
-
135
- ### Value Pointers
136
-
137
- See the [section on instance sharing with Value Pointers](Instance-Sharing.md#value-pointers) on the [More Performance](More -Performance.md).
138
-
139
- ### Opaque Pointers
140
-
141
- See the [section on instance sharing with Opaque Pointers](Instance-Sharing.md#opaque-pointers) on the [More Performance](More -Performance.md).
142
-
143
- ## Creating Values
144
-
145
- The Value Class has a default constructor that creates a Value with `type::UNINITIALIZED`.
146
- It also has copy and move constructors (and copy and move assignment operators, and a `swap()` member function).
147
-
148
- There are also two **non**-explicit constructors, one that takes an argument of any type and uses [the Type Traits](Type-Traits.md) for the details of how to create the Value, and one that takes an initialiser-list to create an Object.
149
-
150
- The first allows creating (or assigning to) a Value from [a list of types](Batteries-Included.md#default-traits) [that can be extended](Type-Traits.md) [like here](Batteries-Included.md#additional-traits).
151
-
152
- ```c++
153
- const tao::json::value v1 = true;
154
- const tao::json::value v2 = "Hi!";
155
- const std::shared_ptr< std::map< std::string, std::vector< int > > > data = ...;
156
- const tao::json::value v3 = data;
157
- ```
158
-
159
- The second allows creating Values that represent JSON Objects with an initialiser-list of key-value pairs.
160
- As per the JSON standard, the keys must be strings (`std::string`, `tao::string_view` or `const char*`).
161
- The values can individually be converted to JSON Values, and can therefore be of any type that a JSON Value can be constructed from.
162
-
163
- ```c++
164
- const tao::json::value v = {
165
- { "hello", "world" },
166
- { "answer", 41.0 },
167
- { "correct", false },
168
- { "sub-object", {
169
- { "value", 1 },
170
- { "frobnicate", true }
171
- } }
172
- };
173
- ```
174
-
175
- If a certain C++ type is frequently used with the same key in a JSON Object, the key can be put in the [traits for that type](Type-Traits.md).
176
- When an instance of such a type is used in a JSON Object intialiser-list *without* a key, then [the key from the traits](Type-Traits.md#default-key-for-objects) will be used by default.
177
-
178
- ```c++
179
- const type_with_default_key t;
180
- const tao::json::value v( {
181
- { "foo", 42 },
182
- { "bar", true },
183
- t // Shortcut for: { tao::json::traits< type_with_default_key >::default_key< traits >::as_string(), t }
184
- } );
185
- ```
186
-
187
- See the [section on default keys](Type-Traits.md#default-key-for-objects) on the [Type Traits page](Type-Traits.md) for details on how to set up a default key for a type.
188
- Object initialiser-lists can still use (different) keys for types with a default key when they are given explicitly just like for all (other) types.
189
-
190
- Since it is [not possible to use initialiser-lists in a way that efficiently and unambiguously works for both Arrays and Objects](Design-Decisions.md#initialiser-lists), it is necessary to disambiguate manually by using the static `tao::json::value::array()` function to create a Value with an Array from an initialiser-list.
191
-
192
- ```c++
193
- const auto array = tao::json::value::array( {
194
- 42.0,
195
- "fish",
196
- true,
197
- // an element which is itself an array:
198
- tao::json::value::array( { 1, 2, 3 } ),
199
- // an element which is an object:
200
- {
201
- { "an", 1 },
202
- { "object", 2 },
203
- { "as sub-value", "of the array" }
204
- }
205
- } );
206
- ```
207
-
208
- To simplify creating Values that represent a JSON Null value, an empty array, an empty object, or empty binary data, there are global objects `tao::json::null`, `tao::json::empty_array`, `tao::json::empty_object`, and `tao::json::empty_binary`.
209
- They can construct Values, and, like everything else that a Value can be constructed from, can be assigned to Values. Additionally, you can compare Values against the global helper objects.
210
-
211
- ```c++
212
- tao::json::value v = tao::json::null;
213
- v = tao::json::empty_array;
214
- v = {
215
- { "empty object", tao::json::empty_object },
216
- { "empty binary", tao::json::empty_binary }
217
- };
218
- ```
219
-
220
- ## Uniform Initialization
221
-
222
- The Value class has both a constructor and an assignment operator accepting an initializer list which assigns a special meaning to curly brackets in these contexts and has consequences regarding the so called "uniform initialization".
223
- The idealized intention of uniform initialization was to "always" use curly brackets instead of round brackets to construct an object.
224
- However as curly brackets for Values are used to denote a JSON Object, they should not be confused with, or blindly replace, round brackets.
225
-
226
- ### `empty_object`
227
-
228
- **Guideline:** Always use `tao::json::empty_object` instead of `{}` to create an empty JSON Object.
229
-
230
- The curly brackets are the default constructor in several important cases and thereby create an uninitialized value, i.e. a Value of `type::UNINITIALIZED`.
231
-
232
- The following lines behave as expected:
233
-
234
- ```c++
235
- tao::json::value v( tao::json::empty_object );
236
- tao::json::value v = tao::json::empty_object;
237
-
238
- auto v = tao::json::value( tao::json::empty_object );
239
-
240
- v = tao::json::empty_object;
241
- v = { { "foo", tao::json::empty_object } };
242
- ```
243
-
244
- The following lines using `{}` might produce surprising behaviour:
245
-
246
- ```c++
247
- tao::json::value v{}; // default ctor, not initializer_list ctor
248
- tao::json::value v = {}; // default ctor, not initializer_list ctor
249
-
250
- tao::json::value v( {} ); // initializer_list ctor, creates an empty object
251
-
252
- v = {}; // assign a default-constructed value
253
- v = { { "foo", {} } }; // object with one member, key "foo" with an uninitialized value
254
- ```
255
-
256
- A few more points to consider:
257
-
258
- ```c++
259
- // creates a variable 'v' with type tao::json::empty_object_t, not tao::json::value
260
- auto v = tao::json::empty_object;
261
-
262
- // default ctor:
263
- tao::json::value v;
264
-
265
- // most vexing parse, declares a function
266
- tao::json::value v();
267
- ```
268
-
269
- ### Single Argument Constructors
270
-
271
- To copy/move a Value, or construct a Value from a single value via the traits, use round brackets or assignment.
272
-
273
- **Guideline:** Avoid using curly brackets *unless* you mean to create/assign a non-empty JSON Object.
274
-
275
- The following should behave as expected:
276
-
277
- ```c++
278
- tao::json::value v = 42; // uses traits
279
- tao::json::value v = "Hallo"; // uses traits
280
-
281
- tao::json::value v( 42 ); // uses traits
282
- tao::json::value v( "Hallo" ); // uses traits
283
-
284
- tao::json::value v2 = v; // copy ctor
285
- tao::json::value v2 = std::move( v ); // move ctor
286
-
287
- tao::json::value v2( v ); // copy ctor
288
- tao::json::value v2( std::move( v ) ); // move ctor
289
-
290
- // any non-empty initializer list for a JSON object is OK
291
- tao::json::value v = { { "foo", 42 } };
292
- tao::json::value v( { { "foo", 42 } } );
293
-
294
- v = { { "foo", 42 } };
295
- ```
296
-
297
- Again, as a reminder:
298
-
299
- ```c++
300
- // avoid empty curly brackets:
301
- tao::json::value v{}; // an uninitialized Value
302
- tao::json::value v = {}; // an uninitialized Value
303
- tao::json::value v( {} ); // empty JSON object (*)
304
- tao::json::value v( tao::json::empty_object ); // preferred
305
-
306
- v = {}; // Assigns a default constructed (uninitialized) Value
307
- ```
308
-
309
- Note that the line marked with (\*) does not work on GCC 7 due to a compiler bug. Hence it should also be avoided, even if it is technically correct.
310
-
311
- ### Implicit construction
312
-
313
- **Guideline:** When calling a function with a Value as parameter, only use curly brackets to indicate non-empty JSON Objects.
314
-
315
- Examples:
316
-
317
- ```c++
318
- void f( const tao::json::value& );
319
-
320
- f( 42 );
321
- f( "Hello" );
322
- f( tao::json::empty_object );
323
- f( { { "foo", 42 } } );
324
- ```
325
-
326
- With the problematic cases being:
327
-
328
- ```c++
329
- f( {} ); // default ctor for v, uninitialized object
330
- f( { 42 } ); // won't call the ctor with int (*)
331
- f( { v2 } ); // won't call the copy ctor (*)
332
- ```
333
-
334
- Again, having a ctor taking an initializer list breaks "uniform initialization", meaning that you can not provide parameters for other constructors using curly brackets.
335
-
336
- The following works as expected (albeit being overly verbose and therefore slightly pointless):
337
-
338
- ```c++
339
- f( tao::json::value( 42 ) );
340
- f( tao::json::value( v2 ) );
341
- ```
342
-
343
- ## Accessing Values
344
-
345
- The function `tao::json::value::type()`, and the functions like `tao::json::value::is_boolean()` mentioned above, can be used to determine the type of a Value.
346
-
347
- The data held by a Value can be extracted and converted with the `tao::json::value::as< T >()` and `tao::json::value::to< T >( T& )` functions.
348
-
349
- 1. The basic form of `as()` returns the value of type `T`, while
350
- 2. `to()` takes a non-const reference to an instance of type `T`.
351
-
352
- ```c++
353
- const tao::json::value v = 3;
354
- int i = v.as< int >(); // Initialised i to 3.
355
- v.to( i ); // Sets i to 3.
356
- ```
357
-
358
- Note that the [default Type Traits](Type-Traits.md) do **not** perform range checking when converting between different arithmetic types!
359
-
360
- As usual, the conversion works with [all types and nested types that are supported by the default Traits](Batteries-Included.md#default-traits) and the [additional Traits](Batteries-Included.md#additional-traits), for example shared pointers and vectors.
361
-
362
- ```c++
363
- const tao::json::value v = tao::json::value::array( { 1, 2, tao::json::null, 4 } );
364
- const auto w = v.as< std::vector< std::shared_ptr< int > > >();
365
- ```
366
-
367
- When the Type Traits are correctly specialised for a custom type then [a JSON Value can be directly converted into the custom type](Type-Traits.md#convert-value-into-type) with `tao::json::value::as()`.
368
-
369
- The function `tao::json::value::optional< T >()` is similar to `tao::json::value::as< T >()`, but it returns a `tao::optional< T >`.
370
- The return value is an empty optional when the Value on which the method was called is Null, else an optional initalised with the result of a call to `tao::json::value::as< T >()` is returned.
371
-
372
- When the Value in question is an Object, the variants of `as()`, `to()` and `optional()` that take an Object key as (additional) argument can be used.
373
-
374
- The `optional()` function with a key returns an empty optional when the key is not found in the Object; when the Value is not an Object or the unconditional conversion to the target type fails, an exception is thrown.
375
-
376
- ```c++
377
- const tao::json::value v = {
378
- { "foo", 4 },
379
- { "bar", tao::json::null }
380
- };
381
- int i = v.as< int >( "foo" ); // Like v.at( "foo" ).as< int >()
382
- v.to( i, "foo" ); // Like v.at( "foo" ).to( i )
383
-
384
- auto a = v.optional< int >( "foo" ); // a has value 4
385
- auto b = v.optional< int >( "xyz" ); // b is empty
386
- auto c = v.optional< int >( "bar" ); // throws -- null is not an int
387
- auto d = v.at( "foo" ).optional< int >( "bar" ); // throws -- 4 is not an Object
388
- ```
389
-
390
- The following member functions of class `tao::json::value` bypass the Type Traits and provide direct access to the data in a Value.
391
- They all throw an exception when the type of the Value is not the expected one.
392
-
393
- | Value Class Member Function | Remarks |
394
- |-----------------------------|---------|
395
- | `bool get_boolean() const` ||
396
- | `std::int64_t get_signed() const` ||
397
- | `std::uint64_t get_unsigned() const` ||
398
- | `double get_double() const` ||
399
- | `std::string& get_string()` ||
400
- | `const std::string& get_string() const` ||
401
- | `tao::string_view get_string_view() const` ||
402
- | `tao::string_view get_string_type() const` | `type::STRING` and `type::STRING_VIEW` |
403
- | `std::vector< tao::byte >& get_binary()` ||
404
- | `const std::vector< tao::byte >& get_binary() const` ||
405
- | `tao::binary_view get_binary_view() const` ||
406
- | `tao::binary_view get_binary_type() const` | `type::BINARY` and `type::BINARY_VIEW` |
407
- | `std::vector< value >& get_array()` ||
408
- | `const std::vector< value >& get_array() const` ||
409
- | `std::map< std::string, value >& get_object()` ||
410
- | `const std::map< std::string, value >& get_object() const` ||
411
- | `const value* get_value_ptr() const` ||
412
-
413
- For particular templated code the `get<>()` accessor function that is templated over the `tao::json::type`-enumeration can be used.
414
- It behaves just like the correspondingly named get function, i.e. `get< tao::json::type::STRING >` is the same as `get_string()`.
415
-
416
- ```c++
417
- tao::json::value v = "hallo";
418
- const std::string s1 = v.get_string();
419
- const std::string s2 = v.get< tao::json::type::STRING >();
420
- assert( s1 == s2 ); // OK
421
- ```
422
-
423
- ## Manipulating Values
424
-
425
- Values can always (unless of type `tao::json::DESTROYED`, which should never be encountered in code that doesn't invoke unspecified or undefined behaviour) be assigned a new value using copy-assignment or move-assignment, and the contents of two Values can be swapped with the `tao::json::value::swap()` member function.
426
-
427
- Mutable references to standard containers returned by the mutable getters above can be normally manipulated manually and with standard algorithms etc.
428
-
429
- Like the equivalent constructor, the assignment operators that accept any type use the Type Traits to assign the Value from the argument.
430
-
431
- The following member functions of class `tao::json::value` bypass the Type Traits and directly assign to the underlying data in a Value.
432
-
433
- | Value Class Member Function | Remarks |
434
- |-----------------------------|---------|
435
- | `void assign_null() noexcept` ||
436
- | `void assign_boolean( const bool ) noexcept` ||
437
- | `void assign_signed( const std::int64_t ) noexcept` ||
438
- | `void assign_unsigned( const std::uint64_t ) noexcept` ||
439
- | `void assign_double( const double ) noexcept` ||
440
- | `void assign_string( std::string&& ) noexcept` ||
441
- | `void assign_string( const std::string& )` ||
442
- | `void assign_string_view( const tao::string_view ) noexcept` ||
443
- | `template< typename... Ts > void emplace_string( Ts&&... )` | `noexcept` depending on arguments |
444
- | `void assign_binary( std::vector< tao::byte >&& ) noexcept` ||
445
- | `void assign_binary( const std::vector< tao::byte >& )` ||
446
- | `void assign_binary_view( const tao::binary_view ) noexcept` ||
447
- | `template< typename... Ts > void emplace_binary( Ts&&... )` | `noexcept` depending on arguments |
448
- | `void assign_array( std::vector< value >&& ) noexcept` ||
449
- | `void assign_array( const std::vector< value >& )` ||
450
- | `template< typename... Ts > void emplace_array( Ts&&... )` | `noexcept` depending on arguments |
451
- | `void assign_object( std::map< std::string, value >&& ) noexcept` ||
452
- | `void assign_object( const std::map< std::string, value >& )` ||
453
- | `template< typename... Ts > void emplace_object( Ts&&... )` | `noexcept` depending on arguments |
454
- | `void assign_value_ptr( const value* ) noexcept` ||
455
- | `template< typename T > void assign_opaque_ptr( T* ) noexcept` ||
456
- | `template< typename T > void assign_opaque_ptr( T*, const producer_t ) noexcept` ||
457
-
458
- Remember that the functions `tao::json::value::get_array()` and `tao::json::value::get_object()` are actually `tao::json::basic_value< Traits, Base >::get_array()` and `tao::json::basic_value< Traits, Base >::get_object()`, and that the sub-values of the returned containers have the same `Traits` and `Base` class as the Value on which the method was invoked.
459
-
460
- ```c++
461
- tao::json::value x = tao::json::empty_array;
462
- std::vector< tao::json::value >& a = x.get_array();
463
-
464
- tao::json::basic_value< my_traits > y = tao::json::empty_array;
465
- std::vector< tao::json::basic_value< my_traits > >& b = y.get_array();
466
-
467
- tao::json::basic_value< my_traits, my_base > z = tao::json::empty_array;
468
- std::vector< tao::json::basic_value< my_traits, my_base > >& c = z.get_array();
469
- ```
470
-
471
- Similarly, when assigning to a Value, or adding further sub-values to a Value representing an Array or Object, Values with the same Traits and Base need to be used.
472
-
473
- ## Container Functions
474
-
475
- There are several convenience functions that simplify access and manipulation of Values representing Arrays and Objects.
476
-
477
- The following functions have several overloads and can be called with a `std::size_t` on Values representing an Array, a `std::string` for Values representing an Object, or with a [JSON Pointer](Extended-Use-Cases#json-pointer).
478
-
479
- When called with a [JSON Pointer](Extended-Use-Cases#json-pointer), the type of index, integer or string, must correspond to the type of container, Array or Object, on all steps along the path.
480
-
481
- The `tao::json::value::at()` function indexes Arrays and Objects via `std::vector::at()` and `std::map::at()`, respectively.
482
- When called with a [JSON Pointer](Extended-Use-Cases#json-pointer), the contents of the pointer must be consistent with the type of Value.
483
-
484
- Similarly `tao::json::value::operator[]` indexes Arrays and Objects via `std::vector::operator[]` and `std::map::operator[]`, respectively.
485
- For Objects, it keeps the semantics of the underlying `std::map` and inserts a default-constructed Value when the key string is not found.
486
-
487
- The `tao::json::value::erase()` function erases a sub-value of an Array or Object via `std::vector::erase()` and `std::map::erase()`, respectively.
488
-
489
- The `tao::json::value::find()` function can only be called with a `std::size_t` or a `std::string` for Arrays and Objects, respectively.
490
- It returns a plain pointer to the sub-value, or `nullptr` when no matching entry was found.
491
- As usual there are both a const overload that returns a `const value*`, and a non-const overload that returns a `value*`.
492
-
493
- The `tao::json::value::optional< T >()` function exists in two versions, one without arguments [explained above](#accessing-values), and one that can take any argument that `tao::json::value::find()` can.
494
- The latter returns an empty optional when no entry is found; it does *not* return an empty optional when a JSON Null entry is found but throws an exception when the found entry can not be converted to `T` via `tao::json::value::as< T >()`.
495
-
496
- The following functions include calls to `tao::json::value::prepare_array()` and `tao::json::value::prepare_object()` which are used on empty (`tao::json::type::UNITIALIZED` or `tao::json::type::DISCARDED`) Values to initialise to an empty array, or empty object, respectively.
497
-
498
- The `tao::json::value::push_back()` and `tao::json::value::emplace_back()` functions for Arrays, and `tao::json::value::insert()` and `tao::json::value::emplace()` for Objects, again forward to the corresponding functions of the underlying standard container.
499
-
500
- A more general version of `tao::json:value::insert()` inserts the JSON Value from the second argument in the position indicated by the JSON Pointer in its first argument.
501
-
502
- To add multiple entries to an Array or Object with a single function call use `tao::json::value::append()` with Arrays, and `tao::json::value::insert()` with Objects.
503
- Both take an initialiser-list, `tao::json::value::append()` one with only values like `static tao::json::value::array()`, and `tao::json::value::insert()` one with keys and values like the constructor that creates an Object from an initialiser-list does.
504
-
505
- ## Comparing Values
506
-
507
- The library contains the full complement of comparison operators (`==`, `!=`, `<`, `>`, `<=`, `>=` ) to compare Values with other Values, and to compare Values with any other C++ type.
508
-
509
- Comparison of two Values performs a structural recursive comparison ignoring both the Type Traits and the base class template parameters.
510
- The comparison is performed at the data model level, abstracting away from implementation details and optimisations.
511
-
512
- * Numbers are compared by value, independent of which of the possible representations they use.
513
- * Strings and string views are compared by comparing character sequences, independent of which representation is used.
514
- * Binary data and binary views are compared by comparing byte sequences, independent of which representation is used.
515
- * Value Pointers are skipped, the comparison behaves "as if" the pointee Value were copied to the Value with the pointer.
516
- * Values of different incompatible types will be ordered by the numeric Values of their type enum.
517
-
518
- Comparison between a JSON Value and another type is performed by either
519
-
520
- 1. creating a Value object from the other type and performing the comparison between the two Value, or
521
- 2. using the [Type Traits](Type-Traits.md) to directly perform the comparison without creating a temporary Value.
522
-
523
- See the [documentation on Type Traits](Type-Traits.md#compare-value-with-type) for details on how to enable comparison operators without temporary Values for a type.
524
-
525
- Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey