mqt-core 3.3.2__cp313-cp313t-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mqt/core/__init__.py +89 -0
- mqt/core/__main__.py +55 -0
- mqt/core/_commands.py +52 -0
- mqt/core/_compat/__init__.py +11 -0
- mqt/core/_compat/typing.py +29 -0
- mqt/core/_version.py +34 -0
- mqt/core/_version.pyi +12 -0
- mqt/core/bin/mqt-core-algorithms.dll +0 -0
- mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
- mqt/core/bin/mqt-core-dd.dll +0 -0
- mqt/core/bin/mqt-core-ds.dll +0 -0
- mqt/core/bin/mqt-core-fomac.dll +0 -0
- mqt/core/bin/mqt-core-ir.dll +0 -0
- mqt/core/bin/mqt-core-na-fomac.dll +0 -0
- mqt/core/bin/mqt-core-na.dll +0 -0
- mqt/core/bin/mqt-core-qasm.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
- mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
- mqt/core/bin/mqt-core-zx.dll +0 -0
- mqt/core/dd.cp313t-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +1016 -0
- mqt/core/dd_evaluation.py +368 -0
- mqt/core/fomac.cp313t-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/algorithms/BernsteinVazirani.hpp +39 -0
- mqt/core/include/mqt-core/algorithms/GHZState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/Grover.hpp +33 -0
- mqt/core/include/mqt-core/algorithms/QFT.hpp +21 -0
- mqt/core/include/mqt-core/algorithms/QPE.hpp +30 -0
- mqt/core/include/mqt-core/algorithms/RandomCliffordCircuit.hpp +22 -0
- mqt/core/include/mqt-core/algorithms/StatePreparation.hpp +43 -0
- mqt/core/include/mqt-core/algorithms/WState.hpp +18 -0
- mqt/core/include/mqt-core/algorithms/mqt_core_algorithms_export.h +43 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_prefix.hpp +27 -0
- mqt/core/include/mqt-core/boost/config/abi/borland_suffix.hpp +12 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_prefix.hpp +22 -0
- mqt/core/include/mqt-core/boost/config/abi/msvc_suffix.hpp +8 -0
- mqt/core/include/mqt-core/boost/config/abi_prefix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/abi_suffix.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx03.hpp +211 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx11.hpp +212 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx14.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx17.hpp +65 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx20.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx23.hpp +41 -0
- mqt/core/include/mqt-core/boost/config/assert_cxx98.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/auto_link.hpp +525 -0
- mqt/core/include/mqt-core/boost/config/compiler/borland.hpp +342 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang.hpp +370 -0
- mqt/core/include/mqt-core/boost/config/compiler/clang_version.hpp +89 -0
- mqt/core/include/mqt-core/boost/config/compiler/codegear.hpp +389 -0
- mqt/core/include/mqt-core/boost/config/compiler/comeau.hpp +59 -0
- mqt/core/include/mqt-core/boost/config/compiler/common_edg.hpp +185 -0
- mqt/core/include/mqt-core/boost/config/compiler/compaq_cxx.hpp +19 -0
- mqt/core/include/mqt-core/boost/config/compiler/cray.hpp +446 -0
- mqt/core/include/mqt-core/boost/config/compiler/diab.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/compiler/digitalmars.hpp +146 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc.hpp +386 -0
- mqt/core/include/mqt-core/boost/config/compiler/gcc_xml.hpp +115 -0
- mqt/core/include/mqt-core/boost/config/compiler/greenhills.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/compiler/hp_acc.hpp +153 -0
- mqt/core/include/mqt-core/boost/config/compiler/intel.hpp +577 -0
- mqt/core/include/mqt-core/boost/config/compiler/kai.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/compiler/metrowerks.hpp +201 -0
- mqt/core/include/mqt-core/boost/config/compiler/mpw.hpp +143 -0
- mqt/core/include/mqt-core/boost/config/compiler/nvcc.hpp +64 -0
- mqt/core/include/mqt-core/boost/config/compiler/pathscale.hpp +141 -0
- mqt/core/include/mqt-core/boost/config/compiler/pgi.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/compiler/sgi_mipspro.hpp +29 -0
- mqt/core/include/mqt-core/boost/config/compiler/sunpro_cc.hpp +225 -0
- mqt/core/include/mqt-core/boost/config/compiler/vacpp.hpp +189 -0
- mqt/core/include/mqt-core/boost/config/compiler/visualc.hpp +398 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp.hpp +303 -0
- mqt/core/include/mqt-core/boost/config/compiler/xlcpp_zos.hpp +174 -0
- mqt/core/include/mqt-core/boost/config/detail/cxx_composite.hpp +218 -0
- mqt/core/include/mqt-core/boost/config/detail/posix_features.hpp +95 -0
- mqt/core/include/mqt-core/boost/config/detail/select_compiler_config.hpp +157 -0
- mqt/core/include/mqt-core/boost/config/detail/select_platform_config.hpp +147 -0
- mqt/core/include/mqt-core/boost/config/detail/select_stdlib_config.hpp +121 -0
- mqt/core/include/mqt-core/boost/config/detail/suffix.hpp +1334 -0
- mqt/core/include/mqt-core/boost/config/header_deprecated.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/helper_macros.hpp +37 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/cmath.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/complex.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/functional.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/memory.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/no_tr1/utility.hpp +28 -0
- mqt/core/include/mqt-core/boost/config/platform/aix.hpp +33 -0
- mqt/core/include/mqt-core/boost/config/platform/amigaos.hpp +15 -0
- mqt/core/include/mqt-core/boost/config/platform/beos.hpp +26 -0
- mqt/core/include/mqt-core/boost/config/platform/bsd.hpp +83 -0
- mqt/core/include/mqt-core/boost/config/platform/cloudabi.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cray.hpp +18 -0
- mqt/core/include/mqt-core/boost/config/platform/cygwin.hpp +71 -0
- mqt/core/include/mqt-core/boost/config/platform/haiku.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/hpux.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/irix.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/linux.hpp +106 -0
- mqt/core/include/mqt-core/boost/config/platform/macos.hpp +87 -0
- mqt/core/include/mqt-core/boost/config/platform/qnxnto.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/solaris.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/platform/symbian.hpp +97 -0
- mqt/core/include/mqt-core/boost/config/platform/vms.hpp +25 -0
- mqt/core/include/mqt-core/boost/config/platform/vxworks.hpp +422 -0
- mqt/core/include/mqt-core/boost/config/platform/wasm.hpp +23 -0
- mqt/core/include/mqt-core/boost/config/platform/win32.hpp +90 -0
- mqt/core/include/mqt-core/boost/config/platform/zos.hpp +32 -0
- mqt/core/include/mqt-core/boost/config/pragma_message.hpp +31 -0
- mqt/core/include/mqt-core/boost/config/requires_threads.hpp +92 -0
- mqt/core/include/mqt-core/boost/config/stdlib/dinkumware.hpp +324 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcomo.hpp +93 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libcpp.hpp +180 -0
- mqt/core/include/mqt-core/boost/config/stdlib/libstdcpp3.hpp +482 -0
- mqt/core/include/mqt-core/boost/config/stdlib/modena.hpp +79 -0
- mqt/core/include/mqt-core/boost/config/stdlib/msl.hpp +98 -0
- mqt/core/include/mqt-core/boost/config/stdlib/roguewave.hpp +208 -0
- mqt/core/include/mqt-core/boost/config/stdlib/sgi.hpp +168 -0
- mqt/core/include/mqt-core/boost/config/stdlib/stlport.hpp +258 -0
- mqt/core/include/mqt-core/boost/config/stdlib/vacpp.hpp +74 -0
- mqt/core/include/mqt-core/boost/config/stdlib/xlcpp_zos.hpp +61 -0
- mqt/core/include/mqt-core/boost/config/user.hpp +133 -0
- mqt/core/include/mqt-core/boost/config/warning_disable.hpp +47 -0
- mqt/core/include/mqt-core/boost/config/workaround.hpp +305 -0
- mqt/core/include/mqt-core/boost/config.hpp +67 -0
- mqt/core/include/mqt-core/boost/cstdint.hpp +556 -0
- mqt/core/include/mqt-core/boost/cxx11_char_types.hpp +70 -0
- mqt/core/include/mqt-core/boost/detail/workaround.hpp +10 -0
- mqt/core/include/mqt-core/boost/limits.hpp +146 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex128.hpp +24 -0
- mqt/core/include/mqt-core/boost/multiprecision/complex_adaptor.hpp +1046 -0
- mqt/core/include/mqt-core/boost/multiprecision/concepts/mp_number_archetypes.hpp +257 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/io.hpp +698 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float/transcendental.hpp +157 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_bin_float.hpp +2297 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_complex.hpp +12 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_dec_float.hpp +3690 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add.hpp +368 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/add_unsigned.hpp +387 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/bitwise.hpp +889 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/checked.hpp +178 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/comparison.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/cpp_int_config.hpp +161 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/divide.hpp +703 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/import_export.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/intel_intrinsics.hpp +138 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/limits.hpp +282 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/literals.hpp +295 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/misc.hpp +1457 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/multiply.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/serialize.hpp +211 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int/value_pack.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/cpp_int.hpp +2360 -0
- mqt/core/include/mqt-core/boost/multiprecision/debug_adaptor.hpp +760 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/assert.hpp +29 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/atomic.hpp +62 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/bitscan.hpp +317 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/check_cpp11_config.hpp +64 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/constexpr.hpp +88 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/default_ops.hpp +4052 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/digits.hpp +49 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/dynamic_array.hpp +44 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/empty_value.hpp +87 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/endian.hpp +35 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/et_ops.hpp +1831 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float128_functions.hpp +95 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/float_string_cvt.hpp +333 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/fpclassify.hpp +101 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/constants.hpp +288 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/pow.hpp +905 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trig.hpp +1058 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/functions/trunc.hpp +82 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/generic_interconvert.hpp +687 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/hash.hpp +56 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/integer_ops.hpp +474 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/itos.hpp +39 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/min_max.hpp +106 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_et_ops.hpp +661 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/no_exceptions_support.hpp +55 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_base.hpp +1656 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/number_compare.hpp +848 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/precision.hpp +313 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/rebind.hpp +19 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/standalone_config.hpp +148 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/static_array.hpp +42 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/string_helpers.hpp +48 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/tables.hpp +80 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/ublas_interop.hpp +75 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/uniform_int_distribution.hpp +212 -0
- mqt/core/include/mqt-core/boost/multiprecision/detail/utype_helper.hpp +374 -0
- mqt/core/include/mqt-core/boost/multiprecision/eigen.hpp +248 -0
- mqt/core/include/mqt-core/boost/multiprecision/float128.hpp +920 -0
- mqt/core/include/mqt-core/boost/multiprecision/fwd.hpp +268 -0
- mqt/core/include/mqt-core/boost/multiprecision/gmp.hpp +4060 -0
- mqt/core/include/mqt-core/boost/multiprecision/integer.hpp +363 -0
- mqt/core/include/mqt-core/boost/multiprecision/logged_adaptor.hpp +834 -0
- mqt/core/include/mqt-core/boost/multiprecision/miller_rabin.hpp +221 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpc.hpp +1721 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfi.hpp +2559 -0
- mqt/core/include/mqt-core/boost/multiprecision/mpfr.hpp +3644 -0
- mqt/core/include/mqt-core/boost/multiprecision/number.hpp +2500 -0
- mqt/core/include/mqt-core/boost/multiprecision/random.hpp +23 -0
- mqt/core/include/mqt-core/boost/multiprecision/rational_adaptor.hpp +1289 -0
- mqt/core/include/mqt-core/boost/multiprecision/tommath.hpp +1034 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/explicit_conversion.hpp +67 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/extract_exponent_type.hpp +28 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_backend.hpp +91 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_byte_container.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_complex.hpp +22 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_convertible_arithmetic.hpp +51 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_restricted_conversion.hpp +47 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/is_variable_precision.hpp +25 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/max_digits10.hpp +79 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/std_integer_traits.hpp +90 -0
- mqt/core/include/mqt-core/boost/multiprecision/traits/transcendental_reduction_type.hpp +21 -0
- mqt/core/include/mqt-core/boost/version.hpp +32 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +119 -0
- mqt/core/include/mqt-core/circuit_optimizer/mqt_core_circuit_optimizer_export.h +43 -0
- mqt/core/include/mqt-core/datastructures/DirectedAcyclicGraph.hpp +117 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +158 -0
- mqt/core/include/mqt-core/datastructures/DisjointSet.hpp +50 -0
- mqt/core/include/mqt-core/datastructures/Layer.hpp +172 -0
- mqt/core/include/mqt-core/datastructures/SymmetricMatrix.hpp +57 -0
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +227 -0
- mqt/core/include/mqt-core/datastructures/mqt_core_ds_export.h +43 -0
- mqt/core/include/mqt-core/dd/Approximation.hpp +45 -0
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +174 -0
- mqt/core/include/mqt-core/dd/Complex.hpp +165 -0
- mqt/core/include/mqt-core/dd/ComplexNumbers.hpp +150 -0
- mqt/core/include/mqt-core/dd/ComplexValue.hpp +184 -0
- mqt/core/include/mqt-core/dd/ComputeTable.hpp +183 -0
- mqt/core/include/mqt-core/dd/DDDefinitions.hpp +139 -0
- mqt/core/include/mqt-core/dd/DDpackageConfig.hpp +104 -0
- mqt/core/include/mqt-core/dd/DensityNoiseTable.hpp +114 -0
- mqt/core/include/mqt-core/dd/Edge.hpp +416 -0
- mqt/core/include/mqt-core/dd/Export.hpp +438 -0
- mqt/core/include/mqt-core/dd/FunctionalityConstruction.hpp +75 -0
- mqt/core/include/mqt-core/dd/GateMatrixDefinitions.hpp +43 -0
- mqt/core/include/mqt-core/dd/LinkedListBase.hpp +45 -0
- mqt/core/include/mqt-core/dd/MemoryManager.hpp +193 -0
- mqt/core/include/mqt-core/dd/Node.hpp +223 -0
- mqt/core/include/mqt-core/dd/NoiseFunctionality.hpp +144 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +306 -0
- mqt/core/include/mqt-core/dd/Package.hpp +2036 -0
- mqt/core/include/mqt-core/dd/Package_fwd.hpp +22 -0
- mqt/core/include/mqt-core/dd/RealNumber.hpp +255 -0
- mqt/core/include/mqt-core/dd/RealNumberUniqueTable.hpp +217 -0
- mqt/core/include/mqt-core/dd/Simulation.hpp +98 -0
- mqt/core/include/mqt-core/dd/StateGeneration.hpp +143 -0
- mqt/core/include/mqt-core/dd/StochasticNoiseOperationTable.hpp +88 -0
- mqt/core/include/mqt-core/dd/UnaryComputeTable.hpp +121 -0
- mqt/core/include/mqt-core/dd/UniqueTable.hpp +243 -0
- mqt/core/include/mqt-core/dd/mqt_core_dd_export.h +43 -0
- mqt/core/include/mqt-core/dd/statistics/MemoryManagerStatistics.hpp +84 -0
- mqt/core/include/mqt-core/dd/statistics/PackageStatistics.hpp +55 -0
- mqt/core/include/mqt-core/dd/statistics/Statistics.hpp +48 -0
- mqt/core/include/mqt-core/dd/statistics/TableStatistics.hpp +79 -0
- mqt/core/include/mqt-core/dd/statistics/UniqueTableStatistics.hpp +31 -0
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/Definitions.hpp +108 -0
- mqt/core/include/mqt-core/ir/Permutation.hpp +213 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +596 -0
- mqt/core/include/mqt-core/ir/Register.hpp +125 -0
- mqt/core/include/mqt-core/ir/mqt_core_ir_export.h +43 -0
- mqt/core/include/mqt-core/ir/operations/AodOperation.hpp +92 -0
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +212 -0
- mqt/core/include/mqt-core/ir/operations/Control.hpp +142 -0
- mqt/core/include/mqt-core/ir/operations/Expression.hpp +847 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/NonUnitaryOperation.hpp +118 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +120 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +76 -0
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +247 -0
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +140 -0
- mqt/core/include/mqt-core/ir/operations/SymbolicOperation.hpp +144 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
- mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
- mqt/core/include/mqt-core/na/NAComputation.hpp +185 -0
- mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
- mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
- mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
- mqt/core/include/mqt-core/na/entities/Atom.hpp +62 -0
- mqt/core/include/mqt-core/na/entities/Location.hpp +154 -0
- mqt/core/include/mqt-core/na/entities/Zone.hpp +95 -0
- mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/na/mqt_core_na_export.h +43 -0
- mqt/core/include/mqt-core/na/operations/GlobalCZOp.hpp +38 -0
- mqt/core/include/mqt-core/na/operations/GlobalOp.hpp +58 -0
- mqt/core/include/mqt-core/na/operations/GlobalRYOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LoadOp.hpp +89 -0
- mqt/core/include/mqt-core/na/operations/LocalOp.hpp +56 -0
- mqt/core/include/mqt-core/na/operations/LocalRZOp.hpp +42 -0
- mqt/core/include/mqt-core/na/operations/LocalUOp.hpp +49 -0
- mqt/core/include/mqt-core/na/operations/MoveOp.hpp +66 -0
- mqt/core/include/mqt-core/na/operations/Op.hpp +62 -0
- mqt/core/include/mqt-core/na/operations/ShuttlingOp.hpp +51 -0
- mqt/core/include/mqt-core/na/operations/StoreOp.hpp +87 -0
- mqt/core/include/mqt-core/qasm3/Exception.hpp +85 -0
- mqt/core/include/mqt-core/qasm3/Gate.hpp +65 -0
- mqt/core/include/mqt-core/qasm3/Importer.hpp +192 -0
- mqt/core/include/mqt-core/qasm3/InstVisitor.hpp +145 -0
- mqt/core/include/mqt-core/qasm3/NestedEnvironment.hpp +41 -0
- mqt/core/include/mqt-core/qasm3/Parser.hpp +170 -0
- mqt/core/include/mqt-core/qasm3/Scanner.hpp +73 -0
- mqt/core/include/mqt-core/qasm3/Statement.hpp +486 -0
- mqt/core/include/mqt-core/qasm3/Statement_fwd.hpp +39 -0
- mqt/core/include/mqt-core/qasm3/StdGates.hpp +232 -0
- mqt/core/include/mqt-core/qasm3/Token.hpp +198 -0
- mqt/core/include/mqt-core/qasm3/Types.hpp +238 -0
- mqt/core/include/mqt-core/qasm3/Types_fwd.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/mqt_core_qasm_export.h +43 -0
- mqt/core/include/mqt-core/qasm3/passes/CompilerPass.hpp +22 -0
- mqt/core/include/mqt-core/qasm3/passes/ConstEvalPass.hpp +102 -0
- mqt/core/include/mqt-core/qasm3/passes/TypeCheckPass.hpp +124 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
- mqt/core/include/mqt-core/zx/FunctionalityConstruction.hpp +125 -0
- mqt/core/include/mqt-core/zx/Rational.hpp +318 -0
- mqt/core/include/mqt-core/zx/Rules.hpp +132 -0
- mqt/core/include/mqt-core/zx/Simplify.hpp +182 -0
- mqt/core/include/mqt-core/zx/Utils.hpp +212 -0
- mqt/core/include/mqt-core/zx/ZXDefinitions.hpp +93 -0
- mqt/core/include/mqt-core/zx/ZXDiagram.hpp +480 -0
- mqt/core/include/mqt-core/zx/mqt_core_zx_export.h +43 -0
- mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
- mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
- mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
- mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
- mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
- mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
- mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
- mqt/core/include/nlohmann/detail/hash.hpp +129 -0
- mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
- mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
- mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
- mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
- mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
- mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
- mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
- mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
- mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
- mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
- mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
- mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
- mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
- mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
- mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
- mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
- mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
- mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
- mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
- mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
- mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
- mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
- mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
- mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
- mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
- mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
- mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
- mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
- mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
- mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
- mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
- mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
- mqt/core/include/nlohmann/json.hpp +5306 -0
- mqt/core/include/nlohmann/json_fwd.hpp +75 -0
- mqt/core/include/nlohmann/ordered_map.hpp +359 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
- mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
- mqt/core/include/qdmi/qdmi/client.h +990 -0
- mqt/core/include/qdmi/qdmi/constants.h +1139 -0
- mqt/core/include/qdmi/qdmi/device.h +602 -0
- mqt/core/include/qdmi/qdmi/types.h +78 -0
- mqt/core/include/spdlog/async.h +99 -0
- mqt/core/include/spdlog/async_logger-inl.h +84 -0
- mqt/core/include/spdlog/async_logger.h +74 -0
- mqt/core/include/spdlog/cfg/argv.h +40 -0
- mqt/core/include/spdlog/cfg/env.h +36 -0
- mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
- mqt/core/include/spdlog/cfg/helpers.h +29 -0
- mqt/core/include/spdlog/common-inl.h +68 -0
- mqt/core/include/spdlog/common.h +406 -0
- mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
- mqt/core/include/spdlog/details/backtracer.h +45 -0
- mqt/core/include/spdlog/details/circular_q.h +115 -0
- mqt/core/include/spdlog/details/console_globals.h +28 -0
- mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
- mqt/core/include/spdlog/details/file_helper.h +61 -0
- mqt/core/include/spdlog/details/fmt_helper.h +141 -0
- mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
- mqt/core/include/spdlog/details/log_msg.h +40 -0
- mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
- mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
- mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
- mqt/core/include/spdlog/details/null_mutex.h +35 -0
- mqt/core/include/spdlog/details/os-inl.h +606 -0
- mqt/core/include/spdlog/details/os.h +127 -0
- mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
- mqt/core/include/spdlog/details/periodic_worker.h +58 -0
- mqt/core/include/spdlog/details/registry-inl.h +270 -0
- mqt/core/include/spdlog/details/registry.h +131 -0
- mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
- mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
- mqt/core/include/spdlog/details/tcp_client.h +127 -0
- mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
- mqt/core/include/spdlog/details/thread_pool.h +117 -0
- mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
- mqt/core/include/spdlog/details/udp_client.h +81 -0
- mqt/core/include/spdlog/details/windows_include.h +11 -0
- mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
- mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
- mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
- mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
- mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
- mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
- mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
- mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
- mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
- mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
- mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
- mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
- mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
- mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
- mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
- mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
- mqt/core/include/spdlog/fmt/chrono.h +23 -0
- mqt/core/include/spdlog/fmt/compile.h +23 -0
- mqt/core/include/spdlog/fmt/fmt.h +30 -0
- mqt/core/include/spdlog/fmt/ostr.h +23 -0
- mqt/core/include/spdlog/fmt/ranges.h +23 -0
- mqt/core/include/spdlog/fmt/std.h +24 -0
- mqt/core/include/spdlog/fmt/xchar.h +23 -0
- mqt/core/include/spdlog/formatter.h +17 -0
- mqt/core/include/spdlog/fwd.h +18 -0
- mqt/core/include/spdlog/logger-inl.h +198 -0
- mqt/core/include/spdlog/logger.h +379 -0
- mqt/core/include/spdlog/mdc.h +52 -0
- mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
- mqt/core/include/spdlog/pattern_formatter.h +118 -0
- mqt/core/include/spdlog/sinks/android_sink.h +137 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
- mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
- mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
- mqt/core/include/spdlog/sinks/base_sink.h +51 -0
- mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
- mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
- mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
- mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
- mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
- mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
- mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
- mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
- mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
- mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
- mqt/core/include/spdlog/sinks/null_sink.h +41 -0
- mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
- mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
- mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
- mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
- mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
- mqt/core/include/spdlog/sinks/sink.h +34 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
- mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
- mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
- mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
- mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
- mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
- mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
- mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
- mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
- mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
- mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
- mqt/core/include/spdlog/spdlog-inl.h +96 -0
- mqt/core/include/spdlog/spdlog.h +357 -0
- mqt/core/include/spdlog/stopwatch.h +66 -0
- mqt/core/include/spdlog/tweakme.h +148 -0
- mqt/core/include/spdlog/version.h +11 -0
- mqt/core/ir/__init__.pyi +2078 -0
- mqt/core/ir/operations.pyi +1011 -0
- mqt/core/ir/registers.pyi +91 -0
- mqt/core/ir/symbolic.pyi +177 -0
- mqt/core/ir.cp313t-win_amd64.pyd +0 -0
- mqt/core/lib/mqt-core-algorithms.lib +0 -0
- mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
- mqt/core/lib/mqt-core-dd.lib +0 -0
- mqt/core/lib/mqt-core-ds.lib +0 -0
- mqt/core/lib/mqt-core-fomac.lib +0 -0
- mqt/core/lib/mqt-core-ir.lib +0 -0
- mqt/core/lib/mqt-core-na-fomac.lib +0 -0
- mqt/core/lib/mqt-core-na.lib +0 -0
- mqt/core/lib/mqt-core-qasm.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
- mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
- mqt/core/lib/mqt-core-zx.lib +0 -0
- mqt/core/lib/pkgconfig/spdlog.pc +13 -0
- mqt/core/lib/spdlog.lib +0 -0
- mqt/core/na/__init__.py +12 -0
- mqt/core/na/fomac.cp313t-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/__init__.py +9 -0
- mqt/core/plugins/qiskit/__init__.py +19 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +420 -0
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +562 -0
- mqt/core/py.typed +2 -0
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +55 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +33 -0
- mqt/core/share/cmake/mqt-core/FindGMP.cmake +103 -0
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +46 -0
- mqt/core/share/cmake/mqt-core/PreventInSourceBuilds.cmake +25 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +87 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +85 -0
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +52 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +141 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +445 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
- mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
- mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
- mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
- mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
- mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
- mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
- mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
- mqt/core/share/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/share/cmake/spdlog/spdlogConfigTargets.cmake +121 -0
- mqt/core/share/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
- mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.2.dist-info/DELVEWHEEL +2 -0
- mqt_core-3.3.2.dist-info/METADATA +210 -0
- mqt_core-3.3.2.dist-info/RECORD +537 -0
- mqt_core-3.3.2.dist-info/WHEEL +5 -0
- mqt_core-3.3.2.dist-info/entry_points.txt +4 -0
- mqt_core-3.3.2.dist-info/licenses/LICENSE.md +22 -0
- mqt_core.libs/msvcp140.dll +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
|
|
2
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
//
|
|
7
|
+
// Async logging using global thread pool
|
|
8
|
+
// All loggers created here share same global thread pool.
|
|
9
|
+
// Each log message is pushed to a queue along with a shared pointer to the
|
|
10
|
+
// logger.
|
|
11
|
+
// If a logger deleted while having pending messages in the queue, it's actual
|
|
12
|
+
// destruction will defer
|
|
13
|
+
// until all its messages are processed by the thread pool.
|
|
14
|
+
// This is because each message in the queue holds a shared_ptr to the
|
|
15
|
+
// originating logger.
|
|
16
|
+
|
|
17
|
+
#include <spdlog/async_logger.h>
|
|
18
|
+
#include <spdlog/details/registry.h>
|
|
19
|
+
#include <spdlog/details/thread_pool.h>
|
|
20
|
+
|
|
21
|
+
#include <functional>
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include <mutex>
|
|
24
|
+
|
|
25
|
+
namespace spdlog {
|
|
26
|
+
|
|
27
|
+
namespace details {
|
|
28
|
+
static const size_t default_async_q_size = 8192;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// async logger factory - creates async loggers backed with thread pool.
|
|
32
|
+
// if a global thread pool doesn't already exist, create it with default queue
|
|
33
|
+
// size of 8192 items and single thread.
|
|
34
|
+
template <async_overflow_policy OverflowPolicy = async_overflow_policy::block>
|
|
35
|
+
struct async_factory_impl {
|
|
36
|
+
template <typename Sink, typename... SinkArgs>
|
|
37
|
+
static std::shared_ptr<async_logger> create(std::string logger_name, SinkArgs &&...args) {
|
|
38
|
+
auto ®istry_inst = details::registry::instance();
|
|
39
|
+
|
|
40
|
+
// create global thread pool if not already exists..
|
|
41
|
+
|
|
42
|
+
auto &mutex = registry_inst.tp_mutex();
|
|
43
|
+
std::lock_guard<std::recursive_mutex> tp_lock(mutex);
|
|
44
|
+
auto tp = registry_inst.get_tp();
|
|
45
|
+
if (tp == nullptr) {
|
|
46
|
+
tp = std::make_shared<details::thread_pool>(details::default_async_q_size, 1U);
|
|
47
|
+
registry_inst.set_tp(tp);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
auto sink = std::make_shared<Sink>(std::forward<SinkArgs>(args)...);
|
|
51
|
+
auto new_logger = std::make_shared<async_logger>(std::move(logger_name), std::move(sink),
|
|
52
|
+
std::move(tp), OverflowPolicy);
|
|
53
|
+
registry_inst.initialize_logger(new_logger);
|
|
54
|
+
return new_logger;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
using async_factory = async_factory_impl<async_overflow_policy::block>;
|
|
59
|
+
using async_factory_nonblock = async_factory_impl<async_overflow_policy::overrun_oldest>;
|
|
60
|
+
|
|
61
|
+
template <typename Sink, typename... SinkArgs>
|
|
62
|
+
inline std::shared_ptr<spdlog::logger> create_async(std::string logger_name,
|
|
63
|
+
SinkArgs &&...sink_args) {
|
|
64
|
+
return async_factory::create<Sink>(std::move(logger_name),
|
|
65
|
+
std::forward<SinkArgs>(sink_args)...);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
template <typename Sink, typename... SinkArgs>
|
|
69
|
+
inline std::shared_ptr<spdlog::logger> create_async_nb(std::string logger_name,
|
|
70
|
+
SinkArgs &&...sink_args) {
|
|
71
|
+
return async_factory_nonblock::create<Sink>(std::move(logger_name),
|
|
72
|
+
std::forward<SinkArgs>(sink_args)...);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// set global thread pool.
|
|
76
|
+
inline void init_thread_pool(size_t q_size,
|
|
77
|
+
size_t thread_count,
|
|
78
|
+
std::function<void()> on_thread_start,
|
|
79
|
+
std::function<void()> on_thread_stop) {
|
|
80
|
+
auto tp = std::make_shared<details::thread_pool>(q_size, thread_count, on_thread_start,
|
|
81
|
+
on_thread_stop);
|
|
82
|
+
details::registry::instance().set_tp(std::move(tp));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
inline void init_thread_pool(size_t q_size,
|
|
86
|
+
size_t thread_count,
|
|
87
|
+
std::function<void()> on_thread_start) {
|
|
88
|
+
init_thread_pool(q_size, thread_count, on_thread_start, [] {});
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
inline void init_thread_pool(size_t q_size, size_t thread_count) {
|
|
92
|
+
init_thread_pool(q_size, thread_count, [] {}, [] {});
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// get the global thread pool.
|
|
96
|
+
inline std::shared_ptr<spdlog::details::thread_pool> thread_pool() {
|
|
97
|
+
return details::registry::instance().get_tp();
|
|
98
|
+
}
|
|
99
|
+
} // namespace spdlog
|
|
@@ -0,0 +1,84 @@
|
|
|
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/async_logger.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#include <spdlog/details/thread_pool.h>
|
|
11
|
+
#include <spdlog/sinks/sink.h>
|
|
12
|
+
|
|
13
|
+
#include <memory>
|
|
14
|
+
#include <string>
|
|
15
|
+
|
|
16
|
+
SPDLOG_INLINE spdlog::async_logger::async_logger(std::string logger_name,
|
|
17
|
+
sinks_init_list sinks_list,
|
|
18
|
+
std::weak_ptr<details::thread_pool> tp,
|
|
19
|
+
async_overflow_policy overflow_policy)
|
|
20
|
+
: async_logger(std::move(logger_name),
|
|
21
|
+
sinks_list.begin(),
|
|
22
|
+
sinks_list.end(),
|
|
23
|
+
std::move(tp),
|
|
24
|
+
overflow_policy) {}
|
|
25
|
+
|
|
26
|
+
SPDLOG_INLINE spdlog::async_logger::async_logger(std::string logger_name,
|
|
27
|
+
sink_ptr single_sink,
|
|
28
|
+
std::weak_ptr<details::thread_pool> tp,
|
|
29
|
+
async_overflow_policy overflow_policy)
|
|
30
|
+
: async_logger(
|
|
31
|
+
std::move(logger_name), {std::move(single_sink)}, std::move(tp), overflow_policy) {}
|
|
32
|
+
|
|
33
|
+
// send the log message to the thread pool
|
|
34
|
+
SPDLOG_INLINE void spdlog::async_logger::sink_it_(const details::log_msg &msg){
|
|
35
|
+
SPDLOG_TRY{if (auto pool_ptr = thread_pool_.lock()){
|
|
36
|
+
pool_ptr -> post_log(shared_from_this(), msg, overflow_policy_);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
throw_spdlog_ex("async log: thread pool doesn't exist anymore");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
SPDLOG_LOGGER_CATCH(msg.source)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// send flush request to the thread pool
|
|
46
|
+
SPDLOG_INLINE void spdlog::async_logger::flush_(){
|
|
47
|
+
SPDLOG_TRY{if (auto pool_ptr = thread_pool_.lock()){
|
|
48
|
+
pool_ptr -> post_flush(shared_from_this(), overflow_policy_);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
throw_spdlog_ex("async flush: thread pool doesn't exist anymore");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
SPDLOG_LOGGER_CATCH(source_loc())
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//
|
|
58
|
+
// backend functions - called from the thread pool to do the actual job
|
|
59
|
+
//
|
|
60
|
+
SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg &msg) {
|
|
61
|
+
for (auto &sink : sinks_) {
|
|
62
|
+
if (sink->should_log(msg.level)) {
|
|
63
|
+
SPDLOG_TRY { sink->log(msg); }
|
|
64
|
+
SPDLOG_LOGGER_CATCH(msg.source)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (should_flush_(msg)) {
|
|
69
|
+
backend_flush_();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
SPDLOG_INLINE void spdlog::async_logger::backend_flush_() {
|
|
74
|
+
for (auto &sink : sinks_) {
|
|
75
|
+
SPDLOG_TRY { sink->flush(); }
|
|
76
|
+
SPDLOG_LOGGER_CATCH(source_loc())
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
SPDLOG_INLINE std::shared_ptr<spdlog::logger> spdlog::async_logger::clone(std::string new_name) {
|
|
81
|
+
auto cloned = std::make_shared<spdlog::async_logger>(*this);
|
|
82
|
+
cloned->name_ = std::move(new_name);
|
|
83
|
+
return cloned;
|
|
84
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
// Fast asynchronous logger.
|
|
7
|
+
// Uses pre allocated queue.
|
|
8
|
+
// Creates a single back thread to pop messages from the queue and log them.
|
|
9
|
+
//
|
|
10
|
+
// Upon each log write the logger:
|
|
11
|
+
// 1. Checks if its log level is enough to log the message
|
|
12
|
+
// 2. Push a new copy of the message to a queue (or block the caller until
|
|
13
|
+
// space is available in the queue)
|
|
14
|
+
// Upon destruction, logs all remaining messages in the queue before
|
|
15
|
+
// destructing..
|
|
16
|
+
|
|
17
|
+
#include <spdlog/logger.h>
|
|
18
|
+
|
|
19
|
+
namespace spdlog {
|
|
20
|
+
|
|
21
|
+
// Async overflow policy - block by default.
|
|
22
|
+
enum class async_overflow_policy {
|
|
23
|
+
block, // Block until message can be enqueued
|
|
24
|
+
overrun_oldest, // Discard oldest message in the queue if full when trying to
|
|
25
|
+
// add new item.
|
|
26
|
+
discard_new // Discard new message if the queue is full when trying to add new item.
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
namespace details {
|
|
30
|
+
class thread_pool;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
class SPDLOG_API async_logger final : public std::enable_shared_from_this<async_logger>,
|
|
34
|
+
public logger {
|
|
35
|
+
friend class details::thread_pool;
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
template <typename It>
|
|
39
|
+
async_logger(std::string logger_name,
|
|
40
|
+
It begin,
|
|
41
|
+
It end,
|
|
42
|
+
std::weak_ptr<details::thread_pool> tp,
|
|
43
|
+
async_overflow_policy overflow_policy = async_overflow_policy::block)
|
|
44
|
+
: logger(std::move(logger_name), begin, end),
|
|
45
|
+
thread_pool_(std::move(tp)),
|
|
46
|
+
overflow_policy_(overflow_policy) {}
|
|
47
|
+
|
|
48
|
+
async_logger(std::string logger_name,
|
|
49
|
+
sinks_init_list sinks_list,
|
|
50
|
+
std::weak_ptr<details::thread_pool> tp,
|
|
51
|
+
async_overflow_policy overflow_policy = async_overflow_policy::block);
|
|
52
|
+
|
|
53
|
+
async_logger(std::string logger_name,
|
|
54
|
+
sink_ptr single_sink,
|
|
55
|
+
std::weak_ptr<details::thread_pool> tp,
|
|
56
|
+
async_overflow_policy overflow_policy = async_overflow_policy::block);
|
|
57
|
+
|
|
58
|
+
std::shared_ptr<logger> clone(std::string new_name) override;
|
|
59
|
+
|
|
60
|
+
protected:
|
|
61
|
+
void sink_it_(const details::log_msg &msg) override;
|
|
62
|
+
void flush_() override;
|
|
63
|
+
void backend_sink_it_(const details::log_msg &incoming_log_msg);
|
|
64
|
+
void backend_flush_();
|
|
65
|
+
|
|
66
|
+
private:
|
|
67
|
+
std::weak_ptr<details::thread_pool> thread_pool_;
|
|
68
|
+
async_overflow_policy overflow_policy_;
|
|
69
|
+
};
|
|
70
|
+
} // namespace spdlog
|
|
71
|
+
|
|
72
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
73
|
+
#include "async_logger-inl.h"
|
|
74
|
+
#endif
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
#include <spdlog/cfg/helpers.h>
|
|
6
|
+
#include <spdlog/details/registry.h>
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Init log levels using each argv entry that starts with "SPDLOG_LEVEL="
|
|
10
|
+
//
|
|
11
|
+
// set all loggers to debug level:
|
|
12
|
+
// example.exe "SPDLOG_LEVEL=debug"
|
|
13
|
+
|
|
14
|
+
// set logger1 to trace level
|
|
15
|
+
// example.exe "SPDLOG_LEVEL=logger1=trace"
|
|
16
|
+
|
|
17
|
+
// turn off all logging except for logger1 and logger2:
|
|
18
|
+
// example.exe "SPDLOG_LEVEL=off,logger1=debug,logger2=info"
|
|
19
|
+
|
|
20
|
+
namespace spdlog {
|
|
21
|
+
namespace cfg {
|
|
22
|
+
|
|
23
|
+
// search for SPDLOG_LEVEL= in the args and use it to init the levels
|
|
24
|
+
inline void load_argv_levels(int argc, const char **argv) {
|
|
25
|
+
const std::string spdlog_level_prefix = "SPDLOG_LEVEL=";
|
|
26
|
+
for (int i = 1; i < argc; i++) {
|
|
27
|
+
std::string arg = argv[i];
|
|
28
|
+
if (arg.find(spdlog_level_prefix) == 0) {
|
|
29
|
+
auto levels_string = arg.substr(spdlog_level_prefix.size());
|
|
30
|
+
helpers::load_levels(levels_string);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
inline void load_argv_levels(int argc, char **argv) {
|
|
36
|
+
load_argv_levels(argc, const_cast<const char **>(argv));
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
} // namespace cfg
|
|
40
|
+
} // namespace spdlog
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
#include <spdlog/cfg/helpers.h>
|
|
6
|
+
#include <spdlog/details/os.h>
|
|
7
|
+
#include <spdlog/details/registry.h>
|
|
8
|
+
|
|
9
|
+
//
|
|
10
|
+
// Init levels and patterns from env variables SPDLOG_LEVEL
|
|
11
|
+
// Inspired from Rust's "env_logger" crate (https://crates.io/crates/env_logger).
|
|
12
|
+
// Note - fallback to "info" level on unrecognized levels
|
|
13
|
+
//
|
|
14
|
+
// Examples:
|
|
15
|
+
//
|
|
16
|
+
// set global level to debug:
|
|
17
|
+
// export SPDLOG_LEVEL=debug
|
|
18
|
+
//
|
|
19
|
+
// turn off all logging except for logger1:
|
|
20
|
+
// export SPDLOG_LEVEL="*=off,logger1=debug"
|
|
21
|
+
//
|
|
22
|
+
|
|
23
|
+
// turn off all logging except for logger1 and logger2:
|
|
24
|
+
// export SPDLOG_LEVEL="off,logger1=debug,logger2=info"
|
|
25
|
+
|
|
26
|
+
namespace spdlog {
|
|
27
|
+
namespace cfg {
|
|
28
|
+
inline void load_env_levels(const char* var = "SPDLOG_LEVEL") {
|
|
29
|
+
auto env_val = details::os::getenv(var);
|
|
30
|
+
if (!env_val.empty()) {
|
|
31
|
+
helpers::load_levels(env_val);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
} // namespace cfg
|
|
36
|
+
} // namespace spdlog
|
|
@@ -0,0 +1,107 @@
|
|
|
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/cfg/helpers.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#include <spdlog/details/os.h>
|
|
11
|
+
#include <spdlog/details/registry.h>
|
|
12
|
+
#include <spdlog/spdlog.h>
|
|
13
|
+
|
|
14
|
+
#include <algorithm>
|
|
15
|
+
#include <sstream>
|
|
16
|
+
#include <string>
|
|
17
|
+
#include <utility>
|
|
18
|
+
|
|
19
|
+
namespace spdlog {
|
|
20
|
+
namespace cfg {
|
|
21
|
+
namespace helpers {
|
|
22
|
+
|
|
23
|
+
// inplace convert to lowercase
|
|
24
|
+
inline std::string &to_lower_(std::string &str) {
|
|
25
|
+
std::transform(str.begin(), str.end(), str.begin(), [](char ch) {
|
|
26
|
+
return static_cast<char>((ch >= 'A' && ch <= 'Z') ? ch + ('a' - 'A') : ch);
|
|
27
|
+
});
|
|
28
|
+
return str;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// inplace trim spaces
|
|
32
|
+
inline std::string &trim_(std::string &str) {
|
|
33
|
+
const char *spaces = " \n\r\t";
|
|
34
|
+
str.erase(str.find_last_not_of(spaces) + 1);
|
|
35
|
+
str.erase(0, str.find_first_not_of(spaces));
|
|
36
|
+
return str;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// return (name,value) trimmed pair from given "name=value" string.
|
|
40
|
+
// return empty string on missing parts
|
|
41
|
+
// "key=val" => ("key", "val")
|
|
42
|
+
// " key = val " => ("key", "val")
|
|
43
|
+
// "key=" => ("key", "")
|
|
44
|
+
// "val" => ("", "val")
|
|
45
|
+
|
|
46
|
+
inline std::pair<std::string, std::string> extract_kv_(char sep, const std::string &str) {
|
|
47
|
+
auto n = str.find(sep);
|
|
48
|
+
std::string k, v;
|
|
49
|
+
if (n == std::string::npos) {
|
|
50
|
+
v = str;
|
|
51
|
+
} else {
|
|
52
|
+
k = str.substr(0, n);
|
|
53
|
+
v = str.substr(n + 1);
|
|
54
|
+
}
|
|
55
|
+
return std::make_pair(trim_(k), trim_(v));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// return vector of key/value pairs from sequence of "K1=V1,K2=V2,.."
|
|
59
|
+
// "a=AAA,b=BBB,c=CCC,.." => {("a","AAA"),("b","BBB"),("c", "CCC"),...}
|
|
60
|
+
inline std::unordered_map<std::string, std::string> extract_key_vals_(const std::string &str) {
|
|
61
|
+
std::string token;
|
|
62
|
+
std::istringstream token_stream(str);
|
|
63
|
+
std::unordered_map<std::string, std::string> rv{};
|
|
64
|
+
while (std::getline(token_stream, token, ',')) {
|
|
65
|
+
if (token.empty()) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
auto kv = extract_kv_('=', token);
|
|
69
|
+
rv[kv.first] = kv.second;
|
|
70
|
+
}
|
|
71
|
+
return rv;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
SPDLOG_INLINE void load_levels(const std::string &input) {
|
|
75
|
+
if (input.empty() || input.size() > 512) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
auto key_vals = extract_key_vals_(input);
|
|
80
|
+
std::unordered_map<std::string, level::level_enum> levels;
|
|
81
|
+
level::level_enum global_level = level::info;
|
|
82
|
+
bool global_level_found = false;
|
|
83
|
+
|
|
84
|
+
for (auto &name_level : key_vals) {
|
|
85
|
+
auto &logger_name = name_level.first;
|
|
86
|
+
auto level_name = to_lower_(name_level.second);
|
|
87
|
+
auto level = level::from_str(level_name);
|
|
88
|
+
// ignore unrecognized level names
|
|
89
|
+
if (level == level::off && level_name != "off") {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
if (logger_name.empty()) // no logger name indicate global level
|
|
93
|
+
{
|
|
94
|
+
global_level_found = true;
|
|
95
|
+
global_level = level;
|
|
96
|
+
} else {
|
|
97
|
+
levels[logger_name] = level;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
details::registry::instance().set_levels(std::move(levels),
|
|
102
|
+
global_level_found ? &global_level : nullptr);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
} // namespace helpers
|
|
106
|
+
} // namespace cfg
|
|
107
|
+
} // namespace spdlog
|
|
@@ -0,0 +1,29 @@
|
|
|
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 <unordered_map>
|
|
8
|
+
|
|
9
|
+
namespace spdlog {
|
|
10
|
+
namespace cfg {
|
|
11
|
+
namespace helpers {
|
|
12
|
+
//
|
|
13
|
+
// Init levels from given string
|
|
14
|
+
//
|
|
15
|
+
// Examples:
|
|
16
|
+
//
|
|
17
|
+
// set global level to debug: "debug"
|
|
18
|
+
// turn off all logging except for logger1: "off,logger1=debug"
|
|
19
|
+
// turn off all logging except for logger1 and logger2: "off,logger1=debug,logger2=info"
|
|
20
|
+
//
|
|
21
|
+
SPDLOG_API void load_levels(const std::string &txt);
|
|
22
|
+
} // namespace helpers
|
|
23
|
+
|
|
24
|
+
} // namespace cfg
|
|
25
|
+
} // namespace spdlog
|
|
26
|
+
|
|
27
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
28
|
+
#include "helpers-inl.h"
|
|
29
|
+
#endif // SPDLOG_HEADER_ONLY
|
|
@@ -0,0 +1,68 @@
|
|
|
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/common.h>
|
|
8
|
+
#endif
|
|
9
|
+
|
|
10
|
+
#include <algorithm>
|
|
11
|
+
#include <iterator>
|
|
12
|
+
|
|
13
|
+
namespace spdlog {
|
|
14
|
+
namespace level {
|
|
15
|
+
|
|
16
|
+
#if __cplusplus >= 201703L
|
|
17
|
+
constexpr
|
|
18
|
+
#endif
|
|
19
|
+
static string_view_t level_string_views[] SPDLOG_LEVEL_NAMES;
|
|
20
|
+
|
|
21
|
+
static const char *short_level_names[] SPDLOG_SHORT_LEVEL_NAMES;
|
|
22
|
+
|
|
23
|
+
SPDLOG_INLINE const string_view_t &to_string_view(spdlog::level::level_enum l) SPDLOG_NOEXCEPT {
|
|
24
|
+
return level_string_views[l];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
SPDLOG_INLINE const char *to_short_c_str(spdlog::level::level_enum l) SPDLOG_NOEXCEPT {
|
|
28
|
+
return short_level_names[l];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
SPDLOG_INLINE spdlog::level::level_enum from_str(const std::string &name) SPDLOG_NOEXCEPT {
|
|
32
|
+
auto it = std::find(std::begin(level_string_views), std::end(level_string_views), name);
|
|
33
|
+
if (it != std::end(level_string_views))
|
|
34
|
+
return static_cast<level::level_enum>(std::distance(std::begin(level_string_views), it));
|
|
35
|
+
|
|
36
|
+
// check also for "warn" and "err" before giving up..
|
|
37
|
+
if (name == "warn") {
|
|
38
|
+
return level::warn;
|
|
39
|
+
}
|
|
40
|
+
if (name == "err") {
|
|
41
|
+
return level::err;
|
|
42
|
+
}
|
|
43
|
+
return level::off;
|
|
44
|
+
}
|
|
45
|
+
} // namespace level
|
|
46
|
+
|
|
47
|
+
SPDLOG_INLINE spdlog_ex::spdlog_ex(std::string msg)
|
|
48
|
+
: msg_(std::move(msg)) {}
|
|
49
|
+
|
|
50
|
+
SPDLOG_INLINE spdlog_ex::spdlog_ex(const std::string &msg, int last_errno) {
|
|
51
|
+
#ifdef SPDLOG_USE_STD_FORMAT
|
|
52
|
+
msg_ = std::system_error(std::error_code(last_errno, std::generic_category()), msg).what();
|
|
53
|
+
#else
|
|
54
|
+
memory_buf_t outbuf;
|
|
55
|
+
fmt::format_system_error(outbuf, last_errno, msg.c_str());
|
|
56
|
+
msg_ = fmt::to_string(outbuf);
|
|
57
|
+
#endif
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
SPDLOG_INLINE const char *spdlog_ex::what() const SPDLOG_NOEXCEPT { return msg_.c_str(); }
|
|
61
|
+
|
|
62
|
+
SPDLOG_INLINE void throw_spdlog_ex(const std::string &msg, int last_errno) {
|
|
63
|
+
SPDLOG_THROW(spdlog_ex(msg, last_errno));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
SPDLOG_INLINE void throw_spdlog_ex(std::string msg) { SPDLOG_THROW(spdlog_ex(std::move(msg))); }
|
|
67
|
+
|
|
68
|
+
} // namespace spdlog
|