From f834d2c688b88d48b2b7333b80b834c532a2b24d Mon Sep 17 00:00:00 2001 From: lenheart Date: Fri, 20 Sep 2024 00:17:48 +0800 Subject: [PATCH] 1111 --- ...on => index-2024-09-19T15-22-20-0820.json} | 0 .../hook_aurora.dir/compiler_depend.internal | 58 + .../hook_aurora.dir/compiler_depend.make | 198 +- .../CMakeFiles/hook_aurora.dir/df_main.cpp.o | Bin 670056 -> 669020 bytes .../hook_aurora.dir/l_squirrel.cpp.o | Bin 1039280 -> 1220044 bytes .../hook_aurora.dir/l_squirrel.cpp.o.d | 58 + include/SqrReg_Game.hpp | 21 +- include/nlohmann/adl_serializer.hpp | 55 + .../nlohmann/byte_container_with_subtype.hpp | 103 + include/nlohmann/detail/abi_macros.hpp | 100 + .../nlohmann/detail/conversions/from_json.hpp | 497 ++ .../nlohmann/detail/conversions/to_chars.hpp | 1118 ++++ .../nlohmann/detail/conversions/to_json.hpp | 447 ++ include/nlohmann/detail/exceptions.hpp | 257 + include/nlohmann/detail/hash.hpp | 129 + .../nlohmann/detail/input/binary_reader.hpp | 3009 ++++++++++ .../nlohmann/detail/input/input_adapters.hpp | 492 ++ include/nlohmann/detail/input/json_sax.hpp | 727 +++ include/nlohmann/detail/input/lexer.hpp | 1633 +++++ include/nlohmann/detail/input/parser.hpp | 519 ++ include/nlohmann/detail/input/position_t.hpp | 37 + .../detail/iterators/internal_iterator.hpp | 35 + .../nlohmann/detail/iterators/iter_impl.hpp | 751 +++ .../detail/iterators/iteration_proxy.hpp | 242 + .../detail/iterators/iterator_traits.hpp | 61 + .../iterators/json_reverse_iterator.hpp | 130 + .../detail/iterators/primitive_iterator.hpp | 132 + .../detail/json_custom_base_class.hpp | 39 + include/nlohmann/detail/json_pointer.hpp | 988 ++++ include/nlohmann/detail/json_ref.hpp | 78 + include/nlohmann/detail/macro_scope.hpp | 482 ++ include/nlohmann/detail/macro_unscope.hpp | 45 + .../nlohmann/detail/meta/call_std/begin.hpp | 17 + include/nlohmann/detail/meta/call_std/end.hpp | 17 + include/nlohmann/detail/meta/cpp_future.hpp | 171 + include/nlohmann/detail/meta/detected.hpp | 70 + include/nlohmann/detail/meta/identity_tag.hpp | 21 + include/nlohmann/detail/meta/is_sax.hpp | 159 + include/nlohmann/detail/meta/std_fs.hpp | 29 + include/nlohmann/detail/meta/type_traits.hpp | 795 +++ include/nlohmann/detail/meta/void_t.hpp | 24 + .../nlohmann/detail/output/binary_writer.hpp | 1838 ++++++ .../detail/output/output_adapters.hpp | 147 + include/nlohmann/detail/output/serializer.hpp | 988 ++++ include/nlohmann/detail/string_concat.hpp | 146 + include/nlohmann/detail/string_escape.hpp | 72 + include/nlohmann/detail/value_t.hpp | 118 + include/nlohmann/json.hpp | 5258 +++++++++++++++++ include/nlohmann/json_fwd.hpp | 75 + include/nlohmann/ordered_map.hpp | 359 ++ include/nlohmann/thirdparty/hedley/hedley.hpp | 2045 +++++++ .../thirdparty/hedley/hedley_undef.hpp | 158 + src/df_main.cpp | 2 +- 53 files changed, 24935 insertions(+), 15 deletions(-) rename build/.cmake/api/v1/reply/{index-2024-09-17T03-41-21-0403.json => index-2024-09-19T15-22-20-0820.json} (100%) create mode 100644 include/nlohmann/adl_serializer.hpp create mode 100644 include/nlohmann/byte_container_with_subtype.hpp create mode 100644 include/nlohmann/detail/abi_macros.hpp create mode 100644 include/nlohmann/detail/conversions/from_json.hpp create mode 100644 include/nlohmann/detail/conversions/to_chars.hpp create mode 100644 include/nlohmann/detail/conversions/to_json.hpp create mode 100644 include/nlohmann/detail/exceptions.hpp create mode 100644 include/nlohmann/detail/hash.hpp create mode 100644 include/nlohmann/detail/input/binary_reader.hpp create mode 100644 include/nlohmann/detail/input/input_adapters.hpp create mode 100644 include/nlohmann/detail/input/json_sax.hpp create mode 100644 include/nlohmann/detail/input/lexer.hpp create mode 100644 include/nlohmann/detail/input/parser.hpp create mode 100644 include/nlohmann/detail/input/position_t.hpp create mode 100644 include/nlohmann/detail/iterators/internal_iterator.hpp create mode 100644 include/nlohmann/detail/iterators/iter_impl.hpp create mode 100644 include/nlohmann/detail/iterators/iteration_proxy.hpp create mode 100644 include/nlohmann/detail/iterators/iterator_traits.hpp create mode 100644 include/nlohmann/detail/iterators/json_reverse_iterator.hpp create mode 100644 include/nlohmann/detail/iterators/primitive_iterator.hpp create mode 100644 include/nlohmann/detail/json_custom_base_class.hpp create mode 100644 include/nlohmann/detail/json_pointer.hpp create mode 100644 include/nlohmann/detail/json_ref.hpp create mode 100644 include/nlohmann/detail/macro_scope.hpp create mode 100644 include/nlohmann/detail/macro_unscope.hpp create mode 100644 include/nlohmann/detail/meta/call_std/begin.hpp create mode 100644 include/nlohmann/detail/meta/call_std/end.hpp create mode 100644 include/nlohmann/detail/meta/cpp_future.hpp create mode 100644 include/nlohmann/detail/meta/detected.hpp create mode 100644 include/nlohmann/detail/meta/identity_tag.hpp create mode 100644 include/nlohmann/detail/meta/is_sax.hpp create mode 100644 include/nlohmann/detail/meta/std_fs.hpp create mode 100644 include/nlohmann/detail/meta/type_traits.hpp create mode 100644 include/nlohmann/detail/meta/void_t.hpp create mode 100644 include/nlohmann/detail/output/binary_writer.hpp create mode 100644 include/nlohmann/detail/output/output_adapters.hpp create mode 100644 include/nlohmann/detail/output/serializer.hpp create mode 100644 include/nlohmann/detail/string_concat.hpp create mode 100644 include/nlohmann/detail/string_escape.hpp create mode 100644 include/nlohmann/detail/value_t.hpp create mode 100644 include/nlohmann/json.hpp create mode 100644 include/nlohmann/json_fwd.hpp create mode 100644 include/nlohmann/ordered_map.hpp create mode 100644 include/nlohmann/thirdparty/hedley/hedley.hpp create mode 100644 include/nlohmann/thirdparty/hedley/hedley_undef.hpp diff --git a/build/.cmake/api/v1/reply/index-2024-09-17T03-41-21-0403.json b/build/.cmake/api/v1/reply/index-2024-09-19T15-22-20-0820.json similarity index 100% rename from build/.cmake/api/v1/reply/index-2024-09-17T03-41-21-0403.json rename to build/.cmake/api/v1/reply/index-2024-09-19T15-22-20-0820.json diff --git a/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.internal b/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.internal index 0d68e1a..7a032d6 100644 --- a/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.internal +++ b/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.internal @@ -14788,6 +14788,64 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o /home/dnf_project/dnf_project/include/spdlog/sinks/basic_file_sink-inl.h /usr/local/include/ffi.h /usr/local/include/ffitarget.h + /home/dnf_project/dnf_project/include/nlohmann/json.hpp + /home/dnf_project/dnf_project/include/nlohmann/adl_serializer.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/abi_macros.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/from_json.hpp + /usr/include/c++/4.8.2/forward_list + /usr/include/c++/4.8.2/bits/forward_list.h + /usr/include/c++/4.8.2/bits/forward_list.tcc + /usr/include/c++/4.8.2/valarray + /usr/include/c++/4.8.2/bits/valarray_array.h + /usr/include/c++/4.8.2/bits/valarray_array.tcc + /usr/include/c++/4.8.2/bits/valarray_before.h + /usr/include/c++/4.8.2/bits/slice_array.h + /usr/include/c++/4.8.2/bits/valarray_after.h + /usr/include/c++/4.8.2/bits/gslice.h + /usr/include/c++/4.8.2/bits/gslice_array.h + /usr/include/c++/4.8.2/bits/mask_array.h + /usr/include/c++/4.8.2/bits/indirect_array.h + /home/dnf_project/dnf_project/include/nlohmann/detail/exceptions.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/value_t.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_scope.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/detected.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/void_t.hpp + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/string_escape.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/position_t.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/cpp_future.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/type_traits.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iterator_traits.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/begin.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/end.hpp + /home/dnf_project/dnf_project/include/nlohmann/json_fwd.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/string_concat.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/identity_tag.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/std_fs.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_json.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iteration_proxy.hpp + /home/dnf_project/dnf_project/include/nlohmann/byte_container_with_subtype.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/hash.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/binary_reader.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/input_adapters.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/json_sax.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/lexer.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/is_sax.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/input/parser.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/internal_iterator.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/primitive_iterator.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iter_impl.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/json_reverse_iterator.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/json_custom_base_class.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/json_pointer.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/json_ref.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/output/binary_writer.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/output/output_adapters.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/output/serializer.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_chars.hpp + /home/dnf_project/dnf_project/include/nlohmann/ordered_map.hpp + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_unscope.hpp + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley_undef.hpp /home/dnf_project/dnf_project/include/SqrReg_GameManager.hpp /home/dnf_project/dnf_project/include/SqrReg_Party.hpp /home/dnf_project/dnf_project/include/SqrReg_Inven.hpp diff --git a/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.make b/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.make index 2650165..fda2c27 100644 --- a/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.make +++ b/build/src/CMakeFiles/hook_aurora.dir/compiler_depend.make @@ -14723,6 +14723,64 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/dnf_project/dnf_project/include/spdlog/sinks/basic_file_sink-inl.h \ /usr/local/include/ffi.h \ /usr/local/include/ffitarget.h \ + /home/dnf_project/dnf_project/include/nlohmann/json.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/adl_serializer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/abi_macros.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/from_json.hpp \ + /usr/include/c++/4.8.2/forward_list \ + /usr/include/c++/4.8.2/bits/forward_list.h \ + /usr/include/c++/4.8.2/bits/forward_list.tcc \ + /usr/include/c++/4.8.2/valarray \ + /usr/include/c++/4.8.2/bits/valarray_array.h \ + /usr/include/c++/4.8.2/bits/valarray_array.tcc \ + /usr/include/c++/4.8.2/bits/valarray_before.h \ + /usr/include/c++/4.8.2/bits/slice_array.h \ + /usr/include/c++/4.8.2/bits/valarray_after.h \ + /usr/include/c++/4.8.2/bits/gslice.h \ + /usr/include/c++/4.8.2/bits/gslice_array.h \ + /usr/include/c++/4.8.2/bits/mask_array.h \ + /usr/include/c++/4.8.2/bits/indirect_array.h \ + /home/dnf_project/dnf_project/include/nlohmann/detail/exceptions.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/value_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_scope.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/detected.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/void_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/string_escape.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/position_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/cpp_future.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/type_traits.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iterator_traits.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/begin.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/end.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/json_fwd.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/string_concat.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/identity_tag.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/std_fs.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_json.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iteration_proxy.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/byte_container_with_subtype.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/hash.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/binary_reader.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/input_adapters.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/json_sax.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/lexer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/is_sax.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/parser.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/internal_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/primitive_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iter_impl.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/json_reverse_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_custom_base_class.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_pointer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_ref.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/binary_writer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/output_adapters.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/serializer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_chars.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/ordered_map.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_unscope.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \ /home/dnf_project/dnf_project/include/SqrReg_GameManager.hpp \ /home/dnf_project/dnf_project/include/SqrReg_Party.hpp \ /home/dnf_project/dnf_project/include/SqrReg_Inven.hpp \ @@ -14845,18 +14903,12 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/ssl/detail/buffered_handshake_op.hpp: -/home/asio/asio-1.28.0/include/asio/ssl/host_name_verification.hpp: - /home/asio/asio-1.28.0/include/asio/ssl/rfc2818_verification.hpp: /home/asio/asio-1.28.0/include/asio/ssl/error.hpp: /home/asio/asio-1.28.0/include/asio/ssl/impl/context.ipp: -/home/asio/asio-1.28.0/include/asio/ssl/impl/error.ipp: - -/home/asio/asio-1.28.0/include/asio/ssl/verify_context.hpp: - /home/asio/asio-1.28.0/include/asio/ssl/detail/password_callback.hpp: /home/asio/asio-1.28.0/include/asio/ssl/detail/impl/openssl_init.ipp: @@ -14891,10 +14943,6 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/local/include/openssl/x509_vfy.h: -/usr/local/include/openssl/tls1.h: - -/usr/local/include/openssl/x509err.h: - /usr/local/include/openssl/sha.h: /usr/local/include/openssl/dsaerr.h: @@ -14921,8 +14969,6 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/local/include/openssl/evp.h: -/usr/local/include/openssl/buffererr.h: - /usr/local/include/openssl/comperr.h: /usr/local/include/openssl/comp.h: @@ -14963,6 +15009,76 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/dnf_project/dnf_project/include/SqrReg_GameManager.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/json_ref.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/json_pointer.hpp: + +/usr/local/include/openssl/buffererr.h: + +/home/dnf_project/dnf_project/include/nlohmann/detail/json_custom_base_class.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/json_reverse_iterator.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iter_impl.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/primitive_iterator.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/input/json_sax.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/input/input_adapters.hpp: + +/home/asio/asio-1.28.0/include/asio/ssl/impl/error.ipp: + +/home/asio/asio-1.28.0/include/asio/ssl/verify_context.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/byte_container_with_subtype.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iteration_proxy.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/json_fwd.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/begin.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/cpp_future.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/input/position_t.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/string_escape.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/void_t.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/detected.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/macro_scope.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/value_t.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/exceptions.hpp: + +/usr/include/c++/4.8.2/bits/indirect_array.h: + +/usr/include/c++/4.8.2/bits/gslice.h: + +/usr/local/include/openssl/tls1.h: + +/usr/local/include/openssl/x509err.h: + +/usr/include/c++/4.8.2/bits/valarray_before.h: + +/home/asio/asio-1.28.0/include/asio/ssl/host_name_verification.hpp: + +/usr/include/c++/4.8.2/valarray: + +/usr/include/c++/4.8.2/bits/forward_list.h: + +/home/dnf_project/dnf_project/include/nlohmann/detail/conversions/from_json.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/detail/abi_macros.hpp: + +/home/dnf_project/dnf_project/include/nlohmann/json.hpp: + /usr/local/include/ffi.h: /home/dnf_project/dnf_project/include/SqrReg_Game.hpp: @@ -15081,6 +15197,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/static_thread_pool.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/type_traits.hpp: + /home/asio/asio-1.28.0/include/asio/signal_set.hpp: /home/dnf_project/dnf_project/include/spdlog/sinks/base_sink.h: @@ -15125,6 +15243,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/thread: +/home/dnf_project/dnf_project/include/nlohmann/detail/input/lexer.hpp: + /home/asio/asio-1.28.0/include/asio/detail/future.hpp: /home/asio/asio-1.28.0/include/asio/packaged_task.hpp: @@ -15167,6 +15287,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/detail/resolve_op.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/is_sax.hpp: + /home/asio/asio-1.28.0/include/asio/detail/resolver_service.hpp: /home/asio/asio-1.28.0/include/asio/ip/resolver_query_base.hpp: @@ -15175,6 +15297,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/ip/detail/impl/endpoint.ipp: +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/identity_tag.hpp: + /home/dnf_project/dnf_project/include/spdlog/mdc.h: /home/asio/asio-1.28.0/include/asio/ip/detail/endpoint.hpp: @@ -15193,6 +15317,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/ip/network_v4.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/macro_unscope.hpp: + /home/asio/asio-1.28.0/include/asio/ip/address_v6_iterator.hpp: /home/asio/asio-1.28.0/include/asio/posix/stream_descriptor.hpp: @@ -15231,6 +15357,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/detached.hpp: +/usr/include/c++/4.8.2/bits/slice_array.h: + /home/asio/asio-1.28.0/include/asio/deferred.hpp: /home/asio/asio-1.28.0/include/asio/detail/initiate_defer.hpp: @@ -15261,6 +15389,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/bits/dlfcn.h: +/home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_chars.hpp: + /home/dnf_project/dnf_project/include/spdlog/details/registry-inl.h: /home/dnf_project/dnf_project/src/asmjit/core/zonestring.h: @@ -15303,6 +15433,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/stdbool.h: +/home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley_undef.hpp: + /home/asio/asio-1.28.0/include/asio/ip/basic_resolver_entry.hpp: /usr/include/c++/4.8.2/bits/atomic_base.h: @@ -15323,6 +15455,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/dnf_project/dnf_project/src/asmjit/core/codeholder.h: +/home/dnf_project/dnf_project/include/nlohmann/detail/string_concat.hpp: + /usr/include/bits/fcntl-linux.h: /usr/local/include/openssl/evperr.h: @@ -15387,14 +15521,20 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/sys/utsname.h: +/home/dnf_project/dnf_project/include/nlohmann/detail/hash.hpp: + /home/dnf_project/dnf_project/include/spdlog/details/file_helper-inl.h: /home/asio/asio-1.28.0/include/asio/detail/posix_serial_port_service.hpp: /home/asio/asio-1.28.0/include/asio/buffered_write_stream.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/std_fs.hpp: + /home/dnf_project/dnf_project/src/asmjit/core/codewriter.cpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/output/output_adapters.hpp: + /usr/include/c++/4.8.2/bits/uses_allocator.h: /usr/include/c++/4.8.2/stdexcept: @@ -15419,6 +15559,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/ios: +/usr/include/c++/4.8.2/bits/gslice_array.h: + /usr/include/c++/4.8.2/bits/shared_ptr_base.h: /usr/local/include/openssl/cryptoerr.h: @@ -15455,6 +15597,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/dnf_project/dnf_project/src/asmjit/arm/a64instapi_p.h: +/usr/include/c++/4.8.2/bits/mask_array.h: + /usr/include/features.h: /usr/include/c++/4.8.2/cctype: @@ -15781,6 +15925,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/ext/alloc_traits.h: +/home/dnf_project/dnf_project/include/nlohmann/ordered_map.hpp: + /home/asio/asio-1.28.0/include/asio/detail/throw_error.hpp: /usr/include/c++/4.8.2/initializer_list: @@ -15791,6 +15937,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/cpu_defines.h: +/home/dnf_project/dnf_project/include/nlohmann/detail/output/binary_writer.hpp: + /usr/include/math.h: /home/asio/asio-1.28.0/include/asio/impl/read.hpp: @@ -15923,6 +16071,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/impl/consign.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/input/parser.hpp: + /home/asio/asio-1.28.0/include/asio/executor.hpp: /home/dnf_project/dnf_project/src/asmjit/core/zonelist.h: @@ -16023,6 +16173,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/assert.h: +/usr/include/c++/4.8.2/bits/valarray_array.tcc: + /usr/include/xlocale.h: /home/dnf_project/dnf_project/src/asmjit/core/zonetree.cpp: @@ -16155,6 +16307,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/istream: +/home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_json.hpp: + /usr/include/c++/4.8.2/clocale: /usr/include/c++/4.8.2/streambuf: @@ -16195,6 +16349,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/impl/execution_context.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/output/serializer.hpp: + /home/dnf_project/dnf_project/src/asmjit/core/codeholder.cpp: /usr/include/c++/4.8.2/bits/ostream_insert.h: @@ -16239,6 +16395,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/uses_executor.hpp: +/usr/include/c++/4.8.2/forward_list: + /home/dnf_project/dnf_project/include/spdlog/sinks/ansicolor_sink-inl.h: /home/dnf_project/dnf_project/src/asmjit/x86/x86assembler.h: @@ -16451,6 +16609,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/basic_file.h: +/home/dnf_project/dnf_project/include/nlohmann/adl_serializer.hpp: + /home/asio/asio-1.28.0/include/asio/detail/is_buffer_sequence.hpp: /usr/include/c++/4.8.2/x86_64-redhat-linux/32/bits/c++io.h: @@ -16463,6 +16623,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/c++/4.8.2/bits/fstream.tcc: +/home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/end.hpp: + /home/asio/asio-1.28.0/include/asio/detail/pop_options.hpp: /home/asio/asio-1.28.0/include/asio/execution/set_error.hpp: @@ -16621,6 +16783,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/execution/sender.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/internal_iterator.hpp: + /home/asio/asio-1.28.0/include/asio/impl/deferred.hpp: /usr/lib/gcc/x86_64-redhat-linux/4.8.5/include/immintrin.h: @@ -16651,6 +16815,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/local/include/openssl/uierr.h: +/usr/include/c++/4.8.2/bits/valarray_array.h: + /home/dnf_project/dnf_project/src/sdk/ShutdowManager.h: /home/asio/asio-1.28.0/include/asio/detail/executor_function.hpp: @@ -16755,6 +16921,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /usr/include/arpa/inet.h: +/home/dnf_project/dnf_project/include/nlohmann/detail/input/binary_reader.hpp: + /usr/include/bits/poll.h: /home/asio/asio-1.28.0/include/asio/detail/io_control.hpp: @@ -16817,6 +16985,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/detail/impl/posix_mutex.ipp: +/usr/include/c++/4.8.2/bits/valarray_after.h: + /home/asio/asio-1.28.0/include/asio/associated_immediate_executor.hpp: /home/asio/asio-1.28.0/include/asio/execution/bulk_execute.hpp: @@ -16893,6 +17063,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/detail/handler_type_requirements.hpp: +/usr/include/c++/4.8.2/bits/forward_list.tcc: + /home/asio/asio-1.28.0/include/asio/this_coro.hpp: /home/asio/asio-1.28.0/include/asio/detail/impl/service_registry.hpp: @@ -17011,6 +17183,8 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: /home/dnf_project/dnf_project/s /home/asio/asio-1.28.0/include/asio/registered_buffer.hpp: +/home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iterator_traits.hpp: + /home/asio/asio-1.28.0/include/asio/detail/impl/buffer_sequence_adapter.ipp: /home/asio/asio-1.28.0/include/asio/detail/reactive_socket_recvfrom_op.hpp: diff --git a/build/src/CMakeFiles/hook_aurora.dir/df_main.cpp.o b/build/src/CMakeFiles/hook_aurora.dir/df_main.cpp.o index a9bb4eb73fb2a87645683942a2c2db4109f7e7b1..c627b16748a1e06349ee412bc0540b3106b9b981 100644 GIT binary patch delta 173775 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

