mqt-core 3.3.2__cp312-cp312-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.cp312-win_amd64.pyd +0 -0
  21. mqt/core/dd.pyi +1016 -0
  22. mqt/core/dd_evaluation.py +368 -0
  23. mqt/core/fomac.cp312-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.cp312-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.cp312-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,127 @@
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 <ctime> // std::time_t
7
+ #include <spdlog/common.h>
8
+
9
+ namespace spdlog {
10
+ namespace details {
11
+ namespace os {
12
+
13
+ SPDLOG_API spdlog::log_clock::time_point now() SPDLOG_NOEXCEPT;
14
+
15
+ SPDLOG_API std::tm localtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT;
16
+
17
+ SPDLOG_API std::tm localtime() SPDLOG_NOEXCEPT;
18
+
19
+ SPDLOG_API std::tm gmtime(const std::time_t &time_tt) SPDLOG_NOEXCEPT;
20
+
21
+ SPDLOG_API std::tm gmtime() SPDLOG_NOEXCEPT;
22
+
23
+ // eol definition
24
+ #if !defined(SPDLOG_EOL)
25
+ #ifdef _WIN32
26
+ #define SPDLOG_EOL "\r\n"
27
+ #else
28
+ #define SPDLOG_EOL "\n"
29
+ #endif
30
+ #endif
31
+
32
+ SPDLOG_CONSTEXPR static const char *default_eol = SPDLOG_EOL;
33
+
34
+ // folder separator
35
+ #if !defined(SPDLOG_FOLDER_SEPS)
36
+ #ifdef _WIN32
37
+ #define SPDLOG_FOLDER_SEPS "\\/"
38
+ #else
39
+ #define SPDLOG_FOLDER_SEPS "/"
40
+ #endif
41
+ #endif
42
+
43
+ SPDLOG_CONSTEXPR static const char folder_seps[] = SPDLOG_FOLDER_SEPS;
44
+ SPDLOG_CONSTEXPR static const filename_t::value_type folder_seps_filename[] =
45
+ SPDLOG_FILENAME_T(SPDLOG_FOLDER_SEPS);
46
+
47
+ // fopen_s on non windows for writing
48
+ SPDLOG_API bool fopen_s(FILE **fp, const filename_t &filename, const filename_t &mode);
49
+
50
+ // Remove filename. return 0 on success
51
+ SPDLOG_API int remove(const filename_t &filename) SPDLOG_NOEXCEPT;
52
+
53
+ // Remove file if exists. return 0 on success
54
+ // Note: Non atomic (might return failure to delete if concurrently deleted by other process/thread)
55
+ SPDLOG_API int remove_if_exists(const filename_t &filename) SPDLOG_NOEXCEPT;
56
+
57
+ SPDLOG_API int rename(const filename_t &filename1, const filename_t &filename2) SPDLOG_NOEXCEPT;
58
+
59
+ // Return if file exists.
60
+ SPDLOG_API bool path_exists(const filename_t &filename) SPDLOG_NOEXCEPT;
61
+
62
+ // Return file size according to open FILE* object
63
+ SPDLOG_API size_t filesize(FILE *f);
64
+
65
+ // Return utc offset in minutes or throw spdlog_ex on failure
66
+ SPDLOG_API int utc_minutes_offset(const std::tm &tm = details::os::localtime());
67
+
68
+ // Return current thread id as size_t
69
+ // It exists because the std::this_thread::get_id() is much slower(especially
70
+ // under VS 2013)
71
+ SPDLOG_API size_t _thread_id() SPDLOG_NOEXCEPT;
72
+
73
+ // Return current thread id as size_t (from thread local storage)
74
+ SPDLOG_API size_t thread_id() SPDLOG_NOEXCEPT;
75
+
76
+ // This is avoid msvc issue in sleep_for that happens if the clock changes.
77
+ // See https://github.com/gabime/spdlog/issues/609
78
+ SPDLOG_API void sleep_for_millis(unsigned int milliseconds) SPDLOG_NOEXCEPT;
79
+
80
+ SPDLOG_API std::string filename_to_str(const filename_t &filename);
81
+
82
+ SPDLOG_API int pid() SPDLOG_NOEXCEPT;
83
+
84
+ // Determine if the terminal supports colors
85
+ // Source: https://github.com/agauniyal/rang/
86
+ SPDLOG_API bool is_color_terminal() SPDLOG_NOEXCEPT;
87
+
88
+ // Determine if the terminal attached
89
+ // Source: https://github.com/agauniyal/rang/
90
+ SPDLOG_API bool in_terminal(FILE *file) SPDLOG_NOEXCEPT;
91
+
92
+ #if (defined(SPDLOG_WCHAR_TO_UTF8_SUPPORT) || defined(SPDLOG_WCHAR_FILENAMES)) && defined(_WIN32)
93
+ SPDLOG_API void wstr_to_utf8buf(wstring_view_t wstr, memory_buf_t &target);
94
+
95
+ SPDLOG_API void utf8_to_wstrbuf(string_view_t str, wmemory_buf_t &target);
96
+ #endif
97
+
98
+ // Return directory name from given path or empty string
99
+ // "abc/file" => "abc"
100
+ // "abc/" => "abc"
101
+ // "abc" => ""
102
+ // "abc///" => "abc//"
103
+ SPDLOG_API filename_t dir_name(const filename_t &path);
104
+
105
+ // Create a dir from the given path.
106
+ // Return true if succeeded or if this dir already exists.
107
+ SPDLOG_API bool create_dir(const filename_t &path);
108
+
109
+ // non thread safe, cross platform getenv/getenv_s
110
+ // return empty string if field not found
111
+ SPDLOG_API std::string getenv(const char *field);
112
+
113
+ // Do fsync by FILE objectpointer.
114
+ // Return true on success.
115
+ SPDLOG_API bool fsync(FILE *fp);
116
+
117
+ // Do non-locking fwrite if possible by the os or use the regular locking fwrite
118
+ // Return true on success.
119
+ SPDLOG_API bool fwrite_bytes(const void *ptr, const size_t n_bytes, FILE *fp);
120
+
121
+ } // namespace os
122
+ } // namespace details
123
+ } // namespace spdlog
124
+
125
+ #ifdef SPDLOG_HEADER_ONLY
126
+ #include "os-inl.h"
127
+ #endif
@@ -0,0 +1,26 @@
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/periodic_worker.h>
8
+ #endif
9
+
10
+ namespace spdlog {
11
+ namespace details {
12
+
13
+ // stop the worker thread and join it
14
+ SPDLOG_INLINE periodic_worker::~periodic_worker() {
15
+ if (worker_thread_.joinable()) {
16
+ {
17
+ std::lock_guard<std::mutex> lock(mutex_);
18
+ active_ = false;
19
+ }
20
+ cv_.notify_one();
21
+ worker_thread_.join();
22
+ }
23
+ }
24
+
25
+ } // namespace details
26
+ } // namespace spdlog
@@ -0,0 +1,58 @@
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
+ // periodic worker thread - periodically executes the given callback function.
7
+ //
8
+ // RAII over the owned thread:
9
+ // creates the thread on construction.
10
+ // stops and joins the thread on destruction (if the thread is executing a callback, wait for it
11
+ // to finish first).
12
+
13
+ #include <chrono>
14
+ #include <condition_variable>
15
+ #include <functional>
16
+ #include <mutex>
17
+ #include <thread>
18
+ namespace spdlog {
19
+ namespace details {
20
+
21
+ class SPDLOG_API periodic_worker {
22
+ public:
23
+ template <typename Rep, typename Period>
24
+ periodic_worker(const std::function<void()> &callback_fun,
25
+ std::chrono::duration<Rep, Period> interval) {
26
+ active_ = (interval > std::chrono::duration<Rep, Period>::zero());
27
+ if (!active_) {
28
+ return;
29
+ }
30
+
31
+ worker_thread_ = std::thread([this, callback_fun, interval]() {
32
+ for (;;) {
33
+ std::unique_lock<std::mutex> lock(this->mutex_);
34
+ if (this->cv_.wait_for(lock, interval, [this] { return !this->active_; })) {
35
+ return; // active_ == false, so exit this thread
36
+ }
37
+ callback_fun();
38
+ }
39
+ });
40
+ }
41
+ std::thread &get_thread() { return worker_thread_; }
42
+ periodic_worker(const periodic_worker &) = delete;
43
+ periodic_worker &operator=(const periodic_worker &) = delete;
44
+ // stop the worker thread and join it
45
+ ~periodic_worker();
46
+
47
+ private:
48
+ bool active_;
49
+ std::thread worker_thread_;
50
+ std::mutex mutex_;
51
+ std::condition_variable cv_;
52
+ };
53
+ } // namespace details
54
+ } // namespace spdlog
55
+
56
+ #ifdef SPDLOG_HEADER_ONLY
57
+ #include "periodic_worker-inl.h"
58
+ #endif
@@ -0,0 +1,270 @@
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/registry.h>
8
+ #endif
9
+
10
+ #include <spdlog/common.h>
11
+ #include <spdlog/details/periodic_worker.h>
12
+ #include <spdlog/logger.h>
13
+ #include <spdlog/pattern_formatter.h>
14
+
15
+ #ifndef SPDLOG_DISABLE_DEFAULT_LOGGER
16
+ // support for the default stdout color logger
17
+ #ifdef _WIN32
18
+ #include <spdlog/sinks/wincolor_sink.h>
19
+ #else
20
+ #include <spdlog/sinks/ansicolor_sink.h>
21
+ #endif
22
+ #endif // SPDLOG_DISABLE_DEFAULT_LOGGER
23
+
24
+ #include <chrono>
25
+ #include <functional>
26
+ #include <memory>
27
+ #include <string>
28
+ #include <unordered_map>
29
+
30
+ namespace spdlog {
31
+ namespace details {
32
+
33
+ SPDLOG_INLINE registry::registry()
34
+ : formatter_(new pattern_formatter()) {
35
+ #ifndef SPDLOG_DISABLE_DEFAULT_LOGGER
36
+ // create default logger (ansicolor_stdout_sink_mt or wincolor_stdout_sink_mt in windows).
37
+ #ifdef _WIN32
38
+ auto color_sink = std::make_shared<sinks::wincolor_stdout_sink_mt>();
39
+ #else
40
+ auto color_sink = std::make_shared<sinks::ansicolor_stdout_sink_mt>();
41
+ #endif
42
+
43
+ const char *default_logger_name = "";
44
+ default_logger_ = std::make_shared<spdlog::logger>(default_logger_name, std::move(color_sink));
45
+ loggers_[default_logger_name] = default_logger_;
46
+
47
+ #endif // SPDLOG_DISABLE_DEFAULT_LOGGER
48
+ }
49
+
50
+ SPDLOG_INLINE registry::~registry() = default;
51
+
52
+ SPDLOG_INLINE void registry::register_logger(std::shared_ptr<logger> new_logger) {
53
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
54
+ register_logger_(std::move(new_logger));
55
+ }
56
+
57
+ SPDLOG_INLINE void registry::register_or_replace(std::shared_ptr<logger> new_logger) {
58
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
59
+ register_or_replace_(std::move(new_logger));
60
+ }
61
+
62
+ SPDLOG_INLINE void registry::initialize_logger(std::shared_ptr<logger> new_logger) {
63
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
64
+ new_logger->set_formatter(formatter_->clone());
65
+
66
+ if (err_handler_) {
67
+ new_logger->set_error_handler(err_handler_);
68
+ }
69
+
70
+ // set new level according to previously configured level or default level
71
+ auto it = log_levels_.find(new_logger->name());
72
+ auto new_level = it != log_levels_.end() ? it->second : global_log_level_;
73
+ new_logger->set_level(new_level);
74
+
75
+ new_logger->flush_on(flush_level_);
76
+
77
+ if (backtrace_n_messages_ > 0) {
78
+ new_logger->enable_backtrace(backtrace_n_messages_);
79
+ }
80
+
81
+ if (automatic_registration_) {
82
+ register_logger_(std::move(new_logger));
83
+ }
84
+ }
85
+
86
+ SPDLOG_INLINE std::shared_ptr<logger> registry::get(const std::string &logger_name) {
87
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
88
+ auto found = loggers_.find(logger_name);
89
+ return found == loggers_.end() ? nullptr : found->second;
90
+ }
91
+
92
+ SPDLOG_INLINE std::shared_ptr<logger> registry::default_logger() {
93
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
94
+ return default_logger_;
95
+ }
96
+
97
+ // Return raw ptr to the default logger.
98
+ // To be used directly by the spdlog default api (e.g. spdlog::info)
99
+ // This make the default API faster, but cannot be used concurrently with set_default_logger().
100
+ // e.g do not call set_default_logger() from one thread while calling spdlog::info() from another.
101
+ SPDLOG_INLINE logger *registry::get_default_raw() { return default_logger_.get(); }
102
+
103
+ // set default logger.
104
+ // default logger is stored in default_logger_ (for faster retrieval) and in the loggers_ map.
105
+ SPDLOG_INLINE void registry::set_default_logger(std::shared_ptr<logger> new_default_logger) {
106
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
107
+ if (new_default_logger != nullptr) {
108
+ loggers_[new_default_logger->name()] = new_default_logger;
109
+ }
110
+ default_logger_ = std::move(new_default_logger);
111
+ }
112
+
113
+ SPDLOG_INLINE void registry::set_tp(std::shared_ptr<thread_pool> tp) {
114
+ std::lock_guard<std::recursive_mutex> lock(tp_mutex_);
115
+ tp_ = std::move(tp);
116
+ }
117
+
118
+ SPDLOG_INLINE std::shared_ptr<thread_pool> registry::get_tp() {
119
+ std::lock_guard<std::recursive_mutex> lock(tp_mutex_);
120
+ return tp_;
121
+ }
122
+
123
+ // Set global formatter. Each sink in each logger will get a clone of this object
124
+ SPDLOG_INLINE void registry::set_formatter(std::unique_ptr<formatter> formatter) {
125
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
126
+ formatter_ = std::move(formatter);
127
+ for (auto &l : loggers_) {
128
+ l.second->set_formatter(formatter_->clone());
129
+ }
130
+ }
131
+
132
+ SPDLOG_INLINE void registry::enable_backtrace(size_t n_messages) {
133
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
134
+ backtrace_n_messages_ = n_messages;
135
+
136
+ for (auto &l : loggers_) {
137
+ l.second->enable_backtrace(n_messages);
138
+ }
139
+ }
140
+
141
+ SPDLOG_INLINE void registry::disable_backtrace() {
142
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
143
+ backtrace_n_messages_ = 0;
144
+ for (auto &l : loggers_) {
145
+ l.second->disable_backtrace();
146
+ }
147
+ }
148
+
149
+ SPDLOG_INLINE void registry::set_level(level::level_enum log_level) {
150
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
151
+ for (auto &l : loggers_) {
152
+ l.second->set_level(log_level);
153
+ }
154
+ global_log_level_ = log_level;
155
+ }
156
+
157
+ SPDLOG_INLINE void registry::flush_on(level::level_enum log_level) {
158
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
159
+ for (auto &l : loggers_) {
160
+ l.second->flush_on(log_level);
161
+ }
162
+ flush_level_ = log_level;
163
+ }
164
+
165
+ SPDLOG_INLINE void registry::set_error_handler(err_handler handler) {
166
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
167
+ for (auto &l : loggers_) {
168
+ l.second->set_error_handler(handler);
169
+ }
170
+ err_handler_ = std::move(handler);
171
+ }
172
+
173
+ SPDLOG_INLINE void registry::apply_all(
174
+ const std::function<void(const std::shared_ptr<logger>)> &fun) {
175
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
176
+ for (auto &l : loggers_) {
177
+ fun(l.second);
178
+ }
179
+ }
180
+
181
+ SPDLOG_INLINE void registry::flush_all() {
182
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
183
+ for (auto &l : loggers_) {
184
+ l.second->flush();
185
+ }
186
+ }
187
+
188
+ SPDLOG_INLINE void registry::drop(const std::string &logger_name) {
189
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
190
+ auto is_default_logger = default_logger_ && default_logger_->name() == logger_name;
191
+ loggers_.erase(logger_name);
192
+ if (is_default_logger) {
193
+ default_logger_.reset();
194
+ }
195
+ }
196
+
197
+ SPDLOG_INLINE void registry::drop_all() {
198
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
199
+ loggers_.clear();
200
+ default_logger_.reset();
201
+ }
202
+
203
+ // clean all resources and threads started by the registry
204
+ SPDLOG_INLINE void registry::shutdown() {
205
+ {
206
+ std::lock_guard<std::mutex> lock(flusher_mutex_);
207
+ periodic_flusher_.reset();
208
+ }
209
+
210
+ drop_all();
211
+
212
+ {
213
+ std::lock_guard<std::recursive_mutex> lock(tp_mutex_);
214
+ tp_.reset();
215
+ }
216
+ }
217
+
218
+ SPDLOG_INLINE std::recursive_mutex &registry::tp_mutex() { return tp_mutex_; }
219
+
220
+ SPDLOG_INLINE void registry::set_automatic_registration(bool automatic_registration) {
221
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
222
+ automatic_registration_ = automatic_registration;
223
+ }
224
+
225
+ SPDLOG_INLINE void registry::set_levels(log_levels levels, level::level_enum *global_level) {
226
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
227
+ log_levels_ = std::move(levels);
228
+ auto global_level_requested = global_level != nullptr;
229
+ global_log_level_ = global_level_requested ? *global_level : global_log_level_;
230
+
231
+ for (auto &logger : loggers_) {
232
+ auto logger_entry = log_levels_.find(logger.first);
233
+ if (logger_entry != log_levels_.end()) {
234
+ logger.second->set_level(logger_entry->second);
235
+ } else if (global_level_requested) {
236
+ logger.second->set_level(*global_level);
237
+ }
238
+ }
239
+ }
240
+
241
+ SPDLOG_INLINE registry &registry::instance() {
242
+ static registry s_instance;
243
+ return s_instance;
244
+ }
245
+
246
+ SPDLOG_INLINE void registry::apply_logger_env_levels(std::shared_ptr<logger> new_logger) {
247
+ std::lock_guard<std::mutex> lock(logger_map_mutex_);
248
+ auto it = log_levels_.find(new_logger->name());
249
+ auto new_level = it != log_levels_.end() ? it->second : global_log_level_;
250
+ new_logger->set_level(new_level);
251
+ }
252
+
253
+ SPDLOG_INLINE void registry::throw_if_exists_(const std::string &logger_name) {
254
+ if (loggers_.find(logger_name) != loggers_.end()) {
255
+ throw_spdlog_ex("logger with name '" + logger_name + "' already exists");
256
+ }
257
+ }
258
+
259
+ SPDLOG_INLINE void registry::register_logger_(std::shared_ptr<logger> new_logger) {
260
+ auto &logger_name = new_logger->name();
261
+ throw_if_exists_(logger_name);
262
+ loggers_[logger_name] = std::move(new_logger);
263
+ }
264
+
265
+ SPDLOG_INLINE void registry::register_or_replace_(std::shared_ptr<logger> new_logger) {
266
+ loggers_[new_logger->name()] = std::move(new_logger);
267
+ }
268
+
269
+ } // namespace details
270
+ } // namespace spdlog
@@ -0,0 +1,131 @@
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
+ // Loggers registry of unique name->logger pointer
7
+ // An attempt to create a logger with an already existing name will result with spdlog_ex exception.
8
+ // If user requests a non existing logger, nullptr will be returned
9
+ // This class is thread safe
10
+
11
+ #include <spdlog/common.h>
12
+ #include <spdlog/details/periodic_worker.h>
13
+
14
+ #include <chrono>
15
+ #include <functional>
16
+ #include <memory>
17
+ #include <mutex>
18
+ #include <string>
19
+ #include <unordered_map>
20
+
21
+ namespace spdlog {
22
+ class logger;
23
+
24
+ namespace details {
25
+ class thread_pool;
26
+
27
+ class SPDLOG_API registry {
28
+ public:
29
+ using log_levels = std::unordered_map<std::string, level::level_enum>;
30
+ registry(const registry &) = delete;
31
+ registry &operator=(const registry &) = delete;
32
+
33
+ void register_logger(std::shared_ptr<logger> new_logger);
34
+ void register_or_replace(std::shared_ptr<logger> new_logger);
35
+ void initialize_logger(std::shared_ptr<logger> new_logger);
36
+ std::shared_ptr<logger> get(const std::string &logger_name);
37
+ std::shared_ptr<logger> default_logger();
38
+
39
+ // Return raw ptr to the default logger.
40
+ // To be used directly by the spdlog default api (e.g. spdlog::info)
41
+ // This make the default API faster, but cannot be used concurrently with set_default_logger().
42
+ // e.g do not call set_default_logger() from one thread while calling spdlog::info() from
43
+ // another.
44
+ logger *get_default_raw();
45
+
46
+ // set default logger and add it to the registry if not registered already.
47
+ // default logger is stored in default_logger_ (for faster retrieval) and in the loggers_ map.
48
+ // Note: Make sure to unregister it when no longer needed or before calling again with a new
49
+ // logger.
50
+ void set_default_logger(std::shared_ptr<logger> new_default_logger);
51
+
52
+ void set_tp(std::shared_ptr<thread_pool> tp);
53
+
54
+ std::shared_ptr<thread_pool> get_tp();
55
+
56
+ // Set global formatter. Each sink in each logger will get a clone of this object
57
+ void set_formatter(std::unique_ptr<formatter> formatter);
58
+
59
+ void enable_backtrace(size_t n_messages);
60
+
61
+ void disable_backtrace();
62
+
63
+ void set_level(level::level_enum log_level);
64
+
65
+ void flush_on(level::level_enum log_level);
66
+
67
+ template <typename Rep, typename Period>
68
+ void flush_every(std::chrono::duration<Rep, Period> interval) {
69
+ std::lock_guard<std::mutex> lock(flusher_mutex_);
70
+ auto clbk = [this]() { this->flush_all(); };
71
+ periodic_flusher_ = details::make_unique<periodic_worker>(clbk, interval);
72
+ }
73
+
74
+ std::unique_ptr<periodic_worker> &get_flusher() {
75
+ std::lock_guard<std::mutex> lock(flusher_mutex_);
76
+ return periodic_flusher_;
77
+ }
78
+
79
+ void set_error_handler(err_handler handler);
80
+
81
+ void apply_all(const std::function<void(const std::shared_ptr<logger>)> &fun);
82
+
83
+ void flush_all();
84
+
85
+ void drop(const std::string &logger_name);
86
+
87
+ void drop_all();
88
+
89
+ // clean all resources and threads started by the registry
90
+ void shutdown();
91
+
92
+ std::recursive_mutex &tp_mutex();
93
+
94
+ void set_automatic_registration(bool automatic_registration);
95
+
96
+ // set levels for all existing/future loggers. global_level can be null if should not set.
97
+ void set_levels(log_levels levels, level::level_enum *global_level);
98
+
99
+ static registry &instance();
100
+
101
+ void apply_logger_env_levels(std::shared_ptr<logger> new_logger);
102
+
103
+ private:
104
+ registry();
105
+ ~registry();
106
+
107
+ void throw_if_exists_(const std::string &logger_name);
108
+ void register_logger_(std::shared_ptr<logger> new_logger);
109
+ void register_or_replace_(std::shared_ptr<logger> new_logger);
110
+ bool set_level_from_cfg_(logger *logger);
111
+ std::mutex logger_map_mutex_, flusher_mutex_;
112
+ std::recursive_mutex tp_mutex_;
113
+ std::unordered_map<std::string, std::shared_ptr<logger>> loggers_;
114
+ log_levels log_levels_;
115
+ std::unique_ptr<formatter> formatter_;
116
+ spdlog::level::level_enum global_log_level_ = level::info;
117
+ level::level_enum flush_level_ = level::off;
118
+ err_handler err_handler_;
119
+ std::shared_ptr<thread_pool> tp_;
120
+ std::unique_ptr<periodic_worker> periodic_flusher_;
121
+ std::shared_ptr<logger> default_logger_;
122
+ bool automatic_registration_ = true;
123
+ size_t backtrace_n_messages_ = 0;
124
+ };
125
+
126
+ } // namespace details
127
+ } // namespace spdlog
128
+
129
+ #ifdef SPDLOG_HEADER_ONLY
130
+ #include "registry-inl.h"
131
+ #endif
@@ -0,0 +1,22 @@
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 "registry.h"
7
+
8
+ namespace spdlog {
9
+
10
+ // Default logger factory- creates synchronous loggers
11
+ class logger;
12
+
13
+ struct synchronous_factory {
14
+ template <typename Sink, typename... SinkArgs>
15
+ static std::shared_ptr<spdlog::logger> create(std::string logger_name, SinkArgs &&...args) {
16
+ auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
17
+ auto new_logger = std::make_shared<spdlog::logger>(std::move(logger_name), std::move(sink));
18
+ details::registry::instance().initialize_logger(new_logger);
19
+ return new_logger;
20
+ }
21
+ };
22
+ } // namespace spdlog