mqt-core 3.2.0__cp311-cp311-win_amd64.whl → 3.3.0__cp311-cp311-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.
Potentially problematic release.
This version of mqt-core might be problematic. Click here for more details.
- mqt/core/__init__.py +3 -3
- mqt/core/_commands.py +2 -2
- mqt/core/_version.py +16 -3
- 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.cp311-win_amd64.pyd +0 -0
- mqt/core/dd.pyi +5 -7
- mqt/core/fomac.cp311-win_amd64.pyd +0 -0
- mqt/core/fomac.pyi +125 -0
- mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +13 -0
- mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +1 -1
- mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +1 -1
- mqt/core/include/mqt-core/dd/CachedEdge.hpp +7 -0
- mqt/core/include/mqt-core/dd/Operations.hpp +12 -14
- mqt/core/include/mqt-core/dd/Package.hpp +1 -1
- mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
- mqt/core/include/mqt-core/ir/QuantumComputation.hpp +29 -28
- mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +2 -0
- mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
- mqt/core/include/mqt-core/ir/operations/OpType.hpp +3 -0
- mqt/core/include/mqt-core/ir/operations/OpType.inc +2 -2
- mqt/core/include/mqt-core/ir/operations/Operation.hpp +3 -1
- mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +2 -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/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/fomac/Device.hpp +169 -0
- mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -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 +83 -45
- mqt/core/ir/operations.pyi +40 -27
- mqt/core/ir.cp311-win_amd64.pyd +0 -0
- mqt/core/lib/cmake/spdlog/spdlogConfig.cmake +44 -0
- mqt/core/lib/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
- mqt/core/lib/cmake/spdlog/spdlogConfigTargets.cmake +119 -0
- mqt/core/lib/cmake/spdlog/spdlogConfigVersion.cmake +65 -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.cp311-win_amd64.pyd +0 -0
- mqt/core/na/fomac.pyi +117 -0
- mqt/core/nlohmann_json.natvis +278 -0
- mqt/core/plugins/qiskit/mqt_to_qiskit.py +75 -11
- mqt/core/plugins/qiskit/qiskit_to_mqt.py +108 -5
- mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +3 -0
- mqt/core/share/cmake/mqt-core/Cache.cmake +17 -16
- mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +6 -0
- mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +1 -1
- mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +3 -3
- mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +3 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +51 -0
- mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +124 -3
- 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/pkgconfig/nlohmann_json.pc +7 -0
- mqt_core-3.3.0.dist-info/DELVEWHEEL +2 -0
- {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/METADATA +74 -33
- {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/RECORD +247 -53
- {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/WHEEL +1 -1
- mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +0 -156
- mqt_core-3.2.0.dist-info/DELVEWHEEL +0 -2
- {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/entry_points.txt +0 -0
- {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/licenses/LICENSE.md +0 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
// Formatting library for C++ - optional wchar_t and exotic character support
|
|
2
|
+
//
|
|
3
|
+
// Copyright (c) 2012 - present, Victor Zverovich
|
|
4
|
+
// All rights reserved.
|
|
5
|
+
//
|
|
6
|
+
// For the license information refer to format.h.
|
|
7
|
+
|
|
8
|
+
#ifndef FMT_XCHAR_H_
|
|
9
|
+
#define FMT_XCHAR_H_
|
|
10
|
+
|
|
11
|
+
#include "color.h"
|
|
12
|
+
#include "format.h"
|
|
13
|
+
#include "ostream.h"
|
|
14
|
+
#include "ranges.h"
|
|
15
|
+
|
|
16
|
+
#ifndef FMT_MODULE
|
|
17
|
+
# include <cwchar>
|
|
18
|
+
# if FMT_USE_LOCALE
|
|
19
|
+
# include <locale>
|
|
20
|
+
# endif
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
FMT_BEGIN_NAMESPACE
|
|
24
|
+
namespace detail {
|
|
25
|
+
|
|
26
|
+
template <typename T>
|
|
27
|
+
using is_exotic_char = bool_constant<!std::is_same<T, char>::value>;
|
|
28
|
+
|
|
29
|
+
template <typename S, typename = void> struct format_string_char {};
|
|
30
|
+
|
|
31
|
+
template <typename S>
|
|
32
|
+
struct format_string_char<
|
|
33
|
+
S, void_t<decltype(sizeof(detail::to_string_view(std::declval<S>())))>> {
|
|
34
|
+
using type = char_t<S>;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
template <typename S>
|
|
38
|
+
struct format_string_char<
|
|
39
|
+
S, enable_if_t<std::is_base_of<detail::compile_string, S>::value>> {
|
|
40
|
+
using type = typename S::char_type;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
template <typename S>
|
|
44
|
+
using format_string_char_t = typename format_string_char<S>::type;
|
|
45
|
+
|
|
46
|
+
inline auto write_loc(basic_appender<wchar_t> out, loc_value value,
|
|
47
|
+
const format_specs& specs, locale_ref loc) -> bool {
|
|
48
|
+
#if FMT_USE_LOCALE
|
|
49
|
+
auto& numpunct =
|
|
50
|
+
std::use_facet<std::numpunct<wchar_t>>(loc.get<std::locale>());
|
|
51
|
+
auto separator = std::wstring();
|
|
52
|
+
auto grouping = numpunct.grouping();
|
|
53
|
+
if (!grouping.empty()) separator = std::wstring(1, numpunct.thousands_sep());
|
|
54
|
+
return value.visit(loc_writer<wchar_t>{out, specs, separator, grouping, {}});
|
|
55
|
+
#endif
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
} // namespace detail
|
|
59
|
+
|
|
60
|
+
FMT_BEGIN_EXPORT
|
|
61
|
+
|
|
62
|
+
using wstring_view = basic_string_view<wchar_t>;
|
|
63
|
+
using wformat_parse_context = parse_context<wchar_t>;
|
|
64
|
+
using wformat_context = buffered_context<wchar_t>;
|
|
65
|
+
using wformat_args = basic_format_args<wformat_context>;
|
|
66
|
+
using wmemory_buffer = basic_memory_buffer<wchar_t>;
|
|
67
|
+
|
|
68
|
+
template <typename Char, typename... T> struct basic_fstring {
|
|
69
|
+
private:
|
|
70
|
+
basic_string_view<Char> str_;
|
|
71
|
+
|
|
72
|
+
static constexpr int num_static_named_args =
|
|
73
|
+
detail::count_static_named_args<T...>();
|
|
74
|
+
|
|
75
|
+
using checker = detail::format_string_checker<
|
|
76
|
+
Char, static_cast<int>(sizeof...(T)), num_static_named_args,
|
|
77
|
+
num_static_named_args != detail::count_named_args<T...>()>;
|
|
78
|
+
|
|
79
|
+
using arg_pack = detail::arg_pack<T...>;
|
|
80
|
+
|
|
81
|
+
public:
|
|
82
|
+
using t = basic_fstring;
|
|
83
|
+
|
|
84
|
+
template <typename S,
|
|
85
|
+
FMT_ENABLE_IF(
|
|
86
|
+
std::is_convertible<const S&, basic_string_view<Char>>::value)>
|
|
87
|
+
FMT_CONSTEVAL FMT_ALWAYS_INLINE basic_fstring(const S& s) : str_(s) {
|
|
88
|
+
if (FMT_USE_CONSTEVAL)
|
|
89
|
+
detail::parse_format_string<Char>(s, checker(s, arg_pack()));
|
|
90
|
+
}
|
|
91
|
+
template <typename S,
|
|
92
|
+
FMT_ENABLE_IF(std::is_base_of<detail::compile_string, S>::value&&
|
|
93
|
+
std::is_same<typename S::char_type, Char>::value)>
|
|
94
|
+
FMT_ALWAYS_INLINE basic_fstring(const S&) : str_(S()) {
|
|
95
|
+
FMT_CONSTEXPR auto sv = basic_string_view<Char>(S());
|
|
96
|
+
FMT_CONSTEXPR int ignore =
|
|
97
|
+
(parse_format_string(sv, checker(sv, arg_pack())), 0);
|
|
98
|
+
detail::ignore_unused(ignore);
|
|
99
|
+
}
|
|
100
|
+
basic_fstring(runtime_format_string<Char> fmt) : str_(fmt.str) {}
|
|
101
|
+
|
|
102
|
+
operator basic_string_view<Char>() const { return str_; }
|
|
103
|
+
auto get() const -> basic_string_view<Char> { return str_; }
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
template <typename Char, typename... T>
|
|
107
|
+
using basic_format_string = basic_fstring<Char, T...>;
|
|
108
|
+
|
|
109
|
+
template <typename... T>
|
|
110
|
+
using wformat_string = typename basic_format_string<wchar_t, T...>::t;
|
|
111
|
+
inline auto runtime(wstring_view s) -> runtime_format_string<wchar_t> {
|
|
112
|
+
return {{s}};
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
#ifdef __cpp_char8_t
|
|
116
|
+
template <> struct is_char<char8_t> : bool_constant<detail::is_utf8_enabled> {};
|
|
117
|
+
#endif
|
|
118
|
+
|
|
119
|
+
template <typename... T>
|
|
120
|
+
constexpr auto make_wformat_args(T&... args)
|
|
121
|
+
-> decltype(fmt::make_format_args<wformat_context>(args...)) {
|
|
122
|
+
return fmt::make_format_args<wformat_context>(args...);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
#if !FMT_USE_NONTYPE_TEMPLATE_ARGS
|
|
126
|
+
inline namespace literals {
|
|
127
|
+
inline auto operator""_a(const wchar_t* s, size_t) -> detail::udl_arg<wchar_t> {
|
|
128
|
+
return {s};
|
|
129
|
+
}
|
|
130
|
+
} // namespace literals
|
|
131
|
+
#endif
|
|
132
|
+
|
|
133
|
+
template <typename It, typename Sentinel>
|
|
134
|
+
auto join(It begin, Sentinel end, wstring_view sep)
|
|
135
|
+
-> join_view<It, Sentinel, wchar_t> {
|
|
136
|
+
return {begin, end, sep};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
template <typename Range, FMT_ENABLE_IF(!is_tuple_like<Range>::value)>
|
|
140
|
+
auto join(Range&& range, wstring_view sep)
|
|
141
|
+
-> join_view<decltype(std::begin(range)), decltype(std::end(range)),
|
|
142
|
+
wchar_t> {
|
|
143
|
+
return join(std::begin(range), std::end(range), sep);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
template <typename T>
|
|
147
|
+
auto join(std::initializer_list<T> list, wstring_view sep)
|
|
148
|
+
-> join_view<const T*, const T*, wchar_t> {
|
|
149
|
+
return join(std::begin(list), std::end(list), sep);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
template <typename Tuple, FMT_ENABLE_IF(is_tuple_like<Tuple>::value)>
|
|
153
|
+
auto join(const Tuple& tuple, basic_string_view<wchar_t> sep)
|
|
154
|
+
-> tuple_join_view<wchar_t, Tuple> {
|
|
155
|
+
return {tuple, sep};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
template <typename Char, FMT_ENABLE_IF(!std::is_same<Char, char>::value)>
|
|
159
|
+
auto vformat(basic_string_view<Char> fmt,
|
|
160
|
+
typename detail::vformat_args<Char>::type args)
|
|
161
|
+
-> std::basic_string<Char> {
|
|
162
|
+
auto buf = basic_memory_buffer<Char>();
|
|
163
|
+
detail::vformat_to(buf, fmt, args);
|
|
164
|
+
return {buf.data(), buf.size()};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
template <typename... T>
|
|
168
|
+
auto format(wformat_string<T...> fmt, T&&... args) -> std::wstring {
|
|
169
|
+
return vformat(fmt::wstring_view(fmt), fmt::make_wformat_args(args...));
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
template <typename OutputIt, typename... T>
|
|
173
|
+
auto format_to(OutputIt out, wformat_string<T...> fmt, T&&... args)
|
|
174
|
+
-> OutputIt {
|
|
175
|
+
return vformat_to(out, fmt::wstring_view(fmt),
|
|
176
|
+
fmt::make_wformat_args(args...));
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Pass char_t as a default template parameter instead of using
|
|
180
|
+
// std::basic_string<char_t<S>> to reduce the symbol size.
|
|
181
|
+
template <typename S, typename... T,
|
|
182
|
+
typename Char = detail::format_string_char_t<S>,
|
|
183
|
+
FMT_ENABLE_IF(!std::is_same<Char, char>::value &&
|
|
184
|
+
!std::is_same<Char, wchar_t>::value)>
|
|
185
|
+
auto format(const S& fmt, T&&... args) -> std::basic_string<Char> {
|
|
186
|
+
return vformat(detail::to_string_view(fmt),
|
|
187
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
template <typename Locale, typename S,
|
|
191
|
+
typename Char = detail::format_string_char_t<S>,
|
|
192
|
+
FMT_ENABLE_IF(detail::is_locale<Locale>::value&&
|
|
193
|
+
detail::is_exotic_char<Char>::value)>
|
|
194
|
+
inline auto vformat(const Locale& loc, const S& fmt,
|
|
195
|
+
typename detail::vformat_args<Char>::type args)
|
|
196
|
+
-> std::basic_string<Char> {
|
|
197
|
+
auto buf = basic_memory_buffer<Char>();
|
|
198
|
+
detail::vformat_to(buf, detail::to_string_view(fmt), args,
|
|
199
|
+
detail::locale_ref(loc));
|
|
200
|
+
return {buf.data(), buf.size()};
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
template <typename Locale, typename S, typename... T,
|
|
204
|
+
typename Char = detail::format_string_char_t<S>,
|
|
205
|
+
FMT_ENABLE_IF(detail::is_locale<Locale>::value&&
|
|
206
|
+
detail::is_exotic_char<Char>::value)>
|
|
207
|
+
inline auto format(const Locale& loc, const S& fmt, T&&... args)
|
|
208
|
+
-> std::basic_string<Char> {
|
|
209
|
+
return vformat(loc, detail::to_string_view(fmt),
|
|
210
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
template <typename OutputIt, typename S,
|
|
214
|
+
typename Char = detail::format_string_char_t<S>,
|
|
215
|
+
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value&&
|
|
216
|
+
detail::is_exotic_char<Char>::value)>
|
|
217
|
+
auto vformat_to(OutputIt out, const S& fmt,
|
|
218
|
+
typename detail::vformat_args<Char>::type args) -> OutputIt {
|
|
219
|
+
auto&& buf = detail::get_buffer<Char>(out);
|
|
220
|
+
detail::vformat_to(buf, detail::to_string_view(fmt), args);
|
|
221
|
+
return detail::get_iterator(buf, out);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
template <typename OutputIt, typename S, typename... T,
|
|
225
|
+
typename Char = detail::format_string_char_t<S>,
|
|
226
|
+
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value &&
|
|
227
|
+
!std::is_same<Char, char>::value &&
|
|
228
|
+
!std::is_same<Char, wchar_t>::value)>
|
|
229
|
+
inline auto format_to(OutputIt out, const S& fmt, T&&... args) -> OutputIt {
|
|
230
|
+
return vformat_to(out, detail::to_string_view(fmt),
|
|
231
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
template <typename Locale, typename S, typename OutputIt, typename... Args,
|
|
235
|
+
typename Char = detail::format_string_char_t<S>,
|
|
236
|
+
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value&&
|
|
237
|
+
detail::is_locale<Locale>::value&&
|
|
238
|
+
detail::is_exotic_char<Char>::value)>
|
|
239
|
+
inline auto vformat_to(OutputIt out, const Locale& loc, const S& fmt,
|
|
240
|
+
typename detail::vformat_args<Char>::type args)
|
|
241
|
+
-> OutputIt {
|
|
242
|
+
auto&& buf = detail::get_buffer<Char>(out);
|
|
243
|
+
vformat_to(buf, detail::to_string_view(fmt), args, detail::locale_ref(loc));
|
|
244
|
+
return detail::get_iterator(buf, out);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
template <typename Locale, typename OutputIt, typename S, typename... T,
|
|
248
|
+
typename Char = detail::format_string_char_t<S>,
|
|
249
|
+
bool enable = detail::is_output_iterator<OutputIt, Char>::value &&
|
|
250
|
+
detail::is_locale<Locale>::value &&
|
|
251
|
+
detail::is_exotic_char<Char>::value>
|
|
252
|
+
inline auto format_to(OutputIt out, const Locale& loc, const S& fmt,
|
|
253
|
+
T&&... args) ->
|
|
254
|
+
typename std::enable_if<enable, OutputIt>::type {
|
|
255
|
+
return vformat_to(out, loc, detail::to_string_view(fmt),
|
|
256
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
template <typename OutputIt, typename Char, typename... Args,
|
|
260
|
+
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value&&
|
|
261
|
+
detail::is_exotic_char<Char>::value)>
|
|
262
|
+
inline auto vformat_to_n(OutputIt out, size_t n, basic_string_view<Char> fmt,
|
|
263
|
+
typename detail::vformat_args<Char>::type args)
|
|
264
|
+
-> format_to_n_result<OutputIt> {
|
|
265
|
+
using traits = detail::fixed_buffer_traits;
|
|
266
|
+
auto buf = detail::iterator_buffer<OutputIt, Char, traits>(out, n);
|
|
267
|
+
detail::vformat_to(buf, fmt, args);
|
|
268
|
+
return {buf.out(), buf.count()};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
template <typename OutputIt, typename S, typename... T,
|
|
272
|
+
typename Char = detail::format_string_char_t<S>,
|
|
273
|
+
FMT_ENABLE_IF(detail::is_output_iterator<OutputIt, Char>::value&&
|
|
274
|
+
detail::is_exotic_char<Char>::value)>
|
|
275
|
+
inline auto format_to_n(OutputIt out, size_t n, const S& fmt, T&&... args)
|
|
276
|
+
-> format_to_n_result<OutputIt> {
|
|
277
|
+
return vformat_to_n(out, n, fmt::basic_string_view<Char>(fmt),
|
|
278
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
template <typename S, typename... T,
|
|
282
|
+
typename Char = detail::format_string_char_t<S>,
|
|
283
|
+
FMT_ENABLE_IF(detail::is_exotic_char<Char>::value)>
|
|
284
|
+
inline auto formatted_size(const S& fmt, T&&... args) -> size_t {
|
|
285
|
+
auto buf = detail::counting_buffer<Char>();
|
|
286
|
+
detail::vformat_to(buf, detail::to_string_view(fmt),
|
|
287
|
+
fmt::make_format_args<buffered_context<Char>>(args...));
|
|
288
|
+
return buf.count();
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
inline void vprint(std::FILE* f, wstring_view fmt, wformat_args args) {
|
|
292
|
+
auto buf = wmemory_buffer();
|
|
293
|
+
detail::vformat_to(buf, fmt, args);
|
|
294
|
+
buf.push_back(L'\0');
|
|
295
|
+
if (std::fputws(buf.data(), f) == -1)
|
|
296
|
+
FMT_THROW(system_error(errno, FMT_STRING("cannot write to file")));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
inline void vprint(wstring_view fmt, wformat_args args) {
|
|
300
|
+
vprint(stdout, fmt, args);
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
template <typename... T>
|
|
304
|
+
void print(std::FILE* f, wformat_string<T...> fmt, T&&... args) {
|
|
305
|
+
return vprint(f, wstring_view(fmt), fmt::make_wformat_args(args...));
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
template <typename... T> void print(wformat_string<T...> fmt, T&&... args) {
|
|
309
|
+
return vprint(wstring_view(fmt), fmt::make_wformat_args(args...));
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
template <typename... T>
|
|
313
|
+
void println(std::FILE* f, wformat_string<T...> fmt, T&&... args) {
|
|
314
|
+
return print(f, L"{}\n", fmt::format(fmt, std::forward<T>(args)...));
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
template <typename... T> void println(wformat_string<T...> fmt, T&&... args) {
|
|
318
|
+
return print(L"{}\n", fmt::format(fmt, std::forward<T>(args)...));
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
inline auto vformat(text_style ts, wstring_view fmt, wformat_args args)
|
|
322
|
+
-> std::wstring {
|
|
323
|
+
auto buf = wmemory_buffer();
|
|
324
|
+
detail::vformat_to(buf, ts, fmt, args);
|
|
325
|
+
return {buf.data(), buf.size()};
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
template <typename... T>
|
|
329
|
+
inline auto format(text_style ts, wformat_string<T...> fmt, T&&... args)
|
|
330
|
+
-> std::wstring {
|
|
331
|
+
return fmt::vformat(ts, fmt, fmt::make_wformat_args(args...));
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
template <typename... T>
|
|
335
|
+
FMT_DEPRECATED void print(std::FILE* f, text_style ts, wformat_string<T...> fmt,
|
|
336
|
+
const T&... args) {
|
|
337
|
+
vprint(f, ts, fmt, fmt::make_wformat_args(args...));
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
template <typename... T>
|
|
341
|
+
FMT_DEPRECATED void print(text_style ts, wformat_string<T...> fmt,
|
|
342
|
+
const T&... args) {
|
|
343
|
+
return print(stdout, ts, fmt, args...);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
inline void vprint(std::wostream& os, wstring_view fmt, wformat_args args) {
|
|
347
|
+
auto buffer = basic_memory_buffer<wchar_t>();
|
|
348
|
+
detail::vformat_to(buffer, fmt, args);
|
|
349
|
+
detail::write_buffer(os, buffer);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
template <typename... T>
|
|
353
|
+
void print(std::wostream& os, wformat_string<T...> fmt, T&&... args) {
|
|
354
|
+
vprint(os, fmt, fmt::make_format_args<buffered_context<wchar_t>>(args...));
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
template <typename... T>
|
|
358
|
+
void println(std::wostream& os, wformat_string<T...> fmt, T&&... args) {
|
|
359
|
+
print(os, L"{}\n", fmt::format(fmt, std::forward<T>(args)...));
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/// Converts `value` to `std::wstring` using the default format for type `T`.
|
|
363
|
+
template <typename T> inline auto to_wstring(const T& value) -> std::wstring {
|
|
364
|
+
return format(FMT_STRING(L"{}"), value);
|
|
365
|
+
}
|
|
366
|
+
FMT_END_EXPORT
|
|
367
|
+
FMT_END_NAMESPACE
|
|
368
|
+
|
|
369
|
+
#endif // FMT_XCHAR_H_
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's chrono support
|
|
9
|
+
//
|
|
10
|
+
#include <spdlog/tweakme.h>
|
|
11
|
+
|
|
12
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
13
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
14
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
15
|
+
#ifndef FMT_HEADER_ONLY
|
|
16
|
+
#define FMT_HEADER_ONLY
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#include <spdlog/fmt/bundled/chrono.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <fmt/chrono.h>
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's compile-time support
|
|
9
|
+
//
|
|
10
|
+
#include <spdlog/tweakme.h>
|
|
11
|
+
|
|
12
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
13
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
14
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
15
|
+
#ifndef FMT_HEADER_ONLY
|
|
16
|
+
#define FMT_HEADER_ONLY
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#include <spdlog/fmt/bundled/compile.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <fmt/compile.h>
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016-2018 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// Include a bundled header-only copy of fmtlib or an external one.
|
|
10
|
+
// By default spdlog include its own copy.
|
|
11
|
+
//
|
|
12
|
+
#include <spdlog/tweakme.h>
|
|
13
|
+
|
|
14
|
+
#if defined(SPDLOG_USE_STD_FORMAT) // SPDLOG_USE_STD_FORMAT is defined - use std::format
|
|
15
|
+
#include <format>
|
|
16
|
+
#elif !defined(SPDLOG_FMT_EXTERNAL)
|
|
17
|
+
#if !defined(SPDLOG_COMPILED_LIB) && !defined(FMT_HEADER_ONLY)
|
|
18
|
+
#define FMT_HEADER_ONLY
|
|
19
|
+
#endif
|
|
20
|
+
#ifndef FMT_USE_WINDOWS_H
|
|
21
|
+
#define FMT_USE_WINDOWS_H 0
|
|
22
|
+
#endif
|
|
23
|
+
|
|
24
|
+
#include <spdlog/fmt/bundled/base.h>
|
|
25
|
+
#include <spdlog/fmt/bundled/format.h>
|
|
26
|
+
|
|
27
|
+
#else // SPDLOG_FMT_EXTERNAL is defined - use external fmtlib
|
|
28
|
+
#include <fmt/base.h>
|
|
29
|
+
#include <fmt/format.h>
|
|
30
|
+
#endif
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's ostream support
|
|
9
|
+
//
|
|
10
|
+
#include <spdlog/tweakme.h>
|
|
11
|
+
|
|
12
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
13
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
14
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
15
|
+
#ifndef FMT_HEADER_ONLY
|
|
16
|
+
#define FMT_HEADER_ONLY
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#include <spdlog/fmt/bundled/ostream.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <fmt/ostream.h>
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's ranges support
|
|
9
|
+
//
|
|
10
|
+
#include <spdlog/tweakme.h>
|
|
11
|
+
|
|
12
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
13
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
14
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
15
|
+
#ifndef FMT_HEADER_ONLY
|
|
16
|
+
#define FMT_HEADER_ONLY
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#include <spdlog/fmt/bundled/ranges.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <fmt/ranges.h>
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's std support (for formatting e.g.
|
|
9
|
+
// std::filesystem::path, std::thread::id, std::monostate, std::variant, ...)
|
|
10
|
+
//
|
|
11
|
+
#include <spdlog/tweakme.h>
|
|
12
|
+
|
|
13
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
14
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
15
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
16
|
+
#ifndef FMT_HEADER_ONLY
|
|
17
|
+
#define FMT_HEADER_ONLY
|
|
18
|
+
#endif
|
|
19
|
+
#endif
|
|
20
|
+
#include <spdlog/fmt/bundled/std.h>
|
|
21
|
+
#else
|
|
22
|
+
#include <fmt/std.h>
|
|
23
|
+
#endif
|
|
24
|
+
#endif
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright(c) 2016 Gabi Melman.
|
|
3
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
4
|
+
//
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
//
|
|
8
|
+
// include bundled or external copy of fmtlib's xchar support
|
|
9
|
+
//
|
|
10
|
+
#include <spdlog/tweakme.h>
|
|
11
|
+
|
|
12
|
+
#if !defined(SPDLOG_USE_STD_FORMAT)
|
|
13
|
+
#if !defined(SPDLOG_FMT_EXTERNAL)
|
|
14
|
+
#ifdef SPDLOG_HEADER_ONLY
|
|
15
|
+
#ifndef FMT_HEADER_ONLY
|
|
16
|
+
#define FMT_HEADER_ONLY
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#include <spdlog/fmt/bundled/xchar.h>
|
|
20
|
+
#else
|
|
21
|
+
#include <fmt/xchar.h>
|
|
22
|
+
#endif
|
|
23
|
+
#endif
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
|
|
2
|
+
// Distributed under the MIT License (http://opensource.org/licenses/MIT)
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include <spdlog/details/log_msg.h>
|
|
7
|
+
#include <spdlog/fmt/fmt.h>
|
|
8
|
+
|
|
9
|
+
namespace spdlog {
|
|
10
|
+
|
|
11
|
+
class formatter {
|
|
12
|
+
public:
|
|
13
|
+
virtual ~formatter() = default;
|
|
14
|
+
virtual void format(const details::log_msg &msg, memory_buf_t &dest) = 0;
|
|
15
|
+
virtual std::unique_ptr<formatter> clone() const = 0;
|
|
16
|
+
};
|
|
17
|
+
} // namespace spdlog
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
namespace spdlog {
|
|
7
|
+
class logger;
|
|
8
|
+
class formatter;
|
|
9
|
+
|
|
10
|
+
namespace sinks {
|
|
11
|
+
class sink;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
namespace level {
|
|
15
|
+
enum level_enum : int;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
} // namespace spdlog
|