mqt-core 3.3.2__cp314-cp314t-macosx_11_0_arm64.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.
- mqt/core/__init__.py +77 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +34 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/dd.cpython-314t-darwin.so +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -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/NAComputation.hpp +185 -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/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -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 +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cpython-314t-darwin.so +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-dd.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ds.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-ir.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-na.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qasm.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.2.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
- mqt/core/lib/libmqt-core-zx.dylib +0 -0
- mqt/core/lib/libspdlog.a +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cpython-314t-darwin.so +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
- 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 +109 -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 +118 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +546 -0
- mqt_core-3.3.2.dist-info/WHEEL +6 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
// This file contains all macro definitions affecting or depending on the ABI
|
|
12
|
+
|
|
13
|
+
#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK
|
|
14
|
+
#if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH)
|
|
15
|
+
#if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0
|
|
16
|
+
#warning "Already included a different version of the library!"
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum)
|
|
22
|
+
#define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum)
|
|
23
|
+
#define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum)
|
|
24
|
+
|
|
25
|
+
#ifndef JSON_DIAGNOSTICS
|
|
26
|
+
#define JSON_DIAGNOSTICS 0
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
#ifndef JSON_DIAGNOSTIC_POSITIONS
|
|
30
|
+
#define JSON_DIAGNOSTIC_POSITIONS 0
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
34
|
+
#define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
#if JSON_DIAGNOSTICS
|
|
38
|
+
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag
|
|
39
|
+
#else
|
|
40
|
+
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#if JSON_DIAGNOSTIC_POSITIONS
|
|
44
|
+
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp
|
|
45
|
+
#else
|
|
46
|
+
#define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS
|
|
47
|
+
#endif
|
|
48
|
+
|
|
49
|
+
#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
50
|
+
#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp
|
|
51
|
+
#else
|
|
52
|
+
#define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON
|
|
53
|
+
#endif
|
|
54
|
+
|
|
55
|
+
#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION
|
|
56
|
+
#define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0
|
|
57
|
+
#endif
|
|
58
|
+
|
|
59
|
+
// Construct the namespace ABI tags component
|
|
60
|
+
#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c
|
|
61
|
+
#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \
|
|
62
|
+
NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c)
|
|
63
|
+
|
|
64
|
+
#define NLOHMANN_JSON_ABI_TAGS \
|
|
65
|
+
NLOHMANN_JSON_ABI_TAGS_CONCAT( \
|
|
66
|
+
NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \
|
|
67
|
+
NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \
|
|
68
|
+
NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS)
|
|
69
|
+
|
|
70
|
+
// Construct the namespace version component
|
|
71
|
+
#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \
|
|
72
|
+
_v ## major ## _ ## minor ## _ ## patch
|
|
73
|
+
#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \
|
|
74
|
+
NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch)
|
|
75
|
+
|
|
76
|
+
#if NLOHMANN_JSON_NAMESPACE_NO_VERSION
|
|
77
|
+
#define NLOHMANN_JSON_NAMESPACE_VERSION
|
|
78
|
+
#else
|
|
79
|
+
#define NLOHMANN_JSON_NAMESPACE_VERSION \
|
|
80
|
+
NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \
|
|
81
|
+
NLOHMANN_JSON_VERSION_MINOR, \
|
|
82
|
+
NLOHMANN_JSON_VERSION_PATCH)
|
|
83
|
+
#endif
|
|
84
|
+
|
|
85
|
+
// Combine namespace components
|
|
86
|
+
#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b
|
|
87
|
+
#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \
|
|
88
|
+
NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b)
|
|
89
|
+
|
|
90
|
+
#ifndef NLOHMANN_JSON_NAMESPACE
|
|
91
|
+
#define NLOHMANN_JSON_NAMESPACE \
|
|
92
|
+
nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \
|
|
93
|
+
NLOHMANN_JSON_ABI_TAGS, \
|
|
94
|
+
NLOHMANN_JSON_NAMESPACE_VERSION)
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
98
|
+
#define NLOHMANN_JSON_NAMESPACE_BEGIN \
|
|
99
|
+
namespace nlohmann \
|
|
100
|
+
{ \
|
|
101
|
+
inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \
|
|
102
|
+
NLOHMANN_JSON_ABI_TAGS, \
|
|
103
|
+
NLOHMANN_JSON_NAMESPACE_VERSION) \
|
|
104
|
+
{
|
|
105
|
+
#endif
|
|
106
|
+
|
|
107
|
+
#ifndef NLOHMANN_JSON_NAMESPACE_END
|
|
108
|
+
#define NLOHMANN_JSON_NAMESPACE_END \
|
|
109
|
+
} /* namespace (inline namespace) NOLINT(readability/namespace) */ \
|
|
110
|
+
} // namespace nlohmann
|
|
111
|
+
#endif
|
|
@@ -0,0 +1,577 @@
|
|
|
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 <algorithm> // transform
|
|
12
|
+
#include <array> // array
|
|
13
|
+
#include <forward_list> // forward_list
|
|
14
|
+
#include <iterator> // inserter, front_inserter, end
|
|
15
|
+
#include <map> // map
|
|
16
|
+
#ifdef JSON_HAS_CPP_17
|
|
17
|
+
#include <optional> // optional
|
|
18
|
+
#endif
|
|
19
|
+
#include <string> // string
|
|
20
|
+
#include <tuple> // tuple, make_tuple
|
|
21
|
+
#include <type_traits> // is_arithmetic, is_same, is_enum, underlying_type, is_convertible
|
|
22
|
+
#include <unordered_map> // unordered_map
|
|
23
|
+
#include <utility> // pair, declval
|
|
24
|
+
#include <valarray> // valarray
|
|
25
|
+
|
|
26
|
+
#include <nlohmann/detail/exceptions.hpp>
|
|
27
|
+
#include <nlohmann/detail/macro_scope.hpp>
|
|
28
|
+
#include <nlohmann/detail/meta/cpp_future.hpp>
|
|
29
|
+
#include <nlohmann/detail/meta/identity_tag.hpp>
|
|
30
|
+
#include <nlohmann/detail/meta/std_fs.hpp>
|
|
31
|
+
#include <nlohmann/detail/meta/type_traits.hpp>
|
|
32
|
+
#include <nlohmann/detail/string_concat.hpp>
|
|
33
|
+
#include <nlohmann/detail/value_t.hpp>
|
|
34
|
+
|
|
35
|
+
NLOHMANN_JSON_NAMESPACE_BEGIN
|
|
36
|
+
namespace detail
|
|
37
|
+
{
|
|
38
|
+
|
|
39
|
+
template<typename BasicJsonType>
|
|
40
|
+
inline void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
|
|
41
|
+
{
|
|
42
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_null()))
|
|
43
|
+
{
|
|
44
|
+
JSON_THROW(type_error::create(302, concat("type must be null, but is ", j.type_name()), &j));
|
|
45
|
+
}
|
|
46
|
+
n = nullptr;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
#ifdef JSON_HAS_CPP_17
|
|
50
|
+
#ifndef JSON_USE_IMPLICIT_CONVERSIONS
|
|
51
|
+
template<typename BasicJsonType, typename T>
|
|
52
|
+
void from_json(const BasicJsonType& j, std::optional<T>& opt)
|
|
53
|
+
{
|
|
54
|
+
if (j.is_null())
|
|
55
|
+
{
|
|
56
|
+
opt = std::nullopt;
|
|
57
|
+
}
|
|
58
|
+
else
|
|
59
|
+
{
|
|
60
|
+
opt.emplace(j.template get<T>());
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
#endif // JSON_USE_IMPLICIT_CONVERSIONS
|
|
65
|
+
#endif // JSON_HAS_CPP_17
|
|
66
|
+
|
|
67
|
+
// overloads for basic_json template parameters
|
|
68
|
+
template < typename BasicJsonType, typename ArithmeticType,
|
|
69
|
+
enable_if_t < std::is_arithmetic<ArithmeticType>::value&&
|
|
70
|
+
!std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
|
|
71
|
+
int > = 0 >
|
|
72
|
+
void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
|
|
73
|
+
{
|
|
74
|
+
switch (static_cast<value_t>(j))
|
|
75
|
+
{
|
|
76
|
+
case value_t::number_unsigned:
|
|
77
|
+
{
|
|
78
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case value_t::number_integer:
|
|
82
|
+
{
|
|
83
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case value_t::number_float:
|
|
87
|
+
{
|
|
88
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
case value_t::null:
|
|
93
|
+
case value_t::object:
|
|
94
|
+
case value_t::array:
|
|
95
|
+
case value_t::string:
|
|
96
|
+
case value_t::boolean:
|
|
97
|
+
case value_t::binary:
|
|
98
|
+
case value_t::discarded:
|
|
99
|
+
default:
|
|
100
|
+
JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
template<typename BasicJsonType>
|
|
105
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b)
|
|
106
|
+
{
|
|
107
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_boolean()))
|
|
108
|
+
{
|
|
109
|
+
JSON_THROW(type_error::create(302, concat("type must be boolean, but is ", j.type_name()), &j));
|
|
110
|
+
}
|
|
111
|
+
b = *j.template get_ptr<const typename BasicJsonType::boolean_t*>();
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
template<typename BasicJsonType>
|
|
115
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
|
|
116
|
+
{
|
|
117
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
|
|
118
|
+
{
|
|
119
|
+
JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
|
|
120
|
+
}
|
|
121
|
+
s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
template <
|
|
125
|
+
typename BasicJsonType, typename StringType,
|
|
126
|
+
enable_if_t <
|
|
127
|
+
std::is_assignable<StringType&, const typename BasicJsonType::string_t>::value
|
|
128
|
+
&& is_detected_exact<typename BasicJsonType::string_t::value_type, value_type_t, StringType>::value
|
|
129
|
+
&& !std::is_same<typename BasicJsonType::string_t, StringType>::value
|
|
130
|
+
&& !is_json_ref<StringType>::value, int > = 0 >
|
|
131
|
+
inline void from_json(const BasicJsonType& j, StringType& s)
|
|
132
|
+
{
|
|
133
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
|
|
134
|
+
{
|
|
135
|
+
JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
template<typename BasicJsonType>
|
|
142
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_float_t& val)
|
|
143
|
+
{
|
|
144
|
+
get_arithmetic_value(j, val);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
template<typename BasicJsonType>
|
|
148
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_unsigned_t& val)
|
|
149
|
+
{
|
|
150
|
+
get_arithmetic_value(j, val);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
template<typename BasicJsonType>
|
|
154
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::number_integer_t& val)
|
|
155
|
+
{
|
|
156
|
+
get_arithmetic_value(j, val);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
#if !JSON_DISABLE_ENUM_SERIALIZATION
|
|
160
|
+
template<typename BasicJsonType, typename EnumType,
|
|
161
|
+
enable_if_t<std::is_enum<EnumType>::value, int> = 0>
|
|
162
|
+
inline void from_json(const BasicJsonType& j, EnumType& e)
|
|
163
|
+
{
|
|
164
|
+
typename std::underlying_type<EnumType>::type val;
|
|
165
|
+
get_arithmetic_value(j, val);
|
|
166
|
+
e = static_cast<EnumType>(val);
|
|
167
|
+
}
|
|
168
|
+
#endif // JSON_DISABLE_ENUM_SERIALIZATION
|
|
169
|
+
|
|
170
|
+
// forward_list doesn't have an insert method
|
|
171
|
+
template<typename BasicJsonType, typename T, typename Allocator,
|
|
172
|
+
enable_if_t<is_getable<BasicJsonType, T>::value, int> = 0>
|
|
173
|
+
inline void from_json(const BasicJsonType& j, std::forward_list<T, Allocator>& l)
|
|
174
|
+
{
|
|
175
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
176
|
+
{
|
|
177
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
178
|
+
}
|
|
179
|
+
l.clear();
|
|
180
|
+
std::transform(j.rbegin(), j.rend(),
|
|
181
|
+
std::front_inserter(l), [](const BasicJsonType & i)
|
|
182
|
+
{
|
|
183
|
+
return i.template get<T>();
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// valarray doesn't have an insert method
|
|
188
|
+
template<typename BasicJsonType, typename T,
|
|
189
|
+
enable_if_t<is_getable<BasicJsonType, T>::value, int> = 0>
|
|
190
|
+
inline void from_json(const BasicJsonType& j, std::valarray<T>& l)
|
|
191
|
+
{
|
|
192
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
193
|
+
{
|
|
194
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
195
|
+
}
|
|
196
|
+
l.resize(j.size());
|
|
197
|
+
std::transform(j.begin(), j.end(), std::begin(l),
|
|
198
|
+
[](const BasicJsonType & elem)
|
|
199
|
+
{
|
|
200
|
+
return elem.template get<T>();
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
template<typename BasicJsonType, typename T, std::size_t N>
|
|
205
|
+
auto from_json(const BasicJsonType& j, T (&arr)[N]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
|
206
|
+
-> decltype(j.template get<T>(), void())
|
|
207
|
+
{
|
|
208
|
+
for (std::size_t i = 0; i < N; ++i)
|
|
209
|
+
{
|
|
210
|
+
arr[i] = j.at(i).template get<T>();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
template<typename BasicJsonType, typename T, std::size_t N1, std::size_t N2>
|
|
215
|
+
auto from_json(const BasicJsonType& j, T (&arr)[N1][N2]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
|
216
|
+
-> decltype(j.template get<T>(), void())
|
|
217
|
+
{
|
|
218
|
+
for (std::size_t i1 = 0; i1 < N1; ++i1)
|
|
219
|
+
{
|
|
220
|
+
for (std::size_t i2 = 0; i2 < N2; ++i2)
|
|
221
|
+
{
|
|
222
|
+
arr[i1][i2] = j.at(i1).at(i2).template get<T>();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
template<typename BasicJsonType, typename T, std::size_t N1, std::size_t N2, std::size_t N3>
|
|
228
|
+
auto from_json(const BasicJsonType& j, T (&arr)[N1][N2][N3]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
|
229
|
+
-> decltype(j.template get<T>(), void())
|
|
230
|
+
{
|
|
231
|
+
for (std::size_t i1 = 0; i1 < N1; ++i1)
|
|
232
|
+
{
|
|
233
|
+
for (std::size_t i2 = 0; i2 < N2; ++i2)
|
|
234
|
+
{
|
|
235
|
+
for (std::size_t i3 = 0; i3 < N3; ++i3)
|
|
236
|
+
{
|
|
237
|
+
arr[i1][i2][i3] = j.at(i1).at(i2).at(i3).template get<T>();
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
template<typename BasicJsonType, typename T, std::size_t N1, std::size_t N2, std::size_t N3, std::size_t N4>
|
|
244
|
+
auto from_json(const BasicJsonType& j, T (&arr)[N1][N2][N3][N4]) // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
|
245
|
+
-> decltype(j.template get<T>(), void())
|
|
246
|
+
{
|
|
247
|
+
for (std::size_t i1 = 0; i1 < N1; ++i1)
|
|
248
|
+
{
|
|
249
|
+
for (std::size_t i2 = 0; i2 < N2; ++i2)
|
|
250
|
+
{
|
|
251
|
+
for (std::size_t i3 = 0; i3 < N3; ++i3)
|
|
252
|
+
{
|
|
253
|
+
for (std::size_t i4 = 0; i4 < N4; ++i4)
|
|
254
|
+
{
|
|
255
|
+
arr[i1][i2][i3][i4] = j.at(i1).at(i2).at(i3).at(i4).template get<T>();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
template<typename BasicJsonType>
|
|
263
|
+
inline void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_t& arr, priority_tag<3> /*unused*/)
|
|
264
|
+
{
|
|
265
|
+
arr = *j.template get_ptr<const typename BasicJsonType::array_t*>();
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
template<typename BasicJsonType, typename T, std::size_t N>
|
|
269
|
+
auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& arr,
|
|
270
|
+
priority_tag<2> /*unused*/)
|
|
271
|
+
-> decltype(j.template get<T>(), void())
|
|
272
|
+
{
|
|
273
|
+
for (std::size_t i = 0; i < N; ++i)
|
|
274
|
+
{
|
|
275
|
+
arr[i] = j.at(i).template get<T>();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
template<typename BasicJsonType, typename ConstructibleArrayType,
|
|
280
|
+
enable_if_t<
|
|
281
|
+
std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value,
|
|
282
|
+
int> = 0>
|
|
283
|
+
auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<1> /*unused*/)
|
|
284
|
+
-> decltype(
|
|
285
|
+
arr.reserve(std::declval<typename ConstructibleArrayType::size_type>()),
|
|
286
|
+
j.template get<typename ConstructibleArrayType::value_type>(),
|
|
287
|
+
void())
|
|
288
|
+
{
|
|
289
|
+
using std::end;
|
|
290
|
+
|
|
291
|
+
ConstructibleArrayType ret;
|
|
292
|
+
ret.reserve(j.size());
|
|
293
|
+
std::transform(j.begin(), j.end(),
|
|
294
|
+
std::inserter(ret, end(ret)), [](const BasicJsonType & i)
|
|
295
|
+
{
|
|
296
|
+
// get<BasicJsonType>() returns *this, this won't call a from_json
|
|
297
|
+
// method when value_type is BasicJsonType
|
|
298
|
+
return i.template get<typename ConstructibleArrayType::value_type>();
|
|
299
|
+
});
|
|
300
|
+
arr = std::move(ret);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
template<typename BasicJsonType, typename ConstructibleArrayType,
|
|
304
|
+
enable_if_t<
|
|
305
|
+
std::is_assignable<ConstructibleArrayType&, ConstructibleArrayType>::value,
|
|
306
|
+
int> = 0>
|
|
307
|
+
inline void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr,
|
|
308
|
+
priority_tag<0> /*unused*/)
|
|
309
|
+
{
|
|
310
|
+
using std::end;
|
|
311
|
+
|
|
312
|
+
ConstructibleArrayType ret;
|
|
313
|
+
std::transform(
|
|
314
|
+
j.begin(), j.end(), std::inserter(ret, end(ret)),
|
|
315
|
+
[](const BasicJsonType & i)
|
|
316
|
+
{
|
|
317
|
+
// get<BasicJsonType>() returns *this, this won't call a from_json
|
|
318
|
+
// method when value_type is BasicJsonType
|
|
319
|
+
return i.template get<typename ConstructibleArrayType::value_type>();
|
|
320
|
+
});
|
|
321
|
+
arr = std::move(ret);
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
template < typename BasicJsonType, typename ConstructibleArrayType,
|
|
325
|
+
enable_if_t <
|
|
326
|
+
is_constructible_array_type<BasicJsonType, ConstructibleArrayType>::value&&
|
|
327
|
+
!is_constructible_object_type<BasicJsonType, ConstructibleArrayType>::value&&
|
|
328
|
+
!is_constructible_string_type<BasicJsonType, ConstructibleArrayType>::value&&
|
|
329
|
+
!std::is_same<ConstructibleArrayType, typename BasicJsonType::binary_t>::value&&
|
|
330
|
+
!is_basic_json<ConstructibleArrayType>::value,
|
|
331
|
+
int > = 0 >
|
|
332
|
+
auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
|
|
333
|
+
-> decltype(from_json_array_impl(j, arr, priority_tag<3> {}),
|
|
334
|
+
j.template get<typename ConstructibleArrayType::value_type>(),
|
|
335
|
+
void())
|
|
336
|
+
{
|
|
337
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
338
|
+
{
|
|
339
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
from_json_array_impl(j, arr, priority_tag<3> {});
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
template < typename BasicJsonType, typename T, std::size_t... Idx >
|
|
346
|
+
std::array<T, sizeof...(Idx)> from_json_inplace_array_impl(BasicJsonType&& j,
|
|
347
|
+
identity_tag<std::array<T, sizeof...(Idx)>> /*unused*/, index_sequence<Idx...> /*unused*/)
|
|
348
|
+
{
|
|
349
|
+
return { { std::forward<BasicJsonType>(j).at(Idx).template get<T>()... } };
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
template < typename BasicJsonType, typename T, std::size_t N >
|
|
353
|
+
auto from_json(BasicJsonType&& j, identity_tag<std::array<T, N>> tag)
|
|
354
|
+
-> decltype(from_json_inplace_array_impl(std::forward<BasicJsonType>(j), tag, make_index_sequence<N> {}))
|
|
355
|
+
{
|
|
356
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
357
|
+
{
|
|
358
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return from_json_inplace_array_impl(std::forward<BasicJsonType>(j), tag, make_index_sequence<N> {});
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
template<typename BasicJsonType>
|
|
365
|
+
inline void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin)
|
|
366
|
+
{
|
|
367
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_binary()))
|
|
368
|
+
{
|
|
369
|
+
JSON_THROW(type_error::create(302, concat("type must be binary, but is ", j.type_name()), &j));
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
bin = *j.template get_ptr<const typename BasicJsonType::binary_t*>();
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
template<typename BasicJsonType, typename ConstructibleObjectType,
|
|
376
|
+
enable_if_t<is_constructible_object_type<BasicJsonType, ConstructibleObjectType>::value, int> = 0>
|
|
377
|
+
inline void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
|
|
378
|
+
{
|
|
379
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_object()))
|
|
380
|
+
{
|
|
381
|
+
JSON_THROW(type_error::create(302, concat("type must be object, but is ", j.type_name()), &j));
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
ConstructibleObjectType ret;
|
|
385
|
+
const auto* inner_object = j.template get_ptr<const typename BasicJsonType::object_t*>();
|
|
386
|
+
using value_type = typename ConstructibleObjectType::value_type;
|
|
387
|
+
std::transform(
|
|
388
|
+
inner_object->begin(), inner_object->end(),
|
|
389
|
+
std::inserter(ret, ret.begin()),
|
|
390
|
+
[](typename BasicJsonType::object_t::value_type const & p)
|
|
391
|
+
{
|
|
392
|
+
return value_type(p.first, p.second.template get<typename ConstructibleObjectType::mapped_type>());
|
|
393
|
+
});
|
|
394
|
+
obj = std::move(ret);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// overload for arithmetic types, not chosen for basic_json template arguments
|
|
398
|
+
// (BooleanType, etc..); note: Is it really necessary to provide explicit
|
|
399
|
+
// overloads for boolean_t etc. in case of a custom BooleanType which is not
|
|
400
|
+
// an arithmetic type?
|
|
401
|
+
template < typename BasicJsonType, typename ArithmeticType,
|
|
402
|
+
enable_if_t <
|
|
403
|
+
std::is_arithmetic<ArithmeticType>::value&&
|
|
404
|
+
!std::is_same<ArithmeticType, typename BasicJsonType::number_unsigned_t>::value&&
|
|
405
|
+
!std::is_same<ArithmeticType, typename BasicJsonType::number_integer_t>::value&&
|
|
406
|
+
!std::is_same<ArithmeticType, typename BasicJsonType::number_float_t>::value&&
|
|
407
|
+
!std::is_same<ArithmeticType, typename BasicJsonType::boolean_t>::value,
|
|
408
|
+
int > = 0 >
|
|
409
|
+
inline void from_json(const BasicJsonType& j, ArithmeticType& val)
|
|
410
|
+
{
|
|
411
|
+
switch (static_cast<value_t>(j))
|
|
412
|
+
{
|
|
413
|
+
case value_t::number_unsigned:
|
|
414
|
+
{
|
|
415
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_unsigned_t*>());
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
case value_t::number_integer:
|
|
419
|
+
{
|
|
420
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_integer_t*>());
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
case value_t::number_float:
|
|
424
|
+
{
|
|
425
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::number_float_t*>());
|
|
426
|
+
break;
|
|
427
|
+
}
|
|
428
|
+
case value_t::boolean:
|
|
429
|
+
{
|
|
430
|
+
val = static_cast<ArithmeticType>(*j.template get_ptr<const typename BasicJsonType::boolean_t*>());
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
case value_t::null:
|
|
435
|
+
case value_t::object:
|
|
436
|
+
case value_t::array:
|
|
437
|
+
case value_t::string:
|
|
438
|
+
case value_t::binary:
|
|
439
|
+
case value_t::discarded:
|
|
440
|
+
default:
|
|
441
|
+
JSON_THROW(type_error::create(302, concat("type must be number, but is ", j.type_name()), &j));
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
template<typename BasicJsonType, typename... Args, std::size_t... Idx>
|
|
446
|
+
std::tuple<Args...> from_json_tuple_impl_base(BasicJsonType&& j, index_sequence<Idx...> /*unused*/)
|
|
447
|
+
{
|
|
448
|
+
return std::make_tuple(std::forward<BasicJsonType>(j).at(Idx).template get<Args>()...);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
template<typename BasicJsonType>
|
|
452
|
+
std::tuple<> from_json_tuple_impl_base(BasicJsonType& /*unused*/, index_sequence<> /*unused*/)
|
|
453
|
+
{
|
|
454
|
+
return {};
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
template < typename BasicJsonType, class A1, class A2 >
|
|
458
|
+
std::pair<A1, A2> from_json_tuple_impl(BasicJsonType&& j, identity_tag<std::pair<A1, A2>> /*unused*/, priority_tag<0> /*unused*/)
|
|
459
|
+
{
|
|
460
|
+
return {std::forward<BasicJsonType>(j).at(0).template get<A1>(),
|
|
461
|
+
std::forward<BasicJsonType>(j).at(1).template get<A2>()};
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
template<typename BasicJsonType, typename A1, typename A2>
|
|
465
|
+
inline void from_json_tuple_impl(BasicJsonType&& j, std::pair<A1, A2>& p, priority_tag<1> /*unused*/)
|
|
466
|
+
{
|
|
467
|
+
p = from_json_tuple_impl(std::forward<BasicJsonType>(j), identity_tag<std::pair<A1, A2>> {}, priority_tag<0> {});
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
template<typename BasicJsonType, typename... Args>
|
|
471
|
+
std::tuple<Args...> from_json_tuple_impl(BasicJsonType&& j, identity_tag<std::tuple<Args...>> /*unused*/, priority_tag<2> /*unused*/)
|
|
472
|
+
{
|
|
473
|
+
return from_json_tuple_impl_base<BasicJsonType, Args...>(std::forward<BasicJsonType>(j), index_sequence_for<Args...> {});
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
template<typename BasicJsonType, typename... Args>
|
|
477
|
+
inline void from_json_tuple_impl(BasicJsonType&& j, std::tuple<Args...>& t, priority_tag<3> /*unused*/)
|
|
478
|
+
{
|
|
479
|
+
t = from_json_tuple_impl_base<BasicJsonType, Args...>(std::forward<BasicJsonType>(j), index_sequence_for<Args...> {});
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
template<typename BasicJsonType, typename TupleRelated>
|
|
483
|
+
auto from_json(BasicJsonType&& j, TupleRelated&& t)
|
|
484
|
+
-> decltype(from_json_tuple_impl(std::forward<BasicJsonType>(j), std::forward<TupleRelated>(t), priority_tag<3> {}))
|
|
485
|
+
{
|
|
486
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
487
|
+
{
|
|
488
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return from_json_tuple_impl(std::forward<BasicJsonType>(j), std::forward<TupleRelated>(t), priority_tag<3> {});
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator,
|
|
495
|
+
typename = enable_if_t < !std::is_constructible <
|
|
496
|
+
typename BasicJsonType::string_t, Key >::value >>
|
|
497
|
+
inline void from_json(const BasicJsonType& j, std::map<Key, Value, Compare, Allocator>& m)
|
|
498
|
+
{
|
|
499
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
500
|
+
{
|
|
501
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
502
|
+
}
|
|
503
|
+
m.clear();
|
|
504
|
+
for (const auto& p : j)
|
|
505
|
+
{
|
|
506
|
+
if (JSON_HEDLEY_UNLIKELY(!p.is_array()))
|
|
507
|
+
{
|
|
508
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j));
|
|
509
|
+
}
|
|
510
|
+
m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator,
|
|
515
|
+
typename = enable_if_t < !std::is_constructible <
|
|
516
|
+
typename BasicJsonType::string_t, Key >::value >>
|
|
517
|
+
inline void from_json(const BasicJsonType& j, std::unordered_map<Key, Value, Hash, KeyEqual, Allocator>& m)
|
|
518
|
+
{
|
|
519
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_array()))
|
|
520
|
+
{
|
|
521
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", j.type_name()), &j));
|
|
522
|
+
}
|
|
523
|
+
m.clear();
|
|
524
|
+
for (const auto& p : j)
|
|
525
|
+
{
|
|
526
|
+
if (JSON_HEDLEY_UNLIKELY(!p.is_array()))
|
|
527
|
+
{
|
|
528
|
+
JSON_THROW(type_error::create(302, concat("type must be array, but is ", p.type_name()), &j));
|
|
529
|
+
}
|
|
530
|
+
m.emplace(p.at(0).template get<Key>(), p.at(1).template get<Value>());
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
#if JSON_HAS_FILESYSTEM || JSON_HAS_EXPERIMENTAL_FILESYSTEM
|
|
535
|
+
template<typename BasicJsonType>
|
|
536
|
+
inline void from_json(const BasicJsonType& j, std_fs::path& p)
|
|
537
|
+
{
|
|
538
|
+
if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
|
|
539
|
+
{
|
|
540
|
+
JSON_THROW(type_error::create(302, concat("type must be string, but is ", j.type_name()), &j));
|
|
541
|
+
}
|
|
542
|
+
const auto& s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
|
|
543
|
+
#ifdef JSON_HAS_CPP_20
|
|
544
|
+
p = std_fs::path(std::u8string_view(reinterpret_cast<const char8_t*>(s.data()), s.size()));
|
|
545
|
+
#else
|
|
546
|
+
p = std_fs::u8path(s); // accepts UTF-8 encoded std::string in C++17, deprecated in C++20
|
|
547
|
+
#endif
|
|
548
|
+
}
|
|
549
|
+
#endif
|
|
550
|
+
|
|
551
|
+
struct from_json_fn
|
|
552
|
+
{
|
|
553
|
+
template<typename BasicJsonType, typename T>
|
|
554
|
+
auto operator()(const BasicJsonType& j, T&& val) const
|
|
555
|
+
noexcept(noexcept(from_json(j, std::forward<T>(val))))
|
|
556
|
+
-> decltype(from_json(j, std::forward<T>(val)))
|
|
557
|
+
{
|
|
558
|
+
return from_json(j, std::forward<T>(val));
|
|
559
|
+
}
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
} // namespace detail
|
|
563
|
+
|
|
564
|
+
#ifndef JSON_HAS_CPP_17
|
|
565
|
+
/// namespace to hold default `from_json` function
|
|
566
|
+
/// to see why this is required:
|
|
567
|
+
/// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4381.html
|
|
568
|
+
namespace // NOLINT(cert-dcl59-cpp,fuchsia-header-anon-namespaces,google-build-namespaces)
|
|
569
|
+
{
|
|
570
|
+
#endif
|
|
571
|
+
JSON_INLINE_VARIABLE constexpr const auto& from_json = // NOLINT(misc-definitions-in-headers)
|
|
572
|
+
detail::static_const<detail::from_json_fn>::value;
|
|
573
|
+
#ifndef JSON_HAS_CPP_17
|
|
574
|
+
} // namespace
|
|
575
|
+
#endif
|
|
576
|
+
|
|
577
|
+
NLOHMANN_JSON_NAMESPACE_END
|