mqt-core 3.2.1__cp311-cp311-win_amd64.whl → 3.3.1__cp311-cp311-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mqt-core might be problematic. Click here for more details.
- mqt/core/__init__.py +3 -3
- mqt/core/_commands.py +2 -2
- mqt/core/_version.py +16 -3
- mqt/core/bin/mqt-core-algorithms.dll +0 -0
- mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
- mqt/core/bin/mqt-core-dd.dll +0 -0
- mqt/core/bin/mqt-core-ds.dll +0 -0
- mqt/core/bin/mqt-core-fomac.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na-fomac.dll +0 -0
- mqt/core/bin/mqt-core-na.dll +0 -0
- mqt/core/bin/mqt-core-qasm.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp311-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +5 -7
- mqt/core/fomac.cp311-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +13 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +7 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +12 -14
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +29 -28
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +2 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +3 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +2 -2
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +3 -1
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +2 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +83 -45
- mqt/core/ir/operations.pyi +40 -27
- mqt/core/ir.cp311-win_amd64.pyd +0 -0
- mqt/core/lib/mqt-core-algorithms.lib +0 -0
- mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
- mqt/core/lib/mqt-core-dd.lib +0 -0
- mqt/core/lib/mqt-core-ds.lib +0 -0
- mqt/core/lib/mqt-core-fomac.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na-fomac.lib +0 -0
- mqt/core/lib/mqt-core-na.lib +0 -0
- mqt/core/lib/mqt-core-qasm.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/lib/spdlog.lib +0 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cp311-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +75 -11
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +108 -5
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +3 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +17 -16
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +6 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +1 -1
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +3 -3
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +3 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +51 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +124 -3
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.1.dist-info/DELVEWHEEL +2 -0
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/METADATA +74 -33
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/RECORD +244 -50
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/WHEEL +1 -1
- mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +0 -156
- mqt_core-3.2.1.dist-info/DELVEWHEEL +0 -2
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/entry_points.txt +0 -0
- {mqt_core-3.2.1.dist-info → mqt_core-3.3.1.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
// __ _____ _____ _____
|
|
2
|
+
// __| | __| | | | JSON for Modern C++
|
|
3
|
+
// | | |__ | | | | | | version 3.12.0
|
|
4
|
+
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
|
|
5
|
+
//
|
|
6
|
+
// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann <https://nlohmann.me>
|
|
7
|
+
// SPDX-License-Identifier: MIT
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include <cstddef> // nullptr_t
|
|
12
|
+
#include <exception> // exception
|
|
13
|
+
#if JSON_DIAGNOSTICS
|
|
14
|
+
#include <numeric> // accumulate
|
|
15
|
+
#endif
|
|
16
|
+
#include <stdexcept> // runtime_error
|
|
17
|
+
#include <string> // to_string
|
|
18
|
+
#include <vector> // vector
|
|
19
|
+
|
|
20
|
+
#include <nlohmann/detail/value_t.hpp>
|
|
21
|
+
#include <nlohmann/detail/string_escape.hpp>
|
|
22
|
+
#include <nlohmann/detail/input/position_t.hpp>
|
|
23
|
+
#include <nlohmann/detail/macro_scope.hpp>
|
|
24
|
+
#include <nlohmann/detail/meta/cpp_future.hpp>
|
|
25
|
+
#include <nlohmann/detail/meta/type_traits.hpp>
|
|
26
|
+
#include <nlohmann/detail/string_concat.hpp>
|
|
27
|
+
|
|
28
|
+
// With -Wweak-vtables, Clang will complain about the exception classes as they
|
|
29
|
+
// have no out-of-line virtual method definitions and their vtable will be
|
|
30
|
+
// emitted in every translation unit. This issue cannot be fixed with a
|
|
31
|
+
// header-only library as there is no implementation file to move these
|
|
32
|
+
// functions to. As a result, we suppress this warning here to avoid client
|
|
33
|
+
// code to stumble over this. See https://github.com/nlohmann/json/issues/4087
|
|
34
|
+
// for a discussion.
|
|
35
|
+
#if defined(__clang__)
|
|
36
|
+
#pragma clang diagnostic push
|
|
37
|
+
#pragma clang diagnostic ignored "-Wweak-vtables"
|
|
38
|
+
#endif
|
|
39
|
+
|
|
40
|
+
NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
41
|
+
namespace detail
|
|
42
|
+
{
|
|
43
|
+
|
|
44
|
+
////////////////
|
|
45
|
+
// exceptions //
|
|
46
|
+
////////////////
|
|
47
|
+
|
|
48
|
+
/// @brief general exception of the @ref basic_json class
|
|
49
|
+
/// @sa https://json.nlohmann.me/api/basic_json/exception/
|
|
50
|
+
class exception : public std::exception
|
|
51
|
+
{
|
|
52
|
+
public:
|
|
53
|
+
/// returns the explanatory string
|
|
54
|
+
const char* what() const noexcept override
|
|
55
|
+
{
|
|
56
|
+
return m.what();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/// the id of the exception
|
|
60
|
+
const int id; // NOLINT(cppcoreguidelines-non-private-member-variables-in-classes)
|
|
61
|
+
|
|
62
|
+
protected:
|
|
63
|
+
JSON_HEDLEY_NON_NULL(3)
|
|
64
|
+
exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
|
|
65
|
+
|
|
66
|
+
static std::string name(const std::string& ename, int id_)
|
|
67
|
+
{
|
|
68
|
+
return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static std::string diagnostics(std::nullptr_t /*leaf_element*/)
|
|
72
|
+
{
|
|
73
|
+
return "";
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
template<typename BasicJsonType>
|
|
77
|
+
static std::string diagnostics(const BasicJsonType* leaf_element)
|
|
78
|
+
{
|
|
79
|
+
#if JSON_DIAGNOSTICS
|
|
80
|
+
std::vector<std::string> tokens;
|
|
81
|
+
for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent)
|
|
82
|
+
{
|
|
83
|
+
switch (current->m_parent->type())
|
|
84
|
+
{
|
|
85
|
+
case value_t::array:
|
|
86
|
+
{
|
|
87
|
+
for (std::size_t i = 0; i < current->m_parent->m_data.m_value.array->size(); ++i)
|
|
88
|
+
{
|
|
89
|
+
if (¤t->m_parent->m_data.m_value.array->operator[](i) == current)
|
|
90
|
+
{
|
|
91
|
+
tokens.emplace_back(std::to_string(i));
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
case value_t::object:
|
|
99
|
+
{
|
|
100
|
+
for (const auto& element : *current->m_parent->m_data.m_value.object)
|
|
101
|
+
{
|
|
102
|
+
if (&element.second == current)
|
|
103
|
+
{
|
|
104
|
+
tokens.emplace_back(element.first.c_str());
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
case value_t::null: // LCOV_EXCL_LINE
|
|
112
|
+
case value_t::string: // LCOV_EXCL_LINE
|
|
113
|
+
case value_t::boolean: // LCOV_EXCL_LINE
|
|
114
|
+
case value_t::number_integer: // LCOV_EXCL_LINE
|
|
115
|
+
case value_t::number_unsigned: // LCOV_EXCL_LINE
|
|
116
|
+
case value_t::number_float: // LCOV_EXCL_LINE
|
|
117
|
+
case value_t::binary: // LCOV_EXCL_LINE
|
|
118
|
+
case value_t::discarded: // LCOV_EXCL_LINE
|
|
119
|
+
default: // LCOV_EXCL_LINE
|
|
120
|
+
break; // LCOV_EXCL_LINE
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (tokens.empty())
|
|
125
|
+
{
|
|
126
|
+
return "";
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
auto str = std::accumulate(tokens.rbegin(), tokens.rend(), std::string{},
|
|
130
|
+
[](const std::string & a, const std::string & b)
|
|
131
|
+
{
|
|
132
|
+
return concat(a, '/', detail::escape(b));
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
return concat('(', str, ") ", get_byte_positions(leaf_element));
|
|
136
|
+
#else
|
|
137
|
+
return get_byte_positions(leaf_element);
|
|
138
|
+
#endif
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
private:
|
|
142
|
+
/// an exception object as storage for error messages
|
|
143
|
+
std::runtime_error m;
|
|
144
|
+
#if JSON_DIAGNOSTIC_POSITIONS
|
|
145
|
+
template<typename BasicJsonType>
|
|
146
|
+
static std::string get_byte_positions(const BasicJsonType* leaf_element)
|
|
147
|
+
{
|
|
148
|
+
if ((leaf_element->start_pos() != std::string::npos) && (leaf_element->end_pos() != std::string::npos))
|
|
149
|
+
{
|
|
150
|
+
return concat("(bytes ", std::to_string(leaf_element->start_pos()), "-", std::to_string(leaf_element->end_pos()), ") ");
|
|
151
|
+
}
|
|
152
|
+
return "";
|
|
153
|
+
}
|
|
154
|
+
#else
|
|
155
|
+
template<typename BasicJsonType>
|
|
156
|
+
static std::string get_byte_positions(const BasicJsonType* leaf_element)
|
|
157
|
+
{
|
|
158
|
+
static_cast<void>(leaf_element);
|
|
159
|
+
return "";
|
|
160
|
+
}
|
|
161
|
+
#endif
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/// @brief exception indicating a parse error
|
|
165
|
+
/// @sa https://json.nlohmann.me/api/basic_json/parse_error/
|
|
166
|
+
class parse_error : public exception
|
|
167
|
+
{
|
|
168
|
+
public:
|
|
169
|
+
/*!
|
|
170
|
+
@brief create a parse error exception
|
|
171
|
+
@param[in] id_ the id of the exception
|
|
172
|
+
@param[in] pos the position where the error occurred (or with
|
|
173
|
+
chars_read_total=0 if the position cannot be
|
|
174
|
+
determined)
|
|
175
|
+
@param[in] what_arg the explanatory string
|
|
176
|
+
@return parse_error object
|
|
177
|
+
*/
|
|
178
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
179
|
+
static parse_error create(int id_, const position_t& pos, const std::string& what_arg, BasicJsonContext context)
|
|
180
|
+
{
|
|
181
|
+
const std::string w = concat(exception::name("parse_error", id_), "parse error",
|
|
182
|
+
position_string(pos), ": ", exception::diagnostics(context), what_arg);
|
|
183
|
+
return {id_, pos.chars_read_total, w.c_str()};
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
187
|
+
static parse_error create(int id_, std::size_t byte_, const std::string& what_arg, BasicJsonContext context)
|
|
188
|
+
{
|
|
189
|
+
const std::string w = concat(exception::name("parse_error", id_), "parse error",
|
|
190
|
+
(byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
|
|
191
|
+
": ", exception::diagnostics(context), what_arg);
|
|
192
|
+
return {id_, byte_, w.c_str()};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/*!
|
|
196
|
+
@brief byte index of the parse error
|
|
197
|
+
|
|
198
|
+
The byte index of the last read character in the input file.
|
|
199
|
+
|
|
200
|
+
@note For an input with n bytes, 1 is the index of the first character and
|
|
201
|
+
n+1 is the index of the terminating null byte or the end of file.
|
|
202
|
+
This also holds true when reading a byte vector (CBOR or MessagePack).
|
|
203
|
+
*/
|
|
204
|
+
const std::size_t byte;
|
|
205
|
+
|
|
206
|
+
private:
|
|
207
|
+
parse_error(int id_, std::size_t byte_, const char* what_arg)
|
|
208
|
+
: exception(id_, what_arg), byte(byte_) {}
|
|
209
|
+
|
|
210
|
+
static std::string position_string(const position_t& pos)
|
|
211
|
+
{
|
|
212
|
+
return concat(" at line ", std::to_string(pos.lines_read + 1),
|
|
213
|
+
", column ", std::to_string(pos.chars_read_current_line));
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/// @brief exception indicating errors with iterators
|
|
218
|
+
/// @sa https://json.nlohmann.me/api/basic_json/invalid_iterator/
|
|
219
|
+
class invalid_iterator : public exception
|
|
220
|
+
{
|
|
221
|
+
public:
|
|
222
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
223
|
+
static invalid_iterator create(int id_, const std::string& what_arg, BasicJsonContext context)
|
|
224
|
+
{
|
|
225
|
+
const std::string w = concat(exception::name("invalid_iterator", id_), exception::diagnostics(context), what_arg);
|
|
226
|
+
return {id_, w.c_str()};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
private:
|
|
230
|
+
JSON_HEDLEY_NON_NULL(3)
|
|
231
|
+
invalid_iterator(int id_, const char* what_arg)
|
|
232
|
+
: exception(id_, what_arg) {}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/// @brief exception indicating executing a member function with a wrong type
|
|
236
|
+
/// @sa https://json.nlohmann.me/api/basic_json/type_error/
|
|
237
|
+
class type_error : public exception
|
|
238
|
+
{
|
|
239
|
+
public:
|
|
240
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
241
|
+
static type_error create(int id_, const std::string& what_arg, BasicJsonContext context)
|
|
242
|
+
{
|
|
243
|
+
const std::string w = concat(exception::name("type_error", id_), exception::diagnostics(context), what_arg);
|
|
244
|
+
return {id_, w.c_str()};
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
private:
|
|
248
|
+
JSON_HEDLEY_NON_NULL(3)
|
|
249
|
+
type_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
/// @brief exception indicating access out of the defined range
|
|
253
|
+
/// @sa https://json.nlohmann.me/api/basic_json/out_of_range/
|
|
254
|
+
class out_of_range : public exception
|
|
255
|
+
{
|
|
256
|
+
public:
|
|
257
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
258
|
+
static out_of_range create(int id_, const std::string& what_arg, BasicJsonContext context)
|
|
259
|
+
{
|
|
260
|
+
const std::string w = concat(exception::name("out_of_range", id_), exception::diagnostics(context), what_arg);
|
|
261
|
+
return {id_, w.c_str()};
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
private:
|
|
265
|
+
JSON_HEDLEY_NON_NULL(3)
|
|
266
|
+
out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
/// @brief exception indicating other library errors
|
|
270
|
+
/// @sa https://json.nlohmann.me/api/basic_json/other_error/
|
|
271
|
+
class other_error : public exception
|
|
272
|
+
{
|
|
273
|
+
public:
|
|
274
|
+
template<typename BasicJsonContext, enable_if_t<is_basic_json_context<BasicJsonContext>::value, int> = 0>
|
|
275
|
+
static other_error create(int id_, const std::string& what_arg, BasicJsonContext context)
|
|
276
|
+
{
|
|
277
|
+
const std::string w = concat(exception::name("other_error", id_), exception::diagnostics(context), what_arg);
|
|
278
|
+
return {id_, w.c_str()};
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
private:
|
|
282
|
+
JSON_HEDLEY_NON_NULL(3)
|
|
283
|
+
other_error(int id_, const char* what_arg) : exception(id_, what_arg) {}
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
} // namespace detail
|
|
287
|
+
NLOHMANN_JSON_NAMESPACE_END
|
|
288
|
+
|
|
289
|
+
#if defined(__clang__)
|
|
290
|
+
#pragma clang diagnostic pop
|
|
291
|
+
#endif
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// __ _____ _____ _____
|
|
2
|
+
// __| | __| | | | JSON for Modern C++
|
|
3
|
+
// | | |__ | | | | | | version 3.12.0
|
|
4
|
+
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
|
|
5
|
+
//
|
|
6
|
+
// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann <https://nlohmann.me>
|
|
7
|
+
// SPDX-License-Identifier: MIT
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include <cstdint> // uint8_t
|
|
12
|
+
#include <cstddef> // size_t
|
|
13
|
+
#include <functional> // hash
|
|
14
|
+
|
|
15
|
+
#include <nlohmann/detail/abi_macros.hpp>
|
|
16
|
+
#include <nlohmann/detail/value_t.hpp>
|
|
17
|
+
|
|
18
|
+
NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
19
|
+
namespace detail
|
|
20
|
+
{
|
|
21
|
+
|
|
22
|
+
// boost::hash_combine
|
|
23
|
+
inline std::size_t combine(std::size_t seed, std::size_t h) noexcept
|
|
24
|
+
{
|
|
25
|
+
seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U);
|
|
26
|
+
return seed;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/*!
|
|
30
|
+
@brief hash a JSON value
|
|
31
|
+
|
|
32
|
+
The hash function tries to rely on std::hash where possible. Furthermore, the
|
|
33
|
+
type of the JSON value is taken into account to have different hash values for
|
|
34
|
+
null, 0, 0U, and false, etc.
|
|
35
|
+
|
|
36
|
+
@tparam BasicJsonType basic_json specialization
|
|
37
|
+
@param j JSON value to hash
|
|
38
|
+
@return hash value of j
|
|
39
|
+
*/
|
|
40
|
+
template<typename BasicJsonType>
|
|
41
|
+
std::size_t hash(const BasicJsonType& j)
|
|
42
|
+
{
|
|
43
|
+
using string_t = typename BasicJsonType::string_t;
|
|
44
|
+
using number_integer_t = typename BasicJsonType::number_integer_t;
|
|
45
|
+
using number_unsigned_t = typename BasicJsonType::number_unsigned_t;
|
|
46
|
+
using number_float_t = typename BasicJsonType::number_float_t;
|
|
47
|
+
|
|
48
|
+
const auto type = static_cast<std::size_t>(j.type());
|
|
49
|
+
switch (j.type())
|
|
50
|
+
{
|
|
51
|
+
case BasicJsonType::value_t::null:
|
|
52
|
+
case BasicJsonType::value_t::discarded:
|
|
53
|
+
{
|
|
54
|
+
return combine(type, 0);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
case BasicJsonType::value_t::object:
|
|
58
|
+
{
|
|
59
|
+
auto seed = combine(type, j.size());
|
|
60
|
+
for (const auto& element : j.items())
|
|
61
|
+
{
|
|
62
|
+
const auto h = std::hash<string_t> {}(element.key());
|
|
63
|
+
seed = combine(seed, h);
|
|
64
|
+
seed = combine(seed, hash(element.value()));
|
|
65
|
+
}
|
|
66
|
+
return seed;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
case BasicJsonType::value_t::array:
|
|
70
|
+
{
|
|
71
|
+
auto seed = combine(type, j.size());
|
|
72
|
+
for (const auto& element : j)
|
|
73
|
+
{
|
|
74
|
+
seed = combine(seed, hash(element));
|
|
75
|
+
}
|
|
76
|
+
return seed;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
case BasicJsonType::value_t::string:
|
|
80
|
+
{
|
|
81
|
+
const auto h = std::hash<string_t> {}(j.template get_ref<const string_t&>());
|
|
82
|
+
return combine(type, h);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
case BasicJsonType::value_t::boolean:
|
|
86
|
+
{
|
|
87
|
+
const auto h = std::hash<bool> {}(j.template get<bool>());
|
|
88
|
+
return combine(type, h);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
case BasicJsonType::value_t::number_integer:
|
|
92
|
+
{
|
|
93
|
+
const auto h = std::hash<number_integer_t> {}(j.template get<number_integer_t>());
|
|
94
|
+
return combine(type, h);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
case BasicJsonType::value_t::number_unsigned:
|
|
98
|
+
{
|
|
99
|
+
const auto h = std::hash<number_unsigned_t> {}(j.template get<number_unsigned_t>());
|
|
100
|
+
return combine(type, h);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
case BasicJsonType::value_t::number_float:
|
|
104
|
+
{
|
|
105
|
+
const auto h = std::hash<number_float_t> {}(j.template get<number_float_t>());
|
|
106
|
+
return combine(type, h);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
case BasicJsonType::value_t::binary:
|
|
110
|
+
{
|
|
111
|
+
auto seed = combine(type, j.get_binary().size());
|
|
112
|
+
const auto h = std::hash<bool> {}(j.get_binary().has_subtype());
|
|
113
|
+
seed = combine(seed, h);
|
|
114
|
+
seed = combine(seed, static_cast<std::size_t>(j.get_binary().subtype()));
|
|
115
|
+
for (const auto byte : j.get_binary())
|
|
116
|
+
{
|
|
117
|
+
seed = combine(seed, std::hash<std::uint8_t> {}(byte));
|
|
118
|
+
}
|
|
119
|
+
return seed;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
default: // LCOV_EXCL_LINE
|
|
123
|
+
JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
|
|
124
|
+
return 0; // LCOV_EXCL_LINE
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
} // namespace detail
|
|
129
|
+
NLOHMANN_JSON_NAMESPACE_END
|