couchbase 3.0.0.alpha.4 → 3.0.0.alpha.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (749) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/bin/fetch-stats +19 -0
  4. data/bin/init-cluster +24 -24
  5. data/bin/jenkins/build-extension +35 -0
  6. data/bin/jenkins/install-dependencies +47 -0
  7. data/bin/jenkins/test-with-cbdyncluster +58 -0
  8. data/couchbase.gemspec +27 -1
  9. data/examples/subdocument.rb +2 -2
  10. data/ext/build_version.hxx.in +1 -1
  11. data/ext/couchbase/cluster.hxx +41 -40
  12. data/ext/couchbase/couchbase.cxx +174 -61
  13. data/ext/couchbase/io/dns_message.hxx +3 -6
  14. data/ext/couchbase/io/http_session.hxx +31 -26
  15. data/ext/couchbase/io/{session_manager.hxx → http_session_manager.hxx} +3 -3
  16. data/ext/couchbase/io/mcbp_message.hxx +19 -2
  17. data/ext/couchbase/io/mcbp_session.hxx +89 -47
  18. data/ext/couchbase/operations/command.hxx +18 -7
  19. data/ext/couchbase/operations/document_analytics.hxx +5 -6
  20. data/ext/couchbase/operations/document_decrement.hxx +2 -1
  21. data/ext/couchbase/operations/document_exists.hxx +2 -1
  22. data/ext/couchbase/operations/document_get.hxx +2 -1
  23. data/ext/couchbase/operations/document_get_and_lock.hxx +2 -1
  24. data/ext/couchbase/operations/document_get_and_touch.hxx +2 -1
  25. data/ext/couchbase/operations/document_get_projected.hxx +2 -1
  26. data/ext/couchbase/operations/document_increment.hxx +2 -1
  27. data/ext/couchbase/operations/document_insert.hxx +2 -1
  28. data/ext/couchbase/operations/document_lookup_in.hxx +21 -1
  29. data/ext/couchbase/operations/document_mutate_in.hxx +44 -2
  30. data/ext/couchbase/operations/document_query.hxx +6 -7
  31. data/ext/couchbase/operations/document_remove.hxx +2 -1
  32. data/ext/couchbase/operations/document_replace.hxx +2 -1
  33. data/ext/couchbase/operations/document_search.hxx +3 -2
  34. data/ext/couchbase/operations/document_touch.hxx +2 -1
  35. data/ext/couchbase/operations/document_unlock.hxx +2 -1
  36. data/ext/couchbase/operations/document_upsert.hxx +2 -1
  37. data/ext/couchbase/operations/document_view.hxx +2 -1
  38. data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
  39. data/ext/couchbase/protocol/client_opcode.hxx +7 -3
  40. data/ext/couchbase/protocol/client_response.hxx +1 -1
  41. data/ext/couchbase/protocol/cmd_hello.hxx +10 -0
  42. data/ext/couchbase/protocol/cmd_lookup_in.hxx +1 -0
  43. data/ext/couchbase/protocol/cmd_mutate_in.hxx +53 -5
  44. data/ext/couchbase/version.hxx +1 -1
  45. data/ext/extconf.rb +1 -1
  46. data/lib/couchbase/bucket.rb +3 -0
  47. data/lib/couchbase/cluster.rb +5 -0
  48. data/lib/couchbase/collection.rb +18 -6
  49. data/lib/couchbase/collection_options.rb +50 -7
  50. data/lib/couchbase/errors.rb +2 -2
  51. data/lib/couchbase/subdoc.rb +80 -19
  52. data/lib/couchbase/version.rb +1 -1
  53. metadata +7 -705
  54. data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
  55. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
  56. data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
  57. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
  58. data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
  59. data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
  60. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
  61. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
  62. data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
  63. data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
  64. data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
  65. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
  66. data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
  67. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
  68. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
  69. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
  70. data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
  71. data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
  72. data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
  73. data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
  74. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
  75. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
  76. data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
  77. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
  78. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
  79. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
  80. data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
  81. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
  82. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
  83. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
  84. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
  85. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
  86. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
  87. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
  88. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
  89. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
  90. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
  91. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
  92. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
  93. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
  94. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
  95. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
  96. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
  97. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
  98. data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
  99. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
  100. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
  101. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
  102. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
  103. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
  104. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
  105. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
  106. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
  107. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
  108. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
  109. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
  110. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
  111. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
  112. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
  113. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
  114. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
  115. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
  116. data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
  117. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
  118. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
  119. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
  120. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
  121. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
  122. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
  123. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
  124. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
  125. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
  126. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
  127. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
  128. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
  129. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
  130. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
  131. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
  132. data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
  133. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
  134. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
  135. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
  136. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
  137. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
  138. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
  139. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
  140. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
  141. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
  142. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
  143. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
  144. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
  145. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
  146. data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
  147. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
  148. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
  149. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
  150. data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
  151. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
  152. data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
  153. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
  154. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
  155. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
  156. data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
  157. data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
  158. data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
  159. data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
  160. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
  161. data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
  162. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
  163. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
  164. data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
  165. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
  166. data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
  167. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
  168. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
  169. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
  170. data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
  171. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
  172. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
  173. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
  174. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
  175. data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
  176. data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
  177. data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
  178. data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
  179. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
  180. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
  181. data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
  182. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
  183. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
  184. data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
  185. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
  186. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
  187. data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
  188. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
  189. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
  190. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
  191. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
  192. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
  193. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
  194. data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
  195. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
  196. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
  197. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
  198. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
  199. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
  200. data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
  201. data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
  202. data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
  203. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
  204. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
  205. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
  206. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
  207. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
  208. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
  209. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
  210. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
  211. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
  212. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
  213. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
  214. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
  215. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
  216. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
  217. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
  218. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
  219. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
  220. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
  221. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
  222. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
  223. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
  224. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
  225. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
  226. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
  227. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
  228. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
  229. data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
  230. data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
  231. data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
  232. data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
  233. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
  234. data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
  235. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
  236. data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
  237. data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
  238. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
  239. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
  240. data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
  241. data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
  242. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
  243. data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
  244. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
  245. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
  246. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
  247. data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
  248. data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
  249. data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
  250. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
  251. data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
  252. data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
  253. data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
  254. data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
  255. data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
  256. data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
  257. data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
  258. data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
  259. data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
  260. data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
  261. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
  262. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
  263. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
  264. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
  265. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
  266. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
  267. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
  268. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
  269. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
  270. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
  271. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
  272. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
  273. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
  274. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
  275. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
  276. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
  277. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
  278. data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
  279. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
  280. data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
  281. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
  282. data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
  283. data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
  284. data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
  285. data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
  286. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
  287. data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
  288. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
  289. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
  290. data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
  291. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
  292. data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
  293. data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
  294. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
  295. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
  296. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
  297. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
  298. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
  299. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
  300. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
  301. data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
  302. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
  303. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
  304. data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
  305. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
  306. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
  307. data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
  308. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
  309. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
  310. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
  311. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
  312. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
  313. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
  314. data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
  315. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
  316. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
  317. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
  318. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
  319. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
  320. data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
  321. data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
  322. data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
  323. data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
  324. data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
  325. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
  326. data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
  327. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
  328. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
  329. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
  330. data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
  331. data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
  332. data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
  333. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
  334. data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
  335. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
  336. data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
  337. data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
  338. data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
  339. data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
  340. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
  341. data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
  342. data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
  343. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
  344. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
  345. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
  346. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
  347. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
  348. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
  349. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
  350. data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
  351. data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
  352. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
  353. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
  354. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
  355. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
  356. data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
  357. data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
  358. data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
  359. data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
  360. data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
  361. data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
  362. data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
  363. data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
  364. data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
  365. data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
  366. data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
  367. data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
  368. data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
  369. data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
  370. data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
  371. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
  372. data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
  373. data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
  374. data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
  375. data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
  376. data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
  377. data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
  378. data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
  379. data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
  380. data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
  381. data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
  382. data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
  383. data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
  384. data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
  385. data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
  386. data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
  387. data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
  388. data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
  389. data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
  390. data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
  391. data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
  392. data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
  393. data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
  394. data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
  395. data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
  396. data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
  397. data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
  398. data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
  399. data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
  400. data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
  401. data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
  402. data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
  403. data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
  404. data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
  405. data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
  406. data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
  407. data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
  408. data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
  409. data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
  410. data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
  411. data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
  412. data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
  413. data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
  414. data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
  415. data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
  416. data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
  417. data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
  418. data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
  419. data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
  420. data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
  421. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
  422. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
  423. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
  424. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
  425. data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
  426. data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
  427. data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
  428. data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
  429. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
  430. data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
  431. data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
  432. data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
  433. data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
  434. data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
  435. data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
  436. data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
  437. data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
  438. data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
  439. data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
  440. data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
  441. data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
  442. data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
  443. data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
  444. data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
  445. data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
  446. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
  447. data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
  448. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
  449. data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
  450. data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
  451. data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
  452. data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
  453. data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
  454. data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
  455. data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
  456. data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
  457. data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
  458. data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
  459. data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
  460. data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
  461. data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
  462. data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
  463. data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
  464. data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
  465. data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
  466. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
  467. data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
  468. data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
  469. data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
  470. data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
  471. data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
  472. data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
  473. data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
  474. data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
  475. data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
  476. data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
  477. data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
  478. data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
  479. data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
  480. data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
  481. data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
  482. data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
  483. data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
  484. data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
  485. data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
  486. data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
  487. data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
  488. data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
  489. data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
  490. data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
  491. data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
  492. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
  493. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
  494. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
  495. data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
  496. data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
  497. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
  498. data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
  499. data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
  500. data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
  501. data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
  502. data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
  503. data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
  504. data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
  505. data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
  506. data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
  507. data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
  508. data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
  509. data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
  510. data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
  511. data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
  512. data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
  513. data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
  514. data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
  515. data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
  516. data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
  517. data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
  518. data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
  519. data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
  520. data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
  521. data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
  522. data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
  523. data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
  524. data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
  525. data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
  526. data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
  527. data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
  528. data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
  529. data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
  530. data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
  531. data/ext/third_party/json/doc/Batteries-Included.md +0 -212
  532. data/ext/third_party/json/doc/Binding-Traits.md +0 -319
  533. data/ext/third_party/json/doc/Changelog.md +0 -31
  534. data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
  535. data/ext/third_party/json/doc/Design-Decisions.md +0 -36
  536. data/ext/third_party/json/doc/Events-Interface.md +0 -140
  537. data/ext/third_party/json/doc/Getting-Started.md +0 -19
  538. data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
  539. data/ext/third_party/json/doc/Interoperability.md +0 -75
  540. data/ext/third_party/json/doc/Overview.md +0 -24
  541. data/ext/third_party/json/doc/Overview.png +0 -0
  542. data/ext/third_party/json/doc/Parser-Interface.md +0 -84
  543. data/ext/third_party/json/doc/README.md +0 -78
  544. data/ext/third_party/json/doc/Scratchpad.md +0 -25
  545. data/ext/third_party/json/doc/Type-Traits.md +0 -364
  546. data/ext/third_party/json/doc/Types.png +0 -0
  547. data/ext/third_party/json/doc/Value-Class.md +0 -525
  548. data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
  549. data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
  550. data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
  551. data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
  552. data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
  553. data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
  554. data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
  555. data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
  556. data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
  557. data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
  558. data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
  559. data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
  560. data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
  561. data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
  562. data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
  563. data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
  564. data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
  565. data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
  566. data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
  567. data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
  568. data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
  569. data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
  570. data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
  571. data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
  572. data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
  573. data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
  574. data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
  575. data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
  576. data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
  577. data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
  578. data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
  579. data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
  580. data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
  581. data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
  582. data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
  583. data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
  584. data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
  585. data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
  586. data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
  587. data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
  588. data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
  589. data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
  590. data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
  591. data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
  592. data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
  593. data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
  594. data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
  595. data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
  596. data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
  597. data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
  598. data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
  599. data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
  600. data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
  601. data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
  602. data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
  603. data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
  604. data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
  605. data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
  606. data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
  607. data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
  608. data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
  609. data/ext/third_party/json/src/test/json/double.cpp +0 -182
  610. data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
  611. data/ext/third_party/json/src/test/json/escape.cpp +0 -42
  612. data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
  613. data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
  614. data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
  615. data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
  616. data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
  617. data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
  618. data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
  619. data/ext/third_party/json/src/test/json/integer.cpp +0 -118
  620. data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
  621. data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
  622. data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
  623. data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
  624. data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
  625. data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
  626. data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
  627. data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
  628. data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
  629. data/ext/third_party/json/src/test/json/literal.cpp +0 -18
  630. data/ext/third_party/json/src/test/json/main.hpp +0 -20
  631. data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
  632. data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
  633. data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
  634. data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
  635. data/ext/third_party/json/src/test/json/operators.cpp +0 -494
  636. data/ext/third_party/json/src/test/json/optional.cpp +0 -79
  637. data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
  638. data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
  639. data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
  640. data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
  641. data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
  642. data/ext/third_party/json/src/test/json/test.hpp +0 -74
  643. data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
  644. data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
  645. data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
  646. data/ext/third_party/json/src/test/json/type.cpp +0 -35
  647. data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
  648. data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
  649. data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
  650. data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
  651. data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
  652. data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
  653. data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
  654. data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
  655. data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
  656. data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
  657. data/ext/third_party/json/tests/blns.json +0 -496
  658. data/ext/third_party/json/tests/canada.json +0 -9
  659. data/ext/third_party/json/tests/citm_catalog.json +0 -50469
  660. data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
  661. data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
  662. data/ext/third_party/json/tests/draft4/allOf.json +0 -112
  663. data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
  664. data/ext/third_party/json/tests/draft4/default.json +0 -49
  665. data/ext/third_party/json/tests/draft4/definitions.json +0 -32
  666. data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
  667. data/ext/third_party/json/tests/draft4/enum.json +0 -72
  668. data/ext/third_party/json/tests/draft4/items.json +0 -46
  669. data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
  670. data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
  671. data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
  672. data/ext/third_party/json/tests/draft4/maximum.json +0 -42
  673. data/ext/third_party/json/tests/draft4/minItems.json +0 -28
  674. data/ext/third_party/json/tests/draft4/minLength.json +0 -33
  675. data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
  676. data/ext/third_party/json/tests/draft4/minimum.json +0 -42
  677. data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
  678. data/ext/third_party/json/tests/draft4/not.json +0 -96
  679. data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
  680. data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
  681. data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
  682. data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
  683. data/ext/third_party/json/tests/draft4/pattern.json +0 -34
  684. data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
  685. data/ext/third_party/json/tests/draft4/properties.json +0 -92
  686. data/ext/third_party/json/tests/draft4/ref.json +0 -179
  687. data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
  688. data/ext/third_party/json/tests/draft4/required.json +0 -44
  689. data/ext/third_party/json/tests/draft4/type.json +0 -345
  690. data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
  691. data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
  692. data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
  693. data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
  694. data/ext/third_party/json/tests/taocpp/number.json +0 -682
  695. data/ext/third_party/json/tests/taocpp/position.json +0 -8
  696. data/ext/third_party/json/tests/taocpp/schema.json +0 -378
  697. data/ext/third_party/json/tests/twitter.json +0 -15482
  698. data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
  699. data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
  700. data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
  701. data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
  702. data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
  703. data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
  704. data/ext/third_party/snappy/testdata/geo.protodata +0 -0
  705. data/ext/third_party/snappy/testdata/html +0 -1
  706. data/ext/third_party/snappy/testdata/html_x_4 +0 -1
  707. data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
  708. data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
  709. data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
  710. data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
  711. data/ext/third_party/snappy/testdata/urls.10K +0 -10000
  712. data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
  713. data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
  714. data/ext/third_party/spdlog/bench/bench.cpp +0 -238
  715. data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
  716. data/ext/third_party/spdlog/bench/latency.cpp +0 -166
  717. data/ext/third_party/spdlog/bench/utils.h +0 -34
  718. data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
  719. data/ext/third_party/spdlog/example/example.cpp +0 -282
  720. data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
  721. data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
  722. data/ext/third_party/spdlog/scripts/format.sh +0 -16
  723. data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
  724. data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
  725. data/ext/third_party/spdlog/tests/catch.license +0 -23
  726. data/ext/third_party/spdlog/tests/includes.h +0 -26
  727. data/ext/third_party/spdlog/tests/main.cpp +0 -2
  728. data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
  729. data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
  730. data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
  731. data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
  732. data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
  733. data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
  734. data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
  735. data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
  736. data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
  737. data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
  738. data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
  739. data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
  740. data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
  741. data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
  742. data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
  743. data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
  744. data/ext/third_party/spdlog/tests/test_sink.h +0 -79
  745. data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
  746. data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
  747. data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
  748. data/ext/third_party/spdlog/tests/utils.cpp +0 -125
  749. data/ext/third_party/spdlog/tests/utils.h +0 -18
@@ -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