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.
Files changed (546) hide show
  1. mqt/core/__init__.py +77 -0
  2. mqt/core/__main__.py +55 -0
  3. mqt/core/_commands.py +52 -0
  4. mqt/core/_compat/__init__.py +11 -0
  5. mqt/core/_compat/typing.py +29 -0
  6. mqt/core/_version.py +34 -0
  7. mqt/core/_version.pyi +12 -0
  8. mqt/core/dd.cpython-314t-darwin.so +0 -0
  9. mqt/core/dd.pyi +1016 -0
  10. mqt/core/dd_evaluation.py +368 -0
  11. mqt/core/fomac.cpython-314t-darwin.so +0 -0
  12. mqt/core/fomac.pyi +125 -0
  13. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  14. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  15. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  16. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  17. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  18. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  19. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  20. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  21. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  22. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  23. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  24. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  25. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  26. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  27. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  28. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  29. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  30. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  31. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  32. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  33. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  34. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  35. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  36. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  37. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  38. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  39. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  40. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  41. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  42. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  43. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  44. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  45. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  46. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  47. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  63. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  64. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  65. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  66. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  67. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  68. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  69. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  70. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  71. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  72. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  73. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  74. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  75. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  76. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  77. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  78. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  79. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  80. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  81. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  82. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  83. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  84. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  85. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  86. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  87. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  88. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  89. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  90. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  91. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  92. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  93. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  94. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  95. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  96. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  97. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  98. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  99. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  100. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  101. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  102. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  103. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  104. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  105. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  106. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  107. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  108. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  109. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  110. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  111. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  112. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  113. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  114. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  115. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  116. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  117. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  118. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  119. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  120. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  121. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  122. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  123. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  124. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  125. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  126. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  127. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  128. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  203. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  204. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  205. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  206. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  207. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  208. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  209. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  210. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  211. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  212. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  213. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  214. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  215. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  216. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  217. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  218. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  219. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  220. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  221. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  222. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  223. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  224. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  225. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  226. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  227. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  228. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  229. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  230. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  231. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  232. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  233. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  234. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  235. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  236. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  237. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  238. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  239. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  240. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  241. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  242. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  243. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  244. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  245. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  246. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  247. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  248. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  249. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
  250. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  251. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  252. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  253. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  254. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  255. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  256. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  257. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  258. mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
  259. mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
  260. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  261. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  262. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  263. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  264. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  265. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  266. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  267. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  268. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  269. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  270. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  271. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  272. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  273. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  274. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  275. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  276. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  277. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  278. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  279. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  280. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  281. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  282. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  283. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  284. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  285. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  286. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  287. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  288. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  289. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  290. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  291. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  292. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  293. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  294. mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
  295. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  296. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  297. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  298. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  299. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  300. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  301. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  302. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  303. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  304. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  305. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  306. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  307. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  308. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  309. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  310. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  311. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  312. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  313. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  314. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  315. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  316. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  317. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  318. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  319. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  320. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  321. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  322. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  323. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  324. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  325. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  326. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  327. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  328. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  329. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  330. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  331. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  332. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  333. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  334. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  335. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  336. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  337. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  338. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  339. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  340. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  341. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  342. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  343. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  344. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  345. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  346. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  347. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  348. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  349. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  350. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  351. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  352. mqt/core/include/nlohmann/json.hpp +5306 -0
  353. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  354. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  355. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  356. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  357. mqt/core/include/qdmi/qdmi/client.h +990 -0
  358. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  359. mqt/core/include/qdmi/qdmi/device.h +602 -0
  360. mqt/core/include/qdmi/qdmi/types.h +78 -0
  361. mqt/core/include/spdlog/async.h +99 -0
  362. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  363. mqt/core/include/spdlog/async_logger.h +74 -0
  364. mqt/core/include/spdlog/cfg/argv.h +40 -0
  365. mqt/core/include/spdlog/cfg/env.h +36 -0
  366. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  367. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  368. mqt/core/include/spdlog/common-inl.h +68 -0
  369. mqt/core/include/spdlog/common.h +406 -0
  370. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  371. mqt/core/include/spdlog/details/backtracer.h +45 -0
  372. mqt/core/include/spdlog/details/circular_q.h +115 -0
  373. mqt/core/include/spdlog/details/console_globals.h +28 -0
  374. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  375. mqt/core/include/spdlog/details/file_helper.h +61 -0
  376. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  377. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  378. mqt/core/include/spdlog/details/log_msg.h +40 -0
  379. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  380. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  381. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  382. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  383. mqt/core/include/spdlog/details/os-inl.h +606 -0
  384. mqt/core/include/spdlog/details/os.h +127 -0
  385. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  386. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  387. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  388. mqt/core/include/spdlog/details/registry.h +131 -0
  389. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  390. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  391. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  392. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  393. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  394. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  395. mqt/core/include/spdlog/details/udp_client.h +81 -0
  396. mqt/core/include/spdlog/details/windows_include.h +11 -0
  397. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  398. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  399. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  400. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  401. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  402. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  403. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  404. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  405. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  406. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  407. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  408. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  409. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  410. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  411. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  412. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  413. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  414. mqt/core/include/spdlog/fmt/compile.h +23 -0
  415. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  416. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  417. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  418. mqt/core/include/spdlog/fmt/std.h +24 -0
  419. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  420. mqt/core/include/spdlog/formatter.h +17 -0
  421. mqt/core/include/spdlog/fwd.h +18 -0
  422. mqt/core/include/spdlog/logger-inl.h +198 -0
  423. mqt/core/include/spdlog/logger.h +379 -0
  424. mqt/core/include/spdlog/mdc.h +52 -0
  425. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  426. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  427. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  428. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  429. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  430. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  431. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  432. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  433. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  434. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  435. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  436. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  437. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  438. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  439. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  440. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  441. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  442. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  443. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  444. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  445. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  446. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  447. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  448. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  449. mqt/core/include/spdlog/sinks/sink.h +34 -0
  450. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  451. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  452. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  453. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  454. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  455. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  456. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  457. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  458. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  459. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  460. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  461. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  462. mqt/core/include/spdlog/spdlog.h +357 -0
  463. mqt/core/include/spdlog/stopwatch.h +66 -0
  464. mqt/core/include/spdlog/tweakme.h +148 -0
  465. mqt/core/include/spdlog/version.h +11 -0
  466. mqt/core/ir/__init__.pyi +2078 -0
  467. mqt/core/ir/operations.pyi +1011 -0
  468. mqt/core/ir/registers.pyi +91 -0
  469. mqt/core/ir/symbolic.pyi +177 -0
  470. mqt/core/ir.cpython-314t-darwin.so +0 -0
  471. mqt/core/lib/libmqt-core-algorithms.3.3.2.dylib +0 -0
  472. mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
  473. mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
  474. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.2.dylib +0 -0
  475. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
  476. mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
  477. mqt/core/lib/libmqt-core-dd.3.3.2.dylib +0 -0
  478. mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
  479. mqt/core/lib/libmqt-core-dd.dylib +0 -0
  480. mqt/core/lib/libmqt-core-ds.3.3.2.dylib +0 -0
  481. mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
  482. mqt/core/lib/libmqt-core-ds.dylib +0 -0
  483. mqt/core/lib/libmqt-core-fomac.3.3.2.dylib +0 -0
  484. mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
  485. mqt/core/lib/libmqt-core-fomac.dylib +0 -0
  486. mqt/core/lib/libmqt-core-ir.3.3.2.dylib +0 -0
  487. mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
  488. mqt/core/lib/libmqt-core-ir.dylib +0 -0
  489. mqt/core/lib/libmqt-core-na-fomac.3.3.2.dylib +0 -0
  490. mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
  491. mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
  492. mqt/core/lib/libmqt-core-na.3.3.2.dylib +0 -0
  493. mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
  494. mqt/core/lib/libmqt-core-na.dylib +0 -0
  495. mqt/core/lib/libmqt-core-qasm.3.3.2.dylib +0 -0
  496. mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
  497. mqt/core/lib/libmqt-core-qasm.dylib +0 -0
  498. mqt/core/lib/libmqt-core-qdmi-driver.3.3.2.dylib +0 -0
  499. mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
  500. mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
  501. mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
  502. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.2.dylib +0 -0
  503. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
  504. mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
  505. mqt/core/lib/libmqt-core-zx.3.3.2.dylib +0 -0
  506. mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
  507. mqt/core/lib/libmqt-core-zx.dylib +0 -0
  508. mqt/core/lib/libspdlog.a +0 -0
  509. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  510. mqt/core/na/__init__.py +12 -0
  511. mqt/core/na/fomac.cpython-314t-darwin.so +0 -0
  512. mqt/core/na/fomac.pyi +117 -0
  513. mqt/core/plugins/__init__.py +9 -0
  514. mqt/core/plugins/qiskit/__init__.py +19 -0
  515. mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
  516. mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
  517. mqt/core/py.typed +2 -0
  518. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  519. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  520. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  521. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  522. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  523. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  524. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  525. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  526. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  527. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
  528. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  529. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  530. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +109 -0
  531. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  532. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  533. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  534. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  535. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  536. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  537. mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
  538. mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  539. mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +118 -0
  540. mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  541. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  542. mqt_core-3.3.2.dist-info/METADATA +210 -0
  543. mqt_core-3.3.2.dist-info/RECORD +546 -0
  544. mqt_core-3.3.2.dist-info/WHEEL +6 -0
  545. mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
  546. 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