mqt-core 3.3.2__cp314-cp314t-macosx_11_0_x86_64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (546) hide show
  1. mqt/core/__init__.py +77 -0
  2. mqt/core/__main__.py +55 -0
  3. mqt/core/_commands.py +52 -0
  4. mqt/core/_compat/__init__.py +11 -0
  5. mqt/core/_compat/typing.py +29 -0
  6. mqt/core/_version.py +34 -0
  7. mqt/core/_version.pyi +12 -0
  8. mqt/core/dd.cpython-314t-darwin.so +0 -0
  9. mqt/core/dd.pyi +1016 -0
  10. mqt/core/dd_evaluation.py +368 -0
  11. mqt/core/fomac.cpython-314t-darwin.so +0 -0
  12. mqt/core/fomac.pyi +125 -0
  13. mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
  14. mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
  15. mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
  16. mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
  17. mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
  18. mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
  19. mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
  20. mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
  21. mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
  22. mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
  23. mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
  24. mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
  25. mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
  26. mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
  27. mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
  28. mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
  29. mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
  30. mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
  31. mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
  32. mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
  33. mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
  34. mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
  35. mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
  36. mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
  37. mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
  38. mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
  39. mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
  40. mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
  41. mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
  42. mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
  43. mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
  44. mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
  45. mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
  46. mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
  47. mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
  48. mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
  49. mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
  50. mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
  51. mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
  52. mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
  53. mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
  54. mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
  55. mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
  56. mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
  57. mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
  58. mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
  59. mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
  60. mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
  61. mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
  62. mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
  63. mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
  64. mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
  65. mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
  66. mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
  67. mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
  68. mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
  69. mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
  70. mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
  71. mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
  72. mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
  73. mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
  74. mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
  75. mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
  76. mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
  77. mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
  78. mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
  79. mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
  80. mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
  81. mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
  82. mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
  83. mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
  84. mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
  85. mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
  86. mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
  87. mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
  88. mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
  89. mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
  90. mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
  91. mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
  92. mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
  93. mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
  94. mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
  95. mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
  96. mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
  97. mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
  98. mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
  99. mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
  100. mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
  101. mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
  102. mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
  103. mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
  104. mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
  105. mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
  106. mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
  107. mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
  108. mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
  109. mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
  110. mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
  111. mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
  112. mqt/core/include/mqt-core/boost/config.hpp +67 -0
  113. mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
  114. mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
  115. mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
  116. mqt/core/include/mqt-core/boost/limits.hpp +146 -0
  117. mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
  118. mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
  119. mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
  120. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
  121. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
  122. mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
  123. mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
  124. mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
  125. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
  126. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
  127. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
  128. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
  129. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
  130. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
  131. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
  132. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
  133. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
  134. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
  135. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
  136. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
  137. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
  138. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
  139. mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
  140. mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
  141. mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
  142. mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
  143. mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
  144. mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
  145. mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
  146. mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
  147. mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
  148. mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
  149. mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
  150. mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
  151. mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
  152. mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
  153. mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
  154. mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
  155. mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
  156. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
  157. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
  158. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
  159. mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
  160. mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
  161. mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
  162. mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
  163. mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
  164. mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
  165. mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
  166. mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
  167. mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
  168. mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
  169. mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
  170. mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
  171. mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
  172. mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
  173. mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
  174. mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
  175. mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
  176. mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
  177. mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
  178. mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
  179. mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
  180. mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
  181. mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
  182. mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
  183. mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
  184. mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
  185. mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
  186. mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
  187. mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
  188. mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
  189. mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
  190. mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
  191. mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
  192. mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
  193. mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
  194. mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
  195. mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
  196. mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
  197. mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
  198. mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
  199. mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
  200. mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
  201. mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
  202. mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
  203. mqt/core/include/mqt-core/boost/version.hpp +32 -0
  204. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
  205. mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
  206. mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
  207. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
  208. mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
  209. mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
  210. mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
  211. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
  212. mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
  213. mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
  214. mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
  215. mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
  216. mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
  217. mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
  218. mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
  219. mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
  220. mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
  221. mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
  222. mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
  223. mqt/core/include/mqt-core/dd/Export.hpp +438 -0
  224. mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
  225. mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
  226. mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
  227. mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
  228. mqt/core/include/mqt-core/dd/Node.hpp +223 -0
  229. mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
  230. mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
  231. mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
  232. mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
  233. mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
  234. mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
  235. mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
  236. mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
  237. mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
  238. mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
  239. mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
  240. mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
  241. mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
  242. mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
  243. mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
  244. mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
  245. mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
  246. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  247. mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
  248. mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
  249. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
  250. mqt/core/include/mqt-core/ir/Register.hpp +125 -0
  251. mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
  252. mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
  253. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
  254. mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
  255. mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
  256. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  257. mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
  258. mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
  259. mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
  260. mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
  261. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
  262. mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
  263. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  264. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  265. mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
  266. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  267. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  268. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  269. mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
  270. mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
  271. mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
  272. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  273. mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
  274. mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
  275. mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
  276. mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
  277. mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
  278. mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
  279. mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
  280. mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
  281. mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
  282. mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
  283. mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
  284. mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
  285. mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
  286. mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
  287. mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
  288. mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
  289. mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
  290. mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
  291. mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
  292. mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
  293. mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
  294. mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
  295. mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
  296. mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
  297. mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
  298. mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
  299. mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
  300. mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
  301. mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
  302. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  303. mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
  304. mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
  305. mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
  306. mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
  307. mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
  308. mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
  309. mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
  310. mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
  311. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  312. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  313. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  314. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  315. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  316. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  317. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  318. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  319. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  320. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  321. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  322. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  323. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  324. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  325. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  326. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  327. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  328. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  329. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  330. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  331. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  332. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  333. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  334. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  335. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  336. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  337. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  338. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  339. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  340. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  341. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  342. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  343. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  344. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  345. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  346. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  347. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  348. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  349. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  350. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  351. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  352. mqt/core/include/nlohmann/json.hpp +5306 -0
  353. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  354. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  355. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  356. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  357. mqt/core/include/qdmi/qdmi/client.h +990 -0
  358. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  359. mqt/core/include/qdmi/qdmi/device.h +602 -0
  360. mqt/core/include/qdmi/qdmi/types.h +78 -0
  361. mqt/core/include/spdlog/async.h +99 -0
  362. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  363. mqt/core/include/spdlog/async_logger.h +74 -0
  364. mqt/core/include/spdlog/cfg/argv.h +40 -0
  365. mqt/core/include/spdlog/cfg/env.h +36 -0
  366. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  367. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  368. mqt/core/include/spdlog/common-inl.h +68 -0
  369. mqt/core/include/spdlog/common.h +406 -0
  370. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  371. mqt/core/include/spdlog/details/backtracer.h +45 -0
  372. mqt/core/include/spdlog/details/circular_q.h +115 -0
  373. mqt/core/include/spdlog/details/console_globals.h +28 -0
  374. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  375. mqt/core/include/spdlog/details/file_helper.h +61 -0
  376. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  377. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  378. mqt/core/include/spdlog/details/log_msg.h +40 -0
  379. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  380. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  381. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  382. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  383. mqt/core/include/spdlog/details/os-inl.h +606 -0
  384. mqt/core/include/spdlog/details/os.h +127 -0
  385. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  386. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  387. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  388. mqt/core/include/spdlog/details/registry.h +131 -0
  389. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  390. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  391. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  392. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  393. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  394. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  395. mqt/core/include/spdlog/details/udp_client.h +81 -0
  396. mqt/core/include/spdlog/details/windows_include.h +11 -0
  397. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  398. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  399. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  400. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  401. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  402. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  403. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  404. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  405. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  406. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  407. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  408. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  409. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  410. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  411. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  412. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  413. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  414. mqt/core/include/spdlog/fmt/compile.h +23 -0
  415. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  416. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  417. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  418. mqt/core/include/spdlog/fmt/std.h +24 -0
  419. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  420. mqt/core/include/spdlog/formatter.h +17 -0
  421. mqt/core/include/spdlog/fwd.h +18 -0
  422. mqt/core/include/spdlog/logger-inl.h +198 -0
  423. mqt/core/include/spdlog/logger.h +379 -0
  424. mqt/core/include/spdlog/mdc.h +52 -0
  425. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  426. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  427. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  428. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  429. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  430. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  431. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  432. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  433. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  434. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  435. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  436. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  437. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  438. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  439. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  440. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  441. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  442. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  443. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  444. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  445. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  446. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  447. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  448. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  449. mqt/core/include/spdlog/sinks/sink.h +34 -0
  450. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  451. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  452. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  453. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  454. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  455. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  456. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  457. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  458. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  459. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  460. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  461. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  462. mqt/core/include/spdlog/spdlog.h +357 -0
  463. mqt/core/include/spdlog/stopwatch.h +66 -0
  464. mqt/core/include/spdlog/tweakme.h +148 -0
  465. mqt/core/include/spdlog/version.h +11 -0
  466. mqt/core/ir/__init__.pyi +2078 -0
  467. mqt/core/ir/operations.pyi +1011 -0
  468. mqt/core/ir/registers.pyi +91 -0
  469. mqt/core/ir/symbolic.pyi +177 -0
  470. mqt/core/ir.cpython-314t-darwin.so +0 -0
  471. mqt/core/lib/libmqt-core-algorithms.3.3.2.dylib +0 -0
  472. mqt/core/lib/libmqt-core-algorithms.3.3.dylib +0 -0
  473. mqt/core/lib/libmqt-core-algorithms.dylib +0 -0
  474. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.2.dylib +0 -0
  475. mqt/core/lib/libmqt-core-circuit-optimizer.3.3.dylib +0 -0
  476. mqt/core/lib/libmqt-core-circuit-optimizer.dylib +0 -0
  477. mqt/core/lib/libmqt-core-dd.3.3.2.dylib +0 -0
  478. mqt/core/lib/libmqt-core-dd.3.3.dylib +0 -0
  479. mqt/core/lib/libmqt-core-dd.dylib +0 -0
  480. mqt/core/lib/libmqt-core-ds.3.3.2.dylib +0 -0
  481. mqt/core/lib/libmqt-core-ds.3.3.dylib +0 -0
  482. mqt/core/lib/libmqt-core-ds.dylib +0 -0
  483. mqt/core/lib/libmqt-core-fomac.3.3.2.dylib +0 -0
  484. mqt/core/lib/libmqt-core-fomac.3.3.dylib +0 -0
  485. mqt/core/lib/libmqt-core-fomac.dylib +0 -0
  486. mqt/core/lib/libmqt-core-ir.3.3.2.dylib +0 -0
  487. mqt/core/lib/libmqt-core-ir.3.3.dylib +0 -0
  488. mqt/core/lib/libmqt-core-ir.dylib +0 -0
  489. mqt/core/lib/libmqt-core-na-fomac.3.3.2.dylib +0 -0
  490. mqt/core/lib/libmqt-core-na-fomac.3.3.dylib +0 -0
  491. mqt/core/lib/libmqt-core-na-fomac.dylib +0 -0
  492. mqt/core/lib/libmqt-core-na.3.3.2.dylib +0 -0
  493. mqt/core/lib/libmqt-core-na.3.3.dylib +0 -0
  494. mqt/core/lib/libmqt-core-na.dylib +0 -0
  495. mqt/core/lib/libmqt-core-qasm.3.3.2.dylib +0 -0
  496. mqt/core/lib/libmqt-core-qasm.3.3.dylib +0 -0
  497. mqt/core/lib/libmqt-core-qasm.dylib +0 -0
  498. mqt/core/lib/libmqt-core-qdmi-driver.3.3.2.dylib +0 -0
  499. mqt/core/lib/libmqt-core-qdmi-driver.3.3.dylib +0 -0
  500. mqt/core/lib/libmqt-core-qdmi-driver.dylib +0 -0
  501. mqt/core/lib/libmqt-core-qdmi-na-device-gen.a +0 -0
  502. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.2.dylib +0 -0
  503. mqt/core/lib/libmqt-core-qdmi-na-device.3.3.dylib +0 -0
  504. mqt/core/lib/libmqt-core-qdmi-na-device.dylib +0 -0
  505. mqt/core/lib/libmqt-core-zx.3.3.2.dylib +0 -0
  506. mqt/core/lib/libmqt-core-zx.3.3.dylib +0 -0
  507. mqt/core/lib/libmqt-core-zx.dylib +0 -0
  508. mqt/core/lib/libspdlog.a +0 -0
  509. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  510. mqt/core/na/__init__.py +12 -0
  511. mqt/core/na/fomac.cpython-314t-darwin.so +0 -0
  512. mqt/core/na/fomac.pyi +117 -0
  513. mqt/core/plugins/__init__.py +9 -0
  514. mqt/core/plugins/qiskit/__init__.py +19 -0
  515. mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
  516. mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
  517. mqt/core/py.typed +2 -0
  518. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
  519. mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
  520. mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
  521. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
  522. mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
  523. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
  524. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
  525. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
  526. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
  527. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +446 -0
  528. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  529. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  530. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +109 -0
  531. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  532. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  533. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  534. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  535. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  536. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  537. mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
  538. mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  539. mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +118 -0
  540. mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  541. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  542. mqt_core-3.3.2.dist-info/METADATA +210 -0
  543. mqt_core-3.3.2.dist-info/RECORD +546 -0
  544. mqt_core-3.3.2.dist-info/WHEEL +6 -0
  545. mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
  546. mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