^xC-!!@eiXvWaxc5w1}^1Ift$e{u+)NHR=mK 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 TBPWc>xMsL>2fXdW{`UU>Ef3ZR delta 168980 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

  • +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�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≪ErPerBA;neSg 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%0DR1Fb*G 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

    !{Gsx4$o3bJ_}oGQ&YT_@SOTw8({fE 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

    ux!tmg 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 diff --git a/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o.d b/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o.d index 6a28c01..1feba12 100644 --- a/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o.d +++ b/build/src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o.d @@ -876,6 +876,64 @@ src/CMakeFiles/hook_aurora.dir/l_squirrel.cpp.o: \ /home/dnf_project/dnf_project/include/spdlog/sinks/base_sink-inl.h \ /home/dnf_project/dnf_project/include/spdlog/sinks/basic_file_sink-inl.h \ /usr/local/include/ffi.h /usr/local/include/ffitarget.h \ + /home/dnf_project/dnf_project/include/nlohmann/json.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/adl_serializer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/abi_macros.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/from_json.hpp \ + /usr/include/c++/4.8.2/forward_list \ + /usr/include/c++/4.8.2/bits/forward_list.h \ + /usr/include/c++/4.8.2/bits/forward_list.tcc \ + /usr/include/c++/4.8.2/valarray \ + /usr/include/c++/4.8.2/bits/valarray_array.h \ + /usr/include/c++/4.8.2/bits/valarray_array.tcc \ + /usr/include/c++/4.8.2/bits/valarray_before.h \ + /usr/include/c++/4.8.2/bits/slice_array.h \ + /usr/include/c++/4.8.2/bits/valarray_after.h \ + /usr/include/c++/4.8.2/bits/gslice.h \ + /usr/include/c++/4.8.2/bits/gslice_array.h \ + /usr/include/c++/4.8.2/bits/mask_array.h \ + /usr/include/c++/4.8.2/bits/indirect_array.h \ + /home/dnf_project/dnf_project/include/nlohmann/detail/exceptions.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/value_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_scope.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/detected.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/void_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/string_escape.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/position_t.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/cpp_future.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/type_traits.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iterator_traits.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/begin.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/call_std/end.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/json_fwd.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/string_concat.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/identity_tag.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/std_fs.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_json.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iteration_proxy.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/byte_container_with_subtype.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/hash.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/binary_reader.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/input_adapters.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/json_sax.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/lexer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/meta/is_sax.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/input/parser.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/internal_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/primitive_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/iter_impl.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/iterators/json_reverse_iterator.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_custom_base_class.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_pointer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/json_ref.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/binary_writer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/output_adapters.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/output/serializer.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/conversions/to_chars.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/ordered_map.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/detail/macro_unscope.hpp \ + /home/dnf_project/dnf_project/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \ /home/dnf_project/dnf_project/include/SqrReg_GameManager.hpp \ /home/dnf_project/dnf_project/include/SqrReg_Party.hpp \ /home/dnf_project/dnf_project/include/SqrReg_Inven.hpp \ diff --git a/include/SqrReg_Game.hpp b/include/SqrReg_Game.hpp index 1f9e73b..2c0d392 100644 --- a/include/SqrReg_Game.hpp +++ b/include/SqrReg_Game.hpp @@ -12,6 +12,7 @@ #include #include #include +#include "nlohmann/json.hpp" #define CONTAINS_STRING(str, substr) (str == substr) @@ -700,6 +701,17 @@ static SQInteger Sq_getExportByName(HSQUIRRELVM v) return 1; } +static SQInteger OutPutTable(HSQUIRRELVM v) +{ + const SQChar *Str; + sq_getstring(v, 2, &Str); + + nlohmann::json ex1 = nlohmann::json::parse(Str); + + std::cout << std::setw(4) << ex1 << std::endl; + return 0; +} + static void RegisterGame(HSQUIRRELVM v) { getConfigPath(szGamePath, sizeof(szGamePath)); @@ -712,6 +724,7 @@ static void RegisterGame(HSQUIRRELVM v) register_World_func(v, L_S_Ptr, _SC("S_Ptr")); register_World_func(v, L_Str_Ptr, _SC("Str_Ptr")); + // 指针运算 register_World_func(v, L_Ptr_Operation_A2S, _SC("Ptr_Operation_A2S")); // new一个指针 @@ -747,8 +760,12 @@ static void RegisterGame(HSQUIRRELVM v) register_World_func(v, L_MysqlExecNoRet, _SC("Sq_MysqlExecNoRet")); // 创建Socket连接 register_World_func(v, L_CreatSocketConnect, _SC("Sq_CreatSocketConnect")); - + // 动态调用Call register_World_func(v, L_CallFunc, _SC("Sq_CallFunc")); - + // 获取模块函数地址 register_World_func(v, Sq_getExportByName, _SC("Sq_getExportByName")); + // 打印表 + register_World_func(v, OutPutTable, _SC("Sq_OutPutTable")); + } + diff --git a/include/nlohmann/adl_serializer.hpp b/include/nlohmann/adl_serializer.hpp new file mode 100644 index 0000000..56a606c --- /dev/null +++ b/include/nlohmann/adl_serializer.hpp @@ -0,0 +1,55 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +/// @sa https://json.nlohmann.me/api/adl_serializer/ +template +struct adl_serializer +{ + /// @brief convert a JSON value to any value type + /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ + template + static auto from_json(BasicJsonType && j, TargetType& val) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), val))) + -> decltype(::nlohmann::from_json(std::forward(j), val), void()) + { + ::nlohmann::from_json(std::forward(j), val); + } + + /// @brief convert a JSON value to any value type + /// @sa https://json.nlohmann.me/api/adl_serializer/from_json/ + template + static auto from_json(BasicJsonType && j) noexcept( + noexcept(::nlohmann::from_json(std::forward(j), detail::identity_tag {}))) + -> decltype(::nlohmann::from_json(std::forward(j), detail::identity_tag {})) + { + return ::nlohmann::from_json(std::forward(j), detail::identity_tag {}); + } + + /// @brief convert any value type to a JSON value + /// @sa https://json.nlohmann.me/api/adl_serializer/to_json/ + template + static auto to_json(BasicJsonType& j, TargetType && val) noexcept( + noexcept(::nlohmann::to_json(j, std::forward(val)))) + -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) + { + ::nlohmann::to_json(j, std::forward(val)); + } +}; + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/byte_container_with_subtype.hpp b/include/nlohmann/byte_container_with_subtype.hpp new file mode 100644 index 0000000..91382cd --- /dev/null +++ b/include/nlohmann/byte_container_with_subtype.hpp @@ -0,0 +1,103 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // uint8_t, uint64_t +#include // tie +#include // move + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +/// @brief an internal type for a backed binary type +/// @sa https://json.nlohmann.me/api/byte_container_with_subtype/ +template +class byte_container_with_subtype : public BinaryType +{ + public: + using container_type = BinaryType; + using subtype_type = std::uint64_t; + + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ + byte_container_with_subtype() noexcept(noexcept(container_type())) + : container_type() + {} + + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ + byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) + : container_type(b) + {} + + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ + byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + {} + + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ + byte_container_with_subtype(const container_type& b, subtype_type subtype_) noexcept(noexcept(container_type(b))) + : container_type(b) + , m_subtype(subtype_) + , m_has_subtype(true) + {} + + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/byte_container_with_subtype/ + byte_container_with_subtype(container_type&& b, subtype_type subtype_) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + , m_subtype(subtype_) + , m_has_subtype(true) + {} + + bool operator==(const byte_container_with_subtype& rhs) const + { + return std::tie(static_cast(*this), m_subtype, m_has_subtype) == + std::tie(static_cast(rhs), rhs.m_subtype, rhs.m_has_subtype); + } + + bool operator!=(const byte_container_with_subtype& rhs) const + { + return !(rhs == *this); + } + + /// @brief sets the binary subtype + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/set_subtype/ + void set_subtype(subtype_type subtype_) noexcept + { + m_subtype = subtype_; + m_has_subtype = true; + } + + /// @brief return the binary subtype + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/subtype/ + constexpr subtype_type subtype() const noexcept + { + return m_has_subtype ? m_subtype : static_cast(-1); + } + + /// @brief return whether the value has a subtype + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/has_subtype/ + constexpr bool has_subtype() const noexcept + { + return m_has_subtype; + } + + /// @brief clears the binary subtype + /// @sa https://json.nlohmann.me/api/byte_container_with_subtype/clear_subtype/ + void clear_subtype() noexcept + { + m_subtype = 0; + m_has_subtype = false; + } + + private: + subtype_type m_subtype = 0; + bool m_has_subtype = false; +}; + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/abi_macros.hpp b/include/nlohmann/detail/abi_macros.hpp new file mode 100644 index 0000000..f48b9eb --- /dev/null +++ b/include/nlohmann/detail/abi_macros.hpp @@ -0,0 +1,100 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 11 || NLOHMANN_JSON_VERSION_PATCH != 3 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 11 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 3 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) json_abi ## a ## b +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif diff --git a/include/nlohmann/detail/conversions/from_json.hpp b/include/nlohmann/detail/conversions/from_json.hpp new file mode 100644 index 0000000..aa2f0cb --- /dev/null +++ b/include/nlohmann/detail/conversions/from_json.hpp @@ -0,0 +1,497 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +#include +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +inline void from_json(const BasicJsonType& j, typename std::nullptr_t& n) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_null())) + { + JSON_THROW(type_error::create(302, concat("type must be null, but is ", j.type_name()), &j)); + } + n = nullptr; +} + +// overloads for basic_json template parameters +template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < std::is_arithmetic::value&& + !std::is_same::value, + int > = 0 > +void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + + case value_t::null: + case value_t::object: + case value_t::array: + case value_t::string: + case value_t::boolean: + case value_t::binary: + case value_t::discarded: + default: + JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j)); + } +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_boolean())) + { + JSON_THROW(type_error::create(302, concat("type must be boolean, but is ", j.type_name()), &j)); + } + b = *j.template get_ptr(); +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) + { + JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); + } + s = *j.template get_ptr(); +} + +template < + typename BasicJsonType, typename StringType, + enable_if_t < + std::is_assignable::value + && is_detected_exact::value + && !std::is_same::value + && !is_json_ref::value, int > = 0 > +inline void from_json(const BasicJsonType& j, StringType& s) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) + { + JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); + } + + s = *j.template get_ptr(); +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val) +{ + get_arithmetic_value(j, val); +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val) +{ + get_arithmetic_value(j, val); +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val) +{ + get_arithmetic_value(j, val); +} + +#if !JSON_DISABLE_ENUM_SERIALIZATION +template::value, int> = 0> +inline void from_json(const BasicJsonType& j, EnumType& e) +{ + typename std::underlying_type::type val; + get_arithmetic_value(j, val); + e = static_cast(val); +} +#endif // JSON_DISABLE_ENUM_SERIALIZATION + +// forward_list doesn't have an insert method +template::value, int> = 0> +inline void from_json(const BasicJsonType& j, std::forward_list& l) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + l.clear(); + std::transform(j.rbegin(), j.rend(), + std::front_inserter(l), [](const BasicJsonType & i) + { + return i.template get(); + }); +} + +// valarray doesn't have an insert method +template::value, int> = 0> +inline void from_json(const BasicJsonType& j, std::valarray& l) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + l.resize(j.size()); + std::transform(j.begin(), j.end(), std::begin(l), + [](const BasicJsonType & elem) + { + return elem.template get(); + }); +} + +template +auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) +-> decltype(j.template get(), void()) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } +} + +template +inline void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/) +{ + arr = *j.template get_ptr(); +} + +template +auto from_json_array_impl(const BasicJsonType& j, std::array& arr, + priority_tag<2> /*unused*/) +-> decltype(j.template get(), void()) +{ + for (std::size_t i = 0; i < N; ++i) + { + arr[i] = j.at(i).template get(); + } +} + +template::value, + int> = 0> +auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/) +-> decltype( + arr.reserve(std::declval()), + j.template get(), + void()) +{ + using std::end; + + ConstructibleArrayType ret; + ret.reserve(j.size()); + std::transform(j.begin(), j.end(), + std::inserter(ret, end(ret)), [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); + arr = std::move(ret); +} + +template::value, + int> = 0> +inline void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, + priority_tag<0> /*unused*/) +{ + using std::end; + + ConstructibleArrayType ret; + std::transform( + j.begin(), j.end(), std::inserter(ret, end(ret)), + [](const BasicJsonType & i) + { + // get() returns *this, this won't call a from_json + // method when value_type is BasicJsonType + return i.template get(); + }); + arr = std::move(ret); +} + +template < typename BasicJsonType, typename ConstructibleArrayType, + enable_if_t < + is_constructible_array_type::value&& + !is_constructible_object_type::value&& + !is_constructible_string_type::value&& + !std::is_same::value&& + !is_basic_json::value, + int > = 0 > +auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) +-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), +j.template get(), +void()) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + + from_json_array_impl(j, arr, priority_tag<3> {}); +} + +template < typename BasicJsonType, typename T, std::size_t... Idx > +std::array from_json_inplace_array_impl(BasicJsonType&& j, + identity_tag> /*unused*/, index_sequence /*unused*/) +{ + return { { std::forward(j).at(Idx).template get()... } }; +} + +template < typename BasicJsonType, typename T, std::size_t N > +auto from_json(BasicJsonType&& j, identity_tag> tag) +-> decltype(from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {})) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + + return from_json_inplace_array_impl(std::forward(j), tag, make_index_sequence {}); +} + +template +inline void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_binary())) + { + JSON_THROW(type_error::create(302, concat("type must be binary, but is ", j.type_name()), &j)); + } + + bin = *j.template get_ptr(); +} + +template::value, int> = 0> +inline void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_object())) + { + JSON_THROW(type_error::create(302, concat("type must be object, but is ", j.type_name()), &j)); + } + + ConstructibleObjectType ret; + const auto* inner_object = j.template get_ptr(); + using value_type = typename ConstructibleObjectType::value_type; + std::transform( + inner_object->begin(), inner_object->end(), + std::inserter(ret, ret.begin()), + [](typename BasicJsonType::object_t::value_type const & p) + { + return value_type(p.first, p.second.template get()); + }); + obj = std::move(ret); +} + +// overload for arithmetic types, not chosen for basic_json template arguments +// (BooleanType, etc..); note: Is it really necessary to provide explicit +// overloads for boolean_t etc. in case of a custom BooleanType which is not +// an arithmetic type? +template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic::value&& + !std::is_same::value&& + !std::is_same::value&& + !std::is_same::value&& + !std::is_same::value, + int > = 0 > +inline void from_json(const BasicJsonType& j, ArithmeticType& val) +{ + switch (static_cast(j)) + { + case value_t::number_unsigned: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_integer: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::number_float: + { + val = static_cast(*j.template get_ptr()); + break; + } + case value_t::boolean: + { + val = static_cast(*j.template get_ptr()); + break; + } + + case value_t::null: + case value_t::object: + case value_t::array: + case value_t::string: + case value_t::binary: + case value_t::discarded: + default: + JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j)); + } +} + +template +std::tuple from_json_tuple_impl_base(BasicJsonType&& j, index_sequence /*unused*/) +{ + return std::make_tuple(std::forward(j).at(Idx).template get()...); +} + +template < typename BasicJsonType, class A1, class A2 > +std::pair from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<0> /*unused*/) +{ + return {std::forward(j).at(0).template get(), + std::forward(j).at(1).template get()}; +} + +template +inline void from_json_tuple_impl(BasicJsonType&& j, std::pair& p, priority_tag<1> /*unused*/) +{ + p = from_json_tuple_impl(std::forward(j), identity_tag> {}, priority_tag<0> {}); +} + +template +std::tuple from_json_tuple_impl(BasicJsonType&& j, identity_tag> /*unused*/, priority_tag<2> /*unused*/) +{ + return from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); +} + +template +inline void from_json_tuple_impl(BasicJsonType&& j, std::tuple& t, priority_tag<3> /*unused*/) +{ + t = from_json_tuple_impl_base(std::forward(j), index_sequence_for {}); +} + +template +auto from_json(BasicJsonType&& j, TupleRelated&& t) +-> decltype(from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {})) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + + return from_json_tuple_impl(std::forward(j), std::forward(t), priority_tag<3> {}); +} + +template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> +inline void from_json(const BasicJsonType& j, std::map& m) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + m.clear(); + for (const auto& p : j) + { + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j)); + } + m.emplace(p.at(0).template get(), p.at(1).template get()); + } +} + +template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> +inline void from_json(const BasicJsonType& j, std::unordered_map& m) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j)); + } + m.clear(); + for (const auto& p : j) + { + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) + { + JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j)); + } + m.emplace(p.at(0).template get(), p.at(1).template get()); + } +} + +#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM +template +inline void from_json(const BasicJsonType& j, std_fs::path& p) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) + { + JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j)); + } + p = *j.template get_ptr(); +} +#endif + +struct from_json_fn +{ + template + auto operator()(const BasicJsonType& j, T&& val) const + noexcept(noexcept(from_json(j, std::forward(val)))) + -> decltype(from_json(j, std::forward(val))) + { + return from_json(j, std::forward(val)); + } +}; + +} // namespace detail + +#ifndef JSON_HAS_CPP_17 +/// namespace to hold default `from_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) +{ +#endif +JSON_INLINE_VARIABLE constexpr const auto& from_json = // NOLINT(misc-definitions-in-headers) + detail::static_const::value; +#ifndef JSON_HAS_CPP_17 +} // namespace +#endif + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/conversions/to_chars.hpp b/include/nlohmann/detail/conversions/to_chars.hpp new file mode 100644 index 0000000..e10741c --- /dev/null +++ b/include/nlohmann/detail/conversions/to_chars.hpp @@ -0,0 +1,1118 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2009 Florian Loitsch +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // array +#include // signbit, isfinite +#include // intN_t, uintN_t +#include // memcpy, memmove +#include // numeric_limits +#include // conditional + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief implements the Grisu2 algorithm for binary to decimal floating-point +conversion. + +This implementation is a slightly modified version of the reference +implementation which may be obtained from +http://florian.loitsch.com/publications (bench.tar.gz). + +The code is distributed under the MIT license, Copyright (c) 2009 Florian Loitsch. + +For a detailed description of the algorithm see: + +[1] Loitsch, "Printing Floating-Point Numbers Quickly and Accurately with + Integers", Proceedings of the ACM SIGPLAN 2010 Conference on Programming + Language Design and Implementation, PLDI 2010 +[2] Burger, Dybvig, "Printing Floating-Point Numbers Quickly and Accurately", + Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language + Design and Implementation, PLDI 1996 +*/ +namespace dtoa_impl +{ + +template +Target reinterpret_bits(const Source source) +{ + static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); + + Target target; + std::memcpy(&target, &source, sizeof(Source)); + return target; +} + +struct diyfp // f * 2^e +{ + static constexpr int kPrecision = 64; // = q + + std::uint64_t f = 0; + int e = 0; + + constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_) {} + + /*! + @brief returns x - y + @pre x.e == y.e and x.f >= y.f + */ + static diyfp sub(const diyfp& x, const diyfp& y) noexcept + { + JSON_ASSERT(x.e == y.e); + JSON_ASSERT(x.f >= y.f); + + return {x.f - y.f, x.e}; + } + + /*! + @brief returns x * y + @note The result is rounded. (Only the upper q bits are returned.) + */ + static diyfp mul(const diyfp& x, const diyfp& y) noexcept + { + static_assert(kPrecision == 64, "internal error"); + + // Computes: + // f = round((x.f * y.f) / 2^q) + // e = x.e + y.e + q + + // Emulate the 64-bit * 64-bit multiplication: + // + // p = u * v + // = (u_lo + 2^32 u_hi) (v_lo + 2^32 v_hi) + // = (u_lo v_lo ) + 2^32 ((u_lo v_hi ) + (u_hi v_lo )) + 2^64 (u_hi v_hi ) + // = (p0 ) + 2^32 ((p1 ) + (p2 )) + 2^64 (p3 ) + // = (p0_lo + 2^32 p0_hi) + 2^32 ((p1_lo + 2^32 p1_hi) + (p2_lo + 2^32 p2_hi)) + 2^64 (p3 ) + // = (p0_lo ) + 2^32 (p0_hi + p1_lo + p2_lo ) + 2^64 (p1_hi + p2_hi + p3) + // = (p0_lo ) + 2^32 (Q ) + 2^64 (H ) + // = (p0_lo ) + 2^32 (Q_lo + 2^32 Q_hi ) + 2^64 (H ) + // + // (Since Q might be larger than 2^32 - 1) + // + // = (p0_lo + 2^32 Q_lo) + 2^64 (Q_hi + H) + // + // (Q_hi + H does not overflow a 64-bit int) + // + // = p_lo + 2^64 p_hi + + const std::uint64_t u_lo = x.f & 0xFFFFFFFFu; + const std::uint64_t u_hi = x.f >> 32u; + const std::uint64_t v_lo = y.f & 0xFFFFFFFFu; + const std::uint64_t v_hi = y.f >> 32u; + + const std::uint64_t p0 = u_lo * v_lo; + const std::uint64_t p1 = u_lo * v_hi; + const std::uint64_t p2 = u_hi * v_lo; + const std::uint64_t p3 = u_hi * v_hi; + + const std::uint64_t p0_hi = p0 >> 32u; + const std::uint64_t p1_lo = p1 & 0xFFFFFFFFu; + const std::uint64_t p1_hi = p1 >> 32u; + const std::uint64_t p2_lo = p2 & 0xFFFFFFFFu; + const std::uint64_t p2_hi = p2 >> 32u; + + std::uint64_t Q = p0_hi + p1_lo + p2_lo; + + // The full product might now be computed as + // + // p_hi = p3 + p2_hi + p1_hi + (Q >> 32) + // p_lo = p0_lo + (Q << 32) + // + // But in this particular case here, the full p_lo is not required. + // Effectively we only need to add the highest bit in p_lo to p_hi (and + // Q_hi + 1 does not overflow). + + Q += std::uint64_t{1} << (64u - 32u - 1u); // round, ties up + + const std::uint64_t h = p3 + p2_hi + p1_hi + (Q >> 32u); + + return {h, x.e + y.e + 64}; + } + + /*! + @brief normalize x such that the significand is >= 2^(q-1) + @pre x.f != 0 + */ + static diyfp normalize(diyfp x) noexcept + { + JSON_ASSERT(x.f != 0); + + while ((x.f >> 63u) == 0) + { + x.f <<= 1u; + x.e--; + } + + return x; + } + + /*! + @brief normalize x such that the result has the exponent E + @pre e >= x.e and the upper e - x.e bits of x.f must be zero. + */ + static diyfp normalize_to(const diyfp& x, const int target_exponent) noexcept + { + const int delta = x.e - target_exponent; + + JSON_ASSERT(delta >= 0); + JSON_ASSERT(((x.f << delta) >> delta) == x.f); + + return {x.f << delta, target_exponent}; + } +}; + +struct boundaries +{ + diyfp w; + diyfp minus; + diyfp plus; +}; + +/*! +Compute the (normalized) diyfp representing the input number 'value' and its +boundaries. + +@pre value must be finite and positive +*/ +template +boundaries compute_boundaries(FloatType value) +{ + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); + + // Convert the IEEE representation into a diyfp. + // + // If v is denormal: + // value = 0.F * 2^(1 - bias) = ( F) * 2^(1 - bias - (p-1)) + // If v is normalized: + // value = 1.F * 2^(E - bias) = (2^(p-1) + F) * 2^(E - bias - (p-1)) + + static_assert(std::numeric_limits::is_iec559, + "internal error: dtoa_short requires an IEEE-754 floating-point implementation"); + + constexpr int kPrecision = std::numeric_limits::digits; // = p (includes the hidden bit) + constexpr int kBias = std::numeric_limits::max_exponent - 1 + (kPrecision - 1); + constexpr int kMinExp = 1 - kBias; + constexpr std::uint64_t kHiddenBit = std::uint64_t{1} << (kPrecision - 1); // = 2^(p-1) + + using bits_type = typename std::conditional::type; + + const auto bits = static_cast(reinterpret_bits(value)); + const std::uint64_t E = bits >> (kPrecision - 1); + const std::uint64_t F = bits & (kHiddenBit - 1); + + const bool is_denormal = E == 0; + const diyfp v = is_denormal + ? diyfp(F, kMinExp) + : diyfp(F + kHiddenBit, static_cast(E) - kBias); + + // Compute the boundaries m- and m+ of the floating-point value + // v = f * 2^e. + // + // Determine v- and v+, the floating-point predecessor and successor if v, + // respectively. + // + // v- = v - 2^e if f != 2^(p-1) or e == e_min (A) + // = v - 2^(e-1) if f == 2^(p-1) and e > e_min (B) + // + // v+ = v + 2^e + // + // Let m- = (v- + v) / 2 and m+ = (v + v+) / 2. All real numbers _strictly_ + // between m- and m+ round to v, regardless of how the input rounding + // algorithm breaks ties. + // + // ---+-------------+-------------+-------------+-------------+--- (A) + // v- m- v m+ v+ + // + // -----------------+------+------+-------------+-------------+--- (B) + // v- m- v m+ v+ + + const bool lower_boundary_is_closer = F == 0 && E > 1; + const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); + const diyfp m_minus = lower_boundary_is_closer + ? diyfp(4 * v.f - 1, v.e - 2) // (B) + : diyfp(2 * v.f - 1, v.e - 1); // (A) + + // Determine the normalized w+ = m+. + const diyfp w_plus = diyfp::normalize(m_plus); + + // Determine w- = m- such that e_(w-) = e_(w+). + const diyfp w_minus = diyfp::normalize_to(m_minus, w_plus.e); + + return {diyfp::normalize(v), w_minus, w_plus}; +} + +// Given normalized diyfp w, Grisu needs to find a (normalized) cached +// power-of-ten c, such that the exponent of the product c * w = f * 2^e lies +// within a certain range [alpha, gamma] (Definition 3.2 from [1]) +// +// alpha <= e = e_c + e_w + q <= gamma +// +// or +// +// f_c * f_w * 2^alpha <= f_c 2^(e_c) * f_w 2^(e_w) * 2^q +// <= f_c * f_w * 2^gamma +// +// Since c and w are normalized, i.e. 2^(q-1) <= f < 2^q, this implies +// +// 2^(q-1) * 2^(q-1) * 2^alpha <= c * w * 2^q < 2^q * 2^q * 2^gamma +// +// or +// +// 2^(q - 2 + alpha) <= c * w < 2^(q + gamma) +// +// The choice of (alpha,gamma) determines the size of the table and the form of +// the digit generation procedure. Using (alpha,gamma)=(-60,-32) works out well +// in practice: +// +// The idea is to cut the number c * w = f * 2^e into two parts, which can be +// processed independently: An integral part p1, and a fractional part p2: +// +// f * 2^e = ( (f div 2^-e) * 2^-e + (f mod 2^-e) ) * 2^e +// = (f div 2^-e) + (f mod 2^-e) * 2^e +// = p1 + p2 * 2^e +// +// The conversion of p1 into decimal form requires a series of divisions and +// modulos by (a power of) 10. These operations are faster for 32-bit than for +// 64-bit integers, so p1 should ideally fit into a 32-bit integer. This can be +// achieved by choosing +// +// -e >= 32 or e <= -32 := gamma +// +// In order to convert the fractional part +// +// p2 * 2^e = p2 / 2^-e = d[-1] / 10^1 + d[-2] / 10^2 + ... +// +// into decimal form, the fraction is repeatedly multiplied by 10 and the digits +// d[-i] are extracted in order: +// +// (10 * p2) div 2^-e = d[-1] +// (10 * p2) mod 2^-e = d[-2] / 10^1 + ... +// +// The multiplication by 10 must not overflow. It is sufficient to choose +// +// 10 * p2 < 16 * p2 = 2^4 * p2 <= 2^64. +// +// Since p2 = f mod 2^-e < 2^-e, +// +// -e <= 60 or e >= -60 := alpha + +constexpr int kAlpha = -60; +constexpr int kGamma = -32; + +struct cached_power // c = f * 2^e ~= 10^k +{ + std::uint64_t f; + int e; + int k; +}; + +/*! +For a normalized diyfp w = f * 2^e, this function returns a (normalized) cached +power-of-ten c = f_c * 2^e_c, such that the exponent of the product w * c +satisfies (Definition 3.2 from [1]) + + alpha <= e_c + e + q <= gamma. +*/ +inline cached_power get_cached_power_for_binary_exponent(int e) +{ + // Now + // + // alpha <= e_c + e + q <= gamma (1) + // ==> f_c * 2^alpha <= c * 2^e * 2^q + // + // and since the c's are normalized, 2^(q-1) <= f_c, + // + // ==> 2^(q - 1 + alpha) <= c * 2^(e + q) + // ==> 2^(alpha - e - 1) <= c + // + // If c were an exact power of ten, i.e. c = 10^k, one may determine k as + // + // k = ceil( log_10( 2^(alpha - e - 1) ) ) + // = ceil( (alpha - e - 1) * log_10(2) ) + // + // From the paper: + // "In theory the result of the procedure could be wrong since c is rounded, + // and the computation itself is approximated [...]. In practice, however, + // this simple function is sufficient." + // + // For IEEE double precision floating-point numbers converted into + // normalized diyfp's w = f * 2^e, with q = 64, + // + // e >= -1022 (min IEEE exponent) + // -52 (p - 1) + // -52 (p - 1, possibly normalize denormal IEEE numbers) + // -11 (normalize the diyfp) + // = -1137 + // + // and + // + // e <= +1023 (max IEEE exponent) + // -52 (p - 1) + // -11 (normalize the diyfp) + // = 960 + // + // This binary exponent range [-1137,960] results in a decimal exponent + // range [-307,324]. One does not need to store a cached power for each + // k in this range. For each such k it suffices to find a cached power + // such that the exponent of the product lies in [alpha,gamma]. + // This implies that the difference of the decimal exponents of adjacent + // table entries must be less than or equal to + // + // floor( (gamma - alpha) * log_10(2) ) = 8. + // + // (A smaller distance gamma-alpha would require a larger table.) + + // NB: + // Actually this function returns c, such that -60 <= e_c + e + 64 <= -34. + + constexpr int kCachedPowersMinDecExp = -300; + constexpr int kCachedPowersDecStep = 8; + + static constexpr std::array kCachedPowers = + { + { + { 0xAB70FE17C79AC6CA, -1060, -300 }, + { 0xFF77B1FCBEBCDC4F, -1034, -292 }, + { 0xBE5691EF416BD60C, -1007, -284 }, + { 0x8DD01FAD907FFC3C, -980, -276 }, + { 0xD3515C2831559A83, -954, -268 }, + { 0x9D71AC8FADA6C9B5, -927, -260 }, + { 0xEA9C227723EE8BCB, -901, -252 }, + { 0xAECC49914078536D, -874, -244 }, + { 0x823C12795DB6CE57, -847, -236 }, + { 0xC21094364DFB5637, -821, -228 }, + { 0x9096EA6F3848984F, -794, -220 }, + { 0xD77485CB25823AC7, -768, -212 }, + { 0xA086CFCD97BF97F4, -741, -204 }, + { 0xEF340A98172AACE5, -715, -196 }, + { 0xB23867FB2A35B28E, -688, -188 }, + { 0x84C8D4DFD2C63F3B, -661, -180 }, + { 0xC5DD44271AD3CDBA, -635, -172 }, + { 0x936B9FCEBB25C996, -608, -164 }, + { 0xDBAC6C247D62A584, -582, -156 }, + { 0xA3AB66580D5FDAF6, -555, -148 }, + { 0xF3E2F893DEC3F126, -529, -140 }, + { 0xB5B5ADA8AAFF80B8, -502, -132 }, + { 0x87625F056C7C4A8B, -475, -124 }, + { 0xC9BCFF6034C13053, -449, -116 }, + { 0x964E858C91BA2655, -422, -108 }, + { 0xDFF9772470297EBD, -396, -100 }, + { 0xA6DFBD9FB8E5B88F, -369, -92 }, + { 0xF8A95FCF88747D94, -343, -84 }, + { 0xB94470938FA89BCF, -316, -76 }, + { 0x8A08F0F8BF0F156B, -289, -68 }, + { 0xCDB02555653131B6, -263, -60 }, + { 0x993FE2C6D07B7FAC, -236, -52 }, + { 0xE45C10C42A2B3B06, -210, -44 }, + { 0xAA242499697392D3, -183, -36 }, + { 0xFD87B5F28300CA0E, -157, -28 }, + { 0xBCE5086492111AEB, -130, -20 }, + { 0x8CBCCC096F5088CC, -103, -12 }, + { 0xD1B71758E219652C, -77, -4 }, + { 0x9C40000000000000, -50, 4 }, + { 0xE8D4A51000000000, -24, 12 }, + { 0xAD78EBC5AC620000, 3, 20 }, + { 0x813F3978F8940984, 30, 28 }, + { 0xC097CE7BC90715B3, 56, 36 }, + { 0x8F7E32CE7BEA5C70, 83, 44 }, + { 0xD5D238A4ABE98068, 109, 52 }, + { 0x9F4F2726179A2245, 136, 60 }, + { 0xED63A231D4C4FB27, 162, 68 }, + { 0xB0DE65388CC8ADA8, 189, 76 }, + { 0x83C7088E1AAB65DB, 216, 84 }, + { 0xC45D1DF942711D9A, 242, 92 }, + { 0x924D692CA61BE758, 269, 100 }, + { 0xDA01EE641A708DEA, 295, 108 }, + { 0xA26DA3999AEF774A, 322, 116 }, + { 0xF209787BB47D6B85, 348, 124 }, + { 0xB454E4A179DD1877, 375, 132 }, + { 0x865B86925B9BC5C2, 402, 140 }, + { 0xC83553C5C8965D3D, 428, 148 }, + { 0x952AB45CFA97A0B3, 455, 156 }, + { 0xDE469FBD99A05FE3, 481, 164 }, + { 0xA59BC234DB398C25, 508, 172 }, + { 0xF6C69A72A3989F5C, 534, 180 }, + { 0xB7DCBF5354E9BECE, 561, 188 }, + { 0x88FCF317F22241E2, 588, 196 }, + { 0xCC20CE9BD35C78A5, 614, 204 }, + { 0x98165AF37B2153DF, 641, 212 }, + { 0xE2A0B5DC971F303A, 667, 220 }, + { 0xA8D9D1535CE3B396, 694, 228 }, + { 0xFB9B7CD9A4A7443C, 720, 236 }, + { 0xBB764C4CA7A44410, 747, 244 }, + { 0x8BAB8EEFB6409C1A, 774, 252 }, + { 0xD01FEF10A657842C, 800, 260 }, + { 0x9B10A4E5E9913129, 827, 268 }, + { 0xE7109BFBA19C0C9D, 853, 276 }, + { 0xAC2820D9623BF429, 880, 284 }, + { 0x80444B5E7AA7CF85, 907, 292 }, + { 0xBF21E44003ACDD2D, 933, 300 }, + { 0x8E679C2F5E44FF8F, 960, 308 }, + { 0xD433179D9C8CB841, 986, 316 }, + { 0x9E19DB92B4E31BA9, 1013, 324 }, + } + }; + + // This computation gives exactly the same results for k as + // k = ceil((kAlpha - e - 1) * 0.30102999566398114) + // for |e| <= 1500, but doesn't require floating-point operations. + // NB: log_10(2) ~= 78913 / 2^18 + JSON_ASSERT(e >= -1500); + JSON_ASSERT(e <= 1500); + const int f = kAlpha - e - 1; + const int k = (f * 78913) / (1 << 18) + static_cast(f > 0); + + const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; + JSON_ASSERT(index >= 0); + JSON_ASSERT(static_cast(index) < kCachedPowers.size()); + + const cached_power cached = kCachedPowers[static_cast(index)]; + JSON_ASSERT(kAlpha <= cached.e + e + 64); + JSON_ASSERT(kGamma >= cached.e + e + 64); + + return cached; +} + +/*! +For n != 0, returns k, such that pow10 := 10^(k-1) <= n < 10^k. +For n == 0, returns 1 and sets pow10 := 1. +*/ +inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) +{ + // LCOV_EXCL_START + if (n >= 1000000000) + { + pow10 = 1000000000; + return 10; + } + // LCOV_EXCL_STOP + if (n >= 100000000) + { + pow10 = 100000000; + return 9; + } + if (n >= 10000000) + { + pow10 = 10000000; + return 8; + } + if (n >= 1000000) + { + pow10 = 1000000; + return 7; + } + if (n >= 100000) + { + pow10 = 100000; + return 6; + } + if (n >= 10000) + { + pow10 = 10000; + return 5; + } + if (n >= 1000) + { + pow10 = 1000; + return 4; + } + if (n >= 100) + { + pow10 = 100; + return 3; + } + if (n >= 10) + { + pow10 = 10; + return 2; + } + + pow10 = 1; + return 1; +} + +inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, + std::uint64_t rest, std::uint64_t ten_k) +{ + JSON_ASSERT(len >= 1); + JSON_ASSERT(dist <= delta); + JSON_ASSERT(rest <= delta); + JSON_ASSERT(ten_k > 0); + + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // ten_k + // <------> + // <---- rest ----> + // --------------[------------------+----+--------------]-------------- + // w V + // = buf * 10^k + // + // ten_k represents a unit-in-the-last-place in the decimal representation + // stored in buf. + // Decrement buf by ten_k while this takes buf closer to w. + + // The tests are written in this order to avoid overflow in unsigned + // integer arithmetic. + + while (rest < dist + && delta - rest >= ten_k + && (rest + ten_k < dist || dist - rest > rest + ten_k - dist)) + { + JSON_ASSERT(buf[len - 1] != '0'); + buf[len - 1]--; + rest += ten_k; + } +} + +/*! +Generates V = buffer * 10^decimal_exponent, such that M- <= V <= M+. +M- and M+ must be normalized and share the same exponent -60 <= e <= -32. +*/ +inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, + diyfp M_minus, diyfp w, diyfp M_plus) +{ + static_assert(kAlpha >= -60, "internal error"); + static_assert(kGamma <= -32, "internal error"); + + // Generates the digits (and the exponent) of a decimal floating-point + // number V = buffer * 10^decimal_exponent in the range [M-, M+]. The diyfp's + // w, M- and M+ share the same exponent e, which satisfies alpha <= e <= gamma. + // + // <--------------------------- delta ----> + // <---- dist ---------> + // --------------[------------------+-------------------]-------------- + // M- w M+ + // + // Grisu2 generates the digits of M+ from left to right and stops as soon as + // V is in [M-,M+]. + + JSON_ASSERT(M_plus.e >= kAlpha); + JSON_ASSERT(M_plus.e <= kGamma); + + std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) + std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) + + // Split M+ = f * 2^e into two parts p1 and p2 (note: e < 0): + // + // M+ = f * 2^e + // = ((f div 2^-e) * 2^-e + (f mod 2^-e)) * 2^e + // = ((p1 ) * 2^-e + (p2 )) * 2^e + // = p1 + p2 * 2^e + + const diyfp one(std::uint64_t{1} << -M_plus.e, M_plus.e); + + auto p1 = static_cast(M_plus.f >> -one.e); // p1 = f div 2^-e (Since -e >= 32, p1 fits into a 32-bit int.) + std::uint64_t p2 = M_plus.f & (one.f - 1); // p2 = f mod 2^-e + + // 1) + // + // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] + + JSON_ASSERT(p1 > 0); + + std::uint32_t pow10{}; + const int k = find_largest_pow10(p1, pow10); + + // 10^(k-1) <= p1 < 10^k, pow10 = 10^(k-1) + // + // p1 = (p1 div 10^(k-1)) * 10^(k-1) + (p1 mod 10^(k-1)) + // = (d[k-1] ) * 10^(k-1) + (p1 mod 10^(k-1)) + // + // M+ = p1 + p2 * 2^e + // = d[k-1] * 10^(k-1) + (p1 mod 10^(k-1)) + p2 * 2^e + // = d[k-1] * 10^(k-1) + ((p1 mod 10^(k-1)) * 2^-e + p2) * 2^e + // = d[k-1] * 10^(k-1) + ( rest) * 2^e + // + // Now generate the digits d[n] of p1 from left to right (n = k-1,...,0) + // + // p1 = d[k-1]...d[n] * 10^n + d[n-1]...d[0] + // + // but stop as soon as + // + // rest * 2^e = (d[n-1]...d[0] * 2^-e + p2) * 2^e <= delta * 2^e + + int n = k; + while (n > 0) + { + // Invariants: + // M+ = buffer * 10^n + (p1 + p2 * 2^e) (buffer = 0 for n = k) + // pow10 = 10^(n-1) <= p1 < 10^n + // + const std::uint32_t d = p1 / pow10; // d = p1 div 10^(n-1) + const std::uint32_t r = p1 % pow10; // r = p1 mod 10^(n-1) + // + // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e + // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) + // + JSON_ASSERT(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) + // + p1 = r; + n--; + // + // M+ = buffer * 10^n + (p1 + p2 * 2^e) + // pow10 = 10^n + // + + // Now check if enough digits have been generated. + // Compute + // + // p1 + p2 * 2^e = (p1 * 2^-e + p2) * 2^e = rest * 2^e + // + // Note: + // Since rest and delta share the same exponent e, it suffices to + // compare the significands. + const std::uint64_t rest = (std::uint64_t{p1} << -one.e) + p2; + if (rest <= delta) + { + // V = buffer * 10^n, with M- <= V <= M+. + + decimal_exponent += n; + + // We may now just stop. But instead look if the buffer could be + // decremented to bring V closer to w. + // + // pow10 = 10^n is now 1 ulp in the decimal representation V. + // The rounding procedure works with diyfp's with an implicit + // exponent of e. + // + // 10^n = (10^n * 2^-e) * 2^e = ulp * 2^e + // + const std::uint64_t ten_n = std::uint64_t{pow10} << -one.e; + grisu2_round(buffer, length, dist, delta, rest, ten_n); + + return; + } + + pow10 /= 10; + // + // pow10 = 10^(n-1) <= p1 < 10^n + // Invariants restored. + } + + // 2) + // + // The digits of the integral part have been generated: + // + // M+ = d[k-1]...d[1]d[0] + p2 * 2^e + // = buffer + p2 * 2^e + // + // Now generate the digits of the fractional part p2 * 2^e. + // + // Note: + // No decimal point is generated: the exponent is adjusted instead. + // + // p2 actually represents the fraction + // + // p2 * 2^e + // = p2 / 2^-e + // = d[-1] / 10^1 + d[-2] / 10^2 + ... + // + // Now generate the digits d[-m] of p1 from left to right (m = 1,2,...) + // + // p2 * 2^e = d[-1]d[-2]...d[-m] * 10^-m + // + 10^-m * (d[-m-1] / 10^1 + d[-m-2] / 10^2 + ...) + // + // using + // + // 10^m * p2 = ((10^m * p2) div 2^-e) * 2^-e + ((10^m * p2) mod 2^-e) + // = ( d) * 2^-e + ( r) + // + // or + // 10^m * p2 * 2^e = d + r * 2^e + // + // i.e. + // + // M+ = buffer + p2 * 2^e + // = buffer + 10^-m * (d + r * 2^e) + // = (buffer * 10^m + d) * 10^-m + 10^-m * r * 2^e + // + // and stop as soon as 10^-m * r * 2^e <= delta * 2^e + + JSON_ASSERT(p2 > delta); + + int m = 0; + for (;;) + { + // Invariant: + // M+ = buffer * 10^-m + 10^-m * (d[-m-1] / 10 + d[-m-2] / 10^2 + ...) * 2^e + // = buffer * 10^-m + 10^-m * (p2 ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e + // + JSON_ASSERT(p2 <= (std::numeric_limits::max)() / 10); + p2 *= 10; + const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e + const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e + // + // M+ = buffer * 10^-m + 10^-m * (1/10 * (d * 2^-e + r) * 2^e + // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) + // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + JSON_ASSERT(d <= 9); + buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d + // + // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e + // + p2 = r; + m++; + // + // M+ = buffer * 10^-m + 10^-m * p2 * 2^e + // Invariant restored. + + // Check if enough digits have been generated. + // + // 10^-m * p2 * 2^e <= delta * 2^e + // p2 * 2^e <= 10^m * delta * 2^e + // p2 <= 10^m * delta + delta *= 10; + dist *= 10; + if (p2 <= delta) + { + break; + } + } + + // V = buffer * 10^-m, with M- <= V <= M+. + + decimal_exponent -= m; + + // 1 ulp in the decimal representation is now 10^-m. + // Since delta and dist are now scaled by 10^m, we need to do the + // same with ulp in order to keep the units in sync. + // + // 10^m * 10^-m = 1 = 2^-e * 2^e = ten_m * 2^e + // + const std::uint64_t ten_m = one.f; + grisu2_round(buffer, length, dist, delta, p2, ten_m); + + // By construction this algorithm generates the shortest possible decimal + // number (Loitsch, Theorem 6.2) which rounds back to w. + // For an input number of precision p, at least + // + // N = 1 + ceil(p * log_10(2)) + // + // decimal digits are sufficient to identify all binary floating-point + // numbers (Matula, "In-and-Out conversions"). + // This implies that the algorithm does not produce more than N decimal + // digits. + // + // N = 17 for p = 53 (IEEE double precision) + // N = 9 for p = 24 (IEEE single precision) +} + +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +JSON_HEDLEY_NON_NULL(1) +inline void grisu2(char* buf, int& len, int& decimal_exponent, + diyfp m_minus, diyfp v, diyfp m_plus) +{ + JSON_ASSERT(m_plus.e == m_minus.e); + JSON_ASSERT(m_plus.e == v.e); + + // --------(-----------------------+-----------------------)-------- (A) + // m- v m+ + // + // --------------------(-----------+-----------------------)-------- (B) + // m- v m+ + // + // First scale v (and m- and m+) such that the exponent is in the range + // [alpha, gamma]. + + const cached_power cached = get_cached_power_for_binary_exponent(m_plus.e); + + const diyfp c_minus_k(cached.f, cached.e); // = c ~= 10^-k + + // The exponent of the products is = v.e + c_minus_k.e + q and is in the range [alpha,gamma] + const diyfp w = diyfp::mul(v, c_minus_k); + const diyfp w_minus = diyfp::mul(m_minus, c_minus_k); + const diyfp w_plus = diyfp::mul(m_plus, c_minus_k); + + // ----(---+---)---------------(---+---)---------------(---+---)---- + // w- w w+ + // = c*m- = c*v = c*m+ + // + // diyfp::mul rounds its result and c_minus_k is approximated too. w, w- and + // w+ are now off by a small amount. + // In fact: + // + // w - v * 10^k < 1 ulp + // + // To account for this inaccuracy, add resp. subtract 1 ulp. + // + // --------+---[---------------(---+---)---------------]---+-------- + // w- M- w M+ w+ + // + // Now any number in [M-, M+] (bounds included) will round to w when input, + // regardless of how the input rounding algorithm breaks ties. + // + // And digit_gen generates the shortest possible such number in [M-, M+]. + // Note that this does not mean that Grisu2 always generates the shortest + // possible number in the interval (m-, m+). + const diyfp M_minus(w_minus.f + 1, w_minus.e); + const diyfp M_plus (w_plus.f - 1, w_plus.e ); + + decimal_exponent = -cached.k; // = -(-k) = k + + grisu2_digit_gen(buf, len, decimal_exponent, M_minus, w, M_plus); +} + +/*! +v = buf * 10^decimal_exponent +len is the length of the buffer (number of decimal digits) +The buffer must be large enough, i.e. >= max_digits10. +*/ +template +JSON_HEDLEY_NON_NULL(1) +void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) +{ + static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, + "internal error: not enough precision"); + + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); + + // If the neighbors (and boundaries) of 'value' are always computed for double-precision + // numbers, all float's can be recovered using strtod (and strtof). However, the resulting + // decimal representations are not exactly "short". + // + // The documentation for 'std::to_chars' (https://en.cppreference.com/w/cpp/utility/to_chars) + // says "value is converted to a string as if by std::sprintf in the default ("C") locale" + // and since sprintf promotes floats to doubles, I think this is exactly what 'std::to_chars' + // does. + // On the other hand, the documentation for 'std::to_chars' requires that "parsing the + // representation using the corresponding std::from_chars function recovers value exactly". That + // indicates that single precision floating-point numbers should be recovered using + // 'std::strtof'. + // + // NB: If the neighbors are computed for single-precision numbers, there is a single float + // (7.0385307e-26f) which can't be recovered using strtod. The resulting double precision + // value is off by 1 ulp. +#if 0 // NOLINT(readability-avoid-unconditional-preprocessor-if) + const boundaries w = compute_boundaries(static_cast(value)); +#else + const boundaries w = compute_boundaries(value); +#endif + + grisu2(buf, len, decimal_exponent, w.minus, w.w, w.plus); +} + +/*! +@brief appends a decimal representation of e to buf +@return a pointer to the element following the exponent. +@pre -1000 < e < 1000 +*/ +JSON_HEDLEY_NON_NULL(1) +JSON_HEDLEY_RETURNS_NON_NULL +inline char* append_exponent(char* buf, int e) +{ + JSON_ASSERT(e > -1000); + JSON_ASSERT(e < 1000); + + if (e < 0) + { + e = -e; + *buf++ = '-'; + } + else + { + *buf++ = '+'; + } + + auto k = static_cast(e); + if (k < 10) + { + // Always print at least two digits in the exponent. + // This is for compatibility with printf("%g"). + *buf++ = '0'; + *buf++ = static_cast('0' + k); + } + else if (k < 100) + { + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + else + { + *buf++ = static_cast('0' + k / 100); + k %= 100; + *buf++ = static_cast('0' + k / 10); + k %= 10; + *buf++ = static_cast('0' + k); + } + + return buf; +} + +/*! +@brief prettify v = buf * 10^decimal_exponent + +If v is in the range [10^min_exp, 10^max_exp) it will be printed in fixed-point +notation. Otherwise it will be printed in exponential notation. + +@pre min_exp < 0 +@pre max_exp > 0 +*/ +JSON_HEDLEY_NON_NULL(1) +JSON_HEDLEY_RETURNS_NON_NULL +inline char* format_buffer(char* buf, int len, int decimal_exponent, + int min_exp, int max_exp) +{ + JSON_ASSERT(min_exp < 0); + JSON_ASSERT(max_exp > 0); + + const int k = len; + const int n = len + decimal_exponent; + + // v = buf * 10^(n-k) + // k is the length of the buffer (number of decimal digits) + // n is the position of the decimal point relative to the start of the buffer. + + if (k <= n && n <= max_exp) + { + // digits[000] + // len <= max_exp + 2 + + std::memset(buf + k, '0', static_cast(n) - static_cast(k)); + // Make it look like a floating-point number (#362, #378) + buf[n + 0] = '.'; + buf[n + 1] = '0'; + return buf + (static_cast(n) + 2); + } + + if (0 < n && n <= max_exp) + { + // dig.its + // len <= max_digits10 + 1 + + JSON_ASSERT(k > n); + + std::memmove(buf + (static_cast(n) + 1), buf + n, static_cast(k) - static_cast(n)); + buf[n] = '.'; + return buf + (static_cast(k) + 1U); + } + + if (min_exp < n && n <= 0) + { + // 0.[000]digits + // len <= 2 + (-min_exp - 1) + max_digits10 + + std::memmove(buf + (2 + static_cast(-n)), buf, static_cast(k)); + buf[0] = '0'; + buf[1] = '.'; + std::memset(buf + 2, '0', static_cast(-n)); + return buf + (2U + static_cast(-n) + static_cast(k)); + } + + if (k == 1) + { + // dE+123 + // len <= 1 + 5 + + buf += 1; + } + else + { + // d.igitsE+123 + // len <= max_digits10 + 1 + 5 + + std::memmove(buf + 2, buf + 1, static_cast(k) - 1); + buf[1] = '.'; + buf += 1 + static_cast(k); + } + + *buf++ = 'e'; + return append_exponent(buf, n - 1); +} + +} // namespace dtoa_impl + +/*! +@brief generates a decimal representation of the floating-point number value in [first, last). + +The format of the resulting decimal representation is similar to printf's %g +format. Returns an iterator pointing past-the-end of the decimal representation. + +@note The input number must be finite, i.e. NaN's and Inf's are not supported. +@note The buffer must be large enough. +@note The result is NOT null-terminated. +*/ +template +JSON_HEDLEY_NON_NULL(1, 2) +JSON_HEDLEY_RETURNS_NON_NULL +char* to_chars(char* first, const char* last, FloatType value) +{ + static_cast(last); // maybe unused - fix warning + JSON_ASSERT(std::isfinite(value)); + + // Use signbit(value) instead of (value < 0) since signbit works for -0. + if (std::signbit(value)) + { + value = -value; + *first++ = '-'; + } + +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wfloat-equal" +#endif + if (value == 0) // +-0 + { + *first++ = '0'; + // Make it look like a floating-point number (#362, #378) + *first++ = '.'; + *first++ = '0'; + return first; + } +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif + + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10); + + // Compute v = buffer * 10^decimal_exponent. + // The decimal digits are stored in the buffer, which needs to be interpreted + // as an unsigned decimal integer. + // len is the length of the buffer, i.e. the number of decimal digits. + int len = 0; + int decimal_exponent = 0; + dtoa_impl::grisu2(first, len, decimal_exponent, value); + + JSON_ASSERT(len <= std::numeric_limits::max_digits10); + + // Format the buffer like printf("%.*g", prec, value) + constexpr int kMinExp = -4; + // Use digits10 here to increase compatibility with version 2. + constexpr int kMaxExp = std::numeric_limits::digits10; + + JSON_ASSERT(last - first >= kMaxExp + 2); + JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10 + 6); + + return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/conversions/to_json.hpp b/include/nlohmann/detail/conversions/to_json.hpp new file mode 100644 index 0000000..562089c --- /dev/null +++ b/include/nlohmann/detail/conversions/to_json.hpp @@ -0,0 +1,447 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // copy +#include // begin, end +#include // string +#include // tuple, get +#include // is_same, is_constructible, is_floating_point, is_enum, underlying_type +#include // move, forward, declval, pair +#include // valarray +#include // vector + +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +////////////////// +// constructors // +////////////////// + +/* + * Note all external_constructor<>::construct functions need to call + * j.m_data.m_value.destroy(j.m_data.m_type) to avoid a memory leak in case j contains an + * allocated value (e.g., a string). See bug issue + * https://github.com/nlohmann/json/issues/2865 for more information. + */ + +template struct external_constructor; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::boolean_t b) noexcept + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::boolean; + j.m_data.m_value = b; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::string_t& s) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::string; + j.m_data.m_value = s; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::string_t&& s) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::string; + j.m_data.m_value = std::move(s); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleStringType, + enable_if_t < !std::is_same::value, + int > = 0 > + static void construct(BasicJsonType& j, const CompatibleStringType& str) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::string; + j.m_data.m_value.string = j.template create(str); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::binary; + j.m_data.m_value = typename BasicJsonType::binary_t(b); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::binary; + j.m_data.m_value = typename BasicJsonType::binary_t(std::move(b)); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_float_t val) noexcept + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::number_float; + j.m_data.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_unsigned_t val) noexcept + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::number_unsigned; + j.m_data.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, typename BasicJsonType::number_integer_t val) noexcept + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::number_integer; + j.m_data.m_value = val; + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::array_t& arr) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::array; + j.m_data.m_value = arr; + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::array_t&& arr) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::array; + j.m_data.m_value = std::move(arr); + j.set_parents(); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < !std::is_same::value, + int > = 0 > + static void construct(BasicJsonType& j, const CompatibleArrayType& arr) + { + using std::begin; + using std::end; + + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::array; + j.m_data.m_value.array = j.template create(begin(arr), end(arr)); + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, const std::vector& arr) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::array; + j.m_data.m_value = value_t::array; + j.m_data.m_value.array->reserve(arr.size()); + for (const bool x : arr) + { + j.m_data.m_value.array->push_back(x); + j.set_parent(j.m_data.m_value.array->back()); + } + j.assert_invariant(); + } + + template::value, int> = 0> + static void construct(BasicJsonType& j, const std::valarray& arr) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::array; + j.m_data.m_value = value_t::array; + j.m_data.m_value.array->resize(arr.size()); + if (arr.size() > 0) + { + std::copy(std::begin(arr), std::end(arr), j.m_data.m_value.array->begin()); + } + j.set_parents(); + j.assert_invariant(); + } +}; + +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::object_t& obj) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::object; + j.m_data.m_value = obj; + j.set_parents(); + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::object_t&& obj) + { + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::object; + j.m_data.m_value = std::move(obj); + j.set_parents(); + j.assert_invariant(); + } + + template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < !std::is_same::value, int > = 0 > + static void construct(BasicJsonType& j, const CompatibleObjectType& obj) + { + using std::begin; + using std::end; + + j.m_data.m_value.destroy(j.m_data.m_type); + j.m_data.m_type = value_t::object; + j.m_data.m_value.object = j.template create(begin(obj), end(obj)); + j.set_parents(); + j.assert_invariant(); + } +}; + +///////////// +// to_json // +///////////// + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, T b) noexcept +{ + external_constructor::construct(j, b); +} + +template < typename BasicJsonType, typename BoolRef, + enable_if_t < + ((std::is_same::reference, BoolRef>::value + && !std::is_same ::reference, typename BasicJsonType::boolean_t&>::value) + || (std::is_same::const_reference, BoolRef>::value + && !std::is_same ::const_reference>, + typename BasicJsonType::boolean_t >::value)) + && std::is_convertible::value, int > = 0 > +inline void to_json(BasicJsonType& j, const BoolRef& b) noexcept +{ + external_constructor::construct(j, static_cast(b)); +} + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, const CompatibleString& s) +{ + external_constructor::construct(j, s); +} + +template +inline void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s) +{ + external_constructor::construct(j, std::move(s)); +} + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, FloatType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noexcept +{ + external_constructor::construct(j, static_cast(val)); +} + +#if !JSON_DISABLE_ENUM_SERIALIZATION +template::value, int> = 0> +inline void to_json(BasicJsonType& j, EnumType e) noexcept +{ + using underlying_type = typename std::underlying_type::type; + static constexpr value_t integral_value_t = std::is_unsigned::value ? value_t::number_unsigned : value_t::number_integer; + external_constructor::construct(j, static_cast(e)); +} +#endif // JSON_DISABLE_ENUM_SERIALIZATION + +template +inline void to_json(BasicJsonType& j, const std::vector& e) +{ + external_constructor::construct(j, e); +} + +template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < is_compatible_array_type::value&& + !is_compatible_object_type::value&& + !is_compatible_string_type::value&& + !std::is_same::value&& + !is_basic_json::value, + int > = 0 > +inline void to_json(BasicJsonType& j, const CompatibleArrayType& arr) +{ + external_constructor::construct(j, arr); +} + +template +inline void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin) +{ + external_constructor::construct(j, bin); +} + +template::value, int> = 0> +inline void to_json(BasicJsonType& j, const std::valarray& arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template +inline void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) +{ + external_constructor::construct(j, std::move(arr)); +} + +template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < is_compatible_object_type::value&& !is_basic_json::value, int > = 0 > +inline void to_json(BasicJsonType& j, const CompatibleObjectType& obj) +{ + external_constructor::construct(j, obj); +} + +template +inline void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) +{ + external_constructor::construct(j, std::move(obj)); +} + +template < + typename BasicJsonType, typename T, std::size_t N, + enable_if_t < !std::is_constructible::value, // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) + int > = 0 > +inline void to_json(BasicJsonType& j, const T(&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) +{ + external_constructor::construct(j, arr); +} + +template < typename BasicJsonType, typename T1, typename T2, enable_if_t < std::is_constructible::value&& std::is_constructible::value, int > = 0 > +inline void to_json(BasicJsonType& j, const std::pair& p) +{ + j = { p.first, p.second }; +} + +// for https://github.com/nlohmann/json/pull/1134 +template>::value, int> = 0> +inline void to_json(BasicJsonType& j, const T& b) +{ + j = { {b.key(), b.value()} }; +} + +template +inline void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequence /*unused*/) +{ + j = { std::get(t)... }; +} + +template::value, int > = 0> +inline void to_json(BasicJsonType& j, const T& t) +{ + to_json_tuple_impl(j, t, make_index_sequence::value> {}); +} + +#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM +template +inline void to_json(BasicJsonType& j, const std_fs::path& p) +{ + j = p.string(); +} +#endif + +struct to_json_fn +{ + template + auto operator()(BasicJsonType& j, T&& val) const noexcept(noexcept(to_json(j, std::forward(val)))) + -> decltype(to_json(j, std::forward(val)), void()) + { + return to_json(j, std::forward(val)); + } +}; +} // namespace detail + +#ifndef JSON_HAS_CPP_17 +/// namespace to hold default `to_json` function +/// to see why this is required: +/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html +namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces) +{ +#endif +JSON_INLINE_VARIABLE constexpr const auto& to_json = // NOLINT(misc-definitions-in-headers) + detail::static_const::value; +#ifndef JSON_HAS_CPP_17 +} // namespace +#endif + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/exceptions.hpp b/include/nlohmann/detail/exceptions.hpp new file mode 100644 index 0000000..5974d7b --- /dev/null +++ b/include/nlohmann/detail/exceptions.hpp @@ -0,0 +1,257 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +//////////////// +// exceptions // +//////////////// + +/// @brief general exception of the @ref basic_json class +/// @sa https://json.nlohmann.me/api/basic_json/exception/ +class exception : public std::exception +{ + public: + /// returns the explanatory string + const char* what() const noexcept override + { + return m.what(); + } + + /// the id of the exception + const int id; // NOLINT(cppcoreguidelines-non-private-member-variables-in-classes) + + protected: + JSON_HEDLEY_NON_NULL(3) + exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing) + + static std::string name(const std::string& ename, int id_) + { + return concat("[json.exception.", ename, '.', std::to_string(id_), "] "); + } + + static std::string diagnostics(std::nullptr_t /*leaf_element*/) + { + return ""; + } + + template + static std::string diagnostics(const BasicJsonType* leaf_element) + { +#if JSON_DIAGNOSTICS + std::vector tokens; + for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent) + { + switch (current->m_parent->type()) + { + case value_t::array: + { + for (std::size_t i = 0; i < current->m_parent->m_data.m_value.array->size(); ++i) + { + if (¤t->m_parent->m_data.m_value.array->operator[](i) == current) + { + tokens.emplace_back(std::to_string(i)); + break; + } + } + break; + } + + case value_t::object: + { + for (const auto& element : *current->m_parent->m_data.m_value.object) + { + if (&element.second == current) + { + tokens.emplace_back(element.first.c_str()); + break; + } + } + break; + } + + case value_t::null: // LCOV_EXCL_LINE + case value_t::string: // LCOV_EXCL_LINE + case value_t::boolean: // LCOV_EXCL_LINE + case value_t::number_integer: // LCOV_EXCL_LINE + case value_t::number_unsigned: // LCOV_EXCL_LINE + case value_t::number_float: // LCOV_EXCL_LINE + case value_t::binary: // LCOV_EXCL_LINE + case value_t::discarded: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + break; // LCOV_EXCL_LINE + } + } + + if (tokens.empty()) + { + return ""; + } + + auto str = std::accumulate(tokens.rbegin(), tokens.rend(), std::string{}, + [](const std::string & a, const std::string & b) + { + return concat(a, '/', detail::escape(b)); + }); + return concat('(', str, ") "); +#else + static_cast(leaf_element); + return ""; +#endif + } + + private: + /// an exception object as storage for error messages + std::runtime_error m; +}; + +/// @brief exception indicating a parse error +/// @sa https://json.nlohmann.me/api/basic_json/parse_error/ +class parse_error : public exception +{ + public: + /*! + @brief create a parse error exception + @param[in] id_ the id of the exception + @param[in] pos the position where the error occurred (or with + chars_read_total=0 if the position cannot be + determined) + @param[in] what_arg the explanatory string + @return parse_error object + */ + template::value, int> = 0> + static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("parse_error", id_), "parse error", + position_string(pos), ": ", exception::diagnostics(context), what_arg); + return {id_, pos.chars_read_total, w.c_str()}; + } + + template::value, int> = 0> + static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("parse_error", id_), "parse error", + (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""), + ": ", exception::diagnostics(context), what_arg); + return {id_, byte_, w.c_str()}; + } + + /*! + @brief byte index of the parse error + + The byte index of the last read character in the input file. + + @note For an input with n bytes, 1 is the index of the first character and + n+1 is the index of the terminating null byte or the end of file. + This also holds true when reading a byte vector (CBOR or MessagePack). + */ + const std::size_t byte; + + private: + parse_error(int id_, std::size_t byte_, const char* what_arg) + : exception(id_, what_arg), byte(byte_) {} + + static std::string position_string(const position_t& pos) + { + return concat(" at line ", std::to_string(pos.lines_read + 1), + ", column ", std::to_string(pos.chars_read_current_line)); + } +}; + +/// @brief exception indicating errors with iterators +/// @sa https://json.nlohmann.me/api/basic_json/invalid_iterator/ +class invalid_iterator : public exception +{ + public: + template::value, int> = 0> + static invalid_iterator create(int id_, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg); + return {id_, w.c_str()}; + } + + private: + JSON_HEDLEY_NON_NULL(3) + invalid_iterator(int id_, const char* what_arg) + : exception(id_, what_arg) {} +}; + +/// @brief exception indicating executing a member function with a wrong type +/// @sa https://json.nlohmann.me/api/basic_json/type_error/ +class type_error : public exception +{ + public: + template::value, int> = 0> + static type_error create(int id_, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg); + return {id_, w.c_str()}; + } + + private: + JSON_HEDLEY_NON_NULL(3) + type_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/// @brief exception indicating access out of the defined range +/// @sa https://json.nlohmann.me/api/basic_json/out_of_range/ +class out_of_range : public exception +{ + public: + template::value, int> = 0> + static out_of_range create(int id_, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg); + return {id_, w.c_str()}; + } + + private: + JSON_HEDLEY_NON_NULL(3) + out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +/// @brief exception indicating other library errors +/// @sa https://json.nlohmann.me/api/basic_json/other_error/ +class other_error : public exception +{ + public: + template::value, int> = 0> + static other_error create(int id_, const std::string& what_arg, BasicJsonContext context) + { + const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg); + return {id_, w.c_str()}; + } + + private: + JSON_HEDLEY_NON_NULL(3) + other_error(int id_, const char* what_arg) : exception(id_, what_arg) {} +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/hash.hpp b/include/nlohmann/detail/hash.hpp new file mode 100644 index 0000000..4464e8e --- /dev/null +++ b/include/nlohmann/detail/hash.hpp @@ -0,0 +1,129 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // uint8_t +#include // size_t +#include // hash + +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// boost::hash_combine +inline std::size_t combine(std::size_t seed, std::size_t h) noexcept +{ + seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); + return seed; +} + +/*! +@brief hash a JSON value + +The hash function tries to rely on std::hash where possible. Furthermore, the +type of the JSON value is taken into account to have different hash values for +null, 0, 0U, and false, etc. + +@tparam BasicJsonType basic_json specialization +@param j JSON value to hash +@return hash value of j +*/ +template +std::size_t hash(const BasicJsonType& j) +{ + using string_t = typename BasicJsonType::string_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + const auto type = static_cast(j.type()); + switch (j.type()) + { + case BasicJsonType::value_t::null: + case BasicJsonType::value_t::discarded: + { + return combine(type, 0); + } + + case BasicJsonType::value_t::object: + { + auto seed = combine(type, j.size()); + for (const auto& element : j.items()) + { + const auto h = std::hash {}(element.key()); + seed = combine(seed, h); + seed = combine(seed, hash(element.value())); + } + return seed; + } + + case BasicJsonType::value_t::array: + { + auto seed = combine(type, j.size()); + for (const auto& element : j) + { + seed = combine(seed, hash(element)); + } + return seed; + } + + case BasicJsonType::value_t::string: + { + const auto h = std::hash {}(j.template get_ref()); + return combine(type, h); + } + + case BasicJsonType::value_t::boolean: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_integer: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_unsigned: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_float: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::binary: + { + auto seed = combine(type, j.get_binary().size()); + const auto h = std::hash {}(j.get_binary().has_subtype()); + seed = combine(seed, h); + seed = combine(seed, static_cast(j.get_binary().subtype())); + for (const auto byte : j.get_binary()) + { + seed = combine(seed, std::hash {}(byte)); + } + return seed; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + return 0; // LCOV_EXCL_LINE + } +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/binary_reader.hpp b/include/nlohmann/detail/input/binary_reader.hpp new file mode 100644 index 0000000..a6e100e --- /dev/null +++ b/include/nlohmann/detail/input/binary_reader.hpp @@ -0,0 +1,3009 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // generate_n +#include // array +#include // ldexp +#include // size_t +#include // uint8_t, uint16_t, uint32_t, uint64_t +#include // snprintf +#include // memcpy +#include // back_inserter +#include // numeric_limits +#include // char_traits, string +#include // make_pair, move +#include // vector + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// how to treat CBOR tags +enum class cbor_tag_handler_t +{ + error, ///< throw a parse_error exception in case of a tag + ignore, ///< ignore tags + store ///< store tags as binary type +}; + +/*! +@brief determine system byte order + +@return true if and only if system's byte order is little endian + +@note from https://stackoverflow.com/a/1001328/266378 +*/ +static inline bool little_endianness(int num = 1) noexcept +{ + return *reinterpret_cast(&num) == 1; +} + +/////////////////// +// binary reader // +/////////////////// + +/*! +@brief deserialization of CBOR, MessagePack, and UBJSON values +*/ +template> +class binary_reader +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using json_sax_t = SAX; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename char_traits::int_type; + + public: + /*! + @brief create a binary reader + + @param[in] adapter input adapter to read from + */ + explicit binary_reader(InputAdapterType&& adapter, const input_format_t format = input_format_t::json) noexcept : ia(std::move(adapter)), input_format(format) + { + (void)detail::is_sax_static_asserts {}; + } + + // make class move-only + binary_reader(const binary_reader&) = delete; + binary_reader(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + binary_reader& operator=(const binary_reader&) = delete; + binary_reader& operator=(binary_reader&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~binary_reader() = default; + + /*! + @param[in] format the binary format to parse + @param[in] sax_ a SAX event processor + @param[in] strict whether to expect the input to be consumed completed + @param[in] tag_handler how to treat CBOR tags + + @return whether parsing was successful + */ + JSON_HEDLEY_NON_NULL(3) + bool sax_parse(const input_format_t format, + json_sax_t* sax_, + const bool strict = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) + { + sax = sax_; + bool result = false; + + switch (format) + { + case input_format_t::bson: + result = parse_bson_internal(); + break; + + case input_format_t::cbor: + result = parse_cbor_internal(true, tag_handler); + break; + + case input_format_t::msgpack: + result = parse_msgpack_internal(); + break; + + case input_format_t::ubjson: + case input_format_t::bjdata: + result = parse_ubjson_internal(); + break; + + case input_format_t::json: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + + // strict mode: next byte must be EOF + if (result && strict) + { + if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata) + { + get_ignore_noop(); + } + else + { + get(); + } + + if (JSON_HEDLEY_UNLIKELY(current != char_traits::eof())) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(110, chars_read, + exception_message(input_format, concat("expected end of input; last byte: 0x", get_token_string()), "value"), nullptr)); + } + } + + return result; + } + + private: + ////////// + // BSON // + ////////// + + /*! + @brief Reads in a BSON-object and passes it to the SAX-parser. + @return whether a valid BSON-value was passed to the SAX parser + */ + bool parse_bson_internal() + { + std::int32_t document_size{}; + get_number(input_format_t::bson, document_size); + + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false))) + { + return false; + } + + return sax->end_object(); + } + + /*! + @brief Parses a C-style string from the BSON input. + @param[in,out] result A reference to the string variable where the read + string is to be stored. + @return `true` if the \x00-byte indicating the end of the string was + encountered before the EOF; false` indicates an unexpected EOF. + */ + bool get_bson_cstr(string_t& result) + { + auto out = std::back_inserter(result); + while (true) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring"))) + { + return false; + } + if (current == 0x00) + { + return true; + } + *out++ = static_cast(current); + } + } + + /*! + @brief Parses a zero-terminated string of length @a len from the BSON + input. + @param[in] len The length (including the zero-byte at the end) of the + string to be read. + @param[in,out] result A reference to the string variable where the read + string is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 1 + @return `true` if the string was successfully parsed + */ + template + bool get_bson_string(const NumberType len, string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(len < 1)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format_t::bson, concat("string length must be at least 1, is ", std::to_string(len)), "string"), nullptr)); + } + + return get_string(input_format_t::bson, len - static_cast(1), result) && get() != char_traits::eof(); + } + + /*! + @brief Parses a byte array input of length @a len from the BSON input. + @param[in] len The length of the byte array to be read. + @param[in,out] result A reference to the binary variable where the read + array is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 0 + @return `true` if the byte array was successfully parsed + */ + template + bool get_bson_binary(const NumberType len, binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(len < 0)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format_t::bson, concat("byte array length cannot be negative, is ", std::to_string(len)), "binary"), nullptr)); + } + + // All BSON binary values have a subtype + std::uint8_t subtype{}; + get_number(input_format_t::bson, subtype); + result.set_subtype(subtype); + + return get_binary(input_format_t::bson, len, result); + } + + /*! + @brief Read a BSON document element of the given @a element_type. + @param[in] element_type The BSON element type, c.f. http://bsonspec.org/spec.html + @param[in] element_type_parse_position The position in the input stream, + where the `element_type` was read. + @warning Not all BSON element types are supported yet. An unsupported + @a element_type will give rise to a parse_error.114: + Unsupported BSON record type 0x... + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_internal(const char_int_type element_type, + const std::size_t element_type_parse_position) + { + switch (element_type) + { + case 0x01: // double + { + double number{}; + return get_number(input_format_t::bson, number) && sax->number_float(static_cast(number), ""); + } + + case 0x02: // string + { + std::int32_t len{}; + string_t value; + return get_number(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value); + } + + case 0x03: // object + { + return parse_bson_internal(); + } + + case 0x04: // array + { + return parse_bson_array(); + } + + case 0x05: // binary + { + std::int32_t len{}; + binary_t value; + return get_number(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value); + } + + case 0x08: // boolean + { + return sax->boolean(get() != 0); + } + + case 0x0A: // null + { + return sax->null(); + } + + case 0x10: // int32 + { + std::int32_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); + } + + case 0x12: // int64 + { + std::int64_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); + } + + default: // anything else not supported (yet) + { + std::array cr{{}}; + static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(element_type))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + const std::string cr_str{cr.data()}; + return sax->parse_error(element_type_parse_position, cr_str, + parse_error::create(114, element_type_parse_position, concat("Unsupported BSON record type 0x", cr_str), nullptr)); + } + } + } + + /*! + @brief Read a BSON element list (as specified in the BSON-spec) + + The same binary layout is used for objects and arrays, hence it must be + indicated with the argument @a is_array which one is expected + (true --> array, false --> object). + + @param[in] is_array Determines if the element list being read is to be + treated as an object (@a is_array == false), or as an + array (@a is_array == true). + @return whether a valid BSON-object/array was passed to the SAX parser + */ + bool parse_bson_element_list(const bool is_array) + { + string_t key; + + while (auto element_type = get()) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list"))) + { + return false; + } + + const std::size_t element_type_parse_position = chars_read; + if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key))) + { + return false; + } + + if (!is_array && !sax->key(key)) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position))) + { + return false; + } + + // get_bson_cstr only appends + key.clear(); + } + + return true; + } + + /*! + @brief Reads an array from the BSON input and passes it to the SAX-parser. + @return whether a valid BSON-array was passed to the SAX parser + */ + bool parse_bson_array() + { + std::int32_t document_size{}; + get_number(input_format_t::bson, document_size); + + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true))) + { + return false; + } + + return sax->end_array(); + } + + ////////// + // CBOR // + ////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true) or whether the last read character should + be considered instead (false) + @param[in] tag_handler how CBOR tags should be treated + + @return whether a valid CBOR value was passed to the SAX parser + */ + bool parse_cbor_internal(const bool get_char, + const cbor_tag_handler_t tag_handler) + { + switch (get_char ? get() : current) + { + // EOF + case char_traits::eof(): + return unexpect_eof(input_format_t::cbor, "value"); + + // Integer 0x00..0x17 (0..23) + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + return sax->number_unsigned(static_cast(current)); + + case 0x18: // Unsigned integer (one-byte uint8_t follows) + { + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x19: // Unsigned integer (two-byte uint16_t follows) + { + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x1A: // Unsigned integer (four-byte uint32_t follows) + { + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + case 0x1B: // Unsigned integer (eight-byte uint64_t follows) + { + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); + } + + // Negative integer -1-0x00..-1-0x17 (-1..-24) + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + return sax->number_integer(static_cast(0x20 - 1 - current)); + + case 0x38: // Negative integer (one-byte uint8_t follows) + { + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x39: // Negative integer -1-n (two-byte uint16_t follows) + { + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) + { + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); + } + + case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) + { + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) + - static_cast(number)); + } + + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: // Binary data (one-byte uint8_t for n follows) + case 0x59: // Binary data (two-byte uint16_t for n follow) + case 0x5A: // Binary data (four-byte uint32_t for n follow) + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + case 0x5F: // Binary data (indefinite length) + { + binary_t b; + return get_cbor_binary(b) && sax->binary(b); + } + + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + case 0x7F: // UTF-8 string (indefinite length) + { + string_t s; + return get_cbor_string(s) && sax->string(s); + } + + // array (0x00..0x17 data items follow) + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + return get_cbor_array( + conditional_static_cast(static_cast(current) & 0x1Fu), tag_handler); + + case 0x98: // array (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); + } + + case 0x99: // array (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); + } + + case 0x9A: // array (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast(len), tag_handler); + } + + case 0x9B: // array (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(conditional_static_cast(len), tag_handler); + } + + case 0x9F: // array (indefinite length) + return get_cbor_array(static_cast(-1), tag_handler); + + // map (0x00..0x17 pairs of data items follow) + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + return get_cbor_object(conditional_static_cast(static_cast(current) & 0x1Fu), tag_handler); + + case 0xB8: // map (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); + } + + case 0xB9: // map (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); + } + + case 0xBA: // map (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast(len), tag_handler); + } + + case 0xBB: // map (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(conditional_static_cast(len), tag_handler); + } + + case 0xBF: // map (indefinite length) + return get_cbor_object(static_cast(-1), tag_handler); + + case 0xC6: // tagged item + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD8: // tagged item (1 bytes follow) + case 0xD9: // tagged item (2 bytes follow) + case 0xDA: // tagged item (4 bytes follow) + case 0xDB: // tagged item (8 bytes follow) + { + switch (tag_handler) + { + case cbor_tag_handler_t::error: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr)); + } + + case cbor_tag_handler_t::ignore: + { + // ignore binary subtype + switch (current) + { + case 0xD8: + { + std::uint8_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xD9: + { + std::uint16_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xDA: + { + std::uint32_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + case 0xDB: + { + std::uint64_t subtype_to_ignore{}; + get_number(input_format_t::cbor, subtype_to_ignore); + break; + } + default: + break; + } + return parse_cbor_internal(true, tag_handler); + } + + case cbor_tag_handler_t::store: + { + binary_t b; + // use binary subtype and store in binary container + switch (current) + { + case 0xD8: + { + std::uint8_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xD9: + { + std::uint16_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xDA: + { + std::uint32_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + case 0xDB: + { + std::uint64_t subtype{}; + get_number(input_format_t::cbor, subtype); + b.set_subtype(detail::conditional_static_cast(subtype)); + break; + } + default: + return parse_cbor_internal(true, tag_handler); + } + get(); + return get_cbor_binary(b) && sax->binary(b); + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + return false; // LCOV_EXCL_LINE + } + } + + case 0xF4: // false + return sax->boolean(false); + + case 0xF5: // true + return sax->boolean(true); + + case 0xF6: // null + return sax->null(); + + case 0xF9: // Half-Precision Float (two-byte IEEE 754) + { + const auto byte1_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + const auto byte2_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) + { + return false; + } + + const auto byte1 = static_cast(byte1_raw); + const auto byte2 = static_cast(byte2_raw); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const auto half = static_cast((byte1 << 8u) + byte2); + const double val = [&half] + { + const int exp = (half >> 10u) & 0x1Fu; + const unsigned int mant = half & 0x3FFu; + JSON_ASSERT(0 <= exp&& exp <= 32); + JSON_ASSERT(mant <= 1024); + switch (exp) + { + case 0: + return std::ldexp(mant, -24); + case 31: + return (mant == 0) + ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + default: + return std::ldexp(mant + 1024, exp - 25); + } + }(); + return sax->number_float((half & 0x8000u) != 0 + ? static_cast(-val) + : static_cast(val), ""); + } + + case 0xFA: // Single-Precision Float (four-byte IEEE 754) + { + float number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); + } + + case 0xFB: // Double-Precision Float (eight-byte IEEE 754) + { + double number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); + } + + default: // anything else (0xFF is handled inside the other types) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format_t::cbor, concat("invalid byte: 0x", last_token), "value"), nullptr)); + } + } + } + + /*! + @brief reads a CBOR string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + Additionally, CBOR's strings with indefinite lengths are supported. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_cbor_string(string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string"))) + { + return false; + } + + switch (current) + { + // UTF-8 string (0x00..0x17 bytes follow) + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + { + return get_string(input_format_t::cbor, static_cast(current) & 0x1Fu, result); + } + + case 0x78: // UTF-8 string (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x79: // UTF-8 string (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); + } + + case 0x7F: // UTF-8 string (indefinite length) + { + while (get() != 0xFF) + { + string_t chunk; + if (!get_cbor_string(chunk)) + { + return false; + } + result.append(chunk); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, + exception_message(input_format_t::cbor, concat("expected length specification (0x60-0x7B) or indefinite string type (0x7F); last byte: 0x", last_token), "string"), nullptr)); + } + } + } + + /*! + @brief reads a CBOR byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into the byte array. + Additionally, CBOR's byte arrays with indefinite lengths are supported. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_cbor_binary(binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary"))) + { + return false; + } + + switch (current) + { + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + { + return get_binary(input_format_t::cbor, static_cast(current) & 0x1Fu, result); + } + + case 0x58: // Binary data (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x59: // Binary data (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5A: // Binary data (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5F: // Binary data (indefinite length) + { + while (get() != 0xFF) + { + binary_t chunk; + if (!get_cbor_binary(chunk)) + { + return false; + } + result.insert(result.end(), chunk.begin(), chunk.end()); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, + exception_message(input_format_t::cbor, concat("expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x", last_token), "binary"), nullptr)); + } + } + } + + /*! + @param[in] len the length of the array or static_cast(-1) for an + array of indefinite size + @param[in] tag_handler how CBOR tags should be treated + @return whether array creation completed + */ + bool get_cbor_array(const std::size_t len, + const cbor_tag_handler_t tag_handler) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) + { + return false; + } + + if (len != static_cast(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + } + } + else + { + while (get() != 0xFF) + { + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler))) + { + return false; + } + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object or static_cast(-1) for an + object of indefinite size + @param[in] tag_handler how CBOR tags should be treated + @return whether object creation completed + */ + bool get_cbor_object(const std::size_t len, + const cbor_tag_handler_t tag_handler) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) + { + return false; + } + + if (len != 0) + { + string_t key; + if (len != static_cast(-1)) + { + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + key.clear(); + } + } + else + { + while (get() != 0xFF) + { + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) + { + return false; + } + key.clear(); + } + } + } + + return sax->end_object(); + } + + ///////////// + // MsgPack // + ///////////// + + /*! + @return whether a valid MessagePack value was passed to the SAX parser + */ + bool parse_msgpack_internal() + { + switch (get()) + { + // EOF + case char_traits::eof(): + return unexpect_eof(input_format_t::msgpack, "value"); + + // positive fixint + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + case 0x08: + case 0x09: + case 0x0A: + case 0x0B: + case 0x0C: + case 0x0D: + case 0x0E: + case 0x0F: + case 0x10: + case 0x11: + case 0x12: + case 0x13: + case 0x14: + case 0x15: + case 0x16: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5C: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + return sax->number_unsigned(static_cast(current)); + + // fixmap + case 0x80: + case 0x81: + case 0x82: + case 0x83: + case 0x84: + case 0x85: + case 0x86: + case 0x87: + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + return get_msgpack_object(conditional_static_cast(static_cast(current) & 0x0Fu)); + + // fixarray + case 0x90: + case 0x91: + case 0x92: + case 0x93: + case 0x94: + case 0x95: + case 0x96: + case 0x97: + case 0x98: + case 0x99: + case 0x9A: + case 0x9B: + case 0x9C: + case 0x9D: + case 0x9E: + case 0x9F: + return get_msgpack_array(conditional_static_cast(static_cast(current) & 0x0Fu)); + + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + case 0xD9: // str 8 + case 0xDA: // str 16 + case 0xDB: // str 32 + { + string_t s; + return get_msgpack_string(s) && sax->string(s); + } + + case 0xC0: // nil + return sax->null(); + + case 0xC2: // false + return sax->boolean(false); + + case 0xC3: // true + return sax->boolean(true); + + case 0xC4: // bin 8 + case 0xC5: // bin 16 + case 0xC6: // bin 32 + case 0xC7: // ext 8 + case 0xC8: // ext 16 + case 0xC9: // ext 32 + case 0xD4: // fixext 1 + case 0xD5: // fixext 2 + case 0xD6: // fixext 4 + case 0xD7: // fixext 8 + case 0xD8: // fixext 16 + { + binary_t b; + return get_msgpack_binary(b) && sax->binary(b); + } + + case 0xCA: // float 32 + { + float number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); + } + + case 0xCB: // float 64 + { + double number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); + } + + case 0xCC: // uint 8 + { + std::uint8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCD: // uint 16 + { + std::uint16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCE: // uint 32 + { + std::uint32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xCF: // uint 64 + { + std::uint64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); + } + + case 0xD0: // int 8 + { + std::int8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD1: // int 16 + { + std::int16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD2: // int 32 + { + std::int32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xD3: // int 64 + { + std::int64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); + } + + case 0xDC: // array 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); + } + + case 0xDD: // array 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(conditional_static_cast(len)); + } + + case 0xDE: // map 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); + } + + case 0xDF: // map 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(conditional_static_cast(len)); + } + + // negative fixint + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xF0: + case 0xF1: + case 0xF2: + case 0xF3: + case 0xF4: + case 0xF5: + case 0xF6: + case 0xF7: + case 0xF8: + case 0xF9: + case 0xFA: + case 0xFB: + case 0xFC: + case 0xFD: + case 0xFE: + case 0xFF: + return sax->number_integer(static_cast(current)); + + default: // anything else + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format_t::msgpack, concat("invalid byte: 0x", last_token), "value"), nullptr)); + } + } + } + + /*! + @brief reads a MessagePack string + + This function first reads starting bytes to determine the expected + string length and then copies this number of bytes into a string. + + @param[out] result created string + + @return whether string creation completed + */ + bool get_msgpack_string(string_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string"))) + { + return false; + } + + switch (current) + { + // fixstr + case 0xA0: + case 0xA1: + case 0xA2: + case 0xA3: + case 0xA4: + case 0xA5: + case 0xA6: + case 0xA7: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAB: + case 0xAC: + case 0xAD: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + case 0xB2: + case 0xB3: + case 0xB4: + case 0xB5: + case 0xB6: + case 0xB7: + case 0xB8: + case 0xB9: + case 0xBA: + case 0xBB: + case 0xBC: + case 0xBD: + case 0xBE: + case 0xBF: + { + return get_string(input_format_t::msgpack, static_cast(current) & 0x1Fu, result); + } + + case 0xD9: // str 8 + { + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + case 0xDA: // str 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + case 0xDB: // str 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, + exception_message(input_format_t::msgpack, concat("expected length specification (0xA0-0xBF, 0xD9-0xDB); last byte: 0x", last_token), "string"), nullptr)); + } + } + } + + /*! + @brief reads a MessagePack byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into a byte array. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_msgpack_binary(binary_t& result) + { + // helper function to set the subtype + auto assign_and_return_true = [&result](std::int8_t subtype) + { + result.set_subtype(static_cast(subtype)); + return true; + }; + + switch (current) + { + case 0xC4: // bin 8 + { + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC5: // bin 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC6: // bin 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC7: // ext 8 + { + std::uint8_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC8: // ext 16 + { + std::uint16_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC9: // ext 32 + { + std::uint32_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xD4: // fixext 1 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 1, result) && + assign_and_return_true(subtype); + } + + case 0xD5: // fixext 2 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 2, result) && + assign_and_return_true(subtype); + } + + case 0xD6: // fixext 4 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 4, result) && + assign_and_return_true(subtype); + } + + case 0xD7: // fixext 8 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 8, result) && + assign_and_return_true(subtype); + } + + case 0xD8: // fixext 16 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 16, result) && + assign_and_return_true(subtype); + } + + default: // LCOV_EXCL_LINE + return false; // LCOV_EXCL_LINE + } + } + + /*! + @param[in] len the length of the array + @return whether array creation completed + */ + bool get_msgpack_array(const std::size_t len) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) + { + return false; + } + + for (std::size_t i = 0; i < len; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) + { + return false; + } + } + + return sax->end_array(); + } + + /*! + @param[in] len the length of the object + @return whether object creation completed + */ + bool get_msgpack_object(const std::size_t len) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) + { + return false; + } + + string_t key; + for (std::size_t i = 0; i < len; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key))) + { + return false; + } + + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) + { + return false; + } + key.clear(); + } + + return sax->end_object(); + } + + //////////// + // UBJSON // + //////////// + + /*! + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether a valid UBJSON value was passed to the SAX parser + */ + bool parse_ubjson_internal(const bool get_char = true) + { + return get_ubjson_value(get_char ? get_ignore_noop() : current); + } + + /*! + @brief reads a UBJSON string + + This function is either called after reading the 'S' byte explicitly + indicating a string, or in case of an object key where the 'S' byte can be + left out. + + @param[out] result created string + @param[in] get_char whether a new character should be retrieved from the + input (true, default) or whether the last read + character should be considered instead + + @return whether string creation completed + */ + bool get_ubjson_string(string_t& result, const bool get_char = true) + { + if (get_char) + { + get(); // TODO(niels): may we ignore N here? + } + + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "value"))) + { + return false; + } + + switch (current) + { + case 'U': + { + std::uint8_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'i': + { + std::int8_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'I': + { + std::int16_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'l': + { + std::int32_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'L': + { + std::int64_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'u': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint16_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'm': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint32_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + case 'M': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint64_t len{}; + return get_number(input_format, len) && get_string(input_format, len, result); + } + + default: + break; + } + auto last_token = get_token_string(); + std::string message; + + if (input_format != input_format_t::bjdata) + { + message = "expected length type specification (U, i, I, l, L); last byte: 0x" + last_token; + } + else + { + message = "expected length type specification (U, i, u, I, m, l, M, L); last byte: 0x" + last_token; + } + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "string"), nullptr)); + } + + /*! + @param[out] dim an integer vector storing the ND array dimensions + @return whether reading ND array size vector is successful + */ + bool get_ubjson_ndarray_size(std::vector& dim) + { + std::pair size_and_type; + size_t dimlen = 0; + bool no_ndarray = true; + + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type, no_ndarray))) + { + return false; + } + + if (size_and_type.first != npos) + { + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray, size_and_type.second))) + { + return false; + } + dim.push_back(dimlen); + } + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray))) + { + return false; + } + dim.push_back(dimlen); + } + } + } + else + { + while (current != ']') + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_value(dimlen, no_ndarray, current))) + { + return false; + } + dim.push_back(dimlen); + get_ignore_noop(); + } + } + return true; + } + + /*! + @param[out] result determined size + @param[in,out] is_ndarray for input, `true` means already inside an ndarray vector + or ndarray dimension is not allowed; `false` means ndarray + is allowed; for output, `true` means an ndarray is found; + is_ndarray can only return `true` when its initial value + is `false` + @param[in] prefix type marker if already read, otherwise set to 0 + + @return whether size determination completed + */ + bool get_ubjson_size_value(std::size_t& result, bool& is_ndarray, char_int_type prefix = 0) + { + if (prefix == 0) + { + prefix = get_ignore_noop(); + } + + switch (prefix) + { + case 'U': + { + std::uint8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + case 'i': + { + std::int8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + if (number < 0) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, + exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); + } + result = static_cast(number); // NOLINT(bugprone-signed-char-misuse,cert-str34-c): number is not a char + return true; + } + + case 'I': + { + std::int16_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + if (number < 0) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, + exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); + } + result = static_cast(number); + return true; + } + + case 'l': + { + std::int32_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + if (number < 0) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, + exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); + } + result = static_cast(number); + return true; + } + + case 'L': + { + std::int64_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + if (number < 0) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, + exception_message(input_format, "count in an optimized container must be positive", "size"), nullptr)); + } + if (!value_in_range_of(number)) + { + return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, + exception_message(input_format, "integer value overflow", "size"), nullptr)); + } + result = static_cast(number); + return true; + } + + case 'u': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint16_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + result = static_cast(number); + return true; + } + + case 'm': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint32_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + result = conditional_static_cast(number); + return true; + } + + case 'M': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint64_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format, number))) + { + return false; + } + if (!value_in_range_of(number)) + { + return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, + exception_message(input_format, "integer value overflow", "size"), nullptr)); + } + result = detail::conditional_static_cast(number); + return true; + } + + case '[': + { + if (input_format != input_format_t::bjdata) + { + break; + } + if (is_ndarray) // ndarray dimensional vector can only contain integers, and can not embed another array + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(113, chars_read, exception_message(input_format, "ndarray dimensional vector is not allowed", "size"), nullptr)); + } + std::vector dim; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_ndarray_size(dim))) + { + return false; + } + if (dim.size() == 1 || (dim.size() == 2 && dim.at(0) == 1)) // return normal array size if 1D row vector + { + result = dim.at(dim.size() - 1); + return true; + } + if (!dim.empty()) // if ndarray, convert to an object in JData annotated array format + { + for (auto i : dim) // test if any dimension in an ndarray is 0, if so, return a 1D empty container + { + if ( i == 0 ) + { + result = 0; + return true; + } + } + + string_t key = "_ArraySize_"; + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(3) || !sax->key(key) || !sax->start_array(dim.size()))) + { + return false; + } + result = 1; + for (auto i : dim) + { + result *= i; + if (result == 0 || result == npos) // because dim elements shall not have zeros, result = 0 means overflow happened; it also can't be npos as it is used to initialize size in get_ubjson_size_type() + { + return sax->parse_error(chars_read, get_token_string(), out_of_range::create(408, exception_message(input_format, "excessive ndarray size caused overflow", "size"), nullptr)); + } + if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(static_cast(i)))) + { + return false; + } + } + is_ndarray = true; + return sax->end_array(); + } + result = 0; + return true; + } + + default: + break; + } + auto last_token = get_token_string(); + std::string message; + + if (input_format != input_format_t::bjdata) + { + message = "expected length type specification (U, i, I, l, L) after '#'; last byte: 0x" + last_token; + } + else + { + message = "expected length type specification (U, i, u, I, m, l, M, L) after '#'; last byte: 0x" + last_token; + } + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format, message, "size"), nullptr)); + } + + /*! + @brief determine the type and size for a container + + In the optimized UBJSON format, a type and a size can be provided to allow + for a more compact representation. + + @param[out] result pair of the size and the type + @param[in] inside_ndarray whether the parser is parsing an ND array dimensional vector + + @return whether pair creation completed + */ + bool get_ubjson_size_type(std::pair& result, bool inside_ndarray = false) + { + result.first = npos; // size + result.second = 0; // type + bool is_ndarray = false; + + get_ignore_noop(); + + if (current == '$') + { + result.second = get(); // must not ignore 'N', because 'N' maybe the type + if (input_format == input_format_t::bjdata + && JSON_HEDLEY_UNLIKELY(std::binary_search(bjd_optimized_type_markers.begin(), bjd_optimized_type_markers.end(), result.second))) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format, concat("marker 0x", last_token, " is not a permitted optimized array type"), "type"), nullptr)); + } + + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "type"))) + { + return false; + } + + get_ignore_noop(); + if (JSON_HEDLEY_UNLIKELY(current != '#')) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "value"))) + { + return false; + } + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format, concat("expected '#' after type information; last byte: 0x", last_token), "size"), nullptr)); + } + + const bool is_error = get_ubjson_size_value(result.first, is_ndarray); + if (input_format == input_format_t::bjdata && is_ndarray) + { + if (inside_ndarray) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(112, chars_read, + exception_message(input_format, "ndarray can not be recursive", "size"), nullptr)); + } + result.second |= (1 << 8); // use bit 8 to indicate ndarray, all UBJSON and BJData markers should be ASCII letters + } + return is_error; + } + + if (current == '#') + { + const bool is_error = get_ubjson_size_value(result.first, is_ndarray); + if (input_format == input_format_t::bjdata && is_ndarray) + { + return sax->parse_error(chars_read, get_token_string(), parse_error::create(112, chars_read, + exception_message(input_format, "ndarray requires both type and size", "size"), nullptr)); + } + return is_error; + } + + return true; + } + + /*! + @param prefix the previously read or set type prefix + @return whether value creation completed + */ + bool get_ubjson_value(const char_int_type prefix) + { + switch (prefix) + { + case char_traits::eof(): // EOF + return unexpect_eof(input_format, "value"); + + case 'T': // true + return sax->boolean(true); + case 'F': // false + return sax->boolean(false); + + case 'Z': // null + return sax->null(); + + case 'U': + { + std::uint8_t number{}; + return get_number(input_format, number) && sax->number_unsigned(number); + } + + case 'i': + { + std::int8_t number{}; + return get_number(input_format, number) && sax->number_integer(number); + } + + case 'I': + { + std::int16_t number{}; + return get_number(input_format, number) && sax->number_integer(number); + } + + case 'l': + { + std::int32_t number{}; + return get_number(input_format, number) && sax->number_integer(number); + } + + case 'L': + { + std::int64_t number{}; + return get_number(input_format, number) && sax->number_integer(number); + } + + case 'u': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint16_t number{}; + return get_number(input_format, number) && sax->number_unsigned(number); + } + + case 'm': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint32_t number{}; + return get_number(input_format, number) && sax->number_unsigned(number); + } + + case 'M': + { + if (input_format != input_format_t::bjdata) + { + break; + } + std::uint64_t number{}; + return get_number(input_format, number) && sax->number_unsigned(number); + } + + case 'h': + { + if (input_format != input_format_t::bjdata) + { + break; + } + const auto byte1_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) + { + return false; + } + const auto byte2_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) + { + return false; + } + + const auto byte1 = static_cast(byte1_raw); + const auto byte2 = static_cast(byte2_raw); + + // code from RFC 7049, Appendix D, Figure 3: + // As half-precision floating-point numbers were only added + // to IEEE 754 in 2008, today's programming platforms often + // still only have limited support for them. It is very + // easy to include at least decoding support for them even + // without such support. An example of a small decoder for + // half-precision floating-point numbers in the C language + // is shown in Fig. 3. + const auto half = static_cast((byte2 << 8u) + byte1); + const double val = [&half] + { + const int exp = (half >> 10u) & 0x1Fu; + const unsigned int mant = half & 0x3FFu; + JSON_ASSERT(0 <= exp&& exp <= 32); + JSON_ASSERT(mant <= 1024); + switch (exp) + { + case 0: + return std::ldexp(mant, -24); + case 31: + return (mant == 0) + ? std::numeric_limits::infinity() + : std::numeric_limits::quiet_NaN(); + default: + return std::ldexp(mant + 1024, exp - 25); + } + }(); + return sax->number_float((half & 0x8000u) != 0 + ? static_cast(-val) + : static_cast(val), ""); + } + + case 'd': + { + float number{}; + return get_number(input_format, number) && sax->number_float(static_cast(number), ""); + } + + case 'D': + { + double number{}; + return get_number(input_format, number) && sax->number_float(static_cast(number), ""); + } + + case 'H': + { + return get_ubjson_high_precision_number(); + } + + case 'C': // char + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "char"))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(current > 127)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, + exception_message(input_format, concat("byte after 'C' must be in range 0x00..0x7F; last byte: 0x", last_token), "char"), nullptr)); + } + string_t s(1, static_cast(current)); + return sax->string(s); + } + + case 'S': // string + { + string_t s; + return get_ubjson_string(s) && sax->string(s); + } + + case '[': // array + return get_ubjson_array(); + + case '{': // object + return get_ubjson_object(); + + default: // anything else + break; + } + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format, "invalid byte: 0x" + last_token, "value"), nullptr)); + } + + /*! + @return whether array creation completed + */ + bool get_ubjson_array() + { + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) + { + return false; + } + + // if bit-8 of size_and_type.second is set to 1, encode bjdata ndarray as an object in JData annotated array format (https://github.com/NeuroJSON/jdata): + // {"_ArrayType_" : "typeid", "_ArraySize_" : [n1, n2, ...], "_ArrayData_" : [v1, v2, ...]} + + if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0) + { + size_and_type.second &= ~(static_cast(1) << 8); // use bit 8 to indicate ndarray, here we remove the bit to restore the type marker + auto it = std::lower_bound(bjd_types_map.begin(), bjd_types_map.end(), size_and_type.second, [](const bjd_type & p, char_int_type t) + { + return p.first < t; + }); + string_t key = "_ArrayType_"; + if (JSON_HEDLEY_UNLIKELY(it == bjd_types_map.end() || it->first != size_and_type.second)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format, "invalid byte: 0x" + last_token, "type"), nullptr)); + } + + string_t type = it->second; // sax->string() takes a reference + if (JSON_HEDLEY_UNLIKELY(!sax->key(key) || !sax->string(type))) + { + return false; + } + + if (size_and_type.second == 'C') + { + size_and_type.second = 'U'; + } + + key = "_ArrayData_"; + if (JSON_HEDLEY_UNLIKELY(!sax->key(key) || !sax->start_array(size_and_type.first) )) + { + return false; + } + + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) + { + return false; + } + } + + return (sax->end_array() && sax->end_object()); + } + + if (size_and_type.first != npos) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + if (size_and_type.second != 'N') + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) + { + return false; + } + } + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + } + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + { + return false; + } + + while (current != ']') + { + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false))) + { + return false; + } + get_ignore_noop(); + } + } + + return sax->end_array(); + } + + /*! + @return whether object creation completed + */ + bool get_ubjson_object() + { + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) + { + return false; + } + + // do not accept ND-array size in objects in BJData + if (input_format == input_format_t::bjdata && size_and_type.first != npos && (size_and_type.second & (1 << 8)) != 0) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, + exception_message(input_format, "BJData object does not support ND-array size in optimized format", "object"), nullptr)); + } + + string_t key; + if (size_and_type.first != npos) + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first))) + { + return false; + } + + if (size_and_type.second != 0) + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) + { + return false; + } + key.clear(); + } + } + else + { + for (std::size_t i = 0; i < size_and_type.first; ++i) + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + key.clear(); + } + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + { + return false; + } + + while (current != '}') + { + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key))) + { + return false; + } + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) + { + return false; + } + get_ignore_noop(); + key.clear(); + } + } + + return sax->end_object(); + } + + // Note, no reader for UBJSON binary types is implemented because they do + // not exist + + bool get_ubjson_high_precision_number() + { + // get size of following number string + std::size_t size{}; + bool no_ndarray = true; + auto res = get_ubjson_size_value(size, no_ndarray); + if (JSON_HEDLEY_UNLIKELY(!res)) + { + return res; + } + + // get number string + std::vector number_vector; + for (std::size_t i = 0; i < size; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format, "number"))) + { + return false; + } + number_vector.push_back(static_cast(current)); + } + + // parse number string + using ia_type = decltype(detail::input_adapter(number_vector)); + auto number_lexer = detail::lexer(detail::input_adapter(number_vector), false); + const auto result_number = number_lexer.scan(); + const auto number_string = number_lexer.get_token_string(); + const auto result_remainder = number_lexer.scan(); + + using token_type = typename detail::lexer_base::token_type; + + if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input)) + { + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, + exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr)); + } + + switch (result_number) + { + case token_type::value_integer: + return sax->number_integer(number_lexer.get_number_integer()); + case token_type::value_unsigned: + return sax->number_unsigned(number_lexer.get_number_unsigned()); + case token_type::value_float: + return sax->number_float(number_lexer.get_number_float(), std::move(number_string)); + case token_type::uninitialized: + case token_type::literal_true: + case token_type::literal_false: + case token_type::literal_null: + case token_type::value_string: + case token_type::begin_array: + case token_type::begin_object: + case token_type::end_array: + case token_type::end_object: + case token_type::name_separator: + case token_type::value_separator: + case token_type::parse_error: + case token_type::end_of_input: + case token_type::literal_or_value: + default: + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, + exception_message(input_format, concat("invalid number text: ", number_lexer.get_token_string()), "high-precision number"), nullptr)); + } + } + + /////////////////////// + // Utility functions // + /////////////////////// + + /*! + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a -'ve valued + `char_traits::eof()` in that case. + + @return character read from the input + */ + char_int_type get() + { + ++chars_read; + return current = ia.get_character(); + } + + /*! + @return character read from the input after ignoring all 'N' entries + */ + char_int_type get_ignore_noop() + { + do + { + get(); + } + while (current == 'N'); + + return current; + } + + /* + @brief read a number from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[out] result number of type @a NumberType + + @return whether conversion completed + + @note This function needs to respect the system's endianness, because + bytes in CBOR, MessagePack, and UBJSON are stored in network order + (big endian) and therefore need reordering on little endian systems. + On the other hand, BSON and BJData use little endian and should reorder + on big endian systems. + */ + template + bool get_number(const input_format_t format, NumberType& result) + { + // step 1: read input into array with system's byte order + std::array vec{}; + for (std::size_t i = 0; i < sizeof(NumberType); ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number"))) + { + return false; + } + + // reverse byte order prior to conversion if necessary + if (is_little_endian != (InputIsLittleEndian || format == input_format_t::bjdata)) + { + vec[sizeof(NumberType) - i - 1] = static_cast(current); + } + else + { + vec[i] = static_cast(current); // LCOV_EXCL_LINE + } + } + + // step 2: convert array into number of type T and return + std::memcpy(&result, vec.data(), sizeof(NumberType)); + return true; + } + + /*! + @brief create a string by reading characters from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of characters to read + @param[out] result string created by reading @a len bytes + + @return whether string creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of string memory. + */ + template + bool get_string(const input_format_t format, + const NumberType len, + string_t& result) + { + bool success = true; + for (NumberType i = 0; i < len; i++) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string"))) + { + success = false; + break; + } + result.push_back(static_cast(current)); + } + return success; + } + + /*! + @brief create a byte array by reading bytes from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of bytes to read + @param[out] result byte array created by reading @a len bytes + + @return whether byte array creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of memory. + */ + template + bool get_binary(const input_format_t format, + const NumberType len, + binary_t& result) + { + bool success = true; + for (NumberType i = 0; i < len; i++) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary"))) + { + success = false; + break; + } + result.push_back(static_cast(current)); + } + return success; + } + + /*! + @param[in] format the current format (for diagnostics) + @param[in] context further context information (for diagnostics) + @return whether the last read character is not EOF + */ + JSON_HEDLEY_NON_NULL(3) + bool unexpect_eof(const input_format_t format, const char* context) const + { + if (JSON_HEDLEY_UNLIKELY(current == char_traits::eof())) + { + return sax->parse_error(chars_read, "", + parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context), nullptr)); + } + return true; + } + + /*! + @return a string representation of the last read byte + */ + std::string get_token_string() const + { + std::array cr{{}}; + static_cast((std::snprintf)(cr.data(), cr.size(), "%.2hhX", static_cast(current))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + return std::string{cr.data()}; + } + + /*! + @param[in] format the current format + @param[in] detail a detailed error message + @param[in] context further context information + @return a message string to use in the parse_error exceptions + */ + std::string exception_message(const input_format_t format, + const std::string& detail, + const std::string& context) const + { + std::string error_msg = "syntax error while parsing "; + + switch (format) + { + case input_format_t::cbor: + error_msg += "CBOR"; + break; + + case input_format_t::msgpack: + error_msg += "MessagePack"; + break; + + case input_format_t::ubjson: + error_msg += "UBJSON"; + break; + + case input_format_t::bson: + error_msg += "BSON"; + break; + + case input_format_t::bjdata: + error_msg += "BJData"; + break; + + case input_format_t::json: // LCOV_EXCL_LINE + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + + return concat(error_msg, ' ', context, ": ", detail); + } + + private: + static JSON_INLINE_VARIABLE constexpr std::size_t npos = static_cast(-1); + + /// input adapter + InputAdapterType ia; + + /// the current character + char_int_type current = char_traits::eof(); + + /// the number of characters read + std::size_t chars_read = 0; + + /// whether we can assume little endianness + const bool is_little_endian = little_endianness(); + + /// input format + const input_format_t input_format = input_format_t::json; + + /// the SAX parser + json_sax_t* sax = nullptr; + + // excluded markers in bjdata optimized type +#define JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ \ + make_array('F', 'H', 'N', 'S', 'T', 'Z', '[', '{') + +#define JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ \ + make_array( \ + bjd_type{'C', "char"}, \ + bjd_type{'D', "double"}, \ + bjd_type{'I', "int16"}, \ + bjd_type{'L', "int64"}, \ + bjd_type{'M', "uint64"}, \ + bjd_type{'U', "uint8"}, \ + bjd_type{'d', "single"}, \ + bjd_type{'i', "int8"}, \ + bjd_type{'l', "int32"}, \ + bjd_type{'m', "uint32"}, \ + bjd_type{'u', "uint16"}) + + JSON_PRIVATE_UNLESS_TESTED: + // lookup tables + // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) + const decltype(JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_) bjd_optimized_type_markers = + JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_; + + using bjd_type = std::pair; + // NOLINTNEXTLINE(cppcoreguidelines-non-private-member-variables-in-classes) + const decltype(JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_) bjd_types_map = + JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_; + +#undef JSON_BINARY_READER_MAKE_BJD_OPTIMIZED_TYPE_MARKERS_ +#undef JSON_BINARY_READER_MAKE_BJD_TYPES_MAP_ +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr std::size_t binary_reader::npos; +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/input_adapters.hpp b/include/nlohmann/detail/input/input_adapters.hpp new file mode 100644 index 0000000..33fca3e --- /dev/null +++ b/include/nlohmann/detail/input/input_adapters.hpp @@ -0,0 +1,492 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // array +#include // size_t +#include // strlen +#include // begin, end, iterator_traits, random_access_iterator_tag, distance, next +#include // shared_ptr, make_shared, addressof +#include // accumulate +#include // string, char_traits +#include // enable_if, is_base_of, is_pointer, is_integral, remove_pointer +#include // pair, declval + +#ifndef JSON_NO_IO + #include // FILE * + #include // istream +#endif // JSON_NO_IO + +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// the supported input formats +enum class input_format_t { json, cbor, msgpack, ubjson, bson, bjdata }; + +//////////////////// +// input adapters // +//////////////////// + +#ifndef JSON_NO_IO +/*! +Input adapter for stdio file access. This adapter read only 1 byte and do not use any + buffer. This adapter is a very low level adapter. +*/ +class file_input_adapter +{ + public: + using char_type = char; + + JSON_HEDLEY_NON_NULL(2) + explicit file_input_adapter(std::FILE* f) noexcept + : m_file(f) + { + JSON_ASSERT(m_file != nullptr); + } + + // make class move-only + file_input_adapter(const file_input_adapter&) = delete; + file_input_adapter(file_input_adapter&&) noexcept = default; + file_input_adapter& operator=(const file_input_adapter&) = delete; + file_input_adapter& operator=(file_input_adapter&&) = delete; + ~file_input_adapter() = default; + + std::char_traits::int_type get_character() noexcept + { + return std::fgetc(m_file); + } + + private: + /// the file pointer to read from + std::FILE* m_file; +}; + +/*! +Input adapter for a (caching) istream. Ignores a UFT Byte Order Mark at +beginning of input. Does not support changing the underlying std::streambuf +in mid-input. Maintains underlying std::istream and std::streambuf to support +subsequent use of standard std::istream operations to process any input +characters following those used in parsing the JSON input. Clears the +std::istream flags; any input errors (e.g., EOF) will be detected by the first +subsequent call for input from the std::istream. +*/ +class input_stream_adapter +{ + public: + using char_type = char; + + ~input_stream_adapter() + { + // clear stream flags; we use underlying streambuf I/O, do not + // maintain ifstream flags, except eof + if (is != nullptr) + { + is->clear(is->rdstate() & std::ios::eofbit); + } + } + + explicit input_stream_adapter(std::istream& i) + : is(&i), sb(i.rdbuf()) + {} + + // delete because of pointer members + input_stream_adapter(const input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&) = delete; + input_stream_adapter& operator=(input_stream_adapter&&) = delete; + + input_stream_adapter(input_stream_adapter&& rhs) noexcept + : is(rhs.is), sb(rhs.sb) + { + rhs.is = nullptr; + rhs.sb = nullptr; + } + + // std::istream/std::streambuf use std::char_traits::to_int_type, to + // ensure that std::char_traits::eof() and the character 0xFF do not + // end up as the same value, e.g. 0xFFFFFFFF. + std::char_traits::int_type get_character() + { + auto res = sb->sbumpc(); + // set eof manually, as we don't use the istream interface. + if (JSON_HEDLEY_UNLIKELY(res == std::char_traits::eof())) + { + is->clear(is->rdstate() | std::ios::eofbit); + } + return res; + } + + private: + /// the associated input stream + std::istream* is = nullptr; + std::streambuf* sb = nullptr; +}; +#endif // JSON_NO_IO + +// General-purpose iterator-based adapter. It might not be as fast as +// theoretically possible for some containers, but it is extremely versatile. +template +class iterator_input_adapter +{ + public: + using char_type = typename std::iterator_traits::value_type; + + iterator_input_adapter(IteratorType first, IteratorType last) + : current(std::move(first)), end(std::move(last)) + {} + + typename char_traits::int_type get_character() + { + if (JSON_HEDLEY_LIKELY(current != end)) + { + auto result = char_traits::to_int_type(*current); + std::advance(current, 1); + return result; + } + + return char_traits::eof(); + } + + private: + IteratorType current; + IteratorType end; + + template + friend struct wide_string_input_helper; + + bool empty() const + { + return current == end; + } +}; + +template +struct wide_string_input_helper; + +template +struct wide_string_input_helper +{ + // UTF-32 + static void fill_buffer(BaseInputAdapter& input, + std::array::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (JSON_HEDLEY_UNLIKELY(input.empty())) + { + utf8_bytes[0] = std::char_traits::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = input.get_character(); + + // UTF-32 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u) & 0x1Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (wc <= 0xFFFF) + { + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u) & 0x0Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 3; + } + else if (wc <= 0x10FFFF) + { + utf8_bytes[0] = static_cast::int_type>(0xF0u | ((static_cast(wc) >> 18u) & 0x07u)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + // unknown character + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } +}; + +template +struct wide_string_input_helper +{ + // UTF-16 + static void fill_buffer(BaseInputAdapter& input, + std::array::int_type, 4>& utf8_bytes, + size_t& utf8_bytes_index, + size_t& utf8_bytes_filled) + { + utf8_bytes_index = 0; + + if (JSON_HEDLEY_UNLIKELY(input.empty())) + { + utf8_bytes[0] = std::char_traits::eof(); + utf8_bytes_filled = 1; + } + else + { + // get the current character + const auto wc = input.get_character(); + + // UTF-16 to UTF-8 encoding + if (wc < 0x80) + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + else if (wc <= 0x7FF) + { + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 2; + } + else if (0xD800 > wc || wc >= 0xE000) + { + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); + utf8_bytes_filled = 3; + } + else + { + if (JSON_HEDLEY_UNLIKELY(!input.empty())) + { + const auto wc2 = static_cast(input.get_character()); + const auto charcode = 0x10000u + (((static_cast(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); + utf8_bytes[0] = static_cast::int_type>(0xF0u | (charcode >> 18u)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast::int_type>(0x80u | (charcode & 0x3Fu)); + utf8_bytes_filled = 4; + } + else + { + utf8_bytes[0] = static_cast::int_type>(wc); + utf8_bytes_filled = 1; + } + } + } + } +}; + +// Wraps another input adapter to convert wide character types into individual bytes. +template +class wide_string_input_adapter +{ + public: + using char_type = char; + + wide_string_input_adapter(BaseInputAdapter base) + : base_adapter(base) {} + + typename std::char_traits::int_type get_character() noexcept + { + // check if buffer needs to be filled + if (utf8_bytes_index == utf8_bytes_filled) + { + fill_buffer(); + + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index == 0); + } + + // use buffer + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled); + return utf8_bytes[utf8_bytes_index++]; + } + + private: + BaseInputAdapter base_adapter; + + template + void fill_buffer() + { + wide_string_input_helper::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); + } + + /// a buffer for UTF-8 bytes + std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; + + /// index to the utf8_codes array for the next valid byte + std::size_t utf8_bytes_index = 0; + /// number of valid bytes in the utf8_codes array + std::size_t utf8_bytes_filled = 0; +}; + +template +struct iterator_input_adapter_factory +{ + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using adapter_type = iterator_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(std::move(first), std::move(last)); + } +}; + +template +struct is_iterator_of_multibyte +{ + using value_type = typename std::iterator_traits::value_type; + enum + { + value = sizeof(value_type) > 1 + }; +}; + +template +struct iterator_input_adapter_factory::value>> +{ + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using base_adapter_type = iterator_input_adapter; + using adapter_type = wide_string_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(base_adapter_type(std::move(first), std::move(last))); + } +}; + +// General purpose iterator-based input +template +typename iterator_input_adapter_factory::adapter_type input_adapter(IteratorType first, IteratorType last) +{ + using factory_type = iterator_input_adapter_factory; + return factory_type::create(first, last); +} + +// Convenience shorthand from container to iterator +// Enables ADL on begin(container) and end(container) +// Encloses the using declarations in namespace for not to leak them to outside scope + +namespace container_input_adapter_factory_impl +{ + +using std::begin; +using std::end; + +template +struct container_input_adapter_factory {}; + +template +struct container_input_adapter_factory< ContainerType, + void_t()), end(std::declval()))>> + { + using adapter_type = decltype(input_adapter(begin(std::declval()), end(std::declval()))); + + static adapter_type create(const ContainerType& container) +{ + return input_adapter(begin(container), end(container)); +} + }; + +} // namespace container_input_adapter_factory_impl + +template +typename container_input_adapter_factory_impl::container_input_adapter_factory::adapter_type input_adapter(const ContainerType& container) +{ + return container_input_adapter_factory_impl::container_input_adapter_factory::create(container); +} + +#ifndef JSON_NO_IO +// Special cases with fast paths +inline file_input_adapter input_adapter(std::FILE* file) +{ + return file_input_adapter(file); +} + +inline input_stream_adapter input_adapter(std::istream& stream) +{ + return input_stream_adapter(stream); +} + +inline input_stream_adapter input_adapter(std::istream&& stream) +{ + return input_stream_adapter(stream); +} +#endif // JSON_NO_IO + +using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval(), std::declval())); + +// Null-delimited strings, and the like. +template < typename CharT, + typename std::enable_if < + std::is_pointer::value&& + !std::is_array::value&& + std::is_integral::type>::value&& + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > +contiguous_bytes_input_adapter input_adapter(CharT b) +{ + auto length = std::strlen(reinterpret_cast(b)); + const auto* ptr = reinterpret_cast(b); + return input_adapter(ptr, ptr + length); +} + +template +auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N)) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays) +{ + return input_adapter(array, array + N); +} + +// This class only handles inputs of input_buffer_adapter type. +// It's required so that expressions like {ptr, len} can be implicitly cast +// to the correct adapter. +class span_input_adapter +{ + public: + template < typename CharT, + typename std::enable_if < + std::is_pointer::value&& + std::is_integral::type>::value&& + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > + span_input_adapter(CharT b, std::size_t l) + : ia(reinterpret_cast(b), reinterpret_cast(b) + l) {} + + template::iterator_category, std::random_access_iterator_tag>::value, + int>::type = 0> + span_input_adapter(IteratorType first, IteratorType last) + : ia(input_adapter(first, last)) {} + + contiguous_bytes_input_adapter&& get() + { + return std::move(ia); // NOLINT(hicpp-move-const-arg,performance-move-const-arg) + } + + private: + contiguous_bytes_input_adapter ia; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/json_sax.hpp b/include/nlohmann/detail/input/json_sax.hpp new file mode 100644 index 0000000..90583d6 --- /dev/null +++ b/include/nlohmann/detail/input/json_sax.hpp @@ -0,0 +1,727 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include // string +#include // move +#include // vector + +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +/*! +@brief SAX interface + +This class describes the SAX interface used by @ref nlohmann::json::sax_parse. +Each function is called in different situations while the input is parsed. The +boolean return value informs the parser whether to continue processing the +input. +*/ +template +struct json_sax +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + /*! + @brief a null value was read + @return whether parsing should proceed + */ + virtual bool null() = 0; + + /*! + @brief a boolean value was read + @param[in] val boolean value + @return whether parsing should proceed + */ + virtual bool boolean(bool val) = 0; + + /*! + @brief an integer number was read + @param[in] val integer value + @return whether parsing should proceed + */ + virtual bool number_integer(number_integer_t val) = 0; + + /*! + @brief an unsigned integer number was read + @param[in] val unsigned integer value + @return whether parsing should proceed + */ + virtual bool number_unsigned(number_unsigned_t val) = 0; + + /*! + @brief a floating-point number was read + @param[in] val floating-point value + @param[in] s raw token value + @return whether parsing should proceed + */ + virtual bool number_float(number_float_t val, const string_t& s) = 0; + + /*! + @brief a string value was read + @param[in] val string value + @return whether parsing should proceed + @note It is safe to move the passed string value. + */ + virtual bool string(string_t& val) = 0; + + /*! + @brief a binary value was read + @param[in] val binary value + @return whether parsing should proceed + @note It is safe to move the passed binary value. + */ + virtual bool binary(binary_t& val) = 0; + + /*! + @brief the beginning of an object was read + @param[in] elements number of object elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_object(std::size_t elements) = 0; + + /*! + @brief an object key was read + @param[in] val object key + @return whether parsing should proceed + @note It is safe to move the passed string. + */ + virtual bool key(string_t& val) = 0; + + /*! + @brief the end of an object was read + @return whether parsing should proceed + */ + virtual bool end_object() = 0; + + /*! + @brief the beginning of an array was read + @param[in] elements number of array elements or -1 if unknown + @return whether parsing should proceed + @note binary formats may report the number of elements + */ + virtual bool start_array(std::size_t elements) = 0; + + /*! + @brief the end of an array was read + @return whether parsing should proceed + */ + virtual bool end_array() = 0; + + /*! + @brief a parse error occurred + @param[in] position the position in the input where the error occurs + @param[in] last_token the last read token + @param[in] ex an exception object describing the error + @return whether parsing should proceed (must return false) + */ + virtual bool parse_error(std::size_t position, + const std::string& last_token, + const detail::exception& ex) = 0; + + json_sax() = default; + json_sax(const json_sax&) = default; + json_sax(json_sax&&) noexcept = default; + json_sax& operator=(const json_sax&) = default; + json_sax& operator=(json_sax&&) noexcept = default; + virtual ~json_sax() = default; +}; + +namespace detail +{ +/*! +@brief SAX implementation to create a JSON value from SAX events + +This class implements the @ref json_sax interface and processes the SAX events +to create a JSON value which makes it basically a DOM parser. The structure or +hierarchy of the JSON value is managed by the stack `ref_stack` which contains +a pointer to the respective array or object for each recursion depth. + +After successful parsing, the value that is passed by reference to the +constructor contains the parsed value. + +@tparam BasicJsonType the JSON type +*/ +template +class json_sax_dom_parser +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + /*! + @param[in,out] r reference to a JSON value that is manipulated while + parsing + @param[in] allow_exceptions_ whether parse errors yield exceptions + */ + explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_exceptions_ = true) + : root(r), allow_exceptions(allow_exceptions_) + {} + + // make class move-only + json_sax_dom_parser(const json_sax_dom_parser&) = delete; + json_sax_dom_parser(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete; + json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~json_sax_dom_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + + bool start_object(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); + + if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); + } + + return true; + } + + bool key(string_t& val) + { + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(ref_stack.back()->is_object()); + + // add null at given key and store the reference for later + object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val)); + return true; + } + + bool end_object() + { + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(ref_stack.back()->is_object()); + + ref_stack.back()->set_parents(); + ref_stack.pop_back(); + return true; + } + + bool start_array(std::size_t len) + { + ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); + + if (JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); + } + + return true; + } + + bool end_array() + { + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(ref_stack.back()->is_array()); + + ref_stack.back()->set_parents(); + ref_stack.pop_back(); + return true; + } + + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const Exception& ex) + { + errored = true; + static_cast(ex); + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + */ + template + JSON_HEDLEY_RETURNS_NON_NULL + BasicJsonType* handle_value(Value&& v) + { + if (ref_stack.empty()) + { + root = BasicJsonType(std::forward(v)); + return &root; + } + + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); + + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_data.m_value.array->emplace_back(std::forward(v)); + return &(ref_stack.back()->m_data.m_value.array->back()); + } + + JSON_ASSERT(ref_stack.back()->is_object()); + JSON_ASSERT(object_element); + *object_element = BasicJsonType(std::forward(v)); + return object_element; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector ref_stack {}; + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; + +template +class json_sax_dom_callback_parser +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using parser_callback_t = typename BasicJsonType::parser_callback_t; + using parse_event_t = typename BasicJsonType::parse_event_t; + + json_sax_dom_callback_parser(BasicJsonType& r, + const parser_callback_t cb, + const bool allow_exceptions_ = true) + : root(r), callback(cb), allow_exceptions(allow_exceptions_) + { + keep_stack.push_back(true); + } + + // make class move-only + json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + json_sax_dom_callback_parser& operator=(const json_sax_dom_callback_parser&) = delete; + json_sax_dom_callback_parser& operator=(json_sax_dom_callback_parser&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~json_sax_dom_callback_parser() = default; + + bool null() + { + handle_value(nullptr); + return true; + } + + bool boolean(bool val) + { + handle_value(val); + return true; + } + + bool number_integer(number_integer_t val) + { + handle_value(val); + return true; + } + + bool number_unsigned(number_unsigned_t val) + { + handle_value(val); + return true; + } + + bool number_float(number_float_t val, const string_t& /*unused*/) + { + handle_value(val); + return true; + } + + bool string(string_t& val) + { + handle_value(val); + return true; + } + + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + + bool start_object(std::size_t len) + { + // check callback for object start + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::object_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::object, true); + ref_stack.push_back(val.second); + + // check object limit + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, concat("excessive object size: ", std::to_string(len)), ref_stack.back())); + } + + return true; + } + + bool key(string_t& val) + { + BasicJsonType k = BasicJsonType(val); + + // check callback for key + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::key, k); + key_keep_stack.push_back(keep); + + // add discarded value at given key and store the reference for later + if (keep && ref_stack.back()) + { + object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val) = discarded); + } + + return true; + } + + bool end_object() + { + if (ref_stack.back()) + { + if (!callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) + { + // discard object + *ref_stack.back() = discarded; + } + else + { + ref_stack.back()->set_parents(); + } + } + + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured()) + { + // remove discarded value + for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) + { + if (it->is_discarded()) + { + ref_stack.back()->erase(it); + break; + } + } + } + + return true; + } + + bool start_array(std::size_t len) + { + const bool keep = callback(static_cast(ref_stack.size()), parse_event_t::array_start, discarded); + keep_stack.push_back(keep); + + auto val = handle_value(BasicJsonType::value_t::array, true); + ref_stack.push_back(val.second); + + // check array limit + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != static_cast(-1) && len > ref_stack.back()->max_size())) + { + JSON_THROW(out_of_range::create(408, concat("excessive array size: ", std::to_string(len)), ref_stack.back())); + } + + return true; + } + + bool end_array() + { + bool keep = true; + + if (ref_stack.back()) + { + keep = callback(static_cast(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); + if (keep) + { + ref_stack.back()->set_parents(); + } + else + { + // discard array + *ref_stack.back() = discarded; + } + } + + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); + ref_stack.pop_back(); + keep_stack.pop_back(); + + // remove discarded value + if (!keep && !ref_stack.empty() && ref_stack.back()->is_array()) + { + ref_stack.back()->m_data.m_value.array->pop_back(); + } + + return true; + } + + template + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, + const Exception& ex) + { + errored = true; + static_cast(ex); + if (allow_exceptions) + { + JSON_THROW(ex); + } + return false; + } + + constexpr bool is_errored() const + { + return errored; + } + + private: + /*! + @param[in] v value to add to the JSON value we build during parsing + @param[in] skip_callback whether we should skip calling the callback + function; this is required after start_array() and + start_object() SAX events, because otherwise we would call the + callback function with an empty array or object, respectively. + + @invariant If the ref stack is empty, then the passed value will be the new + root. + @invariant If the ref stack contains a value, then it is an array or an + object to which we can add elements + + @return pair of boolean (whether value should be kept) and pointer (to the + passed value in the ref_stack hierarchy; nullptr if not kept) + */ + template + std::pair handle_value(Value&& v, const bool skip_callback = false) + { + JSON_ASSERT(!keep_stack.empty()); + + // do not handle this value if we know it would be added to a discarded + // container + if (!keep_stack.back()) + { + return {false, nullptr}; + } + + // create value + auto value = BasicJsonType(std::forward(v)); + + // check callback + const bool keep = skip_callback || callback(static_cast(ref_stack.size()), parse_event_t::value, value); + + // do not handle this value if we just learnt it shall be discarded + if (!keep) + { + return {false, nullptr}; + } + + if (ref_stack.empty()) + { + root = std::move(value); + return {true, & root}; + } + + // skip this value if we already decided to skip the parent + // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) + if (!ref_stack.back()) + { + return {false, nullptr}; + } + + // we now only expect arrays and objects + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); + + // array + if (ref_stack.back()->is_array()) + { + ref_stack.back()->m_data.m_value.array->emplace_back(std::move(value)); + return {true, & (ref_stack.back()->m_data.m_value.array->back())}; + } + + // object + JSON_ASSERT(ref_stack.back()->is_object()); + // check if we should store an element for the current key + JSON_ASSERT(!key_keep_stack.empty()); + const bool store_element = key_keep_stack.back(); + key_keep_stack.pop_back(); + + if (!store_element) + { + return {false, nullptr}; + } + + JSON_ASSERT(object_element); + *object_element = std::move(value); + return {true, object_element}; + } + + /// the parsed JSON value + BasicJsonType& root; + /// stack to model hierarchy of values + std::vector ref_stack {}; + /// stack to manage which values to keep + std::vector keep_stack {}; // NOLINT(readability-redundant-member-init) + /// stack to manage which object keys to keep + std::vector key_keep_stack {}; // NOLINT(readability-redundant-member-init) + /// helper to hold the reference for the next object element + BasicJsonType* object_element = nullptr; + /// whether a syntax error occurred + bool errored = false; + /// callback function + const parser_callback_t callback = nullptr; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; + /// a discarded value for the callback + BasicJsonType discarded = BasicJsonType::value_t::discarded; +}; + +template +class json_sax_acceptor +{ + public: + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + + bool null() + { + return true; + } + + bool boolean(bool /*unused*/) + { + return true; + } + + bool number_integer(number_integer_t /*unused*/) + { + return true; + } + + bool number_unsigned(number_unsigned_t /*unused*/) + { + return true; + } + + bool number_float(number_float_t /*unused*/, const string_t& /*unused*/) + { + return true; + } + + bool string(string_t& /*unused*/) + { + return true; + } + + bool binary(binary_t& /*unused*/) + { + return true; + } + + bool start_object(std::size_t /*unused*/ = static_cast(-1)) + { + return true; + } + + bool key(string_t& /*unused*/) + { + return true; + } + + bool end_object() + { + return true; + } + + bool start_array(std::size_t /*unused*/ = static_cast(-1)) + { + return true; + } + + bool end_array() + { + return true; + } + + bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, const detail::exception& /*unused*/) + { + return false; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/lexer.hpp b/include/nlohmann/detail/input/lexer.hpp new file mode 100644 index 0000000..4b3bf77 --- /dev/null +++ b/include/nlohmann/detail/input/lexer.hpp @@ -0,0 +1,1633 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // array +#include // localeconv +#include // size_t +#include // snprintf +#include // strtof, strtod, strtold, strtoll, strtoull +#include // initializer_list +#include // char_traits, string +#include // move +#include // vector + +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////// +// lexer // +/////////// + +template +class lexer_base +{ + public: + /// token types for the parser + enum class token_type + { + uninitialized, ///< indicating the scanner is uninitialized + literal_true, ///< the `true` literal + literal_false, ///< the `false` literal + literal_null, ///< the `null` literal + value_string, ///< a string -- use get_string() for actual value + value_unsigned, ///< an unsigned integer -- use get_number_unsigned() for actual value + value_integer, ///< a signed integer -- use get_number_integer() for actual value + value_float, ///< an floating point number -- use get_number_float() for actual value + begin_array, ///< the character for array begin `[` + begin_object, ///< the character for object begin `{` + end_array, ///< the character for array end `]` + end_object, ///< the character for object end `}` + name_separator, ///< the name separator `:` + value_separator, ///< the value separator `,` + parse_error, ///< indicating a parse error + end_of_input, ///< indicating the end of the input buffer + literal_or_value ///< a literal or the begin of a value (only for diagnostics) + }; + + /// return name of values of type token_type (only used for errors) + JSON_HEDLEY_RETURNS_NON_NULL + JSON_HEDLEY_CONST + static const char* token_type_name(const token_type t) noexcept + { + switch (t) + { + case token_type::uninitialized: + return ""; + case token_type::literal_true: + return "true literal"; + case token_type::literal_false: + return "false literal"; + case token_type::literal_null: + return "null literal"; + case token_type::value_string: + return "string literal"; + case token_type::value_unsigned: + case token_type::value_integer: + case token_type::value_float: + return "number literal"; + case token_type::begin_array: + return "'['"; + case token_type::begin_object: + return "'{'"; + case token_type::end_array: + return "']'"; + case token_type::end_object: + return "'}'"; + case token_type::name_separator: + return "':'"; + case token_type::value_separator: + return "','"; + case token_type::parse_error: + return ""; + case token_type::end_of_input: + return "end of input"; + case token_type::literal_or_value: + return "'[', '{', or a literal"; + // LCOV_EXCL_START + default: // catch non-enum values + return "unknown token"; + // LCOV_EXCL_STOP + } + } +}; +/*! +@brief lexical analysis + +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer : public lexer_base +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename char_traits::int_type; + + public: + using token_type = typename lexer_base::token_type; + + explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false) noexcept + : ia(std::move(adapter)) + , ignore_comments(ignore_comments_) + , decimal_point_char(static_cast(get_decimal_point())) + {} + + // delete because of pointer members + lexer(const lexer&) = delete; + lexer(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + lexer& operator=(lexer&) = delete; + lexer& operator=(lexer&&) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor) + ~lexer() = default; + + private: + ///////////////////// + // locales + ///////////////////// + + /// return the locale-dependent decimal point + JSON_HEDLEY_PURE + static char get_decimal_point() noexcept + { + const auto* loc = localeconv(); + JSON_ASSERT(loc != nullptr); + return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); + } + + ///////////////////// + // scan functions + ///////////////////// + + /*! + @brief get codepoint from 4 hex characters following `\u` + + For input "\u c1 c2 c3 c4" the codepoint is: + (c1 * 0x1000) + (c2 * 0x0100) + (c3 * 0x0010) + c4 + = (c1 << 12) + (c2 << 8) + (c3 << 4) + (c4 << 0) + + Furthermore, the possible characters '0'..'9', 'A'..'F', and 'a'..'f' + must be converted to the integers 0x0..0x9, 0xA..0xF, 0xA..0xF, resp. The + conversion is done by subtracting the offset (0x30, 0x37, and 0x57) + between the ASCII value of the character and the desired integer value. + + @return codepoint (0x0000..0xFFFF) or -1 in case of an error (e.g. EOF or + non-hex character) + */ + int get_codepoint() + { + // this function only makes sense after reading `\u` + JSON_ASSERT(current == 'u'); + int codepoint = 0; + + const auto factors = { 12u, 8u, 4u, 0u }; + for (const auto factor : factors) + { + get(); + + if (current >= '0' && current <= '9') + { + codepoint += static_cast((static_cast(current) - 0x30u) << factor); + } + else if (current >= 'A' && current <= 'F') + { + codepoint += static_cast((static_cast(current) - 0x37u) << factor); + } + else if (current >= 'a' && current <= 'f') + { + codepoint += static_cast((static_cast(current) - 0x57u) << factor); + } + else + { + return -1; + } + } + + JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF); + return codepoint; + } + + /*! + @brief check if the next byte(s) are inside a given range + + Adds the current byte and, for each passed range, reads a new byte and + checks if it is inside the range. If a violation was detected, set up an + error message and return false. Otherwise, return true. + + @param[in] ranges list of integers; interpreted as list of pairs of + inclusive lower and upper bound, respectively + + @pre The passed list @a ranges must have 2, 4, or 6 elements; that is, + 1, 2, or 3 pairs. This precondition is enforced by an assertion. + + @return true if and only if no range violation was detected + */ + bool next_byte_in_range(std::initializer_list ranges) + { + JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6); + add(current); + + for (auto range = ranges.begin(); range != ranges.end(); ++range) + { + get(); + if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) // NOLINT(bugprone-inc-dec-in-conditions) + { + add(current); + } + else + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return false; + } + } + + return true; + } + + /*! + @brief scan a string literal + + This function scans a string according to Sect. 7 of RFC 8259. While + scanning, bytes are escaped and copied into buffer token_buffer. Then the + function returns successfully, token_buffer is *not* null-terminated (as it + may contain \0 bytes), and token_buffer.size() is the number of bytes in the + string. + + @return token_type::value_string if string could be successfully scanned, + token_type::parse_error otherwise + + @note In case of errors, variable error_message contains a textual + description. + */ + token_type scan_string() + { + // reset token_buffer (ignore opening quote) + reset(); + + // we entered the function by reading an open quote + JSON_ASSERT(current == '\"'); + + while (true) + { + // get next character + switch (get()) + { + // end of file while parsing string + case char_traits::eof(): + { + error_message = "invalid string: missing closing quote"; + return token_type::parse_error; + } + + // closing quote + case '\"': + { + return token_type::value_string; + } + + // escapes + case '\\': + { + switch (get()) + { + // quotation mark + case '\"': + add('\"'); + break; + // reverse solidus + case '\\': + add('\\'); + break; + // solidus + case '/': + add('/'); + break; + // backspace + case 'b': + add('\b'); + break; + // form feed + case 'f': + add('\f'); + break; + // line feed + case 'n': + add('\n'); + break; + // carriage return + case 'r': + add('\r'); + break; + // tab + case 't': + add('\t'); + break; + + // unicode escapes + case 'u': + { + const int codepoint1 = get_codepoint(); + int codepoint = codepoint1; // start with codepoint1 + + if (JSON_HEDLEY_UNLIKELY(codepoint1 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if code point is a high surrogate + if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF) + { + // expect next \uxxxx entry + if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u')) + { + const int codepoint2 = get_codepoint(); + + if (JSON_HEDLEY_UNLIKELY(codepoint2 == -1)) + { + error_message = "invalid string: '\\u' must be followed by 4 hex digits"; + return token_type::parse_error; + } + + // check if codepoint2 is a low surrogate + if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF)) + { + // overwrite codepoint + codepoint = static_cast( + // high surrogate occupies the most significant 22 bits + (static_cast(codepoint1) << 10u) + // low surrogate occupies the least significant 15 bits + + static_cast(codepoint2) + // there is still the 0xD800, 0xDC00 and 0x10000 noise + // in the result, so we have to subtract with: + // (0xD800 << 10) + DC00 - 0x10000 = 0x35FDC00 + - 0x35FDC00u); + } + else + { + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; + return token_type::parse_error; + } + } + else + { + if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF)) + { + error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; + return token_type::parse_error; + } + } + + // result of the above calculation yields a proper codepoint + JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF); + + // translate codepoint into bytes + if (codepoint < 0x80) + { + // 1-byte characters: 0xxxxxxx (ASCII) + add(static_cast(codepoint)); + } + else if (codepoint <= 0x7FF) + { + // 2-byte characters: 110xxxxx 10xxxxxx + add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + else if (codepoint <= 0xFFFF) + { + // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx + add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + else + { + // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + } + + break; + } + + // other characters after escape + default: + error_message = "invalid string: forbidden character after backslash"; + return token_type::parse_error; + } + + break; + } + + // invalid control characters + case 0x00: + { + error_message = "invalid string: control character U+0000 (NUL) must be escaped to \\u0000"; + return token_type::parse_error; + } + + case 0x01: + { + error_message = "invalid string: control character U+0001 (SOH) must be escaped to \\u0001"; + return token_type::parse_error; + } + + case 0x02: + { + error_message = "invalid string: control character U+0002 (STX) must be escaped to \\u0002"; + return token_type::parse_error; + } + + case 0x03: + { + error_message = "invalid string: control character U+0003 (ETX) must be escaped to \\u0003"; + return token_type::parse_error; + } + + case 0x04: + { + error_message = "invalid string: control character U+0004 (EOT) must be escaped to \\u0004"; + return token_type::parse_error; + } + + case 0x05: + { + error_message = "invalid string: control character U+0005 (ENQ) must be escaped to \\u0005"; + return token_type::parse_error; + } + + case 0x06: + { + error_message = "invalid string: control character U+0006 (ACK) must be escaped to \\u0006"; + return token_type::parse_error; + } + + case 0x07: + { + error_message = "invalid string: control character U+0007 (BEL) must be escaped to \\u0007"; + return token_type::parse_error; + } + + case 0x08: + { + error_message = "invalid string: control character U+0008 (BS) must be escaped to \\u0008 or \\b"; + return token_type::parse_error; + } + + case 0x09: + { + error_message = "invalid string: control character U+0009 (HT) must be escaped to \\u0009 or \\t"; + return token_type::parse_error; + } + + case 0x0A: + { + error_message = "invalid string: control character U+000A (LF) must be escaped to \\u000A or \\n"; + return token_type::parse_error; + } + + case 0x0B: + { + error_message = "invalid string: control character U+000B (VT) must be escaped to \\u000B"; + return token_type::parse_error; + } + + case 0x0C: + { + error_message = "invalid string: control character U+000C (FF) must be escaped to \\u000C or \\f"; + return token_type::parse_error; + } + + case 0x0D: + { + error_message = "invalid string: control character U+000D (CR) must be escaped to \\u000D or \\r"; + return token_type::parse_error; + } + + case 0x0E: + { + error_message = "invalid string: control character U+000E (SO) must be escaped to \\u000E"; + return token_type::parse_error; + } + + case 0x0F: + { + error_message = "invalid string: control character U+000F (SI) must be escaped to \\u000F"; + return token_type::parse_error; + } + + case 0x10: + { + error_message = "invalid string: control character U+0010 (DLE) must be escaped to \\u0010"; + return token_type::parse_error; + } + + case 0x11: + { + error_message = "invalid string: control character U+0011 (DC1) must be escaped to \\u0011"; + return token_type::parse_error; + } + + case 0x12: + { + error_message = "invalid string: control character U+0012 (DC2) must be escaped to \\u0012"; + return token_type::parse_error; + } + + case 0x13: + { + error_message = "invalid string: control character U+0013 (DC3) must be escaped to \\u0013"; + return token_type::parse_error; + } + + case 0x14: + { + error_message = "invalid string: control character U+0014 (DC4) must be escaped to \\u0014"; + return token_type::parse_error; + } + + case 0x15: + { + error_message = "invalid string: control character U+0015 (NAK) must be escaped to \\u0015"; + return token_type::parse_error; + } + + case 0x16: + { + error_message = "invalid string: control character U+0016 (SYN) must be escaped to \\u0016"; + return token_type::parse_error; + } + + case 0x17: + { + error_message = "invalid string: control character U+0017 (ETB) must be escaped to \\u0017"; + return token_type::parse_error; + } + + case 0x18: + { + error_message = "invalid string: control character U+0018 (CAN) must be escaped to \\u0018"; + return token_type::parse_error; + } + + case 0x19: + { + error_message = "invalid string: control character U+0019 (EM) must be escaped to \\u0019"; + return token_type::parse_error; + } + + case 0x1A: + { + error_message = "invalid string: control character U+001A (SUB) must be escaped to \\u001A"; + return token_type::parse_error; + } + + case 0x1B: + { + error_message = "invalid string: control character U+001B (ESC) must be escaped to \\u001B"; + return token_type::parse_error; + } + + case 0x1C: + { + error_message = "invalid string: control character U+001C (FS) must be escaped to \\u001C"; + return token_type::parse_error; + } + + case 0x1D: + { + error_message = "invalid string: control character U+001D (GS) must be escaped to \\u001D"; + return token_type::parse_error; + } + + case 0x1E: + { + error_message = "invalid string: control character U+001E (RS) must be escaped to \\u001E"; + return token_type::parse_error; + } + + case 0x1F: + { + error_message = "invalid string: control character U+001F (US) must be escaped to \\u001F"; + return token_type::parse_error; + } + + // U+0020..U+007F (except U+0022 (quote) and U+005C (backspace)) + case 0x20: + case 0x21: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x2F: + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3C: + case 0x3D: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: + case 0x59: + case 0x5A: + case 0x5B: + case 0x5D: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + case 0x7D: + case 0x7E: + case 0x7F: + { + add(current); + break; + } + + // U+0080..U+07FF: bytes C2..DF 80..BF + case 0xC2: + case 0xC3: + case 0xC4: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD5: + case 0xD6: + case 0xD7: + case 0xD8: + case 0xD9: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + { + if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) + { + return token_type::parse_error; + } + break; + } + + // U+0800..U+0FFF: bytes E0 A0..BF 80..BF + case 0xE0: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+1000..U+CFFF: bytes E1..EC 80..BF 80..BF + // U+E000..U+FFFF: bytes EE..EF 80..BF 80..BF + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xEE: + case 0xEF: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+D000..U+D7FF: bytes ED 80..9F 80..BF + case 0xED: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF + case 0xF0: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + case 0xF1: + case 0xF2: + case 0xF3: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + case 0xF4: + { + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + { + return token_type::parse_error; + } + break; + } + + // remaining bytes (80..C1 and F5..FF) are ill-formed + default: + { + error_message = "invalid string: ill-formed UTF-8 byte"; + return token_type::parse_error; + } + } + } + } + + /*! + * @brief scan a comment + * @return whether comment could be scanned successfully + */ + bool scan_comment() + { + switch (get()) + { + // single-line comments skip input until a newline or EOF is read + case '/': + { + while (true) + { + switch (get()) + { + case '\n': + case '\r': + case char_traits::eof(): + case '\0': + return true; + + default: + break; + } + } + } + + // multi-line comments skip input until */ is read + case '*': + { + while (true) + { + switch (get()) + { + case char_traits::eof(): + case '\0': + { + error_message = "invalid comment; missing closing '*/'"; + return false; + } + + case '*': + { + switch (get()) + { + case '/': + return true; + + default: + { + unget(); + continue; + } + } + } + + default: + continue; + } + } + } + + // unexpected character after reading '/' + default: + { + error_message = "invalid comment; expecting '/' or '*' after '/'"; + return false; + } + } + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(float& f, const char* str, char** endptr) noexcept + { + f = std::strtof(str, endptr); + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(double& f, const char* str, char** endptr) noexcept + { + f = std::strtod(str, endptr); + } + + JSON_HEDLEY_NON_NULL(2) + static void strtof(long double& f, const char* str, char** endptr) noexcept + { + f = std::strtold(str, endptr); + } + + /*! + @brief scan a number literal + + This function scans a string according to Sect. 6 of RFC 8259. + + The function is realized with a deterministic finite state machine derived + from the grammar described in RFC 8259. Starting in state "init", the + input is read and used to determined the next state. Only state "done" + accepts the number. State "error" is a trap state to model errors. In the + table below, "anything" means any character but the ones listed before. + + state | 0 | 1-9 | e E | + | - | . | anything + ---------|----------|----------|----------|---------|---------|----------|----------- + init | zero | any1 | [error] | [error] | minus | [error] | [error] + minus | zero | any1 | [error] | [error] | [error] | [error] | [error] + zero | done | done | exponent | done | done | decimal1 | done + any1 | any1 | any1 | exponent | done | done | decimal1 | done + decimal1 | decimal2 | decimal2 | [error] | [error] | [error] | [error] | [error] + decimal2 | decimal2 | decimal2 | exponent | done | done | done | done + exponent | any2 | any2 | [error] | sign | sign | [error] | [error] + sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] + any2 | any2 | any2 | done | done | done | done | done + + The state machine is realized with one label per state (prefixed with + "scan_number_") and `goto` statements between them. The state machine + contains cycles, but any cycle can be left when EOF is read. Therefore, + the function is guaranteed to terminate. + + During scanning, the read bytes are stored in token_buffer. This string is + then converted to a signed integer, an unsigned integer, or a + floating-point number. + + @return token_type::value_unsigned, token_type::value_integer, or + token_type::value_float if number could be successfully scanned, + token_type::parse_error otherwise + + @note The scanner is independent of the current locale. Internally, the + locale's decimal point is used instead of `.` to work with the + locale-dependent converters. + */ + token_type scan_number() // lgtm [cpp/use-of-goto] + { + // reset token_buffer to store the number's bytes + reset(); + + // the type of the parsed number; initially set to unsigned; will be + // changed if minus sign, decimal point or exponent is read + token_type number_type = token_type::value_unsigned; + + // state (init): we just found out we need to scan a number + switch (current) + { + case '-': + { + add(current); + goto scan_number_minus; + } + + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + // all other characters are rejected outside scan_number() + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE + } + +scan_number_minus: + // state: we just parsed a leading minus sign + number_type = token_type::value_integer; + switch (get()) + { + case '0': + { + add(current); + goto scan_number_zero; + } + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + default: + { + error_message = "invalid number; expected digit after '-'"; + return token_type::parse_error; + } + } + +scan_number_zero: + // state: we just parse a zero (maybe with a leading minus sign) + switch (get()) + { + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_any1: + // state: we just parsed a number 0-9 (maybe with a leading minus sign) + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any1; + } + + case '.': + { + add(decimal_point_char); + goto scan_number_decimal1; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_decimal1: + // state: we just parsed a decimal point + number_type = token_type::value_float; + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + default: + { + error_message = "invalid number; expected digit after '.'"; + return token_type::parse_error; + } + } + +scan_number_decimal2: + // we just parsed at least one number after a decimal point + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_decimal2; + } + + case 'e': + case 'E': + { + add(current); + goto scan_number_exponent; + } + + default: + goto scan_number_done; + } + +scan_number_exponent: + // we just parsed an exponent + number_type = token_type::value_float; + switch (get()) + { + case '+': + case '-': + { + add(current); + goto scan_number_sign; + } + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = + "invalid number; expected '+', '-', or digit after exponent"; + return token_type::parse_error; + } + } + +scan_number_sign: + // we just parsed an exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + { + error_message = "invalid number; expected digit after exponent sign"; + return token_type::parse_error; + } + } + +scan_number_any2: + // we just parsed a number after the exponent or exponent sign + switch (get()) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + { + add(current); + goto scan_number_any2; + } + + default: + goto scan_number_done; + } + +scan_number_done: + // unget the character after the number (we only read it to know that + // we are done scanning a number) + unget(); + + char* endptr = nullptr; // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + errno = 0; + + // try to parse integers first and fall back to floats + if (number_type == token_type::value_unsigned) + { + const auto x = std::strtoull(token_buffer.data(), &endptr, 10); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_unsigned = static_cast(x); + if (value_unsigned == x) + { + return token_type::value_unsigned; + } + } + } + else if (number_type == token_type::value_integer) + { + const auto x = std::strtoll(token_buffer.data(), &endptr, 10); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + if (errno == 0) + { + value_integer = static_cast(x); + if (value_integer == x) + { + return token_type::value_integer; + } + } + } + + // this code is reached if we parse a floating-point number or if an + // integer conversion above failed + strtof(value_float, token_buffer.data(), &endptr); + + // we checked the number format before + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); + + return token_type::value_float; + } + + /*! + @param[in] literal_text the literal text to expect + @param[in] length the length of the passed literal text + @param[in] return_type the token type to return on success + */ + JSON_HEDLEY_NON_NULL(2) + token_type scan_literal(const char_type* literal_text, const std::size_t length, + token_type return_type) + { + JSON_ASSERT(char_traits::to_char_type(current) == literal_text[0]); + for (std::size_t i = 1; i < length; ++i) + { + if (JSON_HEDLEY_UNLIKELY(char_traits::to_char_type(get()) != literal_text[i])) + { + error_message = "invalid literal"; + return token_type::parse_error; + } + } + return return_type; + } + + ///////////////////// + // input management + ///////////////////// + + /// reset token_buffer; current character is beginning of token + void reset() noexcept + { + token_buffer.clear(); + token_string.clear(); + token_string.push_back(char_traits::to_char_type(current)); + } + + /* + @brief get next character from the input + + This function provides the interface to the used input adapter. It does + not throw in case the input reached EOF, but returns a + `char_traits::eof()` in that case. Stores the scanned characters + for use in error messages. + + @return character read from the input + */ + char_int_type get() + { + ++position.chars_read_total; + ++position.chars_read_current_line; + + if (next_unget) + { + // just reset the next_unget variable and work with current + next_unget = false; + } + else + { + current = ia.get_character(); + } + + if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) + { + token_string.push_back(char_traits::to_char_type(current)); + } + + if (current == '\n') + { + ++position.lines_read; + position.chars_read_current_line = 0; + } + + return current; + } + + /*! + @brief unget current character (read it again on next get) + + We implement unget by setting variable next_unget to true. The input is not + changed - we just simulate ungetting by modifying chars_read_total, + chars_read_current_line, and token_string. The next call to get() will + behave as if the unget character is read again. + */ + void unget() + { + next_unget = true; + + --position.chars_read_total; + + // in case we "unget" a newline, we have to also decrement the lines_read + if (position.chars_read_current_line == 0) + { + if (position.lines_read > 0) + { + --position.lines_read; + } + } + else + { + --position.chars_read_current_line; + } + + if (JSON_HEDLEY_LIKELY(current != char_traits::eof())) + { + JSON_ASSERT(!token_string.empty()); + token_string.pop_back(); + } + } + + /// add a character to token_buffer + void add(char_int_type c) + { + token_buffer.push_back(static_cast(c)); + } + + public: + ///////////////////// + // value getters + ///////////////////// + + /// return integer value + constexpr number_integer_t get_number_integer() const noexcept + { + return value_integer; + } + + /// return unsigned integer value + constexpr number_unsigned_t get_number_unsigned() const noexcept + { + return value_unsigned; + } + + /// return floating-point value + constexpr number_float_t get_number_float() const noexcept + { + return value_float; + } + + /// return current string value (implicitly resets the token; useful only once) + string_t& get_string() + { + return token_buffer; + } + + ///////////////////// + // diagnostics + ///////////////////// + + /// return position of last read token + constexpr position_t get_position() const noexcept + { + return position; + } + + /// return the last read token (for errors only). Will never contain EOF + /// (an arbitrary value that is not a valid char value, often -1), because + /// 255 may legitimately occur. May contain NUL, which should be escaped. + std::string get_token_string() const + { + // escape control characters + std::string result; + for (const auto c : token_string) + { + if (static_cast(c) <= '\x1F') + { + // escape control characters + std::array cs{{}}; + static_cast((std::snprintf)(cs.data(), cs.size(), "", static_cast(c))); // NOLINT(cppcoreguidelines-pro-type-vararg,hicpp-vararg) + result += cs.data(); + } + else + { + // add character as is + result.push_back(static_cast(c)); + } + } + + return result; + } + + /// return syntax error message + JSON_HEDLEY_RETURNS_NON_NULL + constexpr const char* get_error_message() const noexcept + { + return error_message; + } + + ///////////////////// + // actual scanner + ///////////////////// + + /*! + @brief skip the UTF-8 byte order mark + @return true iff there is no BOM or the correct BOM has been skipped + */ + bool skip_bom() + { + if (get() == 0xEF) + { + // check if we completely parse the BOM + return get() == 0xBB && get() == 0xBF; + } + + // the first character is not the beginning of the BOM; unget it to + // process is later + unget(); + return true; + } + + void skip_whitespace() + { + do + { + get(); + } + while (current == ' ' || current == '\t' || current == '\n' || current == '\r'); + } + + token_type scan() + { + // initially, skip the BOM + if (position.chars_read_total == 0 && !skip_bom()) + { + error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; + return token_type::parse_error; + } + + // read next character and ignore whitespace + skip_whitespace(); + + // ignore comments + while (ignore_comments && current == '/') + { + if (!scan_comment()) + { + return token_type::parse_error; + } + + // skip following whitespace + skip_whitespace(); + } + + switch (current) + { + // structural characters + case '[': + return token_type::begin_array; + case ']': + return token_type::end_array; + case '{': + return token_type::begin_object; + case '}': + return token_type::end_object; + case ':': + return token_type::name_separator; + case ',': + return token_type::value_separator; + + // literals + case 't': + { + std::array true_literal = {{static_cast('t'), static_cast('r'), static_cast('u'), static_cast('e')}}; + return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); + } + case 'f': + { + std::array false_literal = {{static_cast('f'), static_cast('a'), static_cast('l'), static_cast('s'), static_cast('e')}}; + return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); + } + case 'n': + { + std::array null_literal = {{static_cast('n'), static_cast('u'), static_cast('l'), static_cast('l')}}; + return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); + } + + // string + case '\"': + return scan_string(); + + // number + case '-': + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + return scan_number(); + + // end of input (the null byte is needed when parsing from + // string literals) + case '\0': + case char_traits::eof(): + return token_type::end_of_input; + + // error + default: + error_message = "invalid literal"; + return token_type::parse_error; + } + } + + private: + /// input adapter + InputAdapterType ia; + + /// whether comments should be ignored (true) or signaled as errors (false) + const bool ignore_comments = false; + + /// the current character + char_int_type current = char_traits::eof(); + + /// whether the next get() call should just return current + bool next_unget = false; + + /// the start position of the current token + position_t position {}; + + /// raw input token string (for error messages) + std::vector token_string {}; + + /// buffer for variable-length tokens (numbers, strings) + string_t token_buffer {}; + + /// a description of occurred lexer errors + const char* error_message = ""; + + // number values + number_integer_t value_integer = 0; + number_unsigned_t value_unsigned = 0; + number_float_t value_float = 0; + + /// the decimal point + const char_int_type decimal_point_char = '.'; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/parser.hpp b/include/nlohmann/detail/input/parser.hpp new file mode 100644 index 0000000..bdf85ba --- /dev/null +++ b/include/nlohmann/detail/input/parser.hpp @@ -0,0 +1,519 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // isfinite +#include // uint8_t +#include // function +#include // string +#include // move +#include // vector + +#include +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ +//////////// +// parser // +//////////// + +enum class parse_event_t : std::uint8_t +{ + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value +}; + +template +using parser_callback_t = + std::function; + +/*! +@brief syntax analysis + +This class implements a recursive descent parser. +*/ +template +class parser +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using lexer_t = lexer; + using token_type = typename lexer_t::token_type; + + public: + /// a parser reading from an input adapter + explicit parser(InputAdapterType&& adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true, + const bool skip_comments = false) + : callback(cb) + , m_lexer(std::move(adapter), skip_comments) + , allow_exceptions(allow_exceptions_) + { + // read first token + get_token(); + } + + /*! + @brief public parser interface + + @param[in] strict whether to expect the last token to be EOF + @param[in,out] result parsed JSON value + + @throw parse_error.101 in case of an unexpected token + @throw parse_error.102 if to_unicode fails or surrogate error + @throw parse_error.103 if to_unicode fails + */ + void parse(const bool strict, BasicJsonType& result) + { + if (callback) + { + json_sax_dom_callback_parser sdp(result, callback, allow_exceptions); + sax_parse_internal(&sdp); + + // in strict mode, input must be completely read + if (strict && (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + exception_message(token_type::end_of_input, "value"), nullptr)); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + + // set top-level value to null if it was discarded by the callback + // function + if (result.is_discarded()) + { + result = nullptr; + } + } + else + { + json_sax_dom_parser sdp(result, allow_exceptions); + sax_parse_internal(&sdp); + + // in strict mode, input must be completely read + if (strict && (get_token() != token_type::end_of_input)) + { + sdp.parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr)); + } + + // in case of an error, return discarded value + if (sdp.is_errored()) + { + result = value_t::discarded; + return; + } + } + + result.assert_invariant(); + } + + /*! + @brief public accept interface + + @param[in] strict whether to expect the last token to be EOF + @return whether the input is a proper JSON text + */ + bool accept(const bool strict = true) + { + json_sax_acceptor sax_acceptor; + return sax_parse(&sax_acceptor, strict); + } + + template + JSON_HEDLEY_NON_NULL(2) + bool sax_parse(SAX* sax, const bool strict = true) + { + (void)detail::is_sax_static_asserts {}; + const bool result = sax_parse_internal(sax); + + // strict mode: next byte must be EOF + if (result && strict && (get_token() != token_type::end_of_input)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_of_input, "value"), nullptr)); + } + + return result; + } + + private: + template + JSON_HEDLEY_NON_NULL(2) + bool sax_parse_internal(SAX* sax) + { + // stack to remember the hierarchy of structured values we are parsing + // true = array; false = object + std::vector states; + // value to avoid a goto (see comment where set to true) + bool skip_to_state_evaluation = false; + + while (true) + { + if (!skip_to_state_evaluation) + { + // invariant: get_token() was called before each iteration + switch (last_token) + { + case token_type::begin_object: + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(static_cast(-1)))) + { + return false; + } + + // closing } -> we are done + if (get_token() == token_type::end_object) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) + { + return false; + } + break; + } + + // parse key + if (JSON_HEDLEY_UNLIKELY(last_token != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr)); + } + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr)); + } + + // remember we are now inside an object + states.push_back(false); + + // parse values + get_token(); + continue; + } + + case token_type::begin_array: + { + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(static_cast(-1)))) + { + return false; + } + + // closing ] -> we are done + if (get_token() == token_type::end_array) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) + { + return false; + } + break; + } + + // remember we are now inside an array + states.push_back(true); + + // parse values (no need to call get_token) + continue; + } + + case token_type::value_float: + { + const auto res = m_lexer.get_number_float(); + + if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res))) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + out_of_range::create(406, concat("number overflow parsing '", m_lexer.get_token_string(), '\''), nullptr)); + } + + if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string()))) + { + return false; + } + + break; + } + + case token_type::literal_false: + { + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false))) + { + return false; + } + break; + } + + case token_type::literal_null: + { + if (JSON_HEDLEY_UNLIKELY(!sax->null())) + { + return false; + } + break; + } + + case token_type::literal_true: + { + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true))) + { + return false; + } + break; + } + + case token_type::value_integer: + { + if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer()))) + { + return false; + } + break; + } + + case token_type::value_string: + { + if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string()))) + { + return false; + } + break; + } + + case token_type::value_unsigned: + { + if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned()))) + { + return false; + } + break; + } + + case token_type::parse_error: + { + // using "uninitialized" to avoid "expected" message + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::uninitialized, "value"), nullptr)); + } + case token_type::end_of_input: + { + if (JSON_HEDLEY_UNLIKELY(m_lexer.get_position().chars_read_total == 1)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), + "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr)); + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr)); + } + case token_type::uninitialized: + case token_type::end_array: + case token_type::end_object: + case token_type::name_separator: + case token_type::value_separator: + case token_type::literal_or_value: + default: // the last token was unexpected + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::literal_or_value, "value"), nullptr)); + } + } + } + else + { + skip_to_state_evaluation = false; + } + + // we reached this line after we successfully parsed a value + if (states.empty()) + { + // empty stack: we reached the end of the hierarchy: done + return true; + } + + if (states.back()) // array + { + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse a new value + get_token(); + continue; + } + + // closing ] + if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array)) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) + { + return false; + } + + // We are done with this array. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + JSON_ASSERT(!states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_array, "array"), nullptr)); + } + + // states.back() is false -> object + + // comma -> next value + if (get_token() == token_type::value_separator) + { + // parse key + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::value_string)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"), nullptr)); + } + + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) + { + return false; + } + + // parse separator (:) + if (JSON_HEDLEY_UNLIKELY(get_token() != token_type::name_separator)) + { + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::name_separator, "object separator"), nullptr)); + } + + // parse values + get_token(); + continue; + } + + // closing } + if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object)) + { + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) + { + return false; + } + + // We are done with this object. Before we can parse a + // new value, we need to evaluate the new state first. + // By setting skip_to_state_evaluation to false, we + // are effectively jumping to the beginning of this if. + JSON_ASSERT(!states.empty()); + states.pop_back(); + skip_to_state_evaluation = true; + continue; + } + + return sax->parse_error(m_lexer.get_position(), + m_lexer.get_token_string(), + parse_error::create(101, m_lexer.get_position(), exception_message(token_type::end_object, "object"), nullptr)); + } + } + + /// get next token from lexer + token_type get_token() + { + return last_token = m_lexer.scan(); + } + + std::string exception_message(const token_type expected, const std::string& context) + { + std::string error_msg = "syntax error "; + + if (!context.empty()) + { + error_msg += concat("while parsing ", context, ' '); + } + + error_msg += "- "; + + if (last_token == token_type::parse_error) + { + error_msg += concat(m_lexer.get_error_message(), "; last read: '", + m_lexer.get_token_string(), '\''); + } + else + { + error_msg += concat("unexpected ", lexer_t::token_type_name(last_token)); + } + + if (expected != token_type::uninitialized) + { + error_msg += concat("; expected ", lexer_t::token_type_name(expected)); + } + + return error_msg; + } + + private: + /// callback function + const parser_callback_t callback = nullptr; + /// the type of the last read token + token_type last_token = token_type::uninitialized; + /// the lexer + lexer_t m_lexer; + /// whether to throw exceptions in case of errors + const bool allow_exceptions = true; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/input/position_t.hpp b/include/nlohmann/detail/input/position_t.hpp new file mode 100644 index 0000000..8ac7c78 --- /dev/null +++ b/include/nlohmann/detail/input/position_t.hpp @@ -0,0 +1,37 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // size_t + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/iterators/internal_iterator.hpp b/include/nlohmann/detail/iterators/internal_iterator.hpp new file mode 100644 index 0000000..2991ee6 --- /dev/null +++ b/include/nlohmann/detail/iterators/internal_iterator.hpp @@ -0,0 +1,35 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief an iterator value + +@note This structure could easily be a union, but MSVC currently does not allow +unions members with complex constructors, see https://github.com/nlohmann/json/pull/105. +*/ +template struct internal_iterator +{ + /// iterator for JSON objects + typename BasicJsonType::object_t::iterator object_iterator {}; + /// iterator for JSON arrays + typename BasicJsonType::array_t::iterator array_iterator {}; + /// generic iterator for all other types + primitive_iterator_t primitive_iterator {}; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/iterators/iter_impl.hpp b/include/nlohmann/detail/iterators/iter_impl.hpp new file mode 100644 index 0000000..4447091 --- /dev/null +++ b/include/nlohmann/detail/iterators/iter_impl.hpp @@ -0,0 +1,751 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next +#include // conditional, is_const, remove_const + +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// forward declare, to be able to friend it later on +template class iteration_proxy; +template class iteration_proxy_value; + +/*! +@brief a template for a bidirectional iterator for the @ref basic_json class +This class implements a both iterators (iterator and const_iterator) for the +@ref basic_json class. +@note An iterator is called *initialized* when a pointer to a JSON value has + been set (e.g., by a constructor or a copy assignment). If the iterator is + default-constructed, it is *uninitialized* and most methods are undefined. + **The library uses assertions to detect calls on uninitialized iterators.** +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +@since version 1.0.0, simplified in version 2.0.9, change to bidirectional + iterators in version 3.0.0 (see https://github.com/nlohmann/json/issues/593) +*/ +template +class iter_impl // NOLINT(cppcoreguidelines-special-member-functions,hicpp-special-member-functions) +{ + /// the iterator with BasicJsonType of different const-ness + using other_iter_impl = iter_impl::value, typename std::remove_const::type, const BasicJsonType>::type>; + /// allow basic_json to access private members + friend other_iter_impl; + friend BasicJsonType; + friend iteration_proxy; + friend iteration_proxy_value; + + using object_t = typename BasicJsonType::object_t; + using array_t = typename BasicJsonType::array_t; + // make sure BasicJsonType is basic_json or const basic_json + static_assert(is_basic_json::type>::value, + "iter_impl only accepts (const) basic_json"); + // superficial check for the LegacyBidirectionalIterator named requirement + static_assert(std::is_base_of::value + && std::is_base_of::iterator_category>::value, + "basic_json iterator assumes array and object type iterators satisfy the LegacyBidirectionalIterator named requirement."); + + public: + /// The std::iterator class template (used as a base class to provide typedefs) is deprecated in C++17. + /// The C++ Standard has never required user-defined iterators to derive from std::iterator. + /// A user-defined iterator should provide publicly accessible typedefs named + /// iterator_category, value_type, difference_type, pointer, and reference. + /// Note that value_type is required to be non-const, even for constant iterators. + using iterator_category = std::bidirectional_iterator_tag; + + /// the type of the values when the iterator is dereferenced + using value_type = typename BasicJsonType::value_type; + /// a type to represent differences between iterators + using difference_type = typename BasicJsonType::difference_type; + /// defines a pointer to the type iterated over (value_type) + using pointer = typename std::conditional::value, + typename BasicJsonType::const_pointer, + typename BasicJsonType::pointer>::type; + /// defines a reference to the type iterated over (value_type) + using reference = + typename std::conditional::value, + typename BasicJsonType::const_reference, + typename BasicJsonType::reference>::type; + + iter_impl() = default; + ~iter_impl() = default; + iter_impl(iter_impl&&) noexcept = default; + iter_impl& operator=(iter_impl&&) noexcept = default; + + /*! + @brief constructor for a given JSON instance + @param[in] object pointer to a JSON object for this iterator + @pre object != nullptr + @post The iterator is initialized; i.e. `m_object != nullptr`. + */ + explicit iter_impl(pointer object) noexcept : m_object(object) + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + m_it.object_iterator = typename object_t::iterator(); + break; + } + + case value_t::array: + { + m_it.array_iterator = typename array_t::iterator(); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator = primitive_iterator_t(); + break; + } + } + } + + /*! + @note The conventional copy constructor and copy assignment are implicitly + defined. Combined with the following converting constructor and + assignment, they support: (1) copy from iterator to iterator, (2) + copy from const iterator to const iterator, and (3) conversion from + iterator to const iterator. However conversion from const iterator + to iterator is not defined. + */ + + /*! + @brief const copy constructor + @param[in] other const iterator to copy from + @note This copy constructor had to be defined explicitly to circumvent a bug + occurring on msvc v19.0 compiler (VS 2015) debug build. For more + information refer to: https://github.com/nlohmann/json/issues/1608 + */ + iter_impl(const iter_impl& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief converting assignment + @param[in] other const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl& other) noexcept + { + if (&other != this) + { + m_object = other.m_object; + m_it = other.m_it; + } + return *this; + } + + /*! + @brief converting constructor + @param[in] other non-const iterator to copy from + @note It is not checked whether @a other is initialized. + */ + iter_impl(const iter_impl::type>& other) noexcept + : m_object(other.m_object), m_it(other.m_it) + {} + + /*! + @brief converting assignment + @param[in] other non-const iterator to copy from + @return const/non-const iterator + @note It is not checked whether @a other is initialized. + */ + iter_impl& operator=(const iter_impl::type>& other) noexcept // NOLINT(cert-oop54-cpp) + { + m_object = other.m_object; + m_it = other.m_it; + return *this; + } + + JSON_PRIVATE_UNLESS_TESTED: + /*! + @brief set the iterator to the first value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_begin() noexcept + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_data.m_value.object->begin(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_data.m_value.array->begin(); + break; + } + + case value_t::null: + { + // set to end so begin()==end() is true: null is empty + m_it.primitive_iterator.set_end(); + break; + } + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator.set_begin(); + break; + } + } + } + + /*! + @brief set the iterator past the last value + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + void set_end() noexcept + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + m_it.object_iterator = m_object->m_data.m_value.object->end(); + break; + } + + case value_t::array: + { + m_it.array_iterator = m_object->m_data.m_value.array->end(); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator.set_end(); + break; + } + } + } + + public: + /*! + @brief return a reference to the value pointed to by the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator*() const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + JSON_ASSERT(m_it.object_iterator != m_object->m_data.m_value.object->end()); + return m_it.object_iterator->second; + } + + case value_t::array: + { + JSON_ASSERT(m_it.array_iterator != m_object->m_data.m_value.array->end()); + return *m_it.array_iterator; + } + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); + } + } + } + + /*! + @brief dereference the iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + pointer operator->() const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + JSON_ASSERT(m_it.object_iterator != m_object->m_data.m_value.object->end()); + return &(m_it.object_iterator->second); + } + + case value_t::array: + { + JSON_ASSERT(m_it.array_iterator != m_object->m_data.m_value.array->end()); + return &*m_it.array_iterator; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.is_begin())) + { + return m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); + } + } + } + + /*! + @brief post-increment (it++) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator++(int)& // NOLINT(cert-dcl21-cpp) + { + auto result = *this; + ++(*this); + return result; + } + + /*! + @brief pre-increment (++it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator++() + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, 1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, 1); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + ++m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief post-decrement (it--) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator--(int)& // NOLINT(cert-dcl21-cpp) + { + auto result = *this; + --(*this); + return result; + } + + /*! + @brief pre-decrement (--it) + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator--() + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + { + std::advance(m_it.object_iterator, -1); + break; + } + + case value_t::array: + { + std::advance(m_it.array_iterator, -1); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + --m_it.primitive_iterator; + break; + } + } + + return *this; + } + + /*! + @brief comparison: equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > + bool operator==(const IterImpl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object)); + } + + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + return (m_it.object_iterator == other.m_it.object_iterator); + + case value_t::array: + return (m_it.array_iterator == other.m_it.array_iterator); + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return (m_it.primitive_iterator == other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: not equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + template < typename IterImpl, detail::enable_if_t < (std::is_same::value || std::is_same::value), std::nullptr_t > = nullptr > + bool operator!=(const IterImpl& other) const + { + return !operator==(other); + } + + /*! + @brief comparison: smaller + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<(const iter_impl& other) const + { + // if objects are not the same, the comparison is undefined + if (JSON_HEDLEY_UNLIKELY(m_object != other.m_object)) + { + JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers", m_object)); + } + + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(213, "cannot compare order of object iterators", m_object)); + + case value_t::array: + return (m_it.array_iterator < other.m_it.array_iterator); + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return (m_it.primitive_iterator < other.m_it.primitive_iterator); + } + } + + /*! + @brief comparison: less than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator<=(const iter_impl& other) const + { + return !other.operator < (*this); + } + + /*! + @brief comparison: greater than + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>(const iter_impl& other) const + { + return !operator<=(other); + } + + /*! + @brief comparison: greater than or equal + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + bool operator>=(const iter_impl& other) const + { + return !operator<(other); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator+=(difference_type i) + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object)); + + case value_t::array: + { + std::advance(m_it.array_iterator, i); + break; + } + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + m_it.primitive_iterator += i; + break; + } + } + + return *this; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl& operator-=(difference_type i) + { + return operator+=(-i); + } + + /*! + @brief add to iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator+(difference_type i) const + { + auto result = *this; + result += i; + return result; + } + + /*! + @brief addition of distance and iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + friend iter_impl operator+(difference_type i, const iter_impl& it) + { + auto result = it; + result += i; + return result; + } + + /*! + @brief subtract from iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + iter_impl operator-(difference_type i) const + { + auto result = *this; + result -= i; + return result; + } + + /*! + @brief return difference + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + difference_type operator-(const iter_impl& other) const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(209, "cannot use offsets with object iterators", m_object)); + + case value_t::array: + return m_it.array_iterator - other.m_it.array_iterator; + + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return m_it.primitive_iterator - other.m_it.primitive_iterator; + } + } + + /*! + @brief access to successor + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference operator[](difference_type n) const + { + JSON_ASSERT(m_object != nullptr); + + switch (m_object->m_data.m_type) + { + case value_t::object: + JSON_THROW(invalid_iterator::create(208, "cannot use operator[] for object iterators", m_object)); + + case value_t::array: + return *std::next(m_it.array_iterator, n); + + case value_t::null: + JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); + + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + { + if (JSON_HEDLEY_LIKELY(m_it.primitive_iterator.get_value() == -n)) + { + return *m_object; + } + + JSON_THROW(invalid_iterator::create(214, "cannot get value", m_object)); + } + } + } + + /*! + @brief return the key of an object iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + const typename object_t::key_type& key() const + { + JSON_ASSERT(m_object != nullptr); + + if (JSON_HEDLEY_LIKELY(m_object->is_object())) + { + return m_it.object_iterator->first; + } + + JSON_THROW(invalid_iterator::create(207, "cannot use key() for non-object iterators", m_object)); + } + + /*! + @brief return the value of an iterator + @pre The iterator is initialized; i.e. `m_object != nullptr`. + */ + reference value() const + { + return operator*(); + } + + JSON_PRIVATE_UNLESS_TESTED: + /// associated JSON instance + pointer m_object = nullptr; + /// the actual iterator of the associated instance + internal_iterator::type> m_it {}; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/iterators/iteration_proxy.hpp b/include/nlohmann/detail/iterators/iteration_proxy.hpp new file mode 100644 index 0000000..76293de --- /dev/null +++ b/include/nlohmann/detail/iterators/iteration_proxy.hpp @@ -0,0 +1,242 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // size_t +#include // input_iterator_tag +#include // string, to_string +#include // tuple_size, get, tuple_element +#include // move + +#if JSON_HAS_RANGES + #include // enable_borrowed_range +#endif + +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +void int_to_string( string_type& target, std::size_t value ) +{ + // For ADL + using std::to_string; + target = to_string(value); +} +template class iteration_proxy_value +{ + public: + using difference_type = std::ptrdiff_t; + using value_type = iteration_proxy_value; + using pointer = value_type *; + using reference = value_type &; + using iterator_category = std::input_iterator_tag; + using string_type = typename std::remove_cv< typename std::remove_reference().key() ) >::type >::type; + + private: + /// the iterator + IteratorType anchor{}; + /// an index for arrays (used to create key names) + std::size_t array_index = 0; + /// last stringified array index + mutable std::size_t array_index_last = 0; + /// a string representation of the array index + mutable string_type array_index_str = "0"; + /// an empty string (to return a reference for primitive values) + string_type empty_str{}; + + public: + explicit iteration_proxy_value() = default; + explicit iteration_proxy_value(IteratorType it, std::size_t array_index_ = 0) + noexcept(std::is_nothrow_move_constructible::value + && std::is_nothrow_default_constructible::value) + : anchor(std::move(it)) + , array_index(array_index_) + {} + + iteration_proxy_value(iteration_proxy_value const&) = default; + iteration_proxy_value& operator=(iteration_proxy_value const&) = default; + // older GCCs are a bit fussy and require explicit noexcept specifiers on defaulted functions + iteration_proxy_value(iteration_proxy_value&&) + noexcept(std::is_nothrow_move_constructible::value + && std::is_nothrow_move_constructible::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations) + iteration_proxy_value& operator=(iteration_proxy_value&&) + noexcept(std::is_nothrow_move_assignable::value + && std::is_nothrow_move_assignable::value) = default; // NOLINT(hicpp-noexcept-move,performance-noexcept-move-constructor,cppcoreguidelines-noexcept-move-operations) + ~iteration_proxy_value() = default; + + /// dereference operator (needed for range-based for) + const iteration_proxy_value& operator*() const + { + return *this; + } + + /// increment operator (needed for range-based for) + iteration_proxy_value& operator++() + { + ++anchor; + ++array_index; + + return *this; + } + + iteration_proxy_value operator++(int)& // NOLINT(cert-dcl21-cpp) + { + auto tmp = iteration_proxy_value(anchor, array_index); + ++anchor; + ++array_index; + return tmp; + } + + /// equality operator (needed for InputIterator) + bool operator==(const iteration_proxy_value& o) const + { + return anchor == o.anchor; + } + + /// inequality operator (needed for range-based for) + bool operator!=(const iteration_proxy_value& o) const + { + return anchor != o.anchor; + } + + /// return key of the iterator + const string_type& key() const + { + JSON_ASSERT(anchor.m_object != nullptr); + + switch (anchor.m_object->type()) + { + // use integer array index as key + case value_t::array: + { + if (array_index != array_index_last) + { + int_to_string( array_index_str, array_index ); + array_index_last = array_index; + } + return array_index_str; + } + + // use key from the object + case value_t::object: + return anchor.key(); + + // use an empty key for all primitive types + case value_t::null: + case value_t::string: + case value_t::boolean: + case value_t::number_integer: + case value_t::number_unsigned: + case value_t::number_float: + case value_t::binary: + case value_t::discarded: + default: + return empty_str; + } + } + + /// return value of the iterator + typename IteratorType::reference value() const + { + return anchor.value(); + } +}; + +/// proxy class for the items() function +template class iteration_proxy +{ + private: + /// the container to iterate + typename IteratorType::pointer container = nullptr; + + public: + explicit iteration_proxy() = default; + + /// construct iteration proxy from a container + explicit iteration_proxy(typename IteratorType::reference cont) noexcept + : container(&cont) {} + + iteration_proxy(iteration_proxy const&) = default; + iteration_proxy& operator=(iteration_proxy const&) = default; + iteration_proxy(iteration_proxy&&) noexcept = default; + iteration_proxy& operator=(iteration_proxy&&) noexcept = default; + ~iteration_proxy() = default; + + /// return iterator begin (needed for range-based for) + iteration_proxy_value begin() const noexcept + { + return iteration_proxy_value(container->begin()); + } + + /// return iterator end (needed for range-based for) + iteration_proxy_value end() const noexcept + { + return iteration_proxy_value(container->end()); + } +}; + +// Structured Bindings Support +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +template = 0> +auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.key()) +{ + return i.key(); +} +// Structured Bindings Support +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +template = 0> +auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.value()) +{ + return i.value(); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// The Addition to the STD Namespace is required to add +// Structured Bindings Support to the iteration_proxy_value class +// For further reference see https://blog.tartanllama.xyz/structured-bindings/ +// And see https://github.com/nlohmann/json/pull/1391 +namespace std +{ + +#if defined(__clang__) + // Fix: https://github.com/nlohmann/json/issues/1401 + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wmismatched-tags" +#endif +template +class tuple_size<::nlohmann::detail::iteration_proxy_value> // NOLINT(cert-dcl58-cpp) + : public std::integral_constant {}; + +template +class tuple_element> // NOLINT(cert-dcl58-cpp) +{ + public: + using type = decltype( + get(std::declval < + ::nlohmann::detail::iteration_proxy_value> ())); +}; +#if defined(__clang__) + #pragma clang diagnostic pop +#endif + +} // namespace std + +#if JSON_HAS_RANGES + template + inline constexpr bool ::std::ranges::enable_borrowed_range<::nlohmann::detail::iteration_proxy> = true; +#endif diff --git a/include/nlohmann/detail/iterators/iterator_traits.hpp b/include/nlohmann/detail/iterators/iterator_traits.hpp new file mode 100644 index 0000000..84cc27a --- /dev/null +++ b/include/nlohmann/detail/iterators/iterator_traits.hpp @@ -0,0 +1,61 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // random_access_iterator_tag + +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/iterators/json_reverse_iterator.hpp b/include/nlohmann/detail/iterators/json_reverse_iterator.hpp new file mode 100644 index 0000000..006d549 --- /dev/null +++ b/include/nlohmann/detail/iterators/json_reverse_iterator.hpp @@ -0,0 +1,130 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // ptrdiff_t +#include // reverse_iterator +#include // declval + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +////////////////////// +// reverse_iterator // +////////////////////// + +/*! +@brief a template for a reverse iterator class + +@tparam Base the base iterator type to reverse. Valid types are @ref +iterator (to create @ref reverse_iterator) and @ref const_iterator (to +create @ref const_reverse_iterator). + +@requirement The class satisfies the following concept requirements: +- +[BidirectionalIterator](https://en.cppreference.com/w/cpp/named_req/BidirectionalIterator): + The iterator that can be moved can be moved in both directions (i.e. + incremented and decremented). +- [OutputIterator](https://en.cppreference.com/w/cpp/named_req/OutputIterator): + It is possible to write to the pointed-to element (only if @a Base is + @ref iterator). + +@since version 1.0.0 +*/ +template +class json_reverse_iterator : public std::reverse_iterator +{ + public: + using difference_type = std::ptrdiff_t; + /// shortcut to the reverse iterator adapter + using base_iterator = std::reverse_iterator; + /// the reference type for the pointed-to element + using reference = typename Base::reference; + + /// create reverse iterator from iterator + explicit json_reverse_iterator(const typename base_iterator::iterator_type& it) noexcept + : base_iterator(it) {} + + /// create reverse iterator from base class + explicit json_reverse_iterator(const base_iterator& it) noexcept : base_iterator(it) {} + + /// post-increment (it++) + json_reverse_iterator operator++(int)& // NOLINT(cert-dcl21-cpp) + { + return static_cast(base_iterator::operator++(1)); + } + + /// pre-increment (++it) + json_reverse_iterator& operator++() + { + return static_cast(base_iterator::operator++()); + } + + /// post-decrement (it--) + json_reverse_iterator operator--(int)& // NOLINT(cert-dcl21-cpp) + { + return static_cast(base_iterator::operator--(1)); + } + + /// pre-decrement (--it) + json_reverse_iterator& operator--() + { + return static_cast(base_iterator::operator--()); + } + + /// add to iterator + json_reverse_iterator& operator+=(difference_type i) + { + return static_cast(base_iterator::operator+=(i)); + } + + /// add to iterator + json_reverse_iterator operator+(difference_type i) const + { + return static_cast(base_iterator::operator+(i)); + } + + /// subtract from iterator + json_reverse_iterator operator-(difference_type i) const + { + return static_cast(base_iterator::operator-(i)); + } + + /// return difference + difference_type operator-(const json_reverse_iterator& other) const + { + return base_iterator(*this) - base_iterator(other); + } + + /// access to successor + reference operator[](difference_type n) const + { + return *(this->operator+(n)); + } + + /// return the key of an object iterator + auto key() const -> decltype(std::declval().key()) + { + auto it = --this->base(); + return it.key(); + } + + /// return the value of an iterator + reference value() const + { + auto it = --this->base(); + return it.operator * (); + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/iterators/primitive_iterator.hpp b/include/nlohmann/detail/iterators/primitive_iterator.hpp new file mode 100644 index 0000000..0b6e849 --- /dev/null +++ b/include/nlohmann/detail/iterators/primitive_iterator.hpp @@ -0,0 +1,132 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // ptrdiff_t +#include // numeric_limits + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/* +@brief an iterator for primitive JSON types + +This class models an iterator for primitive JSON types (boolean, number, +string). It's only purpose is to allow the iterator/const_iterator classes +to "iterate" over primitive values. Internally, the iterator is modeled by +a `difference_type` variable. Value begin_value (`0`) models the begin, +end_value (`1`) models past the end. +*/ +class primitive_iterator_t +{ + private: + using difference_type = std::ptrdiff_t; + static constexpr difference_type begin_value = 0; + static constexpr difference_type end_value = begin_value + 1; + + JSON_PRIVATE_UNLESS_TESTED: + /// iterator as signed integer type + difference_type m_it = (std::numeric_limits::min)(); + + public: + constexpr difference_type get_value() const noexcept + { + return m_it; + } + + /// set iterator to a defined beginning + void set_begin() noexcept + { + m_it = begin_value; + } + + /// set iterator to a defined past the end + void set_end() noexcept + { + m_it = end_value; + } + + /// return whether the iterator can be dereferenced + constexpr bool is_begin() const noexcept + { + return m_it == begin_value; + } + + /// return whether the iterator is at end + constexpr bool is_end() const noexcept + { + return m_it == end_value; + } + + friend constexpr bool operator==(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it == rhs.m_it; + } + + friend constexpr bool operator<(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it < rhs.m_it; + } + + primitive_iterator_t operator+(difference_type n) noexcept + { + auto result = *this; + result += n; + return result; + } + + friend constexpr difference_type operator-(primitive_iterator_t lhs, primitive_iterator_t rhs) noexcept + { + return lhs.m_it - rhs.m_it; + } + + primitive_iterator_t& operator++() noexcept + { + ++m_it; + return *this; + } + + primitive_iterator_t operator++(int)& noexcept // NOLINT(cert-dcl21-cpp) + { + auto result = *this; + ++m_it; + return result; + } + + primitive_iterator_t& operator--() noexcept + { + --m_it; + return *this; + } + + primitive_iterator_t operator--(int)& noexcept // NOLINT(cert-dcl21-cpp) + { + auto result = *this; + --m_it; + return result; + } + + primitive_iterator_t& operator+=(difference_type n) noexcept + { + m_it += n; + return *this; + } + + primitive_iterator_t& operator-=(difference_type n) noexcept + { + m_it -= n; + return *this; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/json_custom_base_class.hpp b/include/nlohmann/detail/json_custom_base_class.hpp new file mode 100644 index 0000000..d1e2916 --- /dev/null +++ b/include/nlohmann/detail/json_custom_base_class.hpp @@ -0,0 +1,39 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // conditional, is_same + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief Default base class of the @ref basic_json class. + +So that the correct implementations of the copy / move ctors / assign operators +of @ref basic_json do not require complex case distinctions +(no base class / custom base class used as customization point), +@ref basic_json always has a base class. +By default, this class is used because it is empty and thus has no effect +on the behavior of @ref basic_json. +*/ +struct json_default_base {}; + +template +using json_base_class = typename std::conditional < + std::is_same::value, + json_default_base, + T + >::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/json_pointer.hpp b/include/nlohmann/detail/json_pointer.hpp new file mode 100644 index 0000000..4fdcd9a --- /dev/null +++ b/include/nlohmann/detail/json_pointer.hpp @@ -0,0 +1,988 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // all_of +#include // isdigit +#include // errno, ERANGE +#include // strtoull +#ifndef JSON_NO_IO + #include // ostream +#endif // JSON_NO_IO +#include // max +#include // accumulate +#include // string +#include // move +#include // vector + +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +/// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document +/// @sa https://json.nlohmann.me/api/json_pointer/ +template +class json_pointer +{ + // allow basic_json to access private members + NLOHMANN_BASIC_JSON_TPL_DECLARATION + friend class basic_json; + + template + friend class json_pointer; + + template + struct string_t_helper + { + using type = T; + }; + + NLOHMANN_BASIC_JSON_TPL_DECLARATION + struct string_t_helper + { + using type = StringType; + }; + + public: + // for backwards compatibility accept BasicJsonType + using string_t = typename string_t_helper::type; + + /// @brief create JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/json_pointer/ + explicit json_pointer(const string_t& s = "") + : reference_tokens(split(s)) + {} + + /// @brief return a string representation of the JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/to_string/ + string_t to_string() const + { + return std::accumulate(reference_tokens.begin(), reference_tokens.end(), + string_t{}, + [](const string_t& a, const string_t& b) + { + return detail::concat(a, '/', detail::escape(b)); + }); + } + + /// @brief return a string representation of the JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_string/ + JSON_HEDLEY_DEPRECATED_FOR(3.11.0, to_string()) + operator string_t() const + { + return to_string(); + } + +#ifndef JSON_NO_IO + /// @brief write string representation of the JSON pointer to stream + /// @sa https://json.nlohmann.me/api/basic_json/operator_ltlt/ + friend std::ostream& operator<<(std::ostream& o, const json_pointer& ptr) + { + o << ptr.to_string(); + return o; + } +#endif + + /// @brief append another JSON pointer at the end of this JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ + json_pointer& operator/=(const json_pointer& ptr) + { + reference_tokens.insert(reference_tokens.end(), + ptr.reference_tokens.begin(), + ptr.reference_tokens.end()); + return *this; + } + + /// @brief append an unescaped reference token at the end of this JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ + json_pointer& operator/=(string_t token) + { + push_back(std::move(token)); + return *this; + } + + /// @brief append an array index at the end of this JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slasheq/ + json_pointer& operator/=(std::size_t array_idx) + { + return *this /= std::to_string(array_idx); + } + + /// @brief create a new JSON pointer by appending the right JSON pointer at the end of the left JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ + friend json_pointer operator/(const json_pointer& lhs, + const json_pointer& rhs) + { + return json_pointer(lhs) /= rhs; + } + + /// @brief create a new JSON pointer by appending the unescaped token at the end of the JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ + friend json_pointer operator/(const json_pointer& lhs, string_t token) // NOLINT(performance-unnecessary-value-param) + { + return json_pointer(lhs) /= std::move(token); + } + + /// @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/operator_slash/ + friend json_pointer operator/(const json_pointer& lhs, std::size_t array_idx) + { + return json_pointer(lhs) /= array_idx; + } + + /// @brief returns the parent of this JSON pointer + /// @sa https://json.nlohmann.me/api/json_pointer/parent_pointer/ + json_pointer parent_pointer() const + { + if (empty()) + { + return *this; + } + + json_pointer res = *this; + res.pop_back(); + return res; + } + + /// @brief remove last reference token + /// @sa https://json.nlohmann.me/api/json_pointer/pop_back/ + void pop_back() + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); + } + + reference_tokens.pop_back(); + } + + /// @brief return last reference token + /// @sa https://json.nlohmann.me/api/json_pointer/back/ + const string_t& back() const + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); + } + + return reference_tokens.back(); + } + + /// @brief append an unescaped token at the end of the reference pointer + /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ + void push_back(const string_t& token) + { + reference_tokens.push_back(token); + } + + /// @brief append an unescaped token at the end of the reference pointer + /// @sa https://json.nlohmann.me/api/json_pointer/push_back/ + void push_back(string_t&& token) + { + reference_tokens.push_back(std::move(token)); + } + + /// @brief return whether pointer points to the root document + /// @sa https://json.nlohmann.me/api/json_pointer/empty/ + bool empty() const noexcept + { + return reference_tokens.empty(); + } + + private: + /*! + @param[in] s reference token to be converted into an array index + + @return integer representation of @a s + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index begins not with a digit + @throw out_of_range.404 if string @a s could not be converted to an integer + @throw out_of_range.410 if an array index exceeds size_type + */ + template + static typename BasicJsonType::size_type array_index(const string_t& s) + { + using size_type = typename BasicJsonType::size_type; + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, detail::concat("array index '", s, "' must not begin with '0'"), nullptr)); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9'))) + { + JSON_THROW(detail::parse_error::create(109, 0, detail::concat("array index '", s, "' is not a number"), nullptr)); + } + + const char* p = s.c_str(); + char* p_end = nullptr; + errno = 0; // strtoull doesn't reset errno + const unsigned long long res = std::strtoull(p, &p_end, 10); // NOLINT(runtime/int) + if (p == p_end // invalid input or empty string + || errno == ERANGE // out of range + || JSON_HEDLEY_UNLIKELY(static_cast(p_end - p) != s.size())) // incomplete read + { + JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", s, "'"), nullptr)); + } + + // only triggered on special platforms (like 32bit), see also + // https://github.com/nlohmann/json/pull/2203 + if (res >= static_cast((std::numeric_limits::max)())) // NOLINT(runtime/int) + { + JSON_THROW(detail::out_of_range::create(410, detail::concat("array index ", s, " exceeds size_type"), nullptr)); // LCOV_EXCL_LINE + } + + return static_cast(res); + } + + JSON_PRIVATE_UNLESS_TESTED: + json_pointer top() const + { + if (JSON_HEDLEY_UNLIKELY(empty())) + { + JSON_THROW(detail::out_of_range::create(405, "JSON pointer has no parent", nullptr)); + } + + json_pointer result = *this; + result.reference_tokens = {reference_tokens[0]}; + return result; + } + + private: + /*! + @brief create and return a reference to the pointed to value + + @complexity Linear in the number of reference tokens. + + @throw parse_error.109 if array index is not a number + @throw type_error.313 if value cannot be unflattened + */ + template + BasicJsonType& get_and_create(BasicJsonType& j) const + { + auto* result = &j; + + // in case no reference tokens exist, return a reference to the JSON value + // j which will be overwritten by a primitive value + for (const auto& reference_token : reference_tokens) + { + switch (result->type()) + { + case detail::value_t::null: + { + if (reference_token == "0") + { + // start a new array if reference token is 0 + result = &result->operator[](0); + } + else + { + // start a new object otherwise + result = &result->operator[](reference_token); + } + break; + } + + case detail::value_t::object: + { + // create an entry in the object + result = &result->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + // create an entry in the array + result = &result->operator[](array_index(reference_token)); + break; + } + + /* + The following code is only reached if there exists a reference + token _and_ the current value is primitive. In this case, we have + an error situation, because primitive values may only occur as + single value; that is, with an empty list of reference tokens. + */ + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::type_error::create(313, "invalid value to unflatten", &j)); + } + } + + return *result; + } + + /*! + @brief return a reference to the pointed to value + + @note This version does not throw if a value is not present, but tries to + create nested values instead. For instance, calling this function + with pointer `"/this/that"` on a null value is equivalent to calling + `operator[]("this").operator[]("that")` on that value, effectively + changing the null value to an object. + + @param[in] ptr a JSON value + + @return reference to the JSON value pointed to by the JSON pointer + + @complexity Linear in the length of the JSON pointer. + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + template + BasicJsonType& get_unchecked(BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + // convert null values to arrays or objects before continuing + if (ptr->is_null()) + { + // check if reference token is a number + const bool nums = + std::all_of(reference_token.begin(), reference_token.end(), + [](const unsigned char x) + { + return std::isdigit(x); + }); + + // change value to array for numbers or "-" or to object otherwise + *ptr = (nums || reference_token == "-") + ? detail::value_t::array + : detail::value_t::object; + } + + switch (ptr->type()) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (reference_token == "-") + { + // explicitly treat "-" as index beyond the end + ptr = &ptr->operator[](ptr->m_data.m_value.array->size()); + } + else + { + // convert array index to number; unchecked access + ptr = &ptr->operator[](array_index(reference_token)); + } + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + template + BasicJsonType& get_checked(BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, detail::concat( + "array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), + ") is out of range"), ptr)); + } + + // note: at performs range check + ptr = &ptr->at(array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); + } + } + + return *ptr; + } + + /*! + @brief return a const reference to the pointed to value + + @param[in] ptr a JSON value + + @return const reference to the JSON value pointed to by the JSON + pointer + + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + template + const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // use unchecked object access + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" cannot be used for const access + JSON_THROW(detail::out_of_range::create(402, detail::concat("array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), ") is out of range"), ptr)); + } + + // use unchecked array access + ptr = &ptr->operator[](array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + @throw out_of_range.402 if the array index '-' is used + @throw out_of_range.404 if the JSON pointer can not be resolved + */ + template + const BasicJsonType& get_checked(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + // note: at performs range check + ptr = &ptr->at(reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + JSON_THROW(detail::out_of_range::create(402, detail::concat( + "array index '-' (", std::to_string(ptr->m_data.m_value.array->size()), + ") is out of range"), ptr)); + } + + // note: at performs range check + ptr = &ptr->at(array_index(reference_token)); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + JSON_THROW(detail::out_of_range::create(404, detail::concat("unresolved reference token '", reference_token, "'"), ptr)); + } + } + + return *ptr; + } + + /*! + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index was not a number + */ + template + bool contains(const BasicJsonType* ptr) const + { + for (const auto& reference_token : reference_tokens) + { + switch (ptr->type()) + { + case detail::value_t::object: + { + if (!ptr->contains(reference_token)) + { + // we did not find the key in the object + return false; + } + + ptr = &ptr->operator[](reference_token); + break; + } + + case detail::value_t::array: + { + if (JSON_HEDLEY_UNLIKELY(reference_token == "-")) + { + // "-" always fails the range check + return false; + } + if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9"))) + { + // invalid char + return false; + } + if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1)) + { + if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9'))) + { + // first char should be between '1' and '9' + return false; + } + for (std::size_t i = 1; i < reference_token.size(); i++) + { + if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9'))) + { + // other char should be between '0' and '9' + return false; + } + } + } + + const auto idx = array_index(reference_token); + if (idx >= ptr->size()) + { + // index out of range + return false; + } + + ptr = &ptr->operator[](idx); + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + { + // we do not expect primitive values if there is still a + // reference token to process + return false; + } + } + } + + // no reference token left means we found a primitive value + return true; + } + + /*! + @brief split the string input to reference tokens + + @note This function is only called by the json_pointer constructor. + All exceptions below are documented there. + + @throw parse_error.107 if the pointer is not empty or begins with '/' + @throw parse_error.108 if character '~' is not followed by '0' or '1' + */ + static std::vector split(const string_t& reference_string) + { + std::vector result; + + // special case: empty reference string -> no reference tokens + if (reference_string.empty()) + { + return result; + } + + // check if nonempty reference string begins with slash + if (JSON_HEDLEY_UNLIKELY(reference_string[0] != '/')) + { + JSON_THROW(detail::parse_error::create(107, 1, detail::concat("JSON pointer must be empty or begin with '/' - was: '", reference_string, "'"), nullptr)); + } + + // extract the reference tokens: + // - slash: position of the last read slash (or end of string) + // - start: position after the previous slash + for ( + // search for the first slash after the first character + std::size_t slash = reference_string.find_first_of('/', 1), + // set the beginning of the first reference token + start = 1; + // we can stop if start == 0 (if slash == string_t::npos) + start != 0; + // set the beginning of the next reference token + // (will eventually be 0 if slash == string_t::npos) + start = (slash == string_t::npos) ? 0 : slash + 1, + // find next slash + slash = reference_string.find_first_of('/', start)) + { + // use the text between the beginning of the reference token + // (start) and the last slash (slash). + auto reference_token = reference_string.substr(start, slash - start); + + // check reference tokens are properly escaped + for (std::size_t pos = reference_token.find_first_of('~'); + pos != string_t::npos; + pos = reference_token.find_first_of('~', pos + 1)) + { + JSON_ASSERT(reference_token[pos] == '~'); + + // ~ must be followed by 0 or 1 + if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 || + (reference_token[pos + 1] != '0' && + reference_token[pos + 1] != '1'))) + { + JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'", nullptr)); + } + } + + // finally, store the reference token + detail::unescape(reference_token); + result.push_back(reference_token); + } + + return result; + } + + private: + /*! + @param[in] reference_string the reference string to the current value + @param[in] value the value to consider + @param[in,out] result the result object to insert values to + + @note Empty objects or arrays are flattened to `null`. + */ + template + static void flatten(const string_t& reference_string, + const BasicJsonType& value, + BasicJsonType& result) + { + switch (value.type()) + { + case detail::value_t::array: + { + if (value.m_data.m_value.array->empty()) + { + // flatten empty array as null + result[reference_string] = nullptr; + } + else + { + // iterate array and use index as reference string + for (std::size_t i = 0; i < value.m_data.m_value.array->size(); ++i) + { + flatten(detail::concat(reference_string, '/', std::to_string(i)), + value.m_data.m_value.array->operator[](i), result); + } + } + break; + } + + case detail::value_t::object: + { + if (value.m_data.m_value.object->empty()) + { + // flatten empty object as null + result[reference_string] = nullptr; + } + else + { + // iterate object and use keys as reference string + for (const auto& element : *value.m_data.m_value.object) + { + flatten(detail::concat(reference_string, '/', detail::escape(element.first)), element.second, result); + } + } + break; + } + + case detail::value_t::null: + case detail::value_t::string: + case detail::value_t::boolean: + case detail::value_t::number_integer: + case detail::value_t::number_unsigned: + case detail::value_t::number_float: + case detail::value_t::binary: + case detail::value_t::discarded: + default: + { + // add primitive value with its reference string + result[reference_string] = value; + break; + } + } + } + + /*! + @param[in] value flattened JSON + + @return unflattened JSON + + @throw parse_error.109 if array index is not a number + @throw type_error.314 if value is not an object + @throw type_error.315 if object values are not primitive + @throw type_error.313 if value cannot be unflattened + */ + template + static BasicJsonType + unflatten(const BasicJsonType& value) + { + if (JSON_HEDLEY_UNLIKELY(!value.is_object())) + { + JSON_THROW(detail::type_error::create(314, "only objects can be unflattened", &value)); + } + + BasicJsonType result; + + // iterate the JSON object values + for (const auto& element : *value.m_data.m_value.object) + { + if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive())) + { + JSON_THROW(detail::type_error::create(315, "values in object must be primitive", &element.second)); + } + + // assign value to reference pointed to by JSON pointer; Note that if + // the JSON pointer is "" (i.e., points to the whole value), function + // get_and_create returns a reference to result itself. An assignment + // will then create a primitive value. + json_pointer(element.first).get_and_create(result) = element.second; + } + + return result; + } + + // can't use conversion operator because of ambiguity + json_pointer convert() const& + { + json_pointer result; + result.reference_tokens = reference_tokens; + return result; + } + + json_pointer convert()&& + { + json_pointer result; + result.reference_tokens = std::move(reference_tokens); + return result; + } + + public: +#if JSON_HAS_THREE_WAY_COMPARISON + /// @brief compares two JSON pointers for equality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ + template + bool operator==(const json_pointer& rhs) const noexcept + { + return reference_tokens == rhs.reference_tokens; + } + + /// @brief compares JSON pointer and string for equality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ + JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer)) + bool operator==(const string_t& rhs) const + { + return *this == json_pointer(rhs); + } + + /// @brief 3-way compares two JSON pointers + template + std::strong_ordering operator<=>(const json_pointer& rhs) const noexcept // *NOPAD* + { + return reference_tokens <=> rhs.reference_tokens; // *NOPAD* + } +#else + /// @brief compares two JSON pointers for equality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator==(const json_pointer& lhs, + const json_pointer& rhs) noexcept; + + /// @brief compares JSON pointer and string for equality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator==(const json_pointer& lhs, + const StringType& rhs); + + /// @brief compares string and JSON pointer for equality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_eq/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator==(const StringType& lhs, + const json_pointer& rhs); + + /// @brief compares two JSON pointers for inequality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator!=(const json_pointer& lhs, + const json_pointer& rhs) noexcept; + + /// @brief compares JSON pointer and string for inequality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator!=(const json_pointer& lhs, + const StringType& rhs); + + /// @brief compares string and JSON pointer for inequality + /// @sa https://json.nlohmann.me/api/json_pointer/operator_ne/ + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator!=(const StringType& lhs, + const json_pointer& rhs); + + /// @brief compares two JSON pointer for less-than + template + // NOLINTNEXTLINE(readability-redundant-declaration) + friend bool operator<(const json_pointer& lhs, + const json_pointer& rhs) noexcept; +#endif + + private: + /// the reference tokens + std::vector reference_tokens; +}; + +#if !JSON_HAS_THREE_WAY_COMPARISON +// functions cannot be defined inside class due to ODR violations +template +inline bool operator==(const json_pointer& lhs, + const json_pointer& rhs) noexcept +{ + return lhs.reference_tokens == rhs.reference_tokens; +} + +template::string_t> +JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer, json_pointer)) +inline bool operator==(const json_pointer& lhs, + const StringType& rhs) +{ + return lhs == json_pointer(rhs); +} + +template::string_t> +JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator==(json_pointer, json_pointer)) +inline bool operator==(const StringType& lhs, + const json_pointer& rhs) +{ + return json_pointer(lhs) == rhs; +} + +template +inline bool operator!=(const json_pointer& lhs, + const json_pointer& rhs) noexcept +{ + return !(lhs == rhs); +} + +template::string_t> +JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator!=(json_pointer, json_pointer)) +inline bool operator!=(const json_pointer& lhs, + const StringType& rhs) +{ + return !(lhs == rhs); +} + +template::string_t> +JSON_HEDLEY_DEPRECATED_FOR(3.11.2, operator!=(json_pointer, json_pointer)) +inline bool operator!=(const StringType& lhs, + const json_pointer& rhs) +{ + return !(lhs == rhs); +} + +template +inline bool operator<(const json_pointer& lhs, + const json_pointer& rhs) noexcept +{ + return lhs.reference_tokens < rhs.reference_tokens; +} +#endif + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/json_ref.hpp b/include/nlohmann/detail/json_ref.hpp new file mode 100644 index 0000000..b8bb6a7 --- /dev/null +++ b/include/nlohmann/detail/json_ref.hpp @@ -0,0 +1,78 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include +#include + +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +class json_ref +{ + public: + using value_type = BasicJsonType; + + json_ref(value_type&& value) + : owned_value(std::move(value)) + {} + + json_ref(const value_type& value) + : value_ref(&value) + {} + + json_ref(std::initializer_list init) + : owned_value(init) + {} + + template < + class... Args, + enable_if_t::value, int> = 0 > + json_ref(Args && ... args) + : owned_value(std::forward(args)...) + {} + + // class should be movable only + json_ref(json_ref&&) noexcept = default; + json_ref(const json_ref&) = delete; + json_ref& operator=(const json_ref&) = delete; + json_ref& operator=(json_ref&&) = delete; + ~json_ref() = default; + + value_type moved_or_copied() const + { + if (value_ref == nullptr) + { + return std::move(owned_value); + } + return *value_ref; + } + + value_type const& operator*() const + { + return value_ref ? *value_ref : owned_value; + } + + value_type const* operator->() const + { + return &** this; + } + + private: + mutable value_type owned_value = nullptr; + value_type const* value_ref = nullptr; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/macro_scope.hpp b/include/nlohmann/detail/macro_scope.hpp new file mode 100644 index 0000000..97127a6 --- /dev/null +++ b/include/nlohmann/detail/macro_scope.hpp @@ -0,0 +1,482 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // declval, pair +#include +#include + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +#include + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifndef JSON_HAS_STATIC_RTTI + #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 + #define JSON_HAS_STATIC_RTTI 1 + #else + #define JSON_HAS_STATIC_RTTI 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +// inspired from https://stackoverflow.com/a/26745591 +// allows to call any std function as if (e.g. with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif diff --git a/include/nlohmann/detail/macro_unscope.hpp b/include/nlohmann/detail/macro_unscope.hpp new file mode 100644 index 0000000..c6620d1 --- /dev/null +++ b/include/nlohmann/detail/macro_unscope.hpp @@ -0,0 +1,45 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +// restore clang diagnostic settings +#if defined(__clang__) + #pragma clang diagnostic pop +#endif + +// clean up +#undef JSON_ASSERT +#undef JSON_INTERNAL_CATCH +#undef JSON_THROW +#undef JSON_PRIVATE_UNLESS_TESTED +#undef NLOHMANN_BASIC_JSON_TPL_DECLARATION +#undef NLOHMANN_BASIC_JSON_TPL +#undef JSON_EXPLICIT +#undef NLOHMANN_CAN_CALL_STD_FUNC_IMPL +#undef JSON_INLINE_VARIABLE +#undef JSON_NO_UNIQUE_ADDRESS +#undef JSON_DISABLE_ENUM_SERIALIZATION +#undef JSON_USE_GLOBAL_UDLS + +#ifndef JSON_TEST_KEEP_MACROS + #undef JSON_CATCH + #undef JSON_TRY + #undef JSON_HAS_CPP_11 + #undef JSON_HAS_CPP_14 + #undef JSON_HAS_CPP_17 + #undef JSON_HAS_CPP_20 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #undef JSON_HAS_THREE_WAY_COMPARISON + #undef JSON_HAS_RANGES + #undef JSON_HAS_STATIC_RTTI + #undef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#include diff --git a/include/nlohmann/detail/meta/call_std/begin.hpp b/include/nlohmann/detail/meta/call_std/begin.hpp new file mode 100644 index 0000000..364cc89 --- /dev/null +++ b/include/nlohmann/detail/meta/call_std/begin.hpp @@ -0,0 +1,17 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/call_std/end.hpp b/include/nlohmann/detail/meta/call_std/end.hpp new file mode 100644 index 0000000..463f070 --- /dev/null +++ b/include/nlohmann/detail/meta/call_std/end.hpp @@ -0,0 +1,17 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/cpp_future.hpp b/include/nlohmann/detail/meta/cpp_future.hpp new file mode 100644 index 0000000..412b5aa --- /dev/null +++ b/include/nlohmann/detail/meta/cpp_future.hpp @@ -0,0 +1,171 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + +#pragma once + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +inline constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/detected.hpp b/include/nlohmann/detail/meta/detected.hpp new file mode 100644 index 0000000..1db9bf9 --- /dev/null +++ b/include/nlohmann/detail/meta/detected.hpp @@ -0,0 +1,70 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/identity_tag.hpp b/include/nlohmann/detail/meta/identity_tag.hpp new file mode 100644 index 0000000..269deff --- /dev/null +++ b/include/nlohmann/detail/meta/identity_tag.hpp @@ -0,0 +1,21 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// dispatching helper struct +template struct identity_tag {}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/is_sax.hpp b/include/nlohmann/detail/meta/is_sax.hpp new file mode 100644 index 0000000..4e02bc1 --- /dev/null +++ b/include/nlohmann/detail/meta/is_sax.hpp @@ -0,0 +1,159 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // size_t +#include // declval +#include // string + +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using null_function_t = decltype(std::declval().null()); + +template +using boolean_function_t = + decltype(std::declval().boolean(std::declval())); + +template +using number_integer_function_t = + decltype(std::declval().number_integer(std::declval())); + +template +using number_unsigned_function_t = + decltype(std::declval().number_unsigned(std::declval())); + +template +using number_float_function_t = decltype(std::declval().number_float( + std::declval(), std::declval())); + +template +using string_function_t = + decltype(std::declval().string(std::declval())); + +template +using binary_function_t = + decltype(std::declval().binary(std::declval())); + +template +using start_object_function_t = + decltype(std::declval().start_object(std::declval())); + +template +using key_function_t = + decltype(std::declval().key(std::declval())); + +template +using end_object_function_t = decltype(std::declval().end_object()); + +template +using start_array_function_t = + decltype(std::declval().start_array(std::declval())); + +template +using end_array_function_t = decltype(std::declval().end_array()); + +template +using parse_error_function_t = decltype(std::declval().parse_error( + std::declval(), std::declval(), + std::declval())); + +template +struct is_sax +{ + private: + static_assert(is_basic_json::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using exception_t = typename BasicJsonType::exception; + + public: + static constexpr bool value = + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value && + is_detected_exact::value; +}; + +template +struct is_sax_static_asserts +{ + private: + static_assert(is_basic_json::value, + "BasicJsonType must be of type basic_json<...>"); + + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; + using exception_t = typename BasicJsonType::exception; + + public: + static_assert(is_detected_exact::value, + "Missing/invalid function: bool null()"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool boolean(bool)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool number_integer(number_integer_t)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool number_unsigned(number_unsigned_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool number_float(number_float_t, const string_t&)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool string(string_t&)"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool binary(binary_t&)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool start_object(std::size_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool key(string_t&)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool end_object()"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool start_array(std::size_t)"); + static_assert(is_detected_exact::value, + "Missing/invalid function: bool end_array()"); + static_assert( + is_detected_exact::value, + "Missing/invalid function: bool parse_error(std::size_t, const " + "std::string&, const exception&)"); +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END diff --git a/include/nlohmann/detail/meta/std_fs.hpp b/include/nlohmann/detail/meta/std_fs.hpp new file mode 100644 index 0000000..fd18039 --- /dev/null +++ b/include/nlohmann/detail/meta/std_fs.hpp @@ -0,0 +1,29 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include + +#if JSON_HAS_EXPERIMENTAL_FILESYSTEM +#include +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ +namespace std_fs = std::experimental::filesystem; +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END +#elif JSON_HAS_FILESYSTEM +#include +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ +namespace std_fs = std::filesystem; +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END +#endif diff --git a/include/nlohmann/detail/meta/type_traits.hpp b/include/nlohmann/detail/meta/type_traits.hpp new file mode 100644 index 0000000..e1b000d --- /dev/null +++ b/include/nlohmann/detail/meta/type_traits.hpp @@ -0,0 +1,795 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.11.3 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013-2023 Niels Lohmann +// SPDX-License-Identifier: MIT + +#pragma once + +#include // numeric_limits +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval +#include // tuple +#include // char_traits + +#include +#include +#include +#include +#include +#include +#include + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +///////////////// +// char_traits // +///////////////// + +// Primary template of char_traits calls std char_traits +template +struct char_traits : std::char_traits +{}; + +// Explicitly define char traits for unsigned char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = unsigned char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(EOF); + } +}; + +// Explicitly define char traits for signed char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = signed char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(EOF); + } +}; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& + is_complete_type < + detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template