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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/fetch-stats +19 -0
- data/bin/init-cluster +24 -24
- data/bin/jenkins/build-extension +35 -0
- data/bin/jenkins/install-dependencies +47 -0
- data/bin/jenkins/test-with-cbdyncluster +58 -0
- data/couchbase.gemspec +27 -1
- data/examples/subdocument.rb +2 -2
- data/ext/build_version.hxx.in +1 -1
- data/ext/couchbase/cluster.hxx +41 -40
- data/ext/couchbase/couchbase.cxx +174 -61
- data/ext/couchbase/io/dns_message.hxx +3 -6
- data/ext/couchbase/io/http_session.hxx +31 -26
- data/ext/couchbase/io/{session_manager.hxx → http_session_manager.hxx} +3 -3
- data/ext/couchbase/io/mcbp_message.hxx +19 -2
- data/ext/couchbase/io/mcbp_session.hxx +89 -47
- data/ext/couchbase/operations/command.hxx +18 -7
- data/ext/couchbase/operations/document_analytics.hxx +5 -6
- data/ext/couchbase/operations/document_decrement.hxx +2 -1
- data/ext/couchbase/operations/document_exists.hxx +2 -1
- data/ext/couchbase/operations/document_get.hxx +2 -1
- data/ext/couchbase/operations/document_get_and_lock.hxx +2 -1
- data/ext/couchbase/operations/document_get_and_touch.hxx +2 -1
- data/ext/couchbase/operations/document_get_projected.hxx +2 -1
- data/ext/couchbase/operations/document_increment.hxx +2 -1
- data/ext/couchbase/operations/document_insert.hxx +2 -1
- data/ext/couchbase/operations/document_lookup_in.hxx +21 -1
- data/ext/couchbase/operations/document_mutate_in.hxx +44 -2
- data/ext/couchbase/operations/document_query.hxx +6 -7
- data/ext/couchbase/operations/document_remove.hxx +2 -1
- data/ext/couchbase/operations/document_replace.hxx +2 -1
- data/ext/couchbase/operations/document_search.hxx +3 -2
- data/ext/couchbase/operations/document_touch.hxx +2 -1
- data/ext/couchbase/operations/document_unlock.hxx +2 -1
- data/ext/couchbase/operations/document_upsert.hxx +2 -1
- data/ext/couchbase/operations/document_view.hxx +2 -1
- data/ext/couchbase/operations/view_index_get_all.hxx +1 -1
- data/ext/couchbase/protocol/client_opcode.hxx +7 -3
- data/ext/couchbase/protocol/client_response.hxx +1 -1
- data/ext/couchbase/protocol/cmd_hello.hxx +10 -0
- data/ext/couchbase/protocol/cmd_lookup_in.hxx +1 -0
- data/ext/couchbase/protocol/cmd_mutate_in.hxx +53 -5
- data/ext/couchbase/version.hxx +1 -1
- data/ext/extconf.rb +1 -1
- data/lib/couchbase/bucket.rb +3 -0
- data/lib/couchbase/cluster.rb +5 -0
- data/lib/couchbase/collection.rb +18 -6
- data/lib/couchbase/collection_options.rb +50 -7
- data/lib/couchbase/errors.rb +2 -2
- data/lib/couchbase/subdoc.rb +80 -19
- data/lib/couchbase/version.rb +1 -1
- metadata +7 -705
- data/ext/third_party/asio/asio/src/examples/cpp03/Makefile.am +0 -251
- data/ext/third_party/asio/asio/src/examples/cpp03/allocation/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/allocation/server.cpp +0 -285
- data/ext/third_party/asio/asio/src/examples/cpp03/buffers/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/buffers/reference_counted.cpp +0 -131
- data/ext/third_party/asio/asio/src/examples/cpp03/chat/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_client.cpp +0 -177
- data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_message.hpp +0 -93
- data/ext/third_party/asio/asio/src/examples/cpp03/chat/chat_server.cpp +0 -249
- data/ext/third_party/asio/asio/src/examples/cpp03/chat/posix_chat_client.cpp +0 -204
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_tcp_echo_server.cpp +0 -137
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/async_udp_echo_server.cpp +0 -92
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_client.cpp +0 -59
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_tcp_echo_server.cpp +0 -79
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_client.cpp +0 -59
- data/ext/third_party/asio/asio/src/examples/cpp03/echo/blocking_udp_echo_server.cpp +0 -53
- data/ext/third_party/asio/asio/src/examples/cpp03/fork/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/fork/daemon.cpp +0 -190
- data/ext/third_party/asio/asio/src/examples/cpp03/fork/process_per_connection.cpp +0 -161
- data/ext/third_party/asio/asio/src/examples/cpp03/http/client/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/http/client/async_client.cpp +0 -204
- data/ext/third_party/asio/asio/src/examples/cpp03/http/client/sync_client.cpp +0 -106
- data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_1K.html +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_2K.html +0 -49
- data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_4K.html +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp03/http/doc_root/data_8K.html +0 -175
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.cpp +0 -99
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection.hpp +0 -83
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.cpp +0 -38
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/connection_manager.hpp +0 -44
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/header.hpp +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/main.cpp +0 -44
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/mime_types.hpp +0 -27
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.cpp +0 -256
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/reply.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request.hpp +0 -34
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_handler.hpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.cpp +0 -315
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/request_parser.hpp +0 -95
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server/server.hpp +0 -69
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.cpp +0 -93
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/connection.hpp +0 -75
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/header.hpp +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.cpp +0 -69
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/io_context_pool.hpp +0 -58
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/main.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/mime_types.hpp +0 -27
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.cpp +0 -256
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/reply.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request.hpp +0 -34
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_handler.hpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.cpp +0 -315
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/request_parser.hpp +0 -95
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.cpp +0 -77
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server2/server.hpp +0 -68
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/connection.hpp +0 -78
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/header.hpp +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/main.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/mime_types.hpp +0 -27
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.cpp +0 -256
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/reply.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request.hpp +0 -34
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_handler.hpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.cpp +0 -315
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/request_parser.hpp +0 -95
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.cpp +0 -89
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server3/server.hpp +0 -70
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/file_handler.hpp +0 -44
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/header.hpp +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/main.cpp +0 -58
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.cpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/mime_types.hpp +0 -27
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.cpp +0 -256
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/reply.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request.hpp +0 -46
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.cpp +0 -226
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/request_parser.hpp +0 -78
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/http/server4/server.hpp +0 -73
- data/ext/third_party/asio/asio/src/examples/cpp03/icmp/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/icmp/icmp_header.hpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ipv4_header.hpp +0 -102
- data/ext/third_party/asio/asio/src/examples/cpp03/icmp/ping.cpp +0 -163
- data/ext/third_party/asio/asio/src/examples/cpp03/invocation/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/invocation/prioritised_handlers.cpp +0 -171
- data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_client.cpp +0 -44
- data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/daytime_server.cpp +0 -51
- data/ext/third_party/asio/asio/src/examples/cpp03/iostreams/http_client.cpp +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp03/local/.gitignore +0 -13
- data/ext/third_party/asio/asio/src/examples/cpp03/local/connect_pair.cpp +0 -141
- data/ext/third_party/asio/asio/src/examples/cpp03/local/iostream_client.cpp +0 -62
- data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_client.cpp +0 -61
- data/ext/third_party/asio/asio/src/examples/cpp03/local/stream_server.cpp +0 -141
- data/ext/third_party/asio/asio/src/examples/cpp03/multicast/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/multicast/receiver.cpp +0 -93
- data/ext/third_party/asio/asio/src/examples/cpp03/multicast/sender.cpp +0 -98
- data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/nonblocking/third_party_lib.cpp +0 -240
- data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/client.cpp +0 -192
- data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/protocol.hpp +0 -156
- data/ext/third_party/asio/asio/src/examples/cpp03/porthopper/server.cpp +0 -187
- data/ext/third_party/asio/asio/src/examples/cpp03/serialization/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/serialization/client.cpp +0 -125
- data/ext/third_party/asio/asio/src/examples/cpp03/serialization/connection.hpp +0 -188
- data/ext/third_party/asio/asio/src/examples/cpp03/serialization/server.cpp +0 -123
- data/ext/third_party/asio/asio/src/examples/cpp03/serialization/stock.hpp +0 -50
- data/ext/third_party/asio/asio/src/examples/cpp03/services/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/services/basic_logger.hpp +0 -83
- data/ext/third_party/asio/asio/src/examples/cpp03/services/daytime_client.cpp +0 -97
- data/ext/third_party/asio/asio/src/examples/cpp03/services/logger.hpp +0 -24
- data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.cpp +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/services/logger_service.hpp +0 -145
- data/ext/third_party/asio/asio/src/examples/cpp03/socks4/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/socks4/socks4.hpp +0 -144
- data/ext/third_party/asio/asio/src/examples/cpp03/socks4/sync_client.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp03/spawn/.gitignore +0 -12
- data/ext/third_party/asio/asio/src/examples/cpp03/spawn/echo_server.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp03/spawn/parallel_grep.cpp +0 -89
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/README +0 -8
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/ca.pem +0 -49
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/client.cpp +0 -157
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/dh2048.pem +0 -8
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.cpp +0 -170
- data/ext/third_party/asio/asio/src/examples/cpp03/ssl/server.pem +0 -71
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/async_tcp_client.cpp +0 -311
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_tcp_client.cpp +0 -191
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_token_tcp_client.cpp +0 -200
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/blocking_udp_client.cpp +0 -154
- data/ext/third_party/asio/asio/src/examples/cpp03/timeouts/server.cpp +0 -433
- data/ext/third_party/asio/asio/src/examples/cpp03/timers/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/timers/time_t_timer.cpp +0 -106
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime1/client.cpp +0 -57
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime2/server.cpp +0 -50
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime3/server.cpp +0 -119
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime4/client.cpp +0 -52
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime5/server.cpp +0 -53
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime6/server.cpp +0 -89
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime7/server.cpp +0 -160
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/daytime_dox.txt +0 -500
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/index_dox.txt +0 -48
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer1/timer.cpp +0 -24
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer2/timer.cpp +0 -29
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer3/timer.cpp +0 -43
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer4/timer.cpp +0 -54
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer5/timer.cpp +0 -80
- data/ext/third_party/asio/asio/src/examples/cpp03/tutorial/timer_dox.txt +0 -378
- data/ext/third_party/asio/asio/src/examples/cpp03/windows/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp03/windows/transmit_file.cpp +0 -177
- data/ext/third_party/asio/asio/src/examples/cpp11/Makefile.am +0 -161
- data/ext/third_party/asio/asio/src/examples/cpp11/allocation/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/allocation/server.cpp +0 -255
- data/ext/third_party/asio/asio/src/examples/cpp11/buffers/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/buffers/reference_counted.cpp +0 -122
- data/ext/third_party/asio/asio/src/examples/cpp11/chat/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_client.cpp +0 -167
- data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_message.hpp +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp11/chat/chat_server.cpp +0 -227
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_tcp_echo_server.cpp +0 -114
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/async_udp_echo_server.cpp +0 -82
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_client.cpp +0 -55
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_tcp_echo_server.cpp +0 -74
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_client.cpp +0 -58
- data/ext/third_party/asio/asio/src/examples/cpp11/echo/blocking_udp_echo_server.cpp +0 -52
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/.gitignore +0 -5
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/actor.cpp +0 -286
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_1.cpp +0 -54
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/bank_account_2.cpp +0 -54
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/fork_join.cpp +0 -328
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/pipeline.cpp +0 -299
- data/ext/third_party/asio/asio/src/examples/cpp11/executors/priority_scheduler.cpp +0 -174
- data/ext/third_party/asio/asio/src/examples/cpp11/fork/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/fork/daemon.cpp +0 -189
- data/ext/third_party/asio/asio/src/examples/cpp11/fork/process_per_connection.cpp +0 -162
- data/ext/third_party/asio/asio/src/examples/cpp11/futures/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/futures/daytime_client.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp11/handler_tracking/custom_tracking.hpp +0 -201
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection.hpp +0 -79
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.cpp +0 -40
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/connection_manager.hpp +0 -48
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/header.hpp +0 -28
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/main.cpp +0 -43
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.cpp +0 -45
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/mime_types.hpp +0 -27
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.cpp +0 -255
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/reply.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request.hpp +0 -34
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.cpp +0 -121
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_handler.hpp +0 -47
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.cpp +0 -315
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/request_parser.hpp +0 -96
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.cpp +0 -94
- data/ext/third_party/asio/asio/src/examples/cpp11/http/server/server.hpp +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp11/invocation/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/invocation/prioritised_handlers.cpp +0 -202
- data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/iostreams/http_client.cpp +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp11/local/.gitignore +0 -13
- data/ext/third_party/asio/asio/src/examples/cpp11/local/connect_pair.cpp +0 -129
- data/ext/third_party/asio/asio/src/examples/cpp11/local/iostream_client.cpp +0 -61
- data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_client.cpp +0 -60
- data/ext/third_party/asio/asio/src/examples/cpp11/local/stream_server.cpp +0 -121
- data/ext/third_party/asio/asio/src/examples/cpp11/multicast/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/multicast/receiver.cpp +0 -88
- data/ext/third_party/asio/asio/src/examples/cpp11/multicast/sender.cpp +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/nonblocking/third_party_lib.cpp +0 -212
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_1.cpp +0 -113
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_2.cpp +0 -131
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_3.cpp +0 -192
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_4.cpp +0 -207
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_5.cpp +0 -243
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_6.cpp +0 -302
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_7.cpp +0 -222
- data/ext/third_party/asio/asio/src/examples/cpp11/operations/composed_8.cpp +0 -217
- data/ext/third_party/asio/asio/src/examples/cpp11/socks4/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/socks4/socks4.hpp +0 -143
- data/ext/third_party/asio/asio/src/examples/cpp11/socks4/sync_client.cpp +0 -93
- data/ext/third_party/asio/asio/src/examples/cpp11/spawn/.gitignore +0 -12
- data/ext/third_party/asio/asio/src/examples/cpp11/spawn/echo_server.cpp +0 -111
- data/ext/third_party/asio/asio/src/examples/cpp11/spawn/parallel_grep.cpp +0 -84
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/README +0 -8
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/ca.pem +0 -49
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/client.cpp +0 -165
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/dh2048.pem +0 -8
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.cpp +0 -143
- data/ext/third_party/asio/asio/src/examples/cpp11/ssl/server.pem +0 -71
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/async_tcp_client.cpp +0 -311
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_tcp_client.cpp +0 -192
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_token_tcp_client.cpp +0 -197
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/blocking_udp_client.cpp +0 -155
- data/ext/third_party/asio/asio/src/examples/cpp11/timeouts/server.cpp +0 -433
- data/ext/third_party/asio/asio/src/examples/cpp11/timers/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp11/timers/time_t_timer.cpp +0 -106
- data/ext/third_party/asio/asio/src/examples/cpp14/Makefile.am +0 -64
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_tcp_echo_server.cpp +0 -117
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/async_udp_echo_server.cpp +0 -83
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_client.cpp +0 -55
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_tcp_echo_server.cpp +0 -77
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_client.cpp +0 -59
- data/ext/third_party/asio/asio/src/examples/cpp14/echo/blocking_udp_echo_server.cpp +0 -53
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/.gitignore +0 -6
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/actor.cpp +0 -281
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_1.cpp +0 -47
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/async_2.cpp +0 -68
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_1.cpp +0 -54
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/bank_account_2.cpp +0 -53
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/fork_join.cpp +0 -327
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/pipeline.cpp +0 -294
- data/ext/third_party/asio/asio/src/examples/cpp14/executors/priority_scheduler.cpp +0 -173
- data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/examples/cpp14/iostreams/http_client.cpp +0 -91
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/.gitignore +0 -10
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_1.cpp +0 -113
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_2.cpp +0 -131
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_3.cpp +0 -186
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_4.cpp +0 -201
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_5.cpp +0 -238
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_6.cpp +0 -298
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_7.cpp +0 -219
- data/ext/third_party/asio/asio/src/examples/cpp14/operations/composed_8.cpp +0 -212
- data/ext/third_party/asio/asio/src/examples/cpp17/Makefile.am +0 -8
- data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/chat_server.cpp +0 -225
- data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server.cpp +0 -76
- data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/echo_server_with_default.cpp +0 -78
- data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/range_based_for.cpp +0 -107
- data/ext/third_party/asio/asio/src/examples/cpp17/coroutines_ts/refactored_echo_server.cpp +0 -85
- data/ext/third_party/asio/asio/src/tests/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/tests/Makefile.am +0 -432
- data/ext/third_party/asio/asio/src/tests/latency/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/tests/latency/allocator.hpp +0 -52
- data/ext/third_party/asio/asio/src/tests/latency/high_res_clock.hpp +0 -53
- data/ext/third_party/asio/asio/src/tests/latency/tcp_client.cpp +0 -124
- data/ext/third_party/asio/asio/src/tests/latency/tcp_server.cpp +0 -114
- data/ext/third_party/asio/asio/src/tests/latency/udp_client.cpp +0 -104
- data/ext/third_party/asio/asio/src/tests/latency/udp_server.cpp +0 -125
- data/ext/third_party/asio/asio/src/tests/performance/.gitignore +0 -11
- data/ext/third_party/asio/asio/src/tests/performance/client.cpp +0 -286
- data/ext/third_party/asio/asio/src/tests/performance/handler_allocator.hpp +0 -112
- data/ext/third_party/asio/asio/src/tests/performance/server.cpp +0 -233
- data/ext/third_party/asio/asio/src/tests/unit/.gitignore +0 -75
- data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_ops.hpp +0 -415
- data/ext/third_party/asio/asio/src/tests/unit/archetypes/async_result.hpp +0 -94
- data/ext/third_party/asio/asio/src/tests/unit/archetypes/gettable_socket_option.hpp +0 -54
- data/ext/third_party/asio/asio/src/tests/unit/archetypes/io_control_command.hpp +0 -32
- data/ext/third_party/asio/asio/src/tests/unit/archetypes/settable_socket_option.hpp +0 -49
- data/ext/third_party/asio/asio/src/tests/unit/associated_allocator.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/associated_executor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/async_result.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/awaitable.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_datagram_socket.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_deadline_timer.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_raw_socket.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_seq_packet_socket.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_serial_port.cpp +0 -26
- data/ext/third_party/asio/asio/src/tests/unit/basic_signal_set.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_socket.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_socket_acceptor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_stream_socket.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_streambuf.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/basic_waitable_timer.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/bind_executor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/buffer.cpp +0 -830
- data/ext/third_party/asio/asio/src/tests/unit/buffered_read_stream.cpp +0 -338
- data/ext/third_party/asio/asio/src/tests/unit/buffered_stream.cpp +0 -364
- data/ext/third_party/asio/asio/src/tests/unit/buffered_write_stream.cpp +0 -353
- data/ext/third_party/asio/asio/src/tests/unit/buffers_iterator.cpp +0 -292
- data/ext/third_party/asio/asio/src/tests/unit/co_spawn.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/completion_condition.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/compose.cpp +0 -185
- data/ext/third_party/asio/asio/src/tests/unit/connect.cpp +0 -1190
- data/ext/third_party/asio/asio/src/tests/unit/coroutine.cpp +0 -112
- data/ext/third_party/asio/asio/src/tests/unit/deadline_timer.cpp +0 -392
- data/ext/third_party/asio/asio/src/tests/unit/defer.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/detached.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/dispatch.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/error.cpp +0 -89
- data/ext/third_party/asio/asio/src/tests/unit/execution_context.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/executor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/executor_work_guard.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/generic/.gitignore +0 -14
- data/ext/third_party/asio/asio/src/tests/unit/generic/basic_endpoint.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/generic/datagram_protocol.cpp +0 -263
- data/ext/third_party/asio/asio/src/tests/unit/generic/raw_protocol.cpp +0 -263
- data/ext/third_party/asio/asio/src/tests/unit/generic/seq_packet_protocol.cpp +0 -205
- data/ext/third_party/asio/asio/src/tests/unit/generic/stream_protocol.cpp +0 -248
- data/ext/third_party/asio/asio/src/tests/unit/high_resolution_timer.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/io_context.cpp +0 -362
- data/ext/third_party/asio/asio/src/tests/unit/io_context_strand.cpp +0 -325
- data/ext/third_party/asio/asio/src/tests/unit/ip/.gitignore +0 -27
- data/ext/third_party/asio/asio/src/tests/unit/ip/address.cpp +0 -144
- data/ext/third_party/asio/asio/src/tests/unit/ip/basic_endpoint.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_entry.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_iterator.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/basic_resolver_query.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/host_name.cpp +0 -55
- data/ext/third_party/asio/asio/src/tests/unit/ip/icmp.cpp +0 -577
- data/ext/third_party/asio/asio/src/tests/unit/ip/multicast.cpp +0 -363
- data/ext/third_party/asio/asio/src/tests/unit/ip/network_v4.cpp +0 -314
- data/ext/third_party/asio/asio/src/tests/unit/ip/network_v6.cpp +0 -238
- data/ext/third_party/asio/asio/src/tests/unit/ip/resolver_query_base.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ip/tcp.cpp +0 -1346
- data/ext/third_party/asio/asio/src/tests/unit/ip/udp.cpp +0 -673
- data/ext/third_party/asio/asio/src/tests/unit/ip/unicast.cpp +0 -171
- data/ext/third_party/asio/asio/src/tests/unit/ip/v6_only.cpp +0 -135
- data/ext/third_party/asio/asio/src/tests/unit/is_read_buffered.cpp +0 -129
- data/ext/third_party/asio/asio/src/tests/unit/is_write_buffered.cpp +0 -129
- data/ext/third_party/asio/asio/src/tests/unit/local/.gitignore +0 -13
- data/ext/third_party/asio/asio/src/tests/unit/local/basic_endpoint.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/local/connect_pair.cpp +0 -76
- data/ext/third_party/asio/asio/src/tests/unit/local/datagram_protocol.cpp +0 -242
- data/ext/third_party/asio/asio/src/tests/unit/local/stream_protocol.cpp +0 -219
- data/ext/third_party/asio/asio/src/tests/unit/packaged_task.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/placeholders.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/posix/.gitignore +0 -14
- data/ext/third_party/asio/asio/src/tests/unit/posix/basic_descriptor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/posix/basic_stream_descriptor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/posix/descriptor_base.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/posix/stream_descriptor.cpp +0 -183
- data/ext/third_party/asio/asio/src/tests/unit/post.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/read.cpp +0 -4997
- data/ext/third_party/asio/asio/src/tests/unit/read_at.cpp +0 -7502
- data/ext/third_party/asio/asio/src/tests/unit/read_until.cpp +0 -1658
- data/ext/third_party/asio/asio/src/tests/unit/redirect_error.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/serial_port.cpp +0 -173
- data/ext/third_party/asio/asio/src/tests/unit/serial_port_base.cpp +0 -99
- data/ext/third_party/asio/asio/src/tests/unit/signal_set.cpp +0 -95
- data/ext/third_party/asio/asio/src/tests/unit/socket_base.cpp +0 -650
- data/ext/third_party/asio/asio/src/tests/unit/ssl/.gitignore +0 -15
- data/ext/third_party/asio/asio/src/tests/unit/ssl/context.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ssl/context_base.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ssl/error.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ssl/host_name_verification.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ssl/rfc2818_verification.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ssl/stream.cpp +0 -191
- data/ext/third_party/asio/asio/src/tests/unit/ssl/stream_base.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/steady_timer.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/strand.cpp +0 -263
- data/ext/third_party/asio/asio/src/tests/unit/streambuf.cpp +0 -62
- data/ext/third_party/asio/asio/src/tests/unit/system_context.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/system_executor.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/system_timer.cpp +0 -399
- data/ext/third_party/asio/asio/src/tests/unit/this_coro.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/thread.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/time_traits.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/ts/.gitignore +0 -17
- data/ext/third_party/asio/asio/src/tests/unit/ts/buffer.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/executor.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/internet.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/io_context.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/net.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/netfwd.cpp +0 -33
- data/ext/third_party/asio/asio/src/tests/unit/ts/socket.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/ts/timer.cpp +0 -30
- data/ext/third_party/asio/asio/src/tests/unit/unit_test.hpp +0 -175
- data/ext/third_party/asio/asio/src/tests/unit/use_awaitable.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/use_future.cpp +0 -670
- data/ext/third_party/asio/asio/src/tests/unit/uses_executor.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/wait_traits.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/windows/.gitignore +0 -18
- data/ext/third_party/asio/asio/src/tests/unit/windows/basic_object_handle.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/windows/basic_overlapped_handle.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/windows/basic_random_access_handle.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/windows/basic_stream_handle.cpp +0 -25
- data/ext/third_party/asio/asio/src/tests/unit/windows/object_handle.cpp +0 -130
- data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_handle.cpp +0 -26
- data/ext/third_party/asio/asio/src/tests/unit/windows/overlapped_ptr.cpp +0 -107
- data/ext/third_party/asio/asio/src/tests/unit/windows/random_access_handle.cpp +0 -155
- data/ext/third_party/asio/asio/src/tests/unit/windows/stream_handle.cpp +0 -148
- data/ext/third_party/asio/asio/src/tests/unit/write.cpp +0 -4904
- data/ext/third_party/asio/asio/src/tests/unit/write_at.cpp +0 -7563
- data/ext/third_party/asio/asio/src/tools/handlerviz.pl +0 -299
- data/ext/third_party/gsl/tests/CMakeLists.txt +0 -267
- data/ext/third_party/gsl/tests/CMakeLists.txt.in +0 -14
- data/ext/third_party/gsl/tests/algorithm_tests.cpp +0 -227
- data/ext/third_party/gsl/tests/assertion_tests.cpp +0 -61
- data/ext/third_party/gsl/tests/at_tests.cpp +0 -135
- data/ext/third_party/gsl/tests/bounds_tests.cpp +0 -102
- data/ext/third_party/gsl/tests/byte_tests.cpp +0 -129
- data/ext/third_party/gsl/tests/multi_span_tests.cpp +0 -1866
- data/ext/third_party/gsl/tests/no_exception_ensure_tests.cpp +0 -48
- data/ext/third_party/gsl/tests/notnull_tests.cpp +0 -535
- data/ext/third_party/gsl/tests/owner_tests.cpp +0 -43
- data/ext/third_party/gsl/tests/span_compatibility_tests.cpp +0 -1021
- data/ext/third_party/gsl/tests/span_ext_tests.cpp +0 -360
- data/ext/third_party/gsl/tests/span_tests.cpp +0 -1244
- data/ext/third_party/gsl/tests/strict_notnull_tests.cpp +0 -190
- data/ext/third_party/gsl/tests/strided_span_tests.cpp +0 -790
- data/ext/third_party/gsl/tests/string_span_tests.cpp +0 -1217
- data/ext/third_party/gsl/tests/utils_tests.cpp +0 -129
- data/ext/third_party/http_parser/contrib/parsertrace.c +0 -157
- data/ext/third_party/http_parser/contrib/url_parser.c +0 -47
- data/ext/third_party/http_parser/fuzzers/fuzz_parser.c +0 -26
- data/ext/third_party/http_parser/fuzzers/fuzz_url.c +0 -14
- data/ext/third_party/json/contrib/nlohmann.cpp +0 -48
- data/ext/third_party/json/contrib/nlohmann/from_value.hpp +0 -62
- data/ext/third_party/json/contrib/nlohmann/json.hpp +0 -18928
- data/ext/third_party/json/contrib/nlohmann/to_value.hpp +0 -109
- data/ext/third_party/json/doc/Advanced-Use-Cases.md +0 -83
- data/ext/third_party/json/doc/Batteries-Included.md +0 -212
- data/ext/third_party/json/doc/Binding-Traits.md +0 -319
- data/ext/third_party/json/doc/Changelog.md +0 -31
- data/ext/third_party/json/doc/Common-Use-Cases.md +0 -148
- data/ext/third_party/json/doc/Design-Decisions.md +0 -36
- data/ext/third_party/json/doc/Events-Interface.md +0 -140
- data/ext/third_party/json/doc/Getting-Started.md +0 -19
- data/ext/third_party/json/doc/Instance-Sharing.md +0 -163
- data/ext/third_party/json/doc/Interoperability.md +0 -75
- data/ext/third_party/json/doc/Overview.md +0 -24
- data/ext/third_party/json/doc/Overview.png +0 -0
- data/ext/third_party/json/doc/Parser-Interface.md +0 -84
- data/ext/third_party/json/doc/README.md +0 -78
- data/ext/third_party/json/doc/Scratchpad.md +0 -25
- data/ext/third_party/json/doc/Type-Traits.md +0 -364
- data/ext/third_party/json/doc/Types.png +0 -0
- data/ext/third_party/json/doc/Value-Class.md +0 -525
- data/ext/third_party/json/src/example/json/CMakeLists.txt +0 -67
- data/ext/third_party/json/src/example/json/cbor_to_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/cbor_to_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/cbor_to_msgpack.cpp +0 -18
- data/ext/third_party/json/src/example/json/cbor_to_pretty_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/cbor_to_pretty_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/cbor_to_ubjson.cpp +0 -18
- data/ext/third_party/json/src/example/json/jaxn_to_cbor.cpp +0 -18
- data/ext/third_party/json/src/example/json/jaxn_to_cplusplus.cpp +0 -249
- data/ext/third_party/json/src/example/json/jaxn_to_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/jaxn_to_msgpack.cpp +0 -18
- data/ext/third_party/json/src/example/json/jaxn_to_pretty_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/jaxn_to_ubjson.cpp +0 -18
- data/ext/third_party/json/src/example/json/json_to_cbor.cpp +0 -18
- data/ext/third_party/json/src/example/json/json_to_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/json_to_msgpack.cpp +0 -18
- data/ext/third_party/json/src/example/json/json_to_pretty_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/json_to_ubjson.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_cbor.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_pretty_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_pretty_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/msgpack_to_ubjson.cpp +0 -18
- data/ext/third_party/json/src/example/json/printf_doubles.cpp +0 -51
- data/ext/third_party/json/src/example/json/ubjson_to_cbor.cpp +0 -18
- data/ext/third_party/json/src/example/json/ubjson_to_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/ubjson_to_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/ubjson_to_msgpack.cpp +0 -18
- data/ext/third_party/json/src/example/json/ubjson_to_pretty_jaxn.cpp +0 -18
- data/ext/third_party/json/src/example/json/ubjson_to_pretty_json.cpp +0 -18
- data/ext/third_party/json/src/example/json/validate_event_order.cpp +0 -27
- data/ext/third_party/json/src/example/json/validate_integer.cpp +0 -56
- data/ext/third_party/json/src/perf/json/bench_mark.hpp +0 -43
- data/ext/third_party/json/src/perf/json/benchmark.cpp +0 -34
- data/ext/third_party/json/src/perf/json/parse_file.cpp +0 -17
- data/ext/third_party/json/src/perf/json/pretty_print_file.cpp +0 -19
- data/ext/third_party/json/src/perf/json/print_double.cpp +0 -34
- data/ext/third_party/json/src/perf/json/print_file.cpp +0 -19
- data/ext/third_party/json/src/perf/json/sizes.cpp +0 -24
- data/ext/third_party/json/src/perf/json/syntax_only.cpp +0 -27
- data/ext/third_party/json/src/test/json/CMakeLists.txt +0 -97
- data/ext/third_party/json/src/test/json/big_list_of_naughty_strings.cpp +0 -43
- data/ext/third_party/json/src/test/json/binding_array.cpp +0 -549
- data/ext/third_party/json/src/test/json/binding_factory.cpp +0 -265
- data/ext/third_party/json/src/test/json/binding_object.cpp +0 -208
- data/ext/third_party/json/src/test/json/binding_versions.cpp +0 -95
- data/ext/third_party/json/src/test/json/cbor.cpp +0 -149
- data/ext/third_party/json/src/test/json/cbor_parts_parser.cpp +0 -36
- data/ext/third_party/json/src/test/json/contrib_diff.cpp +0 -43
- data/ext/third_party/json/src/test/json/contrib_get.cpp +0 -42
- data/ext/third_party/json/src/test/json/contrib_patch_add.cpp +0 -75
- data/ext/third_party/json/src/test/json/contrib_patch_copy.cpp +0 -113
- data/ext/third_party/json/src/test/json/contrib_patch_move.cpp +0 -97
- data/ext/third_party/json/src/test/json/contrib_patch_remove.cpp +0 -85
- data/ext/third_party/json/src/test/json/contrib_patch_replace.cpp +0 -79
- data/ext/third_party/json/src/test/json/contrib_patch_test.cpp +0 -69
- data/ext/third_party/json/src/test/json/contrib_position.cpp +0 -48
- data/ext/third_party/json/src/test/json/contrib_reference.cpp +0 -44
- data/ext/third_party/json/src/test/json/contrib_schema.cpp +0 -132
- data/ext/third_party/json/src/test/json/contrib_traits.cpp +0 -258
- data/ext/third_party/json/src/test/json/double.cpp +0 -182
- data/ext/third_party/json/src/test/json/enable_implicit_constructor.cpp +0 -54
- data/ext/third_party/json/src/test/json/escape.cpp +0 -42
- data/ext/third_party/json/src/test/json/events_binary_to.cpp +0 -56
- data/ext/third_party/json/src/test/json/events_compare.cpp +0 -433
- data/ext/third_party/json/src/test/json/events_debug.cpp +0 -24
- data/ext/third_party/json/src/test/json/events_hash.cpp +0 -65
- data/ext/third_party/json/src/test/json/events_to_stream.cpp +0 -28
- data/ext/third_party/json/src/test/json/events_to_string.cpp +0 -25
- data/ext/third_party/json/src/test/json/include_json.cpp +0 -14
- data/ext/third_party/json/src/test/json/integer.cpp +0 -118
- data/ext/third_party/json/src/test/json/jaxn_ostream.cpp +0 -76
- data/ext/third_party/json/src/test/json/jaxn_parse.cpp +0 -239
- data/ext/third_party/json/src/test/json/jaxn_parts_parser.cpp +0 -220
- data/ext/third_party/json/src/test/json/json_ostream.cpp +0 -102
- data/ext/third_party/json/src/test/json/json_parse.cpp +0 -153
- data/ext/third_party/json/src/test/json/json_parts_parser.cpp +0 -124
- data/ext/third_party/json/src/test/json/json_pointer.cpp +0 -176
- data/ext/third_party/json/src/test/json/key_camel_case_to_snake_case.cpp +0 -38
- data/ext/third_party/json/src/test/json/key_snake_case_to_camel_case.cpp +0 -33
- data/ext/third_party/json/src/test/json/literal.cpp +0 -18
- data/ext/third_party/json/src/test/json/main.hpp +0 -20
- data/ext/third_party/json/src/test/json/make_events.hpp +0 -362
- data/ext/third_party/json/src/test/json/msgpack.cpp +0 -136
- data/ext/third_party/json/src/test/json/object_construction.cpp +0 -167
- data/ext/third_party/json/src/test/json/opaque_pointer.cpp +0 -192
- data/ext/third_party/json/src/test/json/operators.cpp +0 -494
- data/ext/third_party/json/src/test/json/optional.cpp +0 -79
- data/ext/third_party/json/src/test/json/public_base.cpp +0 -142
- data/ext/third_party/json/src/test/json/self_contained.cpp +0 -106
- data/ext/third_party/json/src/test/json/sha256.cpp +0 -38
- data/ext/third_party/json/src/test/json/string_view.cpp +0 -70
- data/ext/third_party/json/src/test/json/temporary_parsing.cpp +0 -339
- data/ext/third_party/json/src/test/json/test.hpp +0 -74
- data/ext/third_party/json/src/test/json/test_events.hpp +0 -250
- data/ext/third_party/json/src/test/json/test_types.hpp +0 -557
- data/ext/third_party/json/src/test/json/test_unhex.hpp +0 -42
- data/ext/third_party/json/src/test/json/type.cpp +0 -35
- data/ext/third_party/json/src/test/json/ubjson.cpp +0 -119
- data/ext/third_party/json/src/test/json/uri_fragment.cpp +0 -52
- data/ext/third_party/json/src/test/json/validate_event_interfaces.cpp +0 -177
- data/ext/third_party/json/src/test/json/validate_utf8.cpp +0 -37
- data/ext/third_party/json/src/test/json/value_access.cpp +0 -144
- data/ext/third_party/json/src/test/json/value_basics.cpp +0 -241
- data/ext/third_party/json/src/test/json/value_create.cpp +0 -372
- data/ext/third_party/json/src/test/json/value_ptr.cpp +0 -33
- data/ext/third_party/json/src/test/json/value_subscript.cpp +0 -89
- data/ext/third_party/json/src/test/json/with_arguments.cpp +0 -98
- data/ext/third_party/json/tests/blns.json +0 -496
- data/ext/third_party/json/tests/canada.json +0 -9
- data/ext/third_party/json/tests/citm_catalog.json +0 -50469
- data/ext/third_party/json/tests/draft4/additionalItems.json +0 -82
- data/ext/third_party/json/tests/draft4/additionalProperties.json +0 -88
- data/ext/third_party/json/tests/draft4/allOf.json +0 -112
- data/ext/third_party/json/tests/draft4/anyOf.json +0 -68
- data/ext/third_party/json/tests/draft4/default.json +0 -49
- data/ext/third_party/json/tests/draft4/definitions.json +0 -32
- data/ext/third_party/json/tests/draft4/dependencies.json +0 -113
- data/ext/third_party/json/tests/draft4/enum.json +0 -72
- data/ext/third_party/json/tests/draft4/items.json +0 -46
- data/ext/third_party/json/tests/draft4/maxItems.json +0 -28
- data/ext/third_party/json/tests/draft4/maxLength.json +0 -33
- data/ext/third_party/json/tests/draft4/maxProperties.json +0 -28
- data/ext/third_party/json/tests/draft4/maximum.json +0 -42
- data/ext/third_party/json/tests/draft4/minItems.json +0 -28
- data/ext/third_party/json/tests/draft4/minLength.json +0 -33
- data/ext/third_party/json/tests/draft4/minProperties.json +0 -28
- data/ext/third_party/json/tests/draft4/minimum.json +0 -42
- data/ext/third_party/json/tests/draft4/multipleOf.json +0 -60
- data/ext/third_party/json/tests/draft4/not.json +0 -96
- data/ext/third_party/json/tests/draft4/oneOf.json +0 -68
- data/ext/third_party/json/tests/draft4/optional/bignum.json +0 -107
- data/ext/third_party/json/tests/draft4/optional/format.json +0 -148
- data/ext/third_party/json/tests/draft4/optional/zeroTerminatedFloats.json +0 -15
- data/ext/third_party/json/tests/draft4/pattern.json +0 -34
- data/ext/third_party/json/tests/draft4/patternProperties.json +0 -110
- data/ext/third_party/json/tests/draft4/properties.json +0 -92
- data/ext/third_party/json/tests/draft4/ref.json +0 -179
- data/ext/third_party/json/tests/draft4/refRemote.json +0 -74
- data/ext/third_party/json/tests/draft4/required.json +0 -44
- data/ext/third_party/json/tests/draft4/type.json +0 -345
- data/ext/third_party/json/tests/draft4/uniqueItems.json +0 -79
- data/ext/third_party/json/tests/taocpp/binary.jaxn +0 -4
- data/ext/third_party/json/tests/taocpp/dateTime.json +0 -108
- data/ext/third_party/json/tests/taocpp/make_events.cbor +0 -0
- data/ext/third_party/json/tests/taocpp/number.json +0 -682
- data/ext/third_party/json/tests/taocpp/position.json +0 -8
- data/ext/third_party/json/tests/taocpp/schema.json +0 -378
- data/ext/third_party/json/tests/twitter.json +0 -15482
- data/ext/third_party/snappy/testdata/alice29.txt +0 -3609
- data/ext/third_party/snappy/testdata/asyoulik.txt +0 -4122
- data/ext/third_party/snappy/testdata/baddata1.snappy +0 -0
- data/ext/third_party/snappy/testdata/baddata2.snappy +0 -0
- data/ext/third_party/snappy/testdata/baddata3.snappy +0 -0
- data/ext/third_party/snappy/testdata/fireworks.jpeg +0 -0
- data/ext/third_party/snappy/testdata/geo.protodata +0 -0
- data/ext/third_party/snappy/testdata/html +0 -1
- data/ext/third_party/snappy/testdata/html_x_4 +0 -1
- data/ext/third_party/snappy/testdata/kppkn.gtb +0 -0
- data/ext/third_party/snappy/testdata/lcet10.txt +0 -7519
- data/ext/third_party/snappy/testdata/paper-100k.pdf +2 -600
- data/ext/third_party/snappy/testdata/plrabn12.txt +0 -10699
- data/ext/third_party/snappy/testdata/urls.10K +0 -10000
- data/ext/third_party/spdlog/bench/CMakeLists.txt +0 -25
- data/ext/third_party/spdlog/bench/async_bench.cpp +0 -179
- data/ext/third_party/spdlog/bench/bench.cpp +0 -238
- data/ext/third_party/spdlog/bench/formatter-bench.cpp +0 -80
- data/ext/third_party/spdlog/bench/latency.cpp +0 -166
- data/ext/third_party/spdlog/bench/utils.h +0 -34
- data/ext/third_party/spdlog/example/CMakeLists.txt +0 -23
- data/ext/third_party/spdlog/example/example.cpp +0 -282
- data/ext/third_party/spdlog/logos/jetbrains-variant-4.svg +0 -43
- data/ext/third_party/spdlog/scripts/extract_version.py +0 -17
- data/ext/third_party/spdlog/scripts/format.sh +0 -16
- data/ext/third_party/spdlog/tests/CMakeLists.txt +0 -70
- data/ext/third_party/spdlog/tests/catch.hpp +0 -15372
- data/ext/third_party/spdlog/tests/catch.license +0 -23
- data/ext/third_party/spdlog/tests/includes.h +0 -26
- data/ext/third_party/spdlog/tests/main.cpp +0 -2
- data/ext/third_party/spdlog/tests/test_async.cpp +0 -188
- data/ext/third_party/spdlog/tests/test_backtrace.cpp +0 -65
- data/ext/third_party/spdlog/tests/test_cfg.cpp +0 -93
- data/ext/third_party/spdlog/tests/test_create_dir.cpp +0 -80
- data/ext/third_party/spdlog/tests/test_daily_logger.cpp +0 -149
- data/ext/third_party/spdlog/tests/test_dup_filter.cpp +0 -88
- data/ext/third_party/spdlog/tests/test_errors.cpp +0 -118
- data/ext/third_party/spdlog/tests/test_eventlog.cpp +0 -71
- data/ext/third_party/spdlog/tests/test_file_helper.cpp +0 -102
- data/ext/third_party/spdlog/tests/test_file_logging.cpp +0 -98
- data/ext/third_party/spdlog/tests/test_fmt_helper.cpp +0 -86
- data/ext/third_party/spdlog/tests/test_macros.cpp +0 -60
- data/ext/third_party/spdlog/tests/test_misc.cpp +0 -271
- data/ext/third_party/spdlog/tests/test_mpmc_q.cpp +0 -106
- data/ext/third_party/spdlog/tests/test_pattern_formatter.cpp +0 -443
- data/ext/third_party/spdlog/tests/test_registry.cpp +0 -116
- data/ext/third_party/spdlog/tests/test_sink.h +0 -79
- data/ext/third_party/spdlog/tests/test_stdout_api.cpp +0 -98
- data/ext/third_party/spdlog/tests/test_systemd.cpp +0 -15
- data/ext/third_party/spdlog/tests/test_time_point.cpp +0 -36
- data/ext/third_party/spdlog/tests/utils.cpp +0 -125
- data/ext/third_party/spdlog/tests/utils.h +0 -18
@@ -1,31 +0,0 @@
|
|
1
|
-
# Changelog
|
2
|
-
|
3
|
-
## 1.0.0
|
4
|
-
|
5
|
-
**Not yet released**
|
6
|
-
|
7
|
-
## Milestones
|
8
|
-
|
9
|
-
Pre-1.0.0 milestones in rough reverse chronological order.
|
10
|
-
|
11
|
-
* Change value from `union` to `std::variant`.
|
12
|
-
* Change library to require and use C++17.
|
13
|
-
* Direct parsing to arbitrary types.
|
14
|
-
* Binding facilities and polymorphic factory.
|
15
|
-
* Optional custom Base class for Values.
|
16
|
-
* Support for Opaque Pointers in Values.
|
17
|
-
* JAXN data model with binary data and non-finite doubles.
|
18
|
-
* JSON Pointer and JSON Patch support.
|
19
|
-
* Support for CBOR, UBJSON and MsgPack.
|
20
|
-
* Support for Value Pointer in Values.
|
21
|
-
* Events Interface for modularity and Transformers.
|
22
|
-
* Type Traits for interoperation with C++ types.
|
23
|
-
* 100% conformance score in [Native JSON Benchmark](https://github.com/miloyip/nativejson-benchmark).
|
24
|
-
* Inclusion of double-conversion library.
|
25
|
-
* Value Class with parsing and (pretty) printing.
|
26
|
-
|
27
|
-
## History
|
28
|
-
|
29
|
-
Development of taoJSON started in October 2015 as an experiment to combine the [PEGTL](https://github.com/taocpp/PEGTL) JSON parser with a JSON value class based on a `union` that directly embeds standard containers for arrays, objects and strings.
|
30
|
-
|
31
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|
@@ -1,148 +0,0 @@
|
|
1
|
-
# Common Use Cases
|
2
|
-
|
3
|
-
* [Include the right header](#include-the-right-header)
|
4
|
-
* [Read any JSON file](#read-any-json-file)
|
5
|
-
* [Parse any JSON string](#parse-any-json-string)
|
6
|
-
* [Serialise a JSON Value to a string](#serialise-a-json-value-to-a-string)
|
7
|
-
* [Serialise with base64 strings for binary data](#serialise-with-base64-strings-for-binary-data)
|
8
|
-
* [Serialise a JSON Value to an ostream](#serialise-a-json-value-to-an-ostream)
|
9
|
-
* [Create a Value with a JSON object](#create-a-value-with-a-json-object)
|
10
|
-
|
11
|
-
## Include the right header
|
12
|
-
|
13
|
-
The convenience include `<tao/json.hpp>` will include the entire core library.
|
14
|
-
Additionally, it might be useful to include `<tao/json/contrib/traits.hpp>` to add some commonly used Traits specialisations, mostly for containers and smart pointers.
|
15
|
-
|
16
|
-
```c++
|
17
|
-
#include <tao/json.hpp>
|
18
|
-
#include <tao/json/contrib/traits.hpp>
|
19
|
-
```
|
20
|
-
|
21
|
-
(To improve compile times, you can choose to directly use only some of the individual headers that it includes.)
|
22
|
-
|
23
|
-
## Read any JSON file
|
24
|
-
|
25
|
-
```c++
|
26
|
-
const tao::json::value v = tao::json::from_file( "filename.json" );
|
27
|
-
```
|
28
|
-
|
29
|
-
## Parse any JSON string
|
30
|
-
|
31
|
-
```c++
|
32
|
-
const tao::json::value v = tao::json::from_string( "{ \"a\": 1.0, \"b\": 2.0 }" );
|
33
|
-
```
|
34
|
-
|
35
|
-
## Serialise a JSON Value to a string
|
36
|
-
|
37
|
-
We will assume that `v` is a valid JSON Value instance.
|
38
|
-
|
39
|
-
```c++
|
40
|
-
const std::string j = tao::json::to_string( v );
|
41
|
-
```
|
42
|
-
|
43
|
-
Passing a `std::size_t` as second argument enable pretty-printing mode with the given size as indent.
|
44
|
-
|
45
|
-
Passing a `std::string` as third argument uses the given string as line ending instead of the `\n` default.
|
46
|
-
|
47
|
-
## Serialise with base64 strings for binary data
|
48
|
-
|
49
|
-
The JSON format does not allow for binary data.
|
50
|
-
Binary data in Values needs to be converted into something else when serialising to JSON.
|
51
|
-
This can be done on-the-fly with an [Events Transformer](Events-Interface.md#overview) like `tao::json::events::binary_to_base64`.
|
52
|
-
|
53
|
-
```c++
|
54
|
-
const std::string l = tao::json::to_string< tao::json::events::binary_to_base64 >( v );
|
55
|
-
```
|
56
|
-
|
57
|
-
Another similar common use case is to use a Transformer like `tao::json::events::non_finite_to_null` to convert non-finite floating-point values (not-a-number, infinity) to something that fits in the JSON data model.
|
58
|
-
|
59
|
-
See the [Events interface](Events-Interface.md) documentation for [all available Event Transformers](Events-Interface.md#included-transformers).
|
60
|
-
|
61
|
-
## Serialise a JSON Value to an ostream
|
62
|
-
|
63
|
-
```c++
|
64
|
-
tao::json::to_stream( std::cout, v );
|
65
|
-
```
|
66
|
-
|
67
|
-
The additional function and template arguments are just like for `to_string()`.
|
68
|
-
|
69
|
-
```c++
|
70
|
-
using namespace tao::json;
|
71
|
-
|
72
|
-
to_stream< events::binary_to_base64, events::non_finite_to_null >( std::cout, v, 3, "\r\n" );
|
73
|
-
```
|
74
|
-
|
75
|
-
When no Events Transformers are needed the usual `operator<<` overloads can be used, too.
|
76
|
-
|
77
|
-
```c++
|
78
|
-
std::cout << v << std::endl; // Compact.
|
79
|
-
std::cout << std::setw( 2 ) << v << std::endl; // Pretty-printed with indent 2.
|
80
|
-
```
|
81
|
-
|
82
|
-
## Create a Value with a JSON object
|
83
|
-
|
84
|
-
### First possibility
|
85
|
-
|
86
|
-
Parse a string that represents a JSON object, [see above](#parse-any-json-string).
|
87
|
-
|
88
|
-
This works similarly with files, and with strings and files in other supported formats.
|
89
|
-
|
90
|
-
### Second possibility
|
91
|
-
|
92
|
-
Use the literal string operator to parse a literal string.
|
93
|
-
|
94
|
-
```c++
|
95
|
-
using namespace tao::json;
|
96
|
-
|
97
|
-
const auto v = "{ \"a\": 1.0, \"b\": 2.0 }"_json;
|
98
|
-
```
|
99
|
-
|
100
|
-
### Third possibility
|
101
|
-
|
102
|
-
Use the `std::initalizer_list<>` constructor.
|
103
|
-
|
104
|
-
```c++
|
105
|
-
const tao::json::value v = {
|
106
|
-
{ "a", 1.0 },
|
107
|
-
{ "b", 2.0 }
|
108
|
-
};
|
109
|
-
```
|
110
|
-
|
111
|
-
### Fourth possibility
|
112
|
-
|
113
|
-
Use the appropriate value member functions.
|
114
|
-
|
115
|
-
```c++
|
116
|
-
int main()
|
117
|
-
{
|
118
|
-
tao::json::value v;
|
119
|
-
v.emplace( "a", 1.0 );
|
120
|
-
v.emplace( "b", 2.0 );
|
121
|
-
return 0;
|
122
|
-
}
|
123
|
-
```
|
124
|
-
|
125
|
-
Note that `v.emplace()` will work both on values that already represent an Object *and* on values that are in state `UNINITIALIZED` or `DISCARDED`.
|
126
|
-
|
127
|
-
### Fifth possibility
|
128
|
-
|
129
|
-
Use an Event Consumer to feed Events to a value.
|
130
|
-
|
131
|
-
```c++
|
132
|
-
int main()
|
133
|
-
{
|
134
|
-
tao::json::events::to_value consumer;
|
135
|
-
consumer.begin_object();
|
136
|
-
consumer.key( "a" );
|
137
|
-
consumer.number( 1.0 );
|
138
|
-
consumer.member();
|
139
|
-
consumer.key( "b" );
|
140
|
-
consumer.number( 2.0 );
|
141
|
-
consumer.member();
|
142
|
-
consumer.end_object();
|
143
|
-
const tao::json::value v = std::move( consumer.value );
|
144
|
-
return 0;
|
145
|
-
}
|
146
|
-
```
|
147
|
-
|
148
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# Design Decisions
|
2
|
-
|
3
|
-
* [Require C++17](#require-c17)
|
4
|
-
* [Initialiser Lists](#initialiser-lists)
|
5
|
-
* [Omitted Functions](#omitted-functions)
|
6
|
-
|
7
|
-
This library is designed for correctness and simplicity, is based on C++ standard containers, and strives for speed through minimalism (rather than complicated optimisations).
|
8
|
-
|
9
|
-
## Require C++17
|
10
|
-
|
11
|
-
For the first three years this library was compatible with C++11, however we changed the required standard version to C++17 before reaching version 1.0.0.
|
12
|
-
There were two main reasons for making this change.
|
13
|
-
|
14
|
-
1. With C++11 the library had to include and maintain implementations of `std::optional` and `std::string_view`; the latter was not a full replacement since C++11 `std::string` does not know about string views.
|
15
|
-
2. Many places throughout the library that benefit from being able to use C++17 language features; for examples look at the flock of C++17-related commits made after the standards upgrade in October 2018.
|
16
|
-
|
17
|
-
## Initialiser-Lists
|
18
|
-
|
19
|
-
The Value constructor that accepts an initialiser-list as argument will always (attempt to) create a Value that is an Object, i.e. it will never attempt to create a Value that is an Array, because it is not possible for the same function to accept initialiser-lists for both Arrays and Objects without introducing ambiguities:
|
20
|
-
|
21
|
-
* Is `{ { "hallo", 1 }, { "world", 2 } }` an Array with two Arrays as elements, or an Object with two members?
|
22
|
-
* If `foo` has a [default key](Type-Traits.md#default-key-for-objects) in the traits, is `{ foo }` an Array with one element, or an Object with one member?
|
23
|
-
|
24
|
-
Creating an Array from an initialiser-list is still possible with the static `tao::json::value::array()` function.
|
25
|
-
|
26
|
-
## Omitted Functions
|
27
|
-
|
28
|
-
Class `tao::json::value` has neither a `size()` nor an `empty()` method due to the lack of unambiguous canonical semantics.
|
29
|
-
|
30
|
-
* Should atomic JSON Values have size `0` or size `1`, or should everything except for Null have size `1`?
|
31
|
-
* Should special values (like `UNINITIALIZED`) have size `0`, or should they throw when checking the size?
|
32
|
-
* Should strings use container semantics for `size()` and `empty()`, or should they behave like atomic Values?
|
33
|
-
* Should a Value Pointer have size `1`, or should it forward `size()` and `empty()` to the pointee Value?
|
34
|
-
* Should an Opaque Pointer have size `1`, or should it report the size of the JSON representation of the pointee?
|
35
|
-
|
36
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|
@@ -1,140 +0,0 @@
|
|
1
|
-
# Events Interface
|
2
|
-
|
3
|
-
* [Overview](#overview)
|
4
|
-
* [Consumer Interface](#consumer-interface)
|
5
|
-
* [Arrays and Objects](#arrays-and-objects)
|
6
|
-
* [Reduced Interface](#reduced-interface)
|
7
|
-
* [Batteries Included](#batteries-included)
|
8
|
-
|
9
|
-
## Overview
|
10
|
-
|
11
|
-
The Events Interface is a calling convention, a kind of abstract (in the conceptual, not object-oriented sense) interface that allows different parts of the library to communicate with each other.
|
12
|
-
|
13
|
-
The Events Interface is modelled after the SAX-interface for XML and has functions like `begin_object()` and `boolean( const bool )`.
|
14
|
-
|
15
|
-
We distinguish betwen *Event Producers* that usually take some input and generate calls to the Events Interface from it, and *Event Consumers* which implement the functions of the Events Interface to usually produce some output.
|
16
|
-
*Event Transformers* occupy both roles, accepting calls to the Events Interface and transforming them into (other) calls to another Events Consumer.
|
17
|
-
|
18
|
-
For example the `tao::json::events::from_value()` function is an Events Producer that takes a Value object of type `tao::json::basic_value< Traits, Base >` for any Type Traits class `Traits` and Value base class `Base` as input, and generates Events depending on the contents.
|
19
|
-
It could be used together with the `tao::json::events::to_string()` class, an Events Consumer that generates the JSON string representation corresponding to the Events it receives.
|
20
|
-
In order to transform binary data in the Value object into something compatible with standard JSON it might be necessary to use an Events Transformer like `tao::json::events::binary_to_hex` between the Producer and Consumer.
|
21
|
-
|
22
|
-
Producers and Consumers can be freely coupled, it is not necessary for the beginning or the end of the chain to be a JSON Value object.
|
23
|
-
For example an Events Producer that parses CBOR can be directly used with an Events Consumer that creates UBJSON.
|
24
|
-
|
25
|
-
```c++
|
26
|
-
#include <tao/json.hpp>
|
27
|
-
|
28
|
-
std::string cbor_to_ubjson( const std::string& input )
|
29
|
-
{
|
30
|
-
tao::json::ubjson::events::to_string consumer;
|
31
|
-
tao::json::cbor::events::from_string( consumer, input );
|
32
|
-
return consumer.value();
|
33
|
-
}
|
34
|
-
```
|
35
|
-
|
36
|
-
A more common use case is parsing a JSON text representation into a JSON Value...
|
37
|
-
|
38
|
-
```c++
|
39
|
-
tao::json::value from_string( const std::string& input )
|
40
|
-
{
|
41
|
-
tao::json::events::to_value consumer;
|
42
|
-
tao::json::events::from_string( consumer, input );
|
43
|
-
return std::move( consumer.value );
|
44
|
-
}
|
45
|
-
```
|
46
|
-
|
47
|
-
...which is in fact so common that a (more general) convenience function `tao::json::from_string()` is included with the library.
|
48
|
-
|
49
|
-
The tables below list all included Events Producers, Consumers, and Transformers, as well as the convenience functions where the source or destination is a Value.
|
50
|
-
|
51
|
-
## Consumer Interface
|
52
|
-
|
53
|
-
```c++
|
54
|
-
struct complete_consumer
|
55
|
-
{
|
56
|
-
void null();
|
57
|
-
void boolean( const bool );
|
58
|
-
void number( const double );
|
59
|
-
void number( const std::int64_t );
|
60
|
-
void number( const std::uint64_t );
|
61
|
-
void string( std::string && );
|
62
|
-
void string( const std::string & );
|
63
|
-
void string( const tao::string_view & );
|
64
|
-
void binary( std::vector< tao::byte > && );
|
65
|
-
void binary( const std::vector< tao::byte > & );
|
66
|
-
void binary( const tao::binary_view & );
|
67
|
-
void begin_array();
|
68
|
-
void begin_array( const std::size_t );
|
69
|
-
void element();
|
70
|
-
void end_array();
|
71
|
-
void end_array( const std::size_t );
|
72
|
-
void begin_object();
|
73
|
-
void begin_object( const std::size_t );
|
74
|
-
void key( std::string && );
|
75
|
-
void key( const std::string & );
|
76
|
-
void key( const tao::string_view & );
|
77
|
-
void member();
|
78
|
-
void end_object();
|
79
|
-
void end_object( const std::size_t );
|
80
|
-
};
|
81
|
-
```
|
82
|
-
|
83
|
-
## Arrays and Objects
|
84
|
-
|
85
|
-
For arrays and objects there are two versions of the begin and end methods, one that receives the size of the array (what `std::vector< Value >::size()` would return), or the size of the object (what `std::map< std::string, Value >::size()` would return), respectively, and one that doesn't.
|
86
|
-
|
87
|
-
An Events producer will usually only either always call the begin/end-array/object functions with a size, or those without a size, depending on whether the size is readily available.
|
88
|
-
|
89
|
-
Within an Array, i.e. after a call to `begin_array()` but before a call to the corresponding `end_array()`, the `element()` function is called after the function(s) for each array sub-value.
|
90
|
-
|
91
|
-
Similarly within an Object the sequence for every object entry is `key()`, then the function(s) for the value, then `member()`.
|
92
|
-
|
93
|
-
If the Value within an Array or Object is simple, like a string or number, it is defined by a single corresponding Events call.
|
94
|
-
|
95
|
-
However the data model allows for Arrays and Objects to be nested, wherefore the same holds for corresponding matching calls to an Event consumer's begin/end-array/object methods.
|
96
|
-
If a Value in an Array or Object is itself an Array or Object, then it will lead to at least the corresponding begin and end calls, with the possibility of arbitrary many sub-values, including arbitrarily nested other Arrays and Objects.
|
97
|
-
|
98
|
-
Calls to `element()` or `member()` are naturally understood to belong to the inner-most Array or Object, i.e. to the last begin-method without end.
|
99
|
-
|
100
|
-
An Events Producer MUST NOT generate inconsistent sequences of Event calls.
|
101
|
-
For example pairing `begin_array()` with `end_object()`, using `member()` when the inner-most container is not an Object, must all be avoided.
|
102
|
-
|
103
|
-
## Reduced Interface
|
104
|
-
|
105
|
-
It will not always be necessary, desirable, or even possible, to implement all of these functions.
|
106
|
-
|
107
|
-
For example consider a consumer that writes some representation to a stream.
|
108
|
-
Such a consumer will not benefit from implementing the functions with movable arguments since it has no place to move the arguments to.
|
109
|
-
If the format it writes requires the encoding of objects and arrays to start with the number of array elements or object members, respectively, then the consumer might not implement the begin/end-array/object methods without size.
|
110
|
-
|
111
|
-
An Events Consumer that does not need the sizes of arrays and objects in the begin/end-calls, and that does not benefit from receiving movable arguments, can implement a reduced interface that - thanks to default arguments and the view-classes' implicit constructors - can still accept all function calls that the full interface can.
|
112
|
-
|
113
|
-
```c++
|
114
|
-
struct reduced_consumer
|
115
|
-
{
|
116
|
-
void null();
|
117
|
-
void boolean( const bool );
|
118
|
-
void number( const double );
|
119
|
-
void number( const std::int64_t );
|
120
|
-
void number( const std::uint64_t );
|
121
|
-
void string( const tao::string_view );
|
122
|
-
void binary( const tao::binary_view );
|
123
|
-
void begin_array( const std::size_t = 0 );
|
124
|
-
void element();
|
125
|
-
void end_array( const std::size_t = 0 );
|
126
|
-
void begin_object( const std::size_t = 0 );
|
127
|
-
void key( const tao::string_view );
|
128
|
-
void member();
|
129
|
-
void end_object( const std::size_t = 0 );
|
130
|
-
};
|
131
|
-
```
|
132
|
-
|
133
|
-
## Batteries Included
|
134
|
-
|
135
|
-
* [Events Producers](Batteries-Included.md#events-producers)
|
136
|
-
* [Events Consumers](Batteries-Included.md#events-consumers)
|
137
|
-
* [Events Transformers](Batteries-Included.md#events-transformers)
|
138
|
-
* [Convenience Functions](Batteries-Included.md#convenience-functions)
|
139
|
-
|
140
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# Getting Started
|
2
|
-
|
3
|
-
A few short indications on how to use this library:
|
4
|
-
|
5
|
-
* Requires Clang 5 or GCC 7 (or later) with `-std=c++17`, or Visual Studio 2017, or other compilers with sufficient C++17 support.
|
6
|
-
* The library is header-only, to install and use simply copy the directory [`include/tao`](include/tao) to a convenient place and include the file [`include/tao/json.hpp`](include/tao/json.hpp).
|
7
|
-
* The generic JSON value class is in [`include/tao/json/value.hpp`](include/tao/json/value.hpp).
|
8
|
-
* To parse a JSON string representation to a JSON Value, use one of the functions in [`include/tao/json/from_string.hpp`](include/tao/json/from_string.hpp) or [`include/tao/json/from_file.hpp`](include/tao/json/from_file.hpp).
|
9
|
-
* To produce a JSON string representation from a JSON Value, use one of the appropriate functions in [`include/tao/json/to_string.hpp`](include/tao/json/to_string.hpp) or [`include/tao/json/stream.hpp`](include/tao/json/stream.hpp).
|
10
|
-
|
11
|
-
TODO: Hello-world-sized example.
|
12
|
-
TODO: Which other pages to reference here?
|
13
|
-
TODO: Which other concepts to reference here?
|
14
|
-
|
15
|
-
The taocpp/json library is built around two main concepts, the [*Value class*](Value-Class.md) and the [*Events interface*](Events-Interface.md).
|
16
|
-
|
17
|
-
See also the page on [common use cases](Common-Use-Cases.md) for how to do some frequently required things.
|
18
|
-
|
19
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|
@@ -1,163 +0,0 @@
|
|
1
|
-
# Instance Sharing
|
2
|
-
|
3
|
-
In order to speed up the creation of Values there are multiple possibilities of preventing the copying and building of data and data structures.
|
4
|
-
|
5
|
-
* [String Views](#string-views)
|
6
|
-
* [Binary Views](#binary-views)
|
7
|
-
* [Value Pointers](#value-pointers)
|
8
|
-
* [Opaque Pointers](#opaque-pointers)
|
9
|
-
* [Self Contained](#self-contained)
|
10
|
-
|
11
|
-
## String Views
|
12
|
-
|
13
|
-
TODO...
|
14
|
-
|
15
|
-
## Binary Views
|
16
|
-
|
17
|
-
TODO...
|
18
|
-
|
19
|
-
## Value Pointers
|
20
|
-
|
21
|
-
The JSON Value class has value semantics, copy construction and copy assignment result in a deep copy.
|
22
|
-
Similarly when adding a Value as sub-value to a Value representing a JSON Array or Object, if the source can not be moved then a deep copy is made.
|
23
|
-
|
24
|
-
```c++
|
25
|
-
const tao::json::value& big = some_big_json_value();
|
26
|
-
const tao::json::value log = {
|
27
|
-
{ "app_id", "my_app" },
|
28
|
-
{ "log_id", 103152 },
|
29
|
-
{ "message", "successfully processed" },
|
30
|
-
{ "big_data", big }
|
31
|
-
};
|
32
|
-
```
|
33
|
-
|
34
|
-
With Value Pointers, a (sub-)value can contain a plain and non-owning pointer to another Value instead of copying the pointee.
|
35
|
-
This performance optimisation is safe as long as the pointee does not go out of scope before the value containing the Value Pointer does.
|
36
|
-
|
37
|
-
Values with Value Pointers behave mostly "as if" they contained a deep copy of the pointee, serialising, comparing etc. automatically and transparently dereference all Value Pointers they encounter.
|
38
|
-
|
39
|
-
The above example is changed to use a Value Pointer, instead of copying, by passing a pointer to `big` instead of its value/reference.
|
40
|
-
|
41
|
-
```c++
|
42
|
-
const tao::json::value& big = some_big_json_value();
|
43
|
-
const tao::json::value log = {
|
44
|
-
{ "app_id", "my_app" },
|
45
|
-
{ "log_id", 103152 },
|
46
|
-
{ "message", "successfully processed" },
|
47
|
-
{ "big_data", &big }
|
48
|
-
};
|
49
|
-
```
|
50
|
-
|
51
|
-
Value Pointers MUST NOT contain a `nullptr`.
|
52
|
-
Usually a JSON Null is used instead of a `nullptr`.
|
53
|
-
|
54
|
-
## Opaque Pointers
|
55
|
-
|
56
|
-
Constructing a JSON Value from a C++ type uses the [traits](Type-Traits.md)' `assign()` function for the type to build the corresponding data structure.
|
57
|
-
When the type has a large JSON representation this can be an expensive operation.
|
58
|
-
|
59
|
-
When the only reason to build the JSON Value is to use it with an Events Consumer, typically to produce JSON text or one of the other supported formats, the `tao::json::produce()` function can be directly used in conjunction with the target Consumer, bypassing creation of the JSON Value.
|
60
|
-
|
61
|
-
```c++
|
62
|
-
const my_data& big = some_data_with_big_json_representation();
|
63
|
-
const auto json = tao::json::produce< my_traits >( big );
|
64
|
-
```
|
65
|
-
|
66
|
-
The above code snippet assumes the `my_traits` class template from the [Type Traits](Type-Traits.md) page, and requires the presence of an appropriate `produce()` function in the traits specialisation for `my_data`.
|
67
|
-
|
68
|
-
The situation changes when `big` is not alone.
|
69
|
-
|
70
|
-
```c++
|
71
|
-
const my_data& big = some_data_with_big_json_representation();
|
72
|
-
const tao::json::value log = {
|
73
|
-
{ "app_id", "my_app" },
|
74
|
-
{ "log_id", 103152 },
|
75
|
-
{ "message", "successfully processed" },
|
76
|
-
{ "big_data", big }
|
77
|
-
};
|
78
|
-
const auto json = tao::json::to_string( log );
|
79
|
-
```
|
80
|
-
|
81
|
-
Opaque pointers exist to optimise the above creation of `json` by not requiring the JSON structure for `big` to be created.
|
82
|
-
|
83
|
-
The requirements to create an Opaque pointer to `my_data` are:
|
84
|
-
|
85
|
-
1. A `produce()` function in the traits for `my_data` (as shown [here](Type-Traits.md)).
|
86
|
-
2. An `assign()` function in the traits for `const my_data*` (as shown below).
|
87
|
-
|
88
|
-
As an alternative to 1, a function with the same signature as `produce()` can be supplied to `tao::json::basic_value::assign_opaque_ptr()` as second argument.
|
89
|
-
|
90
|
-
As an alternative to 2, `assign_opaque_ptr()` can be called in other ways.
|
91
|
-
Or, when dealing with mutable `my_data` instances , it might be necessary to specialise the traits for `my_data*`, too.
|
92
|
-
|
93
|
-
```c++
|
94
|
-
template<>
|
95
|
-
struct my_traits< const my_data* >
|
96
|
-
{
|
97
|
-
template< template< typename... > class Traits >
|
98
|
-
static void assign( basic_value< Traits >& v, const my_data* const d )
|
99
|
-
{
|
100
|
-
v.assign_opaque_ptr( d );
|
101
|
-
}
|
102
|
-
};
|
103
|
-
```
|
104
|
-
|
105
|
-
Just as for Value Pointers, the key to creating an Opaque pointer is again the address-of operator `&`, creating this more efficient code.
|
106
|
-
|
107
|
-
```c++
|
108
|
-
const my_data& big = some_data_with_big_json_representation();
|
109
|
-
const tao::json::value log = {
|
110
|
-
{ "app_id", "my_app" },
|
111
|
-
{ "log_id", 103152 },
|
112
|
-
{ "message", "successfully processed" },
|
113
|
-
{ "big_data", &big }
|
114
|
-
};
|
115
|
-
const auto json = tao::json::to_string( log );
|
116
|
-
```
|
117
|
-
|
118
|
-
Generating Events from a JSON Value with Opaque pointers will produce the same result as replacing all Opaque pointers with their corresponding JSON structure and then generating Events from the resulting JSON Value would (assuming that the traits' `produce()` function is consistent with its `assign()`).
|
119
|
-
In the example, the generated JSON text will be the same as in the first version above.
|
120
|
-
|
121
|
-
When inspecting a JSON Value, an Opaque pointer will report its `type()` as `tao::json::type::OPAQUE_PTR`.
|
122
|
-
|
123
|
-
The limitations of using an Opaque pointer are:
|
124
|
-
|
125
|
-
1. The pointer MUST NOT be `nullptr`.
|
126
|
-
2. Comparison operators MUST NOT be used with Opaque pointers.
|
127
|
-
3. They can't be inspected or visited much beyond checking their type.
|
128
|
-
|
129
|
-
We do NOT recommend the following traits specialisation as it removes the `&` from all places that an opaque pointer is created, thereby removing the visual reminder that object lifetimes need to be tracked manually.
|
130
|
-
|
131
|
-
```c++
|
132
|
-
template<>
|
133
|
-
struct my_traits< my_data >
|
134
|
-
{
|
135
|
-
template< template< typename... > class Traits >
|
136
|
-
static void assign( basic_value< Traits >& v, my_data& d )
|
137
|
-
{
|
138
|
-
v.assign_opaque_ptr( &d ); // NOT recommended!
|
139
|
-
}
|
140
|
-
};
|
141
|
-
```
|
142
|
-
|
143
|
-
## Self Contained
|
144
|
-
|
145
|
-
As we have seen there are several ways in which a JSON Value might reference data that it does not manage.
|
146
|
-
|
147
|
-
* Values of type `STRING_VIEW` or `BINARY_VIEW` reference memory managed elsewhere.
|
148
|
-
* Values of type `VALUE_PTR` and `OPAQUE_PTR` reference objects managed elsewhere.
|
149
|
-
|
150
|
-
In some instances it might be necessary to make a self contained version of such a Value, one that is in some sense equivalent to the original but does not contain such unmanaged references.
|
151
|
-
|
152
|
-
(The views and pointers in sub-values of a Value could be pointing to memory or objects elsewhere in the same Value object, but this case is not recognised or optimised for.)
|
153
|
-
|
154
|
-
The function `tao::json::is_self_contained()` can be used to check whether a JSON Value is fully self contained.
|
155
|
-
It recursively check the entire JSON Value and all sub-values and returns `false` if it finds a sub-value of type `STRING_VIEW`, `BINARY_VIEW`, `VALUE_PTR` or `OPAQUE_PTR`.
|
156
|
-
|
157
|
-
The function `tao::json::make_self_contained()` can be used to make a JSON Value fully self contained.
|
158
|
-
Sub-values of type `STRING_VIEW` and `BINARY_VIEW` are transformed into `STRING` and `BINARY`, respectively.
|
159
|
-
Occurrences of `VALUE_PTR` are replaced with a deep copy of the pointee.
|
160
|
-
|
161
|
-
Occurrences of `OPAQUE_PTR` are replaced with a JSON Value created by using the `produce()` function from the traits as Events producer (or the function supplied as second argument to `basic_value::assign_opaque_ptr()`) together with `tao::json::events::to_basic_value` as Events consumer.
|
162
|
-
|
163
|
-
Copyright (c) 2018-2020 Dr. Colin Hirsch and Daniel Frey
|