mqt-core 3.3.2__cp313-cp313t-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (537) hide show
  1. mqt/core/__init__.py +89 -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/bin/mqt-core-algorithms.dll +0 -0
  9. mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
  10. mqt/core/bin/mqt-core-dd.dll +0 -0
  11. mqt/core/bin/mqt-core-ds.dll +0 -0
  12. mqt/core/bin/mqt-core-fomac.dll +0 -0
  13. mqt/core/bin/mqt-core-ir.dll +0 -0
  14. mqt/core/bin/mqt-core-na-fomac.dll +0 -0
  15. mqt/core/bin/mqt-core-na.dll +0 -0
  16. mqt/core/bin/mqt-core-qasm.dll +0 -0
  17. mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
  18. mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
  19. mqt/core/bin/mqt-core-zx.dll +0 -0
  20. mqt/core/dd.cp313t-win_amd64.pyd +0 -0
  21. mqt/core/dd.pyi +1016 -0
  22. mqt/core/dd_evaluation.py +368 -0
  23. mqt/core/fomac.cp313t-win_amd64.pyd +0 -0
  24. mqt/core/fomac.pyi +125 -0
  25. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  26. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  27. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  28. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  29. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  30. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  31. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  32. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  33. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  34. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  35. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  36. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  37. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  38. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  39. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  40. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  41. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  42. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  43. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  44. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  45. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  46. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  47. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  63. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  64. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  65. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  66. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  67. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  68. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  69. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  70. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  71. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  72. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  73. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  74. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  75. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  76. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  77. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  78. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  79. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  80. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  81. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  82. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  83. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  84. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  85. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  86. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  87. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  88. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  89. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  90. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  91. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  92. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  93. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  94. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  95. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  96. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  97. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  98. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  99. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  100. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  101. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  102. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  103. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  104. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  105. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  106. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  107. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  108. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  109. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  110. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  111. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  112. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  113. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  114. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  115. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  116. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  117. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  118. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  119. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  120. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  121. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  122. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  123. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  124. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  125. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  126. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  127. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  128. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  203. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  204. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  205. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  206. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  207. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  208. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  209. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  210. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  211. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  212. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  213. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  214. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  215. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  216. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  217. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  218. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  219. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  220. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  221. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  222. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  223. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  224. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  225. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  226. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  227. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  228. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  229. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  230. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  231. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  232. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  233. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  234. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  235. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  236. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  237. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  238. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  239. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  240. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  241. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  242. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  243. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  244. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  245. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  246. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  247. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  248. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  249. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  250. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  251. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  252. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  253. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  254. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  255. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  256. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  257. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  258. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  259. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  260. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  261. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
  262. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  263. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  264. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  265. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  266. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  267. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  268. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  269. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  270. mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
  271. mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
  272. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  273. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  274. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  275. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  276. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  277. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  278. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  279. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  280. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  281. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  282. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  283. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  284. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  285. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  286. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  287. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  288. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  289. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  290. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  291. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  292. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  293. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  294. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  295. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  296. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  297. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  298. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  299. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  300. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  301. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  302. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  303. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  304. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  305. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  306. mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
  307. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  308. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  309. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  310. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  311. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  312. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  313. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  314. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  315. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  316. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  317. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  318. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  319. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  320. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  321. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  322. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  323. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  324. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  325. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  326. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  327. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  328. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  329. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  330. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  331. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  332. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  333. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  334. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  335. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  336. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  337. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  338. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  339. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  340. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  341. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  342. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  343. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  344. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  345. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  346. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  347. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  348. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  349. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  350. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  351. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  352. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  353. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  354. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  355. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  356. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  357. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  358. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  359. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  360. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  361. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  362. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  363. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  364. mqt/core/include/nlohmann/json.hpp +5306 -0
  365. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  366. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  367. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  368. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  369. mqt/core/include/qdmi/qdmi/client.h +990 -0
  370. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  371. mqt/core/include/qdmi/qdmi/device.h +602 -0
  372. mqt/core/include/qdmi/qdmi/types.h +78 -0
  373. mqt/core/include/spdlog/async.h +99 -0
  374. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  375. mqt/core/include/spdlog/async_logger.h +74 -0
  376. mqt/core/include/spdlog/cfg/argv.h +40 -0
  377. mqt/core/include/spdlog/cfg/env.h +36 -0
  378. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  379. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  380. mqt/core/include/spdlog/common-inl.h +68 -0
  381. mqt/core/include/spdlog/common.h +406 -0
  382. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  383. mqt/core/include/spdlog/details/backtracer.h +45 -0
  384. mqt/core/include/spdlog/details/circular_q.h +115 -0
  385. mqt/core/include/spdlog/details/console_globals.h +28 -0
  386. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  387. mqt/core/include/spdlog/details/file_helper.h +61 -0
  388. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  389. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  390. mqt/core/include/spdlog/details/log_msg.h +40 -0
  391. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  392. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  393. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  394. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  395. mqt/core/include/spdlog/details/os-inl.h +606 -0
  396. mqt/core/include/spdlog/details/os.h +127 -0
  397. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  398. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  399. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  400. mqt/core/include/spdlog/details/registry.h +131 -0
  401. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  402. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  403. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  404. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  405. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  406. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  407. mqt/core/include/spdlog/details/udp_client.h +81 -0
  408. mqt/core/include/spdlog/details/windows_include.h +11 -0
  409. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  410. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  411. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  412. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  413. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  414. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  415. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  416. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  417. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  418. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  419. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  420. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  421. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  422. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  423. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  424. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  425. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  426. mqt/core/include/spdlog/fmt/compile.h +23 -0
  427. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  428. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  429. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  430. mqt/core/include/spdlog/fmt/std.h +24 -0
  431. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  432. mqt/core/include/spdlog/formatter.h +17 -0
  433. mqt/core/include/spdlog/fwd.h +18 -0
  434. mqt/core/include/spdlog/logger-inl.h +198 -0
  435. mqt/core/include/spdlog/logger.h +379 -0
  436. mqt/core/include/spdlog/mdc.h +52 -0
  437. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  438. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  439. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  440. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  441. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  442. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  443. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  444. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  445. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  446. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  447. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  448. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  449. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  450. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  451. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  452. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  453. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  454. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  455. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  456. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  457. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  458. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  459. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  460. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  461. mqt/core/include/spdlog/sinks/sink.h +34 -0
  462. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  463. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  464. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  465. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  466. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  467. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  468. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  469. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  470. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  471. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  472. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  473. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  474. mqt/core/include/spdlog/spdlog.h +357 -0
  475. mqt/core/include/spdlog/stopwatch.h +66 -0
  476. mqt/core/include/spdlog/tweakme.h +148 -0
  477. mqt/core/include/spdlog/version.h +11 -0
  478. mqt/core/ir/__init__.pyi +2078 -0
  479. mqt/core/ir/operations.pyi +1011 -0
  480. mqt/core/ir/registers.pyi +91 -0
  481. mqt/core/ir/symbolic.pyi +177 -0
  482. mqt/core/ir.cp313t-win_amd64.pyd +0 -0
  483. mqt/core/lib/mqt-core-algorithms.lib +0 -0
  484. mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
  485. mqt/core/lib/mqt-core-dd.lib +0 -0
  486. mqt/core/lib/mqt-core-ds.lib +0 -0
  487. mqt/core/lib/mqt-core-fomac.lib +0 -0
  488. mqt/core/lib/mqt-core-ir.lib +0 -0
  489. mqt/core/lib/mqt-core-na-fomac.lib +0 -0
  490. mqt/core/lib/mqt-core-na.lib +0 -0
  491. mqt/core/lib/mqt-core-qasm.lib +0 -0
  492. mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
  493. mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
  494. mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
  495. mqt/core/lib/mqt-core-zx.lib +0 -0
  496. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  497. mqt/core/lib/spdlog.lib +0 -0
  498. mqt/core/na/__init__.py +12 -0
  499. mqt/core/na/fomac.cp313t-win_amd64.pyd +0 -0
  500. mqt/core/na/fomac.pyi +117 -0
  501. mqt/core/nlohmann_json.natvis +278 -0
  502. mqt/core/plugins/__init__.py +9 -0
  503. mqt/core/plugins/qiskit/__init__.py +19 -0
  504. mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
  505. mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
  506. mqt/core/py.typed +2 -0
  507. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  508. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  509. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  510. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  511. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  512. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  513. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  514. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  515. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  516. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
  517. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  518. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  519. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
  520. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  521. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  522. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  523. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  524. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  525. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  526. mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
  527. mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  528. mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
  529. mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  530. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  531. mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
  532. mqt_core-3.3.2.dist-info/METADATA +210 -0
  533. mqt_core-3.3.2.dist-info/RECORD +537 -0
  534. mqt_core-3.3.2.dist-info/WHEEL +5 -0
  535. mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
  536. mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
  537. mqt_core.libs/msvcp140.dll +0 -0