@@ -0,0 +1,69 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #include <spdlog/common.h>
7
+ #include <spdlog/details/null_mutex.h>
8
+ #include <spdlog/sinks/base_sink.h>
9
+ #ifdef _WIN32
10
+ #include <spdlog/details/udp_client-windows.h>
11
+ #else
12
+ #include <spdlog/details/udp_client.h>
13
+ #endif
14
+
15
+ #include <chrono>
16
+ #include <functional>
17
+ #include <mutex>
18
+ #include <string>
19
+
20
+ // Simple udp client sink
21
+ // Sends formatted log via udp
22
+
23
+ namespace spdlog {
24
+ namespace sinks {
25
+
26
+ struct udp_sink_config {
27
+ std::string server_host;
28
+ uint16_t server_port;
29
+
30
+ udp_sink_config(std::string host, uint16_t port)
31
+ : server_host{std::move(host)},
32
+ server_port{port} {}
33
+ };
34
+
35
+ template <typename Mutex>
36
+ class udp_sink : public spdlog::sinks::base_sink<Mutex> {
37
+ public:
38
+ // host can be hostname or ip address
39
+ explicit udp_sink(udp_sink_config sink_config)
40
+ : client_{sink_config.server_host, sink_config.server_port} {}
41
+
42
+ ~udp_sink() override = default;
43
+
44
+ protected:
45
+ void sink_it_(const spdlog::details::log_msg &msg) override {
46
+ spdlog::memory_buf_t formatted;
47
+ spdlog::sinks::base_sink<Mutex>::formatter_->format(msg, formatted);
48
+ client_.send(formatted.data(), formatted.size());
49
+ }
50
+
51
+ void flush_() override {}
52
+ details::udp_client client_;
53
+ };
54
+
55
+ using udp_sink_mt = udp_sink<std::mutex>;
56
+ using udp_sink_st = udp_sink<spdlog::details::null_mutex>;
57
+
58
+ } // namespace sinks
59
+
60
+ //
61
+ // factory functions
62
+ //
63
+ template <typename Factory = spdlog::synchronous_factory>
64
+ inline std::shared_ptr<logger> udp_logger_mt(const std::string &logger_name,
65
+ sinks::udp_sink_config skin_config) {
66
+ return Factory::template create<sinks::udp_sink_mt>(logger_name, skin_config);
67
+ }
68
+
69
+ } // namespace spdlog
@@ -0,0 +1,260 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ // Writing to Windows Event Log requires the registry entries below to be present, with the
5
+ // following modifications:
6
+ // 1. <log_name> should be replaced with your log name (e.g. your application name)
7
+ // 2. <source_name> should be replaced with the specific source name and the key should be
8
+ // duplicated for
9
+ // each source used in the application
10
+ //
11
+ // Since typically modifications of this kind require elevation, it's better to do it as a part of
12
+ // setup procedure. The snippet below uses mscoree.dll as the message file as it exists on most of
13
+ // the Windows systems anyway and happens to contain the needed resource.
14
+ //
15
+ // You can also specify a custom message file if needed.
16
+ // Please refer to Event Log functions descriptions in MSDN for more details on custom message
17
+ // files.
18
+
19
+ /*---------------------------------------------------------------------------------------
20
+
21
+ Windows Registry Editor Version 5.00
22
+
23
+ [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\<log_name>]
24
+
25
+ [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\<log_name>\<source_name>]
26
+ "TypesSupported"=dword:00000007
27
+ "EventMessageFile"=hex(2):25,00,73,00,79,00,73,00,74,00,65,00,6d,00,72,00,6f,\
28
+ 00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,\
29
+ 5c,00,6d,00,73,00,63,00,6f,00,72,00,65,00,65,00,2e,00,64,00,6c,00,6c,00,00,\
30
+ 00
31
+
32
+ -----------------------------------------------------------------------------------------*/
33
+
34
+ #pragma once
35
+
36
+ #include <spdlog/details/null_mutex.h>
37
+ #include <spdlog/sinks/base_sink.h>
38
+
39
+ #include <spdlog/details/windows_include.h>
40
+ #include <winbase.h>
41
+
42
+ #include <mutex>
43
+ #include <string>
44
+ #include <vector>
45
+
46
+ namespace spdlog {
47
+ namespace sinks {
48
+
49
+ namespace win_eventlog {
50
+
51
+ namespace internal {
52
+
53
+ struct local_alloc_t {
54
+ HLOCAL hlocal_;
55
+
56
+ SPDLOG_CONSTEXPR local_alloc_t() SPDLOG_NOEXCEPT : hlocal_(nullptr) {}
57
+
58
+ local_alloc_t(local_alloc_t const &) = delete;
59
+ local_alloc_t &operator=(local_alloc_t const &) = delete;
60
+
61
+ ~local_alloc_t() SPDLOG_NOEXCEPT {
62
+ if (hlocal_) {
63
+ LocalFree(hlocal_);
64
+ }
65
+ }
66
+ };
67
+
68
+ /** Windows error */
69
+ struct win32_error : public spdlog_ex {
70
+ /** Formats an error report line: "user-message: error-code (system message)" */
71
+ static std::string format(std::string const &user_message, DWORD error_code = GetLastError()) {
72
+ std::string system_message;
73
+
74
+ local_alloc_t format_message_result{};
75
+ auto format_message_succeeded =
76
+ ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
77
+ FORMAT_MESSAGE_IGNORE_INSERTS,
78
+ nullptr, error_code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
79
+ (LPSTR)&format_message_result.hlocal_, 0, nullptr);
80
+
81
+ if (format_message_succeeded && format_message_result.hlocal_) {
82
+ system_message = fmt_lib::format(" ({})", (LPSTR)format_message_result.hlocal_);
83
+ }
84
+
85
+ return fmt_lib::format("{}: {}{}", user_message, error_code, system_message);
86
+ }
87
+
88
+ explicit win32_error(std::string const &func_name, DWORD error = GetLastError())
89
+ : spdlog_ex(format(func_name, error)) {}
90
+ };
91
+
92
+ /** Wrapper for security identifiers (SID) on Windows */
93
+ struct sid_t {
94
+ std::vector<char> buffer_;
95
+
96
+ public:
97
+ sid_t() {}
98
+
99
+ /** creates a wrapped SID copy */
100
+ static sid_t duplicate_sid(PSID psid) {
101
+ if (!::IsValidSid(psid)) {
102
+ throw_spdlog_ex("sid_t::sid_t(): invalid SID received");
103
+ }
104
+
105
+ auto const sid_length{::GetLengthSid(psid)};
106
+
107
+ sid_t result;
108
+ result.buffer_.resize(sid_length);
109
+ if (!::CopySid(sid_length, (PSID)result.as_sid(), psid)) {
110
+ SPDLOG_THROW(win32_error("CopySid"));
111
+ }
112
+
113
+ return result;
114
+ }
115
+
116
+ /** Retrieves pointer to the internal buffer contents as SID* */
117
+ SID *as_sid() const { return buffer_.empty() ? nullptr : (SID *)buffer_.data(); }
118
+
119
+ /** Get SID for the current user */
120
+ static sid_t get_current_user_sid() {
121
+ /* create and init RAII holder for process token */
122
+ struct process_token_t {
123
+ HANDLE token_handle_ = INVALID_HANDLE_VALUE;
124
+ explicit process_token_t(HANDLE process) {
125
+ if (!::OpenProcessToken(process, TOKEN_QUERY, &token_handle_)) {
126
+ SPDLOG_THROW(win32_error("OpenProcessToken"));
127
+ }
128
+ }
129
+
130
+ ~process_token_t() { ::CloseHandle(token_handle_); }
131
+
132
+ } current_process_token(
133
+ ::GetCurrentProcess()); // GetCurrentProcess returns pseudohandle, no leak here!
134
+
135
+ // Get the required size, this is expected to fail with ERROR_INSUFFICIENT_BUFFER and return
136
+ // the token size
137
+ DWORD tusize = 0;
138
+ if (::GetTokenInformation(current_process_token.token_handle_, TokenUser, NULL, 0,
139
+ &tusize)) {
140
+ SPDLOG_THROW(win32_error("GetTokenInformation should fail"));
141
+ }
142
+
143
+ // get user token
144
+ std::vector<unsigned char> buffer(static_cast<size_t>(tusize));
145
+ if (!::GetTokenInformation(current_process_token.token_handle_, TokenUser,
146
+ (LPVOID)buffer.data(), tusize, &tusize)) {
147
+ SPDLOG_THROW(win32_error("GetTokenInformation"));
148
+ }
149
+
150
+ // create a wrapper of the SID data as stored in the user token
151
+ return sid_t::duplicate_sid(((TOKEN_USER *)buffer.data())->User.Sid);
152
+ }
153
+ };
154
+
155
+ struct eventlog {
156
+ static WORD get_event_type(details::log_msg const &msg) {
157
+ switch (msg.level) {
158
+ case level::trace:
159
+ case level::debug:
160
+ return EVENTLOG_SUCCESS;
161
+
162
+ case level::info:
163
+ return EVENTLOG_INFORMATION_TYPE;
164
+
165
+ case level::warn:
166
+ return EVENTLOG_WARNING_TYPE;
167
+
168
+ case level::err:
169
+ case level::critical:
170
+ case level::off:
171
+ return EVENTLOG_ERROR_TYPE;
172
+
173
+ default:
174
+ return EVENTLOG_INFORMATION_TYPE;
175
+ }
176
+ }
177
+
178
+ static WORD get_event_category(details::log_msg const &msg) { return (WORD)msg.level; }
179
+ };
180
+
181
+ } // namespace internal
182
+
183
+ /*
184
+ * Windows Event Log sink
185
+ */
186
+ template <typename Mutex>
187
+ class win_eventlog_sink : public base_sink<Mutex> {
188
+ private:
189
+ HANDLE hEventLog_{NULL};
190
+ internal::sid_t current_user_sid_;
191
+ std::string source_;
192
+ DWORD event_id_;
193
+
194
+ HANDLE event_log_handle() {
195
+ if (!hEventLog_) {
196
+ hEventLog_ = ::RegisterEventSourceA(nullptr, source_.c_str());
197
+ if (!hEventLog_ || hEventLog_ == (HANDLE)ERROR_ACCESS_DENIED) {
198
+ SPDLOG_THROW(internal::win32_error("RegisterEventSource"));
199
+ }
200
+ }
201
+
202
+ return hEventLog_;
203
+ }
204
+
205
+ protected:
206
+ void sink_it_(const details::log_msg &msg) override {
207
+ using namespace internal;
208
+
209
+ bool succeeded;
210
+ memory_buf_t formatted;
211
+ base_sink<Mutex>::formatter_->format(msg, formatted);
212
+ formatted.push_back('\0');
213
+
214
+ #ifdef SPDLOG_WCHAR_TO_UTF8_SUPPORT
215
+ wmemory_buf_t buf;
216
+ details::os::utf8_to_wstrbuf(string_view_t(formatted.data(), formatted.size()), buf);
217
+
218
+ LPCWSTR lp_wstr = buf.data();
219
+ succeeded = static_cast<bool>(::ReportEventW(
220
+ event_log_handle(), eventlog::get_event_type(msg), eventlog::get_event_category(msg),
221
+ event_id_, current_user_sid_.as_sid(), 1, 0, &lp_wstr, nullptr));
222
+ #else
223
+ LPCSTR lp_str = formatted.data();
224
+ succeeded = static_cast<bool>(::ReportEventA(
225
+ event_log_handle(), eventlog::get_event_type(msg), eventlog::get_event_category(msg),
226
+ event_id_, current_user_sid_.as_sid(), 1, 0, &lp_str, nullptr));
227
+ #endif
228
+
229
+ if (!succeeded) {
230
+ SPDLOG_THROW(win32_error("ReportEvent"));
231
+ }
232
+ }
233
+
234
+ void flush_() override {}
235
+
236
+ public:
237
+ win_eventlog_sink(std::string const &source,
238
+ DWORD event_id = 1000 /* according to mscoree.dll */)
239
+ : source_(source),
240
+ event_id_(event_id) {
241
+ try {
242
+ current_user_sid_ = internal::sid_t::get_current_user_sid();
243
+ } catch (...) {
244
+ // get_current_user_sid() is unlikely to fail and if it does, we can still proceed
245
+ // without current_user_sid but in the event log the record will have no user name
246
+ }
247
+ }
248
+
249
+ ~win_eventlog_sink() {
250
+ if (hEventLog_) DeregisterEventSource(hEventLog_);
251
+ }
252
+ };
253
+
254
+ } // namespace win_eventlog
255
+
256
+ using win_eventlog_sink_mt = win_eventlog::win_eventlog_sink<std::mutex>;
257
+ using win_eventlog_sink_st = win_eventlog::win_eventlog_sink<details::null_mutex>;
258
+
259
+ } // namespace sinks
260
+ } // namespace spdlog
@@ -0,0 +1,172 @@
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/sinks/wincolor_sink.h>
8
+ #endif
9
+
10
+ #include <spdlog/details/windows_include.h>
11
+ #include <wincon.h>
12
+
13
+ #include <spdlog/common.h>
14
+ #include <spdlog/pattern_formatter.h>
15
+
16
+ namespace spdlog {
17
+ namespace sinks {
18
+ template <typename ConsoleMutex>
19
+ SPDLOG_INLINE wincolor_sink<ConsoleMutex>::wincolor_sink(void *out_handle, color_mode mode)
20
+ : out_handle_(out_handle),
21
+ mutex_(ConsoleMutex::mutex()),
22
+ formatter_(details::make_unique<spdlog::pattern_formatter>()) {
23
+ set_color_mode_impl(mode);
24
+ // set level colors
25
+ colors_[level::trace] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; // white
26
+ colors_[level::debug] = FOREGROUND_GREEN | FOREGROUND_BLUE; // cyan
27
+ colors_[level::info] = FOREGROUND_GREEN; // green
28
+ colors_[level::warn] =
29
+ FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY; // intense yellow
30
+ colors_[level::err] = FOREGROUND_RED | FOREGROUND_INTENSITY; // intense red
31
+ colors_[level::critical] = BACKGROUND_RED | FOREGROUND_RED | FOREGROUND_GREEN |
32
+ FOREGROUND_BLUE |
33
+ FOREGROUND_INTENSITY; // intense white on red background
34
+ colors_[level::off] = 0;
35
+ }
36
+
37
+ template <typename ConsoleMutex>
38
+ SPDLOG_INLINE wincolor_sink<ConsoleMutex>::~wincolor_sink() {
39
+ this->flush();
40
+ }
41
+
42
+ // change the color for the given level
43
+ template <typename ConsoleMutex>
44
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color(level::level_enum level,
45
+ std::uint16_t color) {
46
+ std::lock_guard<mutex_t> lock(mutex_);
47
+ colors_[static_cast<size_t>(level)] = color;
48
+ }
49
+
50
+ template <typename ConsoleMutex>
51
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::log(const details::log_msg &msg) {
52
+ if (out_handle_ == nullptr || out_handle_ == INVALID_HANDLE_VALUE) {
53
+ return;
54
+ }
55
+
56
+ std::lock_guard<mutex_t> lock(mutex_);
57
+ msg.color_range_start = 0;
58
+ msg.color_range_end = 0;
59
+ memory_buf_t formatted;
60
+ formatter_->format(msg, formatted);
61
+ if (should_do_colors_ && msg.color_range_end > msg.color_range_start) {
62
+ // before color range
63
+ print_range_(formatted, 0, msg.color_range_start);
64
+ // in color range
65
+ auto orig_attribs =
66
+ static_cast<WORD>(set_foreground_color_(colors_[static_cast<size_t>(msg.level)]));
67
+ print_range_(formatted, msg.color_range_start, msg.color_range_end);
68
+ // reset to orig colors
69
+ ::SetConsoleTextAttribute(static_cast<HANDLE>(out_handle_), orig_attribs);
70
+ print_range_(formatted, msg.color_range_end, formatted.size());
71
+ } else // print without colors if color range is invalid (or color is disabled)
72
+ {
73
+ write_to_file_(formatted);
74
+ }
75
+ }
76
+
77
+ template <typename ConsoleMutex>
78
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::flush() {
79
+ // windows console always flushed?
80
+ }
81
+
82
+ template <typename ConsoleMutex>
83
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_pattern(const std::string &pattern) {
84
+ std::lock_guard<mutex_t> lock(mutex_);
85
+ formatter_ = std::unique_ptr<spdlog::formatter>(new pattern_formatter(pattern));
86
+ }
87
+
88
+ template <typename ConsoleMutex>
89
+ void SPDLOG_INLINE
90
+ wincolor_sink<ConsoleMutex>::set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) {
91
+ std::lock_guard<mutex_t> lock(mutex_);
92
+ formatter_ = std::move(sink_formatter);
93
+ }
94
+
95
+ template <typename ConsoleMutex>
96
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color_mode(color_mode mode) {
97
+ std::lock_guard<mutex_t> lock(mutex_);
98
+ set_color_mode_impl(mode);
99
+ }
100
+
101
+ template <typename ConsoleMutex>
102
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::set_color_mode_impl(color_mode mode) {
103
+ if (mode == color_mode::automatic) {
104
+ // should do colors only if out_handle_ points to actual console.
105
+ DWORD console_mode;
106
+ bool in_console = ::GetConsoleMode(static_cast<HANDLE>(out_handle_), &console_mode) != 0;
107
+ should_do_colors_ = in_console;
108
+ } else {
109
+ should_do_colors_ = mode == color_mode::always ? true : false;
110
+ }
111
+ }
112
+
113
+ // set foreground color and return the orig console attributes (for resetting later)
114
+ template <typename ConsoleMutex>
115
+ std::uint16_t SPDLOG_INLINE
116
+ wincolor_sink<ConsoleMutex>::set_foreground_color_(std::uint16_t attribs) {
117
+ CONSOLE_SCREEN_BUFFER_INFO orig_buffer_info;
118
+ if (!::GetConsoleScreenBufferInfo(static_cast<HANDLE>(out_handle_), &orig_buffer_info)) {
119
+ // just return white if failed getting console info
120
+ return FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE;
121
+ }
122
+
123
+ // change only the foreground bits (lowest 4 bits)
124
+ auto new_attribs = static_cast<WORD>(attribs) | (orig_buffer_info.wAttributes & 0xfff0);
125
+ auto ignored =
126
+ ::SetConsoleTextAttribute(static_cast<HANDLE>(out_handle_), static_cast<WORD>(new_attribs));
127
+ (void)(ignored);
128
+ return static_cast<std::uint16_t>(orig_buffer_info.wAttributes); // return orig attribs
129
+ }
130
+
131
+ // print a range of formatted message to console
132
+ template <typename ConsoleMutex>
133
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::print_range_(const memory_buf_t &formatted,
134
+ size_t start,
135
+ size_t end) {
136
+ if (end > start) {
137
+ #if defined(SPDLOG_UTF8_TO_WCHAR_CONSOLE)
138
+ wmemory_buf_t wformatted;
139
+ details::os::utf8_to_wstrbuf(string_view_t(formatted.data() + start, end - start),
140
+ wformatted);
141
+ auto size = static_cast<DWORD>(wformatted.size());
142
+ auto ignored = ::WriteConsoleW(static_cast<HANDLE>(out_handle_), wformatted.data(), size,
143
+ nullptr, nullptr);
144
+ #else
145
+ auto size = static_cast<DWORD>(end - start);
146
+ auto ignored = ::WriteConsoleA(static_cast<HANDLE>(out_handle_), formatted.data() + start,
147
+ size, nullptr, nullptr);
148
+ #endif
149
+ (void)(ignored);
150
+ }
151
+ }
152
+
153
+ template <typename ConsoleMutex>
154
+ void SPDLOG_INLINE wincolor_sink<ConsoleMutex>::write_to_file_(const memory_buf_t &formatted) {
155
+ auto size = static_cast<DWORD>(formatted.size());
156
+ DWORD bytes_written = 0;
157
+ auto ignored = ::WriteFile(static_cast<HANDLE>(out_handle_), formatted.data(), size,
158
+ &bytes_written, nullptr);
159
+ (void)(ignored);
160
+ }
161
+
162
+ // wincolor_stdout_sink
163
+ template <typename ConsoleMutex>
164
+ SPDLOG_INLINE wincolor_stdout_sink<ConsoleMutex>::wincolor_stdout_sink(color_mode mode)
165
+ : wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_OUTPUT_HANDLE), mode) {}
166
+
167
+ // wincolor_stderr_sink
168
+ template <typename ConsoleMutex>
169
+ SPDLOG_INLINE wincolor_stderr_sink<ConsoleMutex>::wincolor_stderr_sink(color_mode mode)
170
+ : wincolor_sink<ConsoleMutex>(::GetStdHandle(STD_ERROR_HANDLE), mode) {}
171
+ } // namespace sinks
172
+ } // namespace spdlog
@@ -0,0 +1,82 @@
1
+ // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
2
+ // Distributed under the MIT License (http://opensource.org/licenses/MIT)
3
+
4
+ #pragma once
5
+
6
+ #include <spdlog/common.h>
7
+ #include <spdlog/details/console_globals.h>
8
+ #include <spdlog/details/null_mutex.h>
9
+ #include <spdlog/sinks/sink.h>
10
+
11
+ #include <array>
12
+ #include <cstdint>
13
+ #include <memory>
14
+ #include <mutex>
15
+ #include <string>
16
+
17
+ namespace spdlog {
18
+ namespace sinks {
19
+ /*
20
+ * Windows color console sink. Uses WriteConsoleA to write to the console with
21
+ * colors
22
+ */
23
+ template <typename ConsoleMutex>
24
+ class wincolor_sink : public sink {
25
+ public:
26
+ wincolor_sink(void *out_handle, color_mode mode);
27
+ ~wincolor_sink() override;
28
+
29
+ wincolor_sink(const wincolor_sink &other) = delete;
30
+ wincolor_sink &operator=(const wincolor_sink &other) = delete;
31
+
32
+ // change the color for the given level
33
+ void set_color(level::level_enum level, std::uint16_t color);
34
+ void log(const details::log_msg &msg) final override;
35
+ void flush() final override;
36
+ void set_pattern(const std::string &pattern) override final;
37
+ void set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) override final;
38
+ void set_color_mode(color_mode mode);
39
+
40
+ protected:
41
+ using mutex_t = typename ConsoleMutex::mutex_t;
42
+ void *out_handle_;
43
+ mutex_t &mutex_;
44
+ bool should_do_colors_;
45
+ std::unique_ptr<spdlog::formatter> formatter_;
46
+ std::array<std::uint16_t, level::n_levels> colors_;
47
+
48
+ // set foreground color and return the orig console attributes (for resetting later)
49
+ std::uint16_t set_foreground_color_(std::uint16_t attribs);
50
+
51
+ // print a range of formatted message to console
52
+ void print_range_(const memory_buf_t &formatted, size_t start, size_t end);
53
+
54
+ // in case we are redirected to file (not in console mode)
55
+ void write_to_file_(const memory_buf_t &formatted);
56
+
57
+ void set_color_mode_impl(color_mode mode);
58
+ };
59
+
60
+ template <typename ConsoleMutex>
61
+ class wincolor_stdout_sink : public wincolor_sink<ConsoleMutex> {
62
+ public:
63
+ explicit wincolor_stdout_sink(color_mode mode = color_mode::automatic);
64
+ };
65
+
66
+ template <typename ConsoleMutex>
67
+ class wincolor_stderr_sink : public wincolor_sink<ConsoleMutex> {
68
+ public:
69
+ explicit wincolor_stderr_sink(color_mode mode = color_mode::automatic);
70
+ };
71
+
72
+ using wincolor_stdout_sink_mt = wincolor_stdout_sink<details::console_mutex>;
73
+ using wincolor_stdout_sink_st = wincolor_stdout_sink<details::console_nullmutex>;
74
+
75
+ using wincolor_stderr_sink_mt = wincolor_stderr_sink<details::console_mutex>;
76
+ using wincolor_stderr_sink_st = wincolor_stderr_sink<details::console_nullmutex>;
77
+ } // namespace sinks
78
+ } // namespace spdlog
79
+
80
+ #ifdef SPDLOG_HEADER_ONLY
81
+ #include "wincolor_sink-inl.h"
82
+ #endif
@@ -0,0 +1,96 @@
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/spdlog.h>
8
+ #endif
9
+
10
+ #include <spdlog/common.h>
11
+ #include <spdlog/pattern_formatter.h>
12
+
13
+ namespace spdlog {
14
+
15
+ SPDLOG_INLINE void initialize_logger(std::shared_ptr<logger> logger) {
16
+ details::registry::instance().initialize_logger(std::move(logger));
17
+ }
18
+
19
+ SPDLOG_INLINE std::shared_ptr<logger> get(const std::string &name) {
20
+ return details::registry::instance().get(name);
21
+ }
22
+
23
+ SPDLOG_INLINE void set_formatter(std::unique_ptr<spdlog::formatter> formatter) {
24
+ details::registry::instance().set_formatter(std::move(formatter));
25
+ }
26
+
27
+ SPDLOG_INLINE void set_pattern(std::string pattern, pattern_time_type time_type) {
28
+ set_formatter(
29
+ std::unique_ptr<spdlog::formatter>(new pattern_formatter(std::move(pattern), time_type)));
30
+ }
31
+
32
+ SPDLOG_INLINE void enable_backtrace(size_t n_messages) {
33
+ details::registry::instance().enable_backtrace(n_messages);
34
+ }
35
+
36
+ SPDLOG_INLINE void disable_backtrace() { details::registry::instance().disable_backtrace(); }
37
+
38
+ SPDLOG_INLINE void dump_backtrace() { default_logger_raw()->dump_backtrace(); }
39
+
40
+ SPDLOG_INLINE level::level_enum get_level() { return default_logger_raw()->level(); }
41
+
42
+ SPDLOG_INLINE bool should_log(level::level_enum log_level) {
43
+ return default_logger_raw()->should_log(log_level);
44
+ }
45
+
46
+ SPDLOG_INLINE void set_level(level::level_enum log_level) {
47
+ details::registry::instance().set_level(log_level);
48
+ }
49
+
50
+ SPDLOG_INLINE void flush_on(level::level_enum log_level) {
51
+ details::registry::instance().flush_on(log_level);
52
+ }
53
+
54
+ SPDLOG_INLINE void set_error_handler(void (*handler)(const std::string &msg)) {
55
+ details::registry::instance().set_error_handler(handler);
56
+ }
57
+
58
+ SPDLOG_INLINE void register_logger(std::shared_ptr<logger> logger) {
59
+ details::registry::instance().register_logger(std::move(logger));
60
+ }
61
+
62
+ SPDLOG_INLINE void register_or_replace(std::shared_ptr<logger> logger) {
63
+ details::registry::instance().register_or_replace(std::move(logger));
64
+ }
65
+
66
+ SPDLOG_INLINE void apply_all(const std::function<void(std::shared_ptr<logger>)> &fun) {
67
+ details::registry::instance().apply_all(fun);
68
+ }
69
+
70
+ SPDLOG_INLINE void drop(const std::string &name) { details::registry::instance().drop(name); }
71
+
72
+ SPDLOG_INLINE void drop_all() { details::registry::instance().drop_all(); }
73
+
74
+ SPDLOG_INLINE void shutdown() { details::registry::instance().shutdown(); }
75
+
76
+ SPDLOG_INLINE void set_automatic_registration(bool automatic_registration) {
77
+ details::registry::instance().set_automatic_registration(automatic_registration);
78
+ }
79
+
80
+ SPDLOG_INLINE std::shared_ptr<spdlog::logger> default_logger() {
81
+ return details::registry::instance().default_logger();
82
+ }
83
+
84
+ SPDLOG_INLINE spdlog::logger *default_logger_raw() {
85
+ return details::registry::instance().get_default_raw();
86
+ }
87
+
88
+ SPDLOG_INLINE void set_default_logger(std::shared_ptr<spdlog::logger> default_logger) {
89
+ details::registry::instance().set_default_logger(std::move(default_logger));
90
+ }
91
+
92
+ SPDLOG_INLINE void apply_logger_env_levels(std::shared_ptr<logger> logger) {
93
+ details::registry::instance().apply_logger_env_levels(std::move(logger));
94
+ }
95
+
96
+ } // namespace spdlog