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,193 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #include <spdlog/common.h>
7
+ #include <spdlog/details/circular_q.h>
8
+ #include <spdlog/details/file_helper.h>
9
+ #include <spdlog/details/null_mutex.h>
10
+ #include <spdlog/details/os.h>
11
+ #include <spdlog/details/synchronous_factory.h>
12
+ #include <spdlog/fmt/fmt.h>
13
+ #include <spdlog/sinks/base_sink.h>
14
+
15
+ #include <chrono>
16
+ #include <cstdio>
17
+ #include <ctime>
18
+ #include <mutex>
19
+ #include <string>
20
+
21
+ namespace spdlog {
22
+ namespace sinks {
23
+
24
+ /*
25
+ * Generator of Hourly log file names in format basename.YYYY-MM-DD-HH.ext
26
+ */
27
+ struct hourly_filename_calculator {
28
+ // Create filename for the form basename.YYYY-MM-DD-H
29
+ static filename_t calc_filename(const filename_t &filename, const tm &now_tm) {
30
+ filename_t basename, ext;
31
+ std::tie(basename, ext) = details::file_helper::split_by_extension(filename);
32
+ return fmt_lib::format(SPDLOG_FILENAME_T("{}_{:04d}-{:02d}-{:02d}_{:02d}{}"), basename,
33
+ now_tm.tm_year + 1900, now_tm.tm_mon + 1, now_tm.tm_mday,
34
+ now_tm.tm_hour, ext);
35
+ }
36
+ };
37
+
38
+ /*
39
+ * Rotating file sink based on time.
40
+ * If truncate != false , the created file will be truncated.
41
+ * If max_files > 0, retain only the last max_files and delete previous.
42
+ * Note that old log files from previous executions will not be deleted by this class,
43
+ * rotation and deletion is only applied while the program is running.
44
+ */
45
+ template <typename Mutex, typename FileNameCalc = hourly_filename_calculator>
46
+ class hourly_file_sink final : public base_sink<Mutex> {
47
+ public:
48
+ // create hourly file sink which rotates on given time
49
+ hourly_file_sink(filename_t base_filename,
50
+ bool truncate = false,
51
+ uint16_t max_files = 0,
52
+ const file_event_handlers &event_handlers = {})
53
+ : base_filename_(std::move(base_filename)),
54
+ file_helper_{event_handlers},
55
+ truncate_(truncate),
56
+ max_files_(max_files),
57
+ filenames_q_() {
58
+ auto now = log_clock::now();
59
+ auto filename = FileNameCalc::calc_filename(base_filename_, now_tm(now));
60
+ file_helper_.open(filename, truncate_);
61
+ remove_init_file_ = file_helper_.size() == 0;
62
+ rotation_tp_ = next_rotation_tp_();
63
+
64
+ if (max_files_ > 0) {
65
+ init_filenames_q_();
66
+ }
67
+ }
68
+
69
+ filename_t filename() {
70
+ std::lock_guard<Mutex> lock(base_sink<Mutex>::mutex_);
71
+ return file_helper_.filename();
72
+ }
73
+
74
+ protected:
75
+ void sink_it_(const details::log_msg &msg) override {
76
+ auto time = msg.time;
77
+ bool should_rotate = time >= rotation_tp_;
78
+ if (should_rotate) {
79
+ if (remove_init_file_) {
80
+ file_helper_.close();
81
+ details::os::remove(file_helper_.filename());
82
+ }
83
+ auto filename = FileNameCalc::calc_filename(base_filename_, now_tm(time));
84
+ file_helper_.open(filename, truncate_);
85
+ rotation_tp_ = next_rotation_tp_();
86
+ }
87
+ remove_init_file_ = false;
88
+ memory_buf_t formatted;
89
+ base_sink<Mutex>::formatter_->format(msg, formatted);
90
+ file_helper_.write(formatted);
91
+
92
+ // Do the cleaning only at the end because it might throw on failure.
93
+ if (should_rotate && max_files_ > 0) {
94
+ delete_old_();
95
+ }
96
+ }
97
+
98
+ void flush_() override { file_helper_.flush(); }
99
+
100
+ private:
101
+ void init_filenames_q_() {
102
+ using details::os::path_exists;
103
+
104
+ filenames_q_ = details::circular_q<filename_t>(static_cast<size_t>(max_files_));
105
+ std::vector<filename_t> filenames;
106
+ auto now = log_clock::now();
107
+ while (filenames.size() < max_files_) {
108
+ auto filename = FileNameCalc::calc_filename(base_filename_, now_tm(now));
109
+ if (!path_exists(filename)) {
110
+ break;
111
+ }
112
+ filenames.emplace_back(filename);
113
+ now -= std::chrono::hours(1);
114
+ }
115
+ for (auto iter = filenames.rbegin(); iter != filenames.rend(); ++iter) {
116
+ filenames_q_.push_back(std::move(*iter));
117
+ }
118
+ }
119
+
120
+ tm now_tm(log_clock::time_point tp) {
121
+ time_t tnow = log_clock::to_time_t(tp);
122
+ return spdlog::details::os::localtime(tnow);
123
+ }
124
+
125
+ log_clock::time_point next_rotation_tp_() {
126
+ auto now = log_clock::now();
127
+ tm date = now_tm(now);
128
+ date.tm_min = 0;
129
+ date.tm_sec = 0;
130
+ auto rotation_time = log_clock::from_time_t(std::mktime(&date));
131
+ if (rotation_time > now) {
132
+ return rotation_time;
133
+ }
134
+ return {rotation_time + std::chrono::hours(1)};
135
+ }
136
+
137
+ // Delete the file N rotations ago.
138
+ // Throw spdlog_ex on failure to delete the old file.
139
+ void delete_old_() {
140
+ using details::os::filename_to_str;
141
+ using details::os::remove_if_exists;
142
+
143
+ filename_t current_file = file_helper_.filename();
144
+ if (filenames_q_.full()) {
145
+ auto old_filename = std::move(filenames_q_.front());
146
+ filenames_q_.pop_front();
147
+ bool ok = remove_if_exists(old_filename) == 0;
148
+ if (!ok) {
149
+ filenames_q_.push_back(std::move(current_file));
150
+ SPDLOG_THROW(spdlog_ex(
151
+ "Failed removing hourly file " + filename_to_str(old_filename), errno));
152
+ }
153
+ }
154
+ filenames_q_.push_back(std::move(current_file));
155
+ }
156
+
157
+ filename_t base_filename_;
158
+ log_clock::time_point rotation_tp_;
159
+ details::file_helper file_helper_;
160
+ bool truncate_;
161
+ uint16_t max_files_;
162
+ details::circular_q<filename_t> filenames_q_;
163
+ bool remove_init_file_;
164
+ };
165
+
166
+ using hourly_file_sink_mt = hourly_file_sink<std::mutex>;
167
+ using hourly_file_sink_st = hourly_file_sink<details::null_mutex>;
168
+
169
+ } // namespace sinks
170
+
171
+ //
172
+ // factory functions
173
+ //
174
+ template <typename Factory = spdlog::synchronous_factory>
175
+ inline std::shared_ptr<logger> hourly_logger_mt(const std::string &logger_name,
176
+ const filename_t &filename,
177
+ bool truncate = false,
178
+ uint16_t max_files = 0,
179
+ const file_event_handlers &event_handlers = {}) {
180
+ return Factory::template create<sinks::hourly_file_sink_mt>(logger_name, filename, truncate,
181
+ max_files, event_handlers);
182
+ }
183
+
184
+ template <typename Factory = spdlog::synchronous_factory>
185
+ inline std::shared_ptr<logger> hourly_logger_st(const std::string &logger_name,
186
+ const filename_t &filename,
187
+ bool truncate = false,
188
+ uint16_t max_files = 0,
189
+ const file_event_handlers &event_handlers = {}) {
190
+ return Factory::template create<sinks::hourly_file_sink_st>(logger_name, filename, truncate,
191
+ max_files, event_handlers);
192
+ }
193
+ } // namespace spdlog
@@ -0,0 +1,119 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ //
7
+ // Custom sink for kafka
8
+ // Building and using requires librdkafka library.
9
+ // For building librdkafka library check the url below
10
+ // https://github.com/confluentinc/librdkafka
11
+ //
12
+
13
+ #include "spdlog/async.h"
14
+ #include "spdlog/details/log_msg.h"
15
+ #include "spdlog/details/null_mutex.h"
16
+ #include "spdlog/details/synchronous_factory.h"
17
+ #include "spdlog/sinks/base_sink.h"
18
+ #include <mutex>
19
+ #include <spdlog/common.h>
20
+
21
+ // kafka header
22
+ #include <librdkafka/rdkafkacpp.h>
23
+
24
+ namespace spdlog {
25
+ namespace sinks {
26
+
27
+ struct kafka_sink_config {
28
+ std::string server_addr;
29
+ std::string produce_topic;
30
+ int32_t flush_timeout_ms = 1000;
31
+
32
+ kafka_sink_config(std::string addr, std::string topic, int flush_timeout_ms = 1000)
33
+ : server_addr{std::move(addr)},
34
+ produce_topic{std::move(topic)},
35
+ flush_timeout_ms(flush_timeout_ms) {}
36
+ };
37
+
38
+ template <typename Mutex>
39
+ class kafka_sink : public base_sink<Mutex> {
40
+ public:
41
+ kafka_sink(kafka_sink_config config)
42
+ : config_{std::move(config)} {
43
+ try {
44
+ std::string errstr;
45
+ conf_.reset(RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL));
46
+ RdKafka::Conf::ConfResult confRes =
47
+ conf_->set("bootstrap.servers", config_.server_addr, errstr);
48
+ if (confRes != RdKafka::Conf::CONF_OK) {
49
+ throw_spdlog_ex(
50
+ fmt_lib::format("conf set bootstrap.servers failed err:{}", errstr));
51
+ }
52
+
53
+ tconf_.reset(RdKafka::Conf::create(RdKafka::Conf::CONF_TOPIC));
54
+ if (tconf_ == nullptr) {
55
+ throw_spdlog_ex(fmt_lib::format("create topic config failed"));
56
+ }
57
+
58
+ producer_.reset(RdKafka::Producer::create(conf_.get(), errstr));
59
+ if (producer_ == nullptr) {
60
+ throw_spdlog_ex(fmt_lib::format("create producer failed err:{}", errstr));
61
+ }
62
+ topic_.reset(RdKafka::Topic::create(producer_.get(), config_.produce_topic,
63
+ tconf_.get(), errstr));
64
+ if (topic_ == nullptr) {
65
+ throw_spdlog_ex(fmt_lib::format("create topic failed err:{}", errstr));
66
+ }
67
+ } catch (const std::exception &e) {
68
+ throw_spdlog_ex(fmt_lib::format("error create kafka instance: {}", e.what()));
69
+ }
70
+ }
71
+
72
+ ~kafka_sink() { producer_->flush(config_.flush_timeout_ms); }
73
+
74
+ protected:
75
+ void sink_it_(const details::log_msg &msg) override {
76
+ producer_->produce(topic_.get(), 0, RdKafka::Producer::RK_MSG_COPY,
77
+ (void *)msg.payload.data(), msg.payload.size(), NULL, NULL);
78
+ }
79
+
80
+ void flush_() override { producer_->flush(config_.flush_timeout_ms); }
81
+
82
+ private:
83
+ kafka_sink_config config_;
84
+ std::unique_ptr<RdKafka::Producer> producer_ = nullptr;
85
+ std::unique_ptr<RdKafka::Conf> conf_ = nullptr;
86
+ std::unique_ptr<RdKafka::Conf> tconf_ = nullptr;
87
+ std::unique_ptr<RdKafka::Topic> topic_ = nullptr;
88
+ };
89
+
90
+ using kafka_sink_mt = kafka_sink<std::mutex>;
91
+ using kafka_sink_st = kafka_sink<spdlog::details::null_mutex>;
92
+
93
+ } // namespace sinks
94
+
95
+ template <typename Factory = spdlog::synchronous_factory>
96
+ inline std::shared_ptr<logger> kafka_logger_mt(const std::string &logger_name,
97
+ spdlog::sinks::kafka_sink_config config) {
98
+ return Factory::template create<sinks::kafka_sink_mt>(logger_name, config);
99
+ }
100
+
101
+ template <typename Factory = spdlog::synchronous_factory>
102
+ inline std::shared_ptr<logger> kafka_logger_st(const std::string &logger_name,
103
+ spdlog::sinks::kafka_sink_config config) {
104
+ return Factory::template create<sinks::kafka_sink_st>(logger_name, config);
105
+ }
106
+
107
+ template <typename Factory = spdlog::async_factory>
108
+ inline std::shared_ptr<spdlog::logger> kafka_logger_async_mt(
109
+ std::string logger_name, spdlog::sinks::kafka_sink_config config) {
110
+ return Factory::template create<sinks::kafka_sink_mt>(logger_name, config);
111
+ }
112
+
113
+ template <typename Factory = spdlog::async_factory>
114
+ inline std::shared_ptr<spdlog::logger> kafka_logger_async_st(
115
+ std::string logger_name, spdlog::sinks::kafka_sink_config config) {
116
+ return Factory::template create<sinks::kafka_sink_st>(logger_name, config);
117
+ }
118
+
119
+ } // namespace spdlog
@@ -0,0 +1,108 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ //
7
+ // Custom sink for mongodb
8
+ // Building and using requires mongocxx library.
9
+ // For building mongocxx library check the url below
10
+ // http://mongocxx.org/mongocxx-v3/installation/
11
+ //
12
+
13
+ #include "spdlog/common.h"
14
+ #include "spdlog/details/log_msg.h"
15
+ #include "spdlog/sinks/base_sink.h"
16
+ #include <spdlog/details/synchronous_factory.h>
17
+
18
+ #include <bsoncxx/builder/stream/document.hpp>
19
+ #include <bsoncxx/types.hpp>
20
+ #include <bsoncxx/view_or_value.hpp>
21
+
22
+ #include <mongocxx/client.hpp>
23
+ #include <mongocxx/instance.hpp>
24
+ #include <mongocxx/uri.hpp>
25
+
26
+ namespace spdlog {
27
+ namespace sinks {
28
+ template <typename Mutex>
29
+ class mongo_sink : public base_sink<Mutex> {
30
+ public:
31
+ mongo_sink(const std::string &db_name,
32
+ const std::string &collection_name,
33
+ const std::string &uri = "mongodb://localhost:27017") try
34
+ : mongo_sink(std::make_shared<mongocxx::instance>(), db_name, collection_name, uri) {
35
+ } catch (const std::exception &e) {
36
+ throw_spdlog_ex(fmt_lib::format("Error opening database: {}", e.what()));
37
+ }
38
+
39
+ mongo_sink(std::shared_ptr<mongocxx::instance> instance,
40
+ const std::string &db_name,
41
+ const std::string &collection_name,
42
+ const std::string &uri = "mongodb://localhost:27017")
43
+ : instance_(std::move(instance)),
44
+ db_name_(db_name),
45
+ coll_name_(collection_name) {
46
+ try {
47
+ client_ = spdlog::details::make_unique<mongocxx::client>(mongocxx::uri{uri});
48
+ } catch (const std::exception &e) {
49
+ throw_spdlog_ex(fmt_lib::format("Error opening database: {}", e.what()));
50
+ }
51
+ }
52
+
53
+ ~mongo_sink() { flush_(); }
54
+
55
+ protected:
56
+ void sink_it_(const details::log_msg &msg) override {
57
+ using bsoncxx::builder::stream::document;
58
+ using bsoncxx::builder::stream::finalize;
59
+
60
+ if (client_ != nullptr) {
61
+ auto doc = document{} << "timestamp" << bsoncxx::types::b_date(msg.time) << "level"
62
+ << level::to_string_view(msg.level).data() << "level_num"
63
+ << msg.level << "message"
64
+ << std::string(msg.payload.begin(), msg.payload.end())
65
+ << "logger_name"
66
+ << std::string(msg.logger_name.begin(), msg.logger_name.end())
67
+ << "thread_id" << static_cast<int>(msg.thread_id) << finalize;
68
+ client_->database(db_name_).collection(coll_name_).insert_one(doc.view());
69
+ }
70
+ }
71
+
72
+ void flush_() override {}
73
+
74
+ private:
75
+ std::shared_ptr<mongocxx::instance> instance_;
76
+ std::string db_name_;
77
+ std::string coll_name_;
78
+ std::unique_ptr<mongocxx::client> client_ = nullptr;
79
+ };
80
+
81
+ #include "spdlog/details/null_mutex.h"
82
+ #include <mutex>
83
+ using mongo_sink_mt = mongo_sink<std::mutex>;
84
+ using mongo_sink_st = mongo_sink<spdlog::details::null_mutex>;
85
+
86
+ } // namespace sinks
87
+
88
+ template <typename Factory = spdlog::synchronous_factory>
89
+ inline std::shared_ptr<logger> mongo_logger_mt(
90
+ const std::string &logger_name,
91
+ const std::string &db_name,
92
+ const std::string &collection_name,
93
+ const std::string &uri = "mongodb://localhost:27017") {
94
+ return Factory::template create<sinks::mongo_sink_mt>(logger_name, db_name, collection_name,
95
+ uri);
96
+ }
97
+
98
+ template <typename Factory = spdlog::synchronous_factory>
99
+ inline std::shared_ptr<logger> mongo_logger_st(
100
+ const std::string &logger_name,
101
+ const std::string &db_name,
102
+ const std::string &collection_name,
103
+ const std::string &uri = "mongodb://localhost:27017") {
104
+ return Factory::template create<sinks::mongo_sink_st>(logger_name, db_name, collection_name,
105
+ uri);
106
+ }
107
+
108
+ } // namespace spdlog
@@ -0,0 +1,68 @@
1
+ // Copyright(c) 2016 Alexander Dalshov & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #if defined(_WIN32)
7
+
8
+ #include <spdlog/details/null_mutex.h>
9
+ #if defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
10
+ #include <spdlog/details/os.h>
11
+ #endif
12
+ #include <spdlog/sinks/base_sink.h>
13
+
14
+ #include <mutex>
15
+ #include <string>
16
+
17
+ // Avoid including windows.h (https://stackoverflow.com/a/30741042)
18
+ #if defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
19
+ extern "C" __declspec(dllimport) void __stdcall OutputDebugStringW(const wchar_t *lpOutputString);
20
+ #else
21
+ extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA(const char *lpOutputString);
22
+ #endif
23
+ extern "C" __declspec(dllimport) int __stdcall IsDebuggerPresent();
24
+
25
+ namespace spdlog {
26
+ namespace sinks {
27
+ /*
28
+ * MSVC sink (logging using OutputDebugStringA)
29
+ */
30
+ template <typename Mutex>
31
+ class msvc_sink : public base_sink<Mutex> {
32
+ public:
33
+ msvc_sink() = default;
34
+ msvc_sink(bool check_debugger_present)
35
+ : check_debugger_present_{check_debugger_present} {}
36
+
37
+ protected:
38
+ void sink_it_(const details::log_msg &msg) override {
39
+ if (check_debugger_present_ && !IsDebuggerPresent()) {
40
+ return;
41
+ }
42
+ memory_buf_t formatted;
43
+ base_sink<Mutex>::formatter_->format(msg, formatted);
44
+ formatted.push_back('\0'); // add a null terminator for OutputDebugString
45
+ #if defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
46
+ wmemory_buf_t wformatted;
47
+ details::os::utf8_to_wstrbuf(string_view_t(formatted.data(), formatted.size()), wformatted);
48
+ OutputDebugStringW(wformatted.data());
49
+ #else
50
+ OutputDebugStringA(formatted.data());
51
+ #endif
52
+ }
53
+
54
+ void flush_() override {}
55
+
56
+ bool check_debugger_present_ = true;
57
+ };
58
+
59
+ using msvc_sink_mt = msvc_sink<std::mutex>;
60
+ using msvc_sink_st = msvc_sink<details::null_mutex>;
61
+
62
+ using windebug_sink_mt = msvc_sink_mt;
63
+ using windebug_sink_st = msvc_sink_st;
64
+
65
+ } // namespace sinks
66
+ } // namespace spdlog
67
+
68
+ #endif
@@ -0,0 +1,41 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #include <spdlog/details/null_mutex.h>
7
+ #include <spdlog/details/synchronous_factory.h>
8
+ #include <spdlog/sinks/base_sink.h>
9
+
10
+ #include <mutex>
11
+
12
+ namespace spdlog {
13
+ namespace sinks {
14
+
15
+ template <typename Mutex>
16
+ class null_sink final : public base_sink<Mutex> {
17
+ protected:
18
+ void sink_it_(const details::log_msg &) override {}
19
+ void flush_() override {}
20
+ };
21
+
22
+ using null_sink_mt = null_sink<details::null_mutex>;
23
+ using null_sink_st = null_sink<details::null_mutex>;
24
+
25
+ } // namespace sinks
26
+
27
+ template <typename Factory = spdlog::synchronous_factory>
28
+ inline std::shared_ptr<logger> null_logger_mt(const std::string &logger_name) {
29
+ auto null_logger = Factory::template create<sinks::null_sink_mt>(logger_name);
30
+ null_logger->set_level(level::off);
31
+ return null_logger;
32
+ }
33
+
34
+ template <typename Factory = spdlog::synchronous_factory>
35
+ inline std::shared_ptr<logger> null_logger_st(const std::string &logger_name) {
36
+ auto null_logger = Factory::template create<sinks::null_sink_st>(logger_name);
37
+ null_logger->set_level(level::off);
38
+ return null_logger;
39
+ }
40
+
41
+ } // namespace spdlog
@@ -0,0 +1,43 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #include <spdlog/details/null_mutex.h>
7
+ #include <spdlog/sinks/base_sink.h>
8
+
9
+ #include <mutex>
10
+ #include <ostream>
11
+
12
+ namespace spdlog {
13
+ namespace sinks {
14
+ template <typename Mutex>
15
+ class ostream_sink final : public base_sink<Mutex> {
16
+ public:
17
+ explicit ostream_sink(std::ostream &os, bool force_flush = false)
18
+ : ostream_(os),
19
+ force_flush_(force_flush) {}
20
+ ostream_sink(const ostream_sink &) = delete;
21
+ ostream_sink &operator=(const ostream_sink &) = delete;
22
+
23
+ protected:
24
+ void sink_it_(const details::log_msg &msg) override {
25
+ memory_buf_t formatted;
26
+ base_sink<Mutex>::formatter_->format(msg, formatted);
27
+ ostream_.write(formatted.data(), static_cast<std::streamsize>(formatted.size()));
28
+ if (force_flush_) {
29
+ ostream_.flush();
30
+ }
31
+ }
32
+
33
+ void flush_() override { ostream_.flush(); }
34
+
35
+ std::ostream &ostream_;
36
+ bool force_flush_;
37
+ };
38
+
39
+ using ostream_sink_mt = ostream_sink<std::mutex>;
40
+ using ostream_sink_st = ostream_sink<details::null_mutex>;
41
+
42
+ } // namespace sinks
43
+ } // namespace spdlog