@@ -0,0 +1,406 @@
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/tweakme.h>
8
+
9
+ #include <atomic>
10
+ #include <chrono>
11
+ #include <cstdio>
12
+ #include <exception>
13
+ #include <functional>
14
+ #include <initializer_list>
15
+ #include <memory>
16
+ #include <string>
17
+ #include <type_traits>
18
+
19
+ #ifdef SPDLOG_USE_STD_FORMAT
20
+ #include <version>
21
+ #if __cpp_lib_format >= 202207L
22
+ #include <format>
23
+ #else
24
+ #include <string_view>
25
+ #endif
26
+ #endif
27
+
28
+ #ifdef SPDLOG_COMPILED_LIB
29
+ #undef SPDLOG_HEADER_ONLY
30
+ #if defined(SPDLOG_SHARED_LIB)
31
+ #if defined(_WIN32)
32
+ #ifdef spdlog_EXPORTS
33
+ #define SPDLOG_API __declspec(dllexport)
34
+ #else // !spdlog_EXPORTS
35
+ #define SPDLOG_API __declspec(dllimport)
36
+ #endif
37
+ #else // !defined(_WIN32)
38
+ #define SPDLOG_API __attribute__((visibility("default")))
39
+ #endif
40
+ #else // !defined(SPDLOG_SHARED_LIB)
41
+ #define SPDLOG_API
42
+ #endif
43
+ #define SPDLOG_INLINE
44
+ #else // !defined(SPDLOG_COMPILED_LIB)
45
+ #define SPDLOG_API
46
+ #define SPDLOG_HEADER_ONLY
47
+ #define SPDLOG_INLINE inline
48
+ #endif // #ifdef SPDLOG_COMPILED_LIB
49
+
50
+ #include <spdlog/fmt/fmt.h>
51
+
52
+ #if !defined(SPDLOG_USE_STD_FORMAT) && \
53
+ FMT_VERSION >= 80000 // backward compatibility with fmt versions older than 8
54
+ #define SPDLOG_FMT_RUNTIME(format_string) fmt::runtime(format_string)
55
+ #define SPDLOG_FMT_STRING(format_string) FMT_STRING(format_string)
56
+ #if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
57
+ #include <spdlog/fmt/xchar.h>
58
+ #endif
59
+ #else
60
+ #define SPDLOG_FMT_RUNTIME(format_string) format_string
61
+ #define SPDLOG_FMT_STRING(format_string) format_string
62
+ #endif
63
+
64
+ // visual studio up to 2013 does not support noexcept nor constexpr
65
+ #if defined(_MSC_VER) && (_MSC_VER < 1900)
66
+ #define SPDLOG_NOEXCEPT _NOEXCEPT
67
+ #define SPDLOG_CONSTEXPR
68
+ #else
69
+ #define SPDLOG_NOEXCEPT noexcept
70
+ #define SPDLOG_CONSTEXPR constexpr
71
+ #endif
72
+
73
+ // If building with std::format, can just use constexpr, otherwise if building with fmt
74
+ // SPDLOG_CONSTEXPR_FUNC needs to be set the same as FMT_CONSTEXPR to avoid situations where
75
+ // a constexpr function in spdlog could end up calling a non-constexpr function in fmt
76
+ // depending on the compiler
77
+ // If fmt determines it can't use constexpr, we should inline the function instead
78
+ #ifdef SPDLOG_USE_STD_FORMAT
79
+ #define SPDLOG_CONSTEXPR_FUNC constexpr
80
+ #else // Being built with fmt
81
+ #if FMT_USE_CONSTEXPR
82
+ #define SPDLOG_CONSTEXPR_FUNC FMT_CONSTEXPR
83
+ #else
84
+ #define SPDLOG_CONSTEXPR_FUNC inline
85
+ #endif
86
+ #endif
87
+
88
+ #if defined(__GNUC__) || defined(__clang__)
89
+ #define SPDLOG_DEPRECATED __attribute__((deprecated))
90
+ #elif defined(_MSC_VER)
91
+ #define SPDLOG_DEPRECATED __declspec(deprecated)
92
+ #else
93
+ #define SPDLOG_DEPRECATED
94
+ #endif
95
+
96
+ // disable thread local on msvc 2013
97
+ #ifndef SPDLOG_NO_TLS
98
+ #if (defined(_MSC_VER) && (_MSC_VER < 1900)) || defined(__cplusplus_winrt)
99
+ #define SPDLOG_NO_TLS 1
100
+ #endif
101
+ #endif
102
+
103
+ #ifndef SPDLOG_FUNCTION
104
+ #define SPDLOG_FUNCTION static_cast<const char *>(__FUNCTION__)
105
+ #endif
106
+
107
+ #ifdef SPDLOG_NO_EXCEPTIONS
108
+ #define SPDLOG_TRY
109
+ #define SPDLOG_THROW(ex) \
110
+ do { \
111
+ printf("spdlog fatal error: %s\n", ex.what()); \
112
+ std::abort(); \
113
+ } while (0)
114
+ #define SPDLOG_CATCH_STD
115
+ #else
116
+ #define SPDLOG_TRY try
117
+ #define SPDLOG_THROW(ex) throw(ex)
118
+ #define SPDLOG_CATCH_STD \
119
+ catch (const std::exception &) { \
120
+ }
121
+ #endif
122
+
123
+ namespace spdlog {
124
+
125
+ class formatter;
126
+
127
+ namespace sinks {
128
+ class sink;
129
+ }
130
+
131
+ #if defined(_WIN32) && defined(SPDLOG_WCHAR_FILENAMES)
132
+ using filename_t = std::wstring;
133
+ // allow macro expansion to occur in SPDLOG_FILENAME_T
134
+ #define SPDLOG_FILENAME_T_INNER(s) L##s
135
+ #define SPDLOG_FILENAME_T(s) SPDLOG_FILENAME_T_INNER(s)
136
+ #else
137
+ using filename_t = std::string;
138
+ #define SPDLOG_FILENAME_T(s) s
139
+ #endif
140
+
141
+ using log_clock = std::chrono::system_clock;
142
+ using sink_ptr = std::shared_ptr<sinks::sink>;
143
+ using sinks_init_list = std::initializer_list<sink_ptr>;
144
+ using err_handler = std::function<void(const std::string &err_msg)>;
145
+ #ifdef SPDLOG_USE_STD_FORMAT
146
+ namespace fmt_lib = std;
147
+
148
+ using string_view_t = std::string_view;
149
+ using memory_buf_t = std::string;
150
+
151
+ template <typename... Args>
152
+ #if __cpp_lib_format >= 202207L
153
+ using format_string_t = std::format_string<Args...>;
154
+ #else
155
+ using format_string_t = std::string_view;
156
+ #endif
157
+
158
+ template <class T, class Char = char>
159
+ struct is_convertible_to_basic_format_string
160
+ : std::integral_constant<bool, std::is_convertible<T, std::basic_string_view<Char>>::value> {};
161
+
162
+ #if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
163
+ using wstring_view_t = std::wstring_view;
164
+ using wmemory_buf_t = std::wstring;
165
+
166
+ template <typename... Args>
167
+ #if __cpp_lib_format >= 202207L
168
+ using wformat_string_t = std::wformat_string<Args...>;
169
+ #else
170
+ using wformat_string_t = std::wstring_view;
171
+ #endif
172
+ #endif
173
+ #define SPDLOG_BUF_TO_STRING(x) x
174
+ #else // use fmt lib instead of std::format
175
+ namespace fmt_lib = fmt;
176
+
177
+ using string_view_t = fmt::basic_string_view<char>;
178
+ using memory_buf_t = fmt::basic_memory_buffer<char, 250>;
179
+
180
+ template <typename... Args>
181
+ using format_string_t = fmt::format_string<Args...>;
182
+
183
+ template <class T>
184
+ using remove_cvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
185
+
186
+ template <typename Char>
187
+ #if FMT_VERSION >= 90101
188
+ using fmt_runtime_string = fmt::runtime_format_string<Char>;
189
+ #else
190
+ using fmt_runtime_string = fmt::basic_runtime<Char>;
191
+ #endif
192
+
193
+ // clang doesn't like SFINAE disabled constructor in std::is_convertible<> so have to repeat the
194
+ // condition from basic_format_string here, in addition, fmt::basic_runtime<Char> is only
195
+ // convertible to basic_format_string<Char> but not basic_string_view<Char>
196
+ template <class T, class Char = char>
197
+ struct is_convertible_to_basic_format_string
198
+ : std::integral_constant<bool,
199
+ std::is_convertible<T, fmt::basic_string_view<Char>>::value ||
200
+ std::is_same<remove_cvref_t<T>, fmt_runtime_string<Char>>::value> {
201
+ };
202
+
203
+ #if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
204
+ using wstring_view_t = fmt::basic_string_view<wchar_t>;
205
+ using wmemory_buf_t = fmt::basic_memory_buffer<wchar_t, 250>;
206
+
207
+ template <typename... Args>
208
+ using wformat_string_t = fmt::wformat_string<Args...>;
209
+ #endif
210
+ #define SPDLOG_BUF_TO_STRING(x) fmt::to_string(x)
211
+ #endif
212
+
213
+ #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
214
+ #ifndef _WIN32
215
+ #error SPDLOG_WCHAR_TO_UTF8_SUPPORT only supported on windows
216
+ #endif // _WIN32
217
+ #endif // SPDLOG_WCHAR_TO_UTF8_SUPPORT
218
+
219
+ template <class T>
220
+ struct is_convertible_to_any_format_string
221
+ : std::integral_constant<bool,
222
+ is_convertible_to_basic_format_string<T, char>::value ||
223
+ is_convertible_to_basic_format_string<T, wchar_t>::value> {};
224
+
225
+ #if defined(SPDLOG_NO_ATOMIC_LEVELS)
226
+ using level_t = details::null_atomic_int;
227
+ #else
228
+ using level_t = std::atomic<int>;
229
+ #endif
230
+
231
+ #define SPDLOG_LEVEL_TRACE 0
232
+ #define SPDLOG_LEVEL_DEBUG 1
233
+ #define SPDLOG_LEVEL_INFO 2
234
+ #define SPDLOG_LEVEL_WARN 3
235
+ #define SPDLOG_LEVEL_ERROR 4
236
+ #define SPDLOG_LEVEL_CRITICAL 5
237
+ #define SPDLOG_LEVEL_OFF 6
238
+
239
+ #if !defined(SPDLOG_ACTIVE_LEVEL)
240
+ #define SPDLOG_ACTIVE_LEVEL SPDLOG_LEVEL_INFO
241
+ #endif
242
+
243
+ // Log level enum
244
+ namespace level {
245
+ enum level_enum : int {
246
+ trace = SPDLOG_LEVEL_TRACE,
247
+ debug = SPDLOG_LEVEL_DEBUG,
248
+ info = SPDLOG_LEVEL_INFO,
249
+ warn = SPDLOG_LEVEL_WARN,
250
+ err = SPDLOG_LEVEL_ERROR,
251
+ critical = SPDLOG_LEVEL_CRITICAL,
252
+ off = SPDLOG_LEVEL_OFF,
253
+ n_levels
254
+ };
255
+
256
+ #define SPDLOG_LEVEL_NAME_TRACE spdlog::string_view_t("trace", 5)
257
+ #define SPDLOG_LEVEL_NAME_DEBUG spdlog::string_view_t("debug", 5)
258
+ #define SPDLOG_LEVEL_NAME_INFO spdlog::string_view_t("info", 4)
259
+ #define SPDLOG_LEVEL_NAME_WARNING spdlog::string_view_t("warning", 7)
260
+ #define SPDLOG_LEVEL_NAME_ERROR spdlog::string_view_t("error", 5)
261
+ #define SPDLOG_LEVEL_NAME_CRITICAL spdlog::string_view_t("critical", 8)
262
+ #define SPDLOG_LEVEL_NAME_OFF spdlog::string_view_t("off", 3)
263
+
264
+ #if !defined(SPDLOG_LEVEL_NAMES)
265
+ #define SPDLOG_LEVEL_NAMES \
266
+ { \
267
+ SPDLOG_LEVEL_NAME_TRACE, SPDLOG_LEVEL_NAME_DEBUG, SPDLOG_LEVEL_NAME_INFO, \
268
+ SPDLOG_LEVEL_NAME_WARNING, SPDLOG_LEVEL_NAME_ERROR, SPDLOG_LEVEL_NAME_CRITICAL, \
269
+ SPDLOG_LEVEL_NAME_OFF \
270
+ }
271
+ #endif
272
+
273
+ #if !defined(SPDLOG_SHORT_LEVEL_NAMES)
274
+
275
+ #define SPDLOG_SHORT_LEVEL_NAMES \
276
+ { "T", "D", "I", "W", "E", "C", "O" }
277
+ #endif
278
+
279
+ SPDLOG_API const string_view_t &to_string_view(spdlog::level::level_enum l) SPDLOG_NOEXCEPT;
280
+ SPDLOG_API const char *to_short_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT;
281
+ SPDLOG_API spdlog::level::level_enum from_str(const std::string &name) SPDLOG_NOEXCEPT;
282
+
283
+ } // namespace level
284
+
285
+ //
286
+ // Color mode used by sinks with color support.
287
+ //
288
+ enum class color_mode { always, automatic, never };
289
+
290
+ //
291
+ // Pattern time - specific time getting to use for pattern_formatter.
292
+ // local time by default
293
+ //
294
+ enum class pattern_time_type {
295
+ local, // log localtime
296
+ utc // log utc
297
+ };
298
+
299
+ //
300
+ // Log exception
301
+ //
302
+ class SPDLOG_API spdlog_ex : public std::exception {
303
+ public:
304
+ explicit spdlog_ex(std::string msg);
305
+ spdlog_ex(const std::string &msg, int last_errno);
306
+ const char *what() const SPDLOG_NOEXCEPT override;
307
+
308
+ private:
309
+ std::string msg_;
310
+ };
311
+
312
+ [[noreturn]] SPDLOG_API void throw_spdlog_ex(const std::string &msg, int last_errno);
313
+ [[noreturn]] SPDLOG_API void throw_spdlog_ex(std::string msg);
314
+
315
+ struct source_loc {
316
+ SPDLOG_CONSTEXPR source_loc() = default;
317
+ SPDLOG_CONSTEXPR source_loc(const char *filename_in, int line_in, const char *funcname_in)
318
+ : filename{filename_in},
319
+ line{line_in},
320
+ funcname{funcname_in} {}
321
+
322
+ SPDLOG_CONSTEXPR bool empty() const SPDLOG_NOEXCEPT { return line <= 0; }
323
+ const char *filename{nullptr};
324
+ int line{0};
325
+ const char *funcname{nullptr};
326
+ };
327
+
328
+ struct file_event_handlers {
329
+ file_event_handlers()
330
+ : before_open(nullptr),
331
+ after_open(nullptr),
332
+ before_close(nullptr),
333
+ after_close(nullptr) {}
334
+
335
+ std::function<void(const filename_t &filename)> before_open;
336
+ std::function<void(const filename_t &filename, std::FILE *file_stream)> after_open;
337
+ std::function<void(const filename_t &filename, std::FILE *file_stream)> before_close;
338
+ std::function<void(const filename_t &filename)> after_close;
339
+ };
340
+
341
+ namespace details {
342
+
343
+ // to_string_view
344
+
345
+ SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(const memory_buf_t &buf)
346
+ SPDLOG_NOEXCEPT {
347
+ return spdlog::string_view_t{buf.data(), buf.size()};
348
+ }
349
+
350
+ SPDLOG_CONSTEXPR_FUNC spdlog::string_view_t to_string_view(spdlog::string_view_t str)
351
+ SPDLOG_NOEXCEPT {
352
+ return str;
353
+ }
354
+
355
+ #if defined(SPDLOG_WCHAR_FILENAMES) || defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT)
356
+ SPDLOG_CONSTEXPR_FUNC spdlog::wstring_view_t to_string_view(const wmemory_buf_t &buf)
357
+ SPDLOG_NOEXCEPT {
358
+ return spdlog::wstring_view_t{buf.data(), buf.size()};
359
+ }
360
+
361
+ SPDLOG_CONSTEXPR_FUNC spdlog::wstring_view_t to_string_view(spdlog::wstring_view_t str)
362
+ SPDLOG_NOEXCEPT {
363
+ return str;
364
+ }
365
+ #endif
366
+
367
+ #if defined(SPDLOG_USE_STD_FORMAT) && __cpp_lib_format >= 202207L
368
+ template <typename T, typename... Args>
369
+ SPDLOG_CONSTEXPR_FUNC std::basic_string_view<T> to_string_view(
370
+ std::basic_format_string<T, Args...> fmt) SPDLOG_NOEXCEPT {
371
+ return fmt.get();
372
+ }
373
+ #endif
374
+
375
+ // make_unique support for pre c++14
376
+ #if __cplusplus >= 201402L // C++14 and beyond
377
+ using std::enable_if_t;
378
+ using std::make_unique;
379
+ #else
380
+ template <bool B, class T = void>
381
+ using enable_if_t = typename std::enable_if<B, T>::type;
382
+
383
+ template <typename T, typename... Args>
384
+ std::unique_ptr<T> make_unique(Args &&...args) {
385
+ static_assert(!std::is_array<T>::value, "arrays not supported");
386
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
387
+ }
388
+ #endif
389
+
390
+ // to avoid useless casts (see https://github.com/nlohmann/json/issues/2893#issuecomment-889152324)
391
+ template <typename T, typename U, enable_if_t<!std::is_same<T, U>::value, int> = 0>
392
+ constexpr T conditional_static_cast(U value) {
393
+ return static_cast<T>(value);
394
+ }
395
+
396
+ template <typename T, typename U, enable_if_t<std::is_same<T, U>::value, int> = 0>
397
+ constexpr T conditional_static_cast(U value) {
398
+ return value;
399
+ }
400
+
401
+ } // namespace details
402
+ } // namespace spdlog
403
+
404
+ #ifdef SPDLOG_HEADER_ONLY
405
+ #include "common-inl.h"
406
+ #endif
@@ -0,0 +1,63 @@
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
+ #ifndef SPDLOG_HEADER_ONLY
7
+ #include <spdlog/details/backtracer.h>
8
+ #endif
9
+ namespace spdlog {
10
+ namespace details {
11
+ SPDLOG_INLINE backtracer::backtracer(const backtracer &other) {
12
+ std::lock_guard<std::mutex> lock(other.mutex_);
13
+ enabled_ = other.enabled();
14
+ messages_ = other.messages_;
15
+ }
16
+
17
+ SPDLOG_INLINE backtracer::backtracer(backtracer &&other) SPDLOG_NOEXCEPT {
18
+ std::lock_guard<std::mutex> lock(other.mutex_);
19
+ enabled_ = other.enabled();
20
+ messages_ = std::move(other.messages_);
21
+ }
22
+
23
+ SPDLOG_INLINE backtracer &backtracer::operator=(backtracer other) {
24
+ std::lock_guard<std::mutex> lock(mutex_);
25
+ enabled_ = other.enabled();
26
+ messages_ = std::move(other.messages_);
27
+ return *this;
28
+ }
29
+
30
+ SPDLOG_INLINE void backtracer::enable(size_t size) {
31
+ std::lock_guard<std::mutex> lock{mutex_};
32
+ enabled_.store(true, std::memory_order_relaxed);
33
+ messages_ = circular_q<log_msg_buffer>{size};
34
+ }
35
+
36
+ SPDLOG_INLINE void backtracer::disable() {
37
+ std::lock_guard<std::mutex> lock{mutex_};
38
+ enabled_.store(false, std::memory_order_relaxed);
39
+ }
40
+
41
+ SPDLOG_INLINE bool backtracer::enabled() const { return enabled_.load(std::memory_order_relaxed); }
42
+
43
+ SPDLOG_INLINE void backtracer::push_back(const log_msg &msg) {
44
+ std::lock_guard<std::mutex> lock{mutex_};
45
+ messages_.push_back(log_msg_buffer{msg});
46
+ }
47
+
48
+ SPDLOG_INLINE bool backtracer::empty() const {
49
+ std::lock_guard<std::mutex> lock{mutex_};
50
+ return messages_.empty();
51
+ }
52
+
53
+ // pop all items in the q and apply the given fun on each of them.
54
+ SPDLOG_INLINE void backtracer::foreach_pop(std::function<void(const details::log_msg &)> fun) {
55
+ std::lock_guard<std::mutex> lock{mutex_};
56
+ while (!messages_.empty()) {
57
+ auto &front_msg = messages_.front();
58
+ fun(front_msg);
59
+ messages_.pop_front();
60
+ }
61
+ }
62
+ } // namespace details
63
+ } // namespace spdlog
@@ -0,0 +1,45 @@
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/circular_q.h>
7
+ #include <spdlog/details/log_msg_buffer.h>
8
+
9
+ #include <atomic>
10
+ #include <functional>
11
+ #include <mutex>
12
+
13
+ // Store log messages in circular buffer.
14
+ // Useful for storing debug data in case of error/warning happens.
15
+
16
+ namespace spdlog {
17
+ namespace details {
18
+ class SPDLOG_API backtracer {
19
+ mutable std::mutex mutex_;
20
+ std::atomic<bool> enabled_{false};
21
+ circular_q<log_msg_buffer> messages_;
22
+
23
+ public:
24
+ backtracer() = default;
25
+ backtracer(const backtracer &other);
26
+
27
+ backtracer(backtracer &&other) SPDLOG_NOEXCEPT;
28
+ backtracer &operator=(backtracer other);
29
+
30
+ void enable(size_t size);
31
+ void disable();
32
+ bool enabled() const;
33
+ void push_back(const log_msg &msg);
34
+ bool empty() const;
35
+
36
+ // pop all items in the q and apply the given fun on each of them.
37
+ void foreach_pop(std::function<void(const details::log_msg &)> fun);
38
+ };
39
+
40
+ } // namespace details
41
+ } // namespace spdlog
42
+
43
+ #ifdef SPDLOG_HEADER_ONLY
44
+ #include "backtracer-inl.h"
45
+ #endif
@@ -0,0 +1,115 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ // circular q view of std::vector.
5
+ #pragma once
6
+
7
+ #include <cassert>
8
+ #include <vector>
9
+
10
+ #include "spdlog/common.h"
11
+
12
+ namespace spdlog {
13
+ namespace details {
14
+ template <typename T>
15
+ class circular_q {
16
+ size_t max_items_ = 0;
17
+ typename std::vector<T>::size_type head_ = 0;
18
+ typename std::vector<T>::size_type tail_ = 0;
19
+ size_t overrun_counter_ = 0;
20
+ std::vector<T> v_;
21
+
22
+ public:
23
+ using value_type = T;
24
+
25
+ // empty ctor - create a disabled queue with no elements allocated at all
26
+ circular_q() = default;
27
+
28
+ explicit circular_q(size_t max_items)
29
+ : max_items_(max_items + 1) // one item is reserved as marker for full q
30
+ ,
31
+ v_(max_items_) {}
32
+
33
+ circular_q(const circular_q &) = default;
34
+ circular_q &operator=(const circular_q &) = default;
35
+
36
+ // move cannot be default,
37
+ // since we need to reset head_, tail_, etc to zero in the moved object
38
+ circular_q(circular_q &&other) SPDLOG_NOEXCEPT { copy_moveable(std::move(other)); }
39
+
40
+ circular_q &operator=(circular_q &&other) SPDLOG_NOEXCEPT {
41
+ copy_moveable(std::move(other));
42
+ return *this;
43
+ }
44
+
45
+ // push back, overrun (oldest) item if no room left
46
+ void push_back(T &&item) {
47
+ if (max_items_ > 0) {
48
+ v_[tail_] = std::move(item);
49
+ tail_ = (tail_ + 1) % max_items_;
50
+
51
+ if (tail_ == head_) // overrun last item if full
52
+ {
53
+ head_ = (head_ + 1) % max_items_;
54
+ ++overrun_counter_;
55
+ }
56
+ }
57
+ }
58
+
59
+ // Return reference to the front item.
60
+ // If there are no elements in the container, the behavior is undefined.
61
+ const T &front() const { return v_[head_]; }
62
+
63
+ T &front() { return v_[head_]; }
64
+
65
+ // Return number of elements actually stored
66
+ size_t size() const {
67
+ if (tail_ >= head_) {
68
+ return tail_ - head_;
69
+ } else {
70
+ return max_items_ - (head_ - tail_);
71
+ }
72
+ }
73
+
74
+ // Return const reference to item by index.
75
+ // If index is out of range 0…size()-1, the behavior is undefined.
76
+ const T &at(size_t i) const {
77
+ assert(i < size());
78
+ return v_[(head_ + i) % max_items_];
79
+ }
80
+
81
+ // Pop item from front.
82
+ // If there are no elements in the container, the behavior is undefined.
83
+ void pop_front() { head_ = (head_ + 1) % max_items_; }
84
+
85
+ bool empty() const { return tail_ == head_; }
86
+
87
+ bool full() const {
88
+ // head is ahead of the tail by 1
89
+ if (max_items_ > 0) {
90
+ return ((tail_ + 1) % max_items_) == head_;
91
+ }
92
+ return false;
93
+ }
94
+
95
+ size_t overrun_counter() const { return overrun_counter_; }
96
+
97
+ void reset_overrun_counter() { overrun_counter_ = 0; }
98
+
99
+ private:
100
+ // copy from other&& and reset it to disabled state
101
+ void copy_moveable(circular_q &&other) SPDLOG_NOEXCEPT {
102
+ max_items_ = other.max_items_;
103
+ head_ = other.head_;
104
+ tail_ = other.tail_;
105
+ overrun_counter_ = other.overrun_counter_;
106
+ v_ = std::move(other.v_);
107
+
108
+ // put &&other in disabled, but valid state
109
+ other.max_items_ = 0;
110
+ other.head_ = other.tail_ = 0;
111
+ other.overrun_counter_ = 0;
112
+ }
113
+ };
114
+ } // namespace details
115
+ } // namespace spdlog
@@ -0,0 +1,28 @@
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 <mutex>
7
+ #include <spdlog/details/null_mutex.h>
8
+
9
+ namespace spdlog {
10
+ namespace details {
11
+
12
+ struct console_mutex {
13
+ using mutex_t = std::mutex;
14
+ static mutex_t &mutex() {
15
+ static mutex_t s_mutex;
16
+ return s_mutex;
17
+ }
18
+ };
19
+
20
+ struct console_nullmutex {
21
+ using mutex_t = null_mutex;
22
+ static mutex_t &mutex() {
23
+ static mutex_t s_mutex;
24
+ return s_mutex;
25
+ }
26
+ };
27
+ } // namespace details
28
+ } // namespace spdlog