mqt-core 3.2.0__cp312-cp312-win_amd64.whl → 3.3.0__cp312-cp312-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mqt-core might be problematic. Click here for more details.

Files changed (249) hide show
  1. mqt/core/__init__.py +3 -3
  2. mqt/core/_commands.py +2 -2
  3. mqt/core/_version.py +16 -3
  4. mqt/core/bin/mqt-core-algorithms.dll +0 -0
  5. mqt/core/bin/mqt-core-circuit-optimizer.dll +0 -0
  6. mqt/core/bin/mqt-core-dd.dll +0 -0
  7. mqt/core/bin/mqt-core-ds.dll +0 -0
  8. mqt/core/bin/mqt-core-fomac.dll +0 -0
  9. mqt/core/bin/mqt-core-ir.dll +0 -0
  10. mqt/core/bin/mqt-core-na-fomac.dll +0 -0
  11. mqt/core/bin/mqt-core-na.dll +0 -0
  12. mqt/core/bin/mqt-core-qasm.dll +0 -0
  13. mqt/core/bin/mqt-core-qdmi-driver.dll +0 -0
  14. mqt/core/bin/mqt-core-qdmi-na-device.dll +0 -0
  15. mqt/core/bin/mqt-core-zx.dll +0 -0
  16. mqt/core/dd.cp312-win_amd64.pyd +0 -0
  17. mqt/core/dd.pyi +5 -7
  18. mqt/core/fomac.cp312-win_amd64.pyd +0 -0
  19. mqt/core/fomac.pyi +125 -0
  20. mqt/core/include/mqt-core/circuit_optimizer/CircuitOptimizer.hpp +13 -0
  21. mqt/core/include/mqt-core/datastructures/DirectedGraph.hpp +1 -1
  22. mqt/core/include/mqt-core/datastructures/UndirectedGraph.hpp +1 -1
  23. mqt/core/include/mqt-core/dd/CachedEdge.hpp +7 -0
  24. mqt/core/include/mqt-core/dd/Operations.hpp +12 -14
  25. mqt/core/include/mqt-core/dd/Package.hpp +1 -1
  26. mqt/core/include/mqt-core/fomac/FoMaC.hpp +568 -0
  27. mqt/core/include/mqt-core/ir/QuantumComputation.hpp +29 -28
  28. mqt/core/include/mqt-core/ir/operations/CompoundOperation.hpp +2 -0
  29. mqt/core/include/mqt-core/ir/operations/IfElseOperation.hpp +169 -0
  30. mqt/core/include/mqt-core/ir/operations/OpType.hpp +3 -0
  31. mqt/core/include/mqt-core/ir/operations/OpType.inc +2 -2
  32. mqt/core/include/mqt-core/ir/operations/Operation.hpp +3 -1
  33. mqt/core/include/mqt-core/ir/operations/StandardOperation.hpp +2 -0
  34. mqt/core/include/mqt-core/mqt_na_qdmi/device.h +602 -0
  35. mqt/core/include/mqt-core/mqt_na_qdmi/types.h +78 -0
  36. mqt/core/include/mqt-core/na/device/Device.hpp +410 -0
  37. mqt/core/include/mqt-core/na/device/DeviceMemberInitializers.hpp +724 -0
  38. mqt/core/include/mqt-core/na/device/Generator.hpp +447 -0
  39. mqt/core/include/mqt-core/na/fomac/Device.hpp +169 -0
  40. mqt/core/include/mqt-core/qdmi/Driver.hpp +431 -0
  41. mqt/core/include/nlohmann/adl_serializer.hpp +55 -0
  42. mqt/core/include/nlohmann/byte_container_with_subtype.hpp +103 -0
  43. mqt/core/include/nlohmann/detail/abi_macros.hpp +111 -0
  44. mqt/core/include/nlohmann/detail/conversions/from_json.hpp +577 -0
  45. mqt/core/include/nlohmann/detail/conversions/to_chars.hpp +1118 -0
  46. mqt/core/include/nlohmann/detail/conversions/to_json.hpp +479 -0
  47. mqt/core/include/nlohmann/detail/exceptions.hpp +291 -0
  48. mqt/core/include/nlohmann/detail/hash.hpp +129 -0
  49. mqt/core/include/nlohmann/detail/input/binary_reader.hpp +3068 -0
  50. mqt/core/include/nlohmann/detail/input/input_adapters.hpp +549 -0
  51. mqt/core/include/nlohmann/detail/input/json_sax.hpp +986 -0
  52. mqt/core/include/nlohmann/detail/input/lexer.hpp +1643 -0
  53. mqt/core/include/nlohmann/detail/input/parser.hpp +519 -0
  54. mqt/core/include/nlohmann/detail/input/position_t.hpp +37 -0
  55. mqt/core/include/nlohmann/detail/iterators/internal_iterator.hpp +35 -0
  56. mqt/core/include/nlohmann/detail/iterators/iter_impl.hpp +760 -0
  57. mqt/core/include/nlohmann/detail/iterators/iteration_proxy.hpp +235 -0
  58. mqt/core/include/nlohmann/detail/iterators/iterator_traits.hpp +61 -0
  59. mqt/core/include/nlohmann/detail/iterators/json_reverse_iterator.hpp +130 -0
  60. mqt/core/include/nlohmann/detail/iterators/primitive_iterator.hpp +132 -0
  61. mqt/core/include/nlohmann/detail/json_custom_base_class.hpp +39 -0
  62. mqt/core/include/nlohmann/detail/json_pointer.hpp +988 -0
  63. mqt/core/include/nlohmann/detail/json_ref.hpp +78 -0
  64. mqt/core/include/nlohmann/detail/macro_scope.hpp +595 -0
  65. mqt/core/include/nlohmann/detail/macro_unscope.hpp +46 -0
  66. mqt/core/include/nlohmann/detail/meta/call_std/begin.hpp +17 -0
  67. mqt/core/include/nlohmann/detail/meta/call_std/end.hpp +17 -0
  68. mqt/core/include/nlohmann/detail/meta/cpp_future.hpp +171 -0
  69. mqt/core/include/nlohmann/detail/meta/detected.hpp +70 -0
  70. mqt/core/include/nlohmann/detail/meta/identity_tag.hpp +21 -0
  71. mqt/core/include/nlohmann/detail/meta/is_sax.hpp +159 -0
  72. mqt/core/include/nlohmann/detail/meta/std_fs.hpp +29 -0
  73. mqt/core/include/nlohmann/detail/meta/type_traits.hpp +795 -0
  74. mqt/core/include/nlohmann/detail/meta/void_t.hpp +24 -0
  75. mqt/core/include/nlohmann/detail/output/binary_writer.hpp +1850 -0
  76. mqt/core/include/nlohmann/detail/output/output_adapters.hpp +147 -0
  77. mqt/core/include/nlohmann/detail/output/serializer.hpp +988 -0
  78. mqt/core/include/nlohmann/detail/string_concat.hpp +146 -0
  79. mqt/core/include/nlohmann/detail/string_escape.hpp +72 -0
  80. mqt/core/include/nlohmann/detail/string_utils.hpp +37 -0
  81. mqt/core/include/nlohmann/detail/value_t.hpp +118 -0
  82. mqt/core/include/nlohmann/json.hpp +5306 -0
  83. mqt/core/include/nlohmann/json_fwd.hpp +75 -0
  84. mqt/core/include/nlohmann/ordered_map.hpp +359 -0
  85. mqt/core/include/nlohmann/thirdparty/hedley/hedley.hpp +2045 -0
  86. mqt/core/include/nlohmann/thirdparty/hedley/hedley_undef.hpp +158 -0
  87. mqt/core/include/qdmi/qdmi/client.h +990 -0
  88. mqt/core/include/qdmi/qdmi/constants.h +1139 -0
  89. mqt/core/include/qdmi/qdmi/device.h +602 -0
  90. mqt/core/include/qdmi/qdmi/types.h +78 -0
  91. mqt/core/include/spdlog/async.h +99 -0
  92. mqt/core/include/spdlog/async_logger-inl.h +84 -0
  93. mqt/core/include/spdlog/async_logger.h +74 -0
  94. mqt/core/include/spdlog/cfg/argv.h +40 -0
  95. mqt/core/include/spdlog/cfg/env.h +36 -0
  96. mqt/core/include/spdlog/cfg/helpers-inl.h +107 -0
  97. mqt/core/include/spdlog/cfg/helpers.h +29 -0
  98. mqt/core/include/spdlog/common-inl.h +68 -0
  99. mqt/core/include/spdlog/common.h +406 -0
  100. mqt/core/include/spdlog/details/backtracer-inl.h +63 -0
  101. mqt/core/include/spdlog/details/backtracer.h +45 -0
  102. mqt/core/include/spdlog/details/circular_q.h +115 -0
  103. mqt/core/include/spdlog/details/console_globals.h +28 -0
  104. mqt/core/include/spdlog/details/file_helper-inl.h +153 -0
  105. mqt/core/include/spdlog/details/file_helper.h +61 -0
  106. mqt/core/include/spdlog/details/fmt_helper.h +141 -0
  107. mqt/core/include/spdlog/details/log_msg-inl.h +44 -0
  108. mqt/core/include/spdlog/details/log_msg.h +40 -0
  109. mqt/core/include/spdlog/details/log_msg_buffer-inl.h +54 -0
  110. mqt/core/include/spdlog/details/log_msg_buffer.h +32 -0
  111. mqt/core/include/spdlog/details/mpmc_blocking_q.h +177 -0
  112. mqt/core/include/spdlog/details/null_mutex.h +35 -0
  113. mqt/core/include/spdlog/details/os-inl.h +606 -0
  114. mqt/core/include/spdlog/details/os.h +127 -0
  115. mqt/core/include/spdlog/details/periodic_worker-inl.h +26 -0
  116. mqt/core/include/spdlog/details/periodic_worker.h +58 -0
  117. mqt/core/include/spdlog/details/registry-inl.h +270 -0
  118. mqt/core/include/spdlog/details/registry.h +131 -0
  119. mqt/core/include/spdlog/details/synchronous_factory.h +22 -0
  120. mqt/core/include/spdlog/details/tcp_client-windows.h +135 -0
  121. mqt/core/include/spdlog/details/tcp_client.h +127 -0
  122. mqt/core/include/spdlog/details/thread_pool-inl.h +126 -0
  123. mqt/core/include/spdlog/details/thread_pool.h +117 -0
  124. mqt/core/include/spdlog/details/udp_client-windows.h +98 -0
  125. mqt/core/include/spdlog/details/udp_client.h +81 -0
  126. mqt/core/include/spdlog/details/windows_include.h +11 -0
  127. mqt/core/include/spdlog/fmt/bin_to_hex.h +224 -0
  128. mqt/core/include/spdlog/fmt/bundled/args.h +220 -0
  129. mqt/core/include/spdlog/fmt/bundled/base.h +2989 -0
  130. mqt/core/include/spdlog/fmt/bundled/chrono.h +2330 -0
  131. mqt/core/include/spdlog/fmt/bundled/color.h +637 -0
  132. mqt/core/include/spdlog/fmt/bundled/compile.h +539 -0
  133. mqt/core/include/spdlog/fmt/bundled/core.h +5 -0
  134. mqt/core/include/spdlog/fmt/bundled/fmt.license.rst +27 -0
  135. mqt/core/include/spdlog/fmt/bundled/format-inl.h +1948 -0
  136. mqt/core/include/spdlog/fmt/bundled/format.h +4244 -0
  137. mqt/core/include/spdlog/fmt/bundled/os.h +427 -0
  138. mqt/core/include/spdlog/fmt/bundled/ostream.h +167 -0
  139. mqt/core/include/spdlog/fmt/bundled/printf.h +633 -0
  140. mqt/core/include/spdlog/fmt/bundled/ranges.h +850 -0
  141. mqt/core/include/spdlog/fmt/bundled/std.h +728 -0
  142. mqt/core/include/spdlog/fmt/bundled/xchar.h +369 -0
  143. mqt/core/include/spdlog/fmt/chrono.h +23 -0
  144. mqt/core/include/spdlog/fmt/compile.h +23 -0
  145. mqt/core/include/spdlog/fmt/fmt.h +30 -0
  146. mqt/core/include/spdlog/fmt/ostr.h +23 -0
  147. mqt/core/include/spdlog/fmt/ranges.h +23 -0
  148. mqt/core/include/spdlog/fmt/std.h +24 -0
  149. mqt/core/include/spdlog/fmt/xchar.h +23 -0
  150. mqt/core/include/spdlog/formatter.h +17 -0
  151. mqt/core/include/spdlog/fwd.h +18 -0
  152. mqt/core/include/spdlog/logger-inl.h +198 -0
  153. mqt/core/include/spdlog/logger.h +379 -0
  154. mqt/core/include/spdlog/mdc.h +52 -0
  155. mqt/core/include/spdlog/pattern_formatter-inl.h +1340 -0
  156. mqt/core/include/spdlog/pattern_formatter.h +118 -0
  157. mqt/core/include/spdlog/sinks/android_sink.h +137 -0
  158. mqt/core/include/spdlog/sinks/ansicolor_sink-inl.h +142 -0
  159. mqt/core/include/spdlog/sinks/ansicolor_sink.h +116 -0
  160. mqt/core/include/spdlog/sinks/base_sink-inl.h +59 -0
  161. mqt/core/include/spdlog/sinks/base_sink.h +51 -0
  162. mqt/core/include/spdlog/sinks/basic_file_sink-inl.h +48 -0
  163. mqt/core/include/spdlog/sinks/basic_file_sink.h +66 -0
  164. mqt/core/include/spdlog/sinks/callback_sink.h +56 -0
  165. mqt/core/include/spdlog/sinks/daily_file_sink.h +254 -0
  166. mqt/core/include/spdlog/sinks/dist_sink.h +81 -0
  167. mqt/core/include/spdlog/sinks/dup_filter_sink.h +91 -0
  168. mqt/core/include/spdlog/sinks/hourly_file_sink.h +193 -0
  169. mqt/core/include/spdlog/sinks/kafka_sink.h +119 -0
  170. mqt/core/include/spdlog/sinks/mongo_sink.h +108 -0
  171. mqt/core/include/spdlog/sinks/msvc_sink.h +68 -0
  172. mqt/core/include/spdlog/sinks/null_sink.h +41 -0
  173. mqt/core/include/spdlog/sinks/ostream_sink.h +43 -0
  174. mqt/core/include/spdlog/sinks/qt_sinks.h +304 -0
  175. mqt/core/include/spdlog/sinks/ringbuffer_sink.h +67 -0
  176. mqt/core/include/spdlog/sinks/rotating_file_sink-inl.h +179 -0
  177. mqt/core/include/spdlog/sinks/rotating_file_sink.h +93 -0
  178. mqt/core/include/spdlog/sinks/sink-inl.h +22 -0
  179. mqt/core/include/spdlog/sinks/sink.h +34 -0
  180. mqt/core/include/spdlog/sinks/stdout_color_sinks-inl.h +38 -0
  181. mqt/core/include/spdlog/sinks/stdout_color_sinks.h +49 -0
  182. mqt/core/include/spdlog/sinks/stdout_sinks-inl.h +127 -0
  183. mqt/core/include/spdlog/sinks/stdout_sinks.h +84 -0
  184. mqt/core/include/spdlog/sinks/syslog_sink.h +104 -0
  185. mqt/core/include/spdlog/sinks/systemd_sink.h +121 -0
  186. mqt/core/include/spdlog/sinks/tcp_sink.h +75 -0
  187. mqt/core/include/spdlog/sinks/udp_sink.h +69 -0
  188. mqt/core/include/spdlog/sinks/win_eventlog_sink.h +260 -0
  189. mqt/core/include/spdlog/sinks/wincolor_sink-inl.h +172 -0
  190. mqt/core/include/spdlog/sinks/wincolor_sink.h +82 -0
  191. mqt/core/include/spdlog/spdlog-inl.h +96 -0
  192. mqt/core/include/spdlog/spdlog.h +357 -0
  193. mqt/core/include/spdlog/stopwatch.h +66 -0
  194. mqt/core/include/spdlog/tweakme.h +148 -0
  195. mqt/core/include/spdlog/version.h +11 -0
  196. mqt/core/ir/__init__.pyi +83 -45
  197. mqt/core/ir/operations.pyi +40 -27
  198. mqt/core/ir.cp312-win_amd64.pyd +0 -0
  199. mqt/core/lib/cmake/spdlog/spdlogConfig.cmake +44 -0
  200. mqt/core/lib/cmake/spdlog/spdlogConfigTargets-release.cmake +19 -0
  201. mqt/core/lib/cmake/spdlog/spdlogConfigTargets.cmake +119 -0
  202. mqt/core/lib/cmake/spdlog/spdlogConfigVersion.cmake +65 -0
  203. mqt/core/lib/mqt-core-algorithms.lib +0 -0
  204. mqt/core/lib/mqt-core-circuit-optimizer.lib +0 -0
  205. mqt/core/lib/mqt-core-dd.lib +0 -0
  206. mqt/core/lib/mqt-core-ds.lib +0 -0
  207. mqt/core/lib/mqt-core-fomac.lib +0 -0
  208. mqt/core/lib/mqt-core-ir.lib +0 -0
  209. mqt/core/lib/mqt-core-na-fomac.lib +0 -0
  210. mqt/core/lib/mqt-core-na.lib +0 -0
  211. mqt/core/lib/mqt-core-qasm.lib +0 -0
  212. mqt/core/lib/mqt-core-qdmi-driver.lib +0 -0
  213. mqt/core/lib/mqt-core-qdmi-na-device-gen.lib +0 -0
  214. mqt/core/lib/mqt-core-qdmi-na-device.lib +0 -0
  215. mqt/core/lib/mqt-core-zx.lib +0 -0
  216. mqt/core/lib/pkgconfig/spdlog.pc +13 -0
  217. mqt/core/lib/spdlog.lib +0 -0
  218. mqt/core/na/__init__.py +12 -0
  219. mqt/core/na/fomac.cp312-win_amd64.pyd +0 -0
  220. mqt/core/na/fomac.pyi +117 -0
  221. mqt/core/nlohmann_json.natvis +278 -0
  222. mqt/core/plugins/qiskit/mqt_to_qiskit.py +75 -11
  223. mqt/core/plugins/qiskit/qiskit_to_mqt.py +108 -5
  224. mqt/core/share/cmake/mqt-core/AddMQTPythonBinding.cmake +3 -0
  225. mqt/core/share/cmake/mqt-core/Cache.cmake +17 -16
  226. mqt/core/share/cmake/mqt-core/PackageAddTest.cmake +6 -0
  227. mqt/core/share/cmake/mqt-core/StandardProjectSettings.cmake +1 -1
  228. mqt/core/share/cmake/mqt-core/mqt-core-config-version.cmake +3 -3
  229. mqt/core/share/cmake/mqt-core/mqt-core-config.cmake +3 -0
  230. mqt/core/share/cmake/mqt-core/mqt-core-targets-release.cmake +51 -0
  231. mqt/core/share/cmake/mqt-core/mqt-core-targets.cmake +124 -3
  232. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfig.cmake +15 -0
  233. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake +20 -0
  234. mqt/core/share/cmake/nlohmann_json/nlohmann_jsonTargets.cmake +110 -0
  235. mqt/core/share/cmake/qdmi/Cache.cmake +44 -0
  236. mqt/core/share/cmake/qdmi/PrefixHandling.cmake +78 -0
  237. mqt/core/share/cmake/qdmi/prefix_defs.txt +26 -0
  238. mqt/core/share/cmake/qdmi/qdmi-config-version.cmake +85 -0
  239. mqt/core/share/cmake/qdmi/qdmi-config.cmake +42 -0
  240. mqt/core/share/cmake/qdmi/qdmi-targets.cmake +129 -0
  241. mqt/core/share/pkgconfig/nlohmann_json.pc +7 -0
  242. mqt_core-3.3.0.dist-info/DELVEWHEEL +2 -0
  243. {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/METADATA +74 -33
  244. {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/RECORD +247 -53
  245. {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/WHEEL +1 -1
  246. mqt/core/include/mqt-core/ir/operations/ClassicControlledOperation.hpp +0 -156
  247. mqt_core-3.2.0.dist-info/DELVEWHEEL +0 -2
  248. {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/entry_points.txt +0 -0
  249. {mqt_core-3.2.0.dist-info → mqt_core-3.3.0.dist-info}/licenses/LICENSE.md +0 -0
@@ -0,0 +1,147 @@
1
+ // __ _____ _____ _____
2
+ // __| | __| | | | JSON for Modern C++
3
+ // | | |__ | | | | | | version 3.12.0
4
+ // |_____|_____|_____|_|___| https://github.com/nlohmann/json
5
+ //
6
+ // SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann <https://nlohmann.me>
7
+ // SPDX-License-Identifier: MIT
8
+
9
+ #pragma once
10
+
11
+ #include <algorithm> // copy
12
+ #include <cstddef> // size_t
13
+ #include <iterator> // back_inserter
14
+ #include <memory> // shared_ptr, make_shared
15
+ #include <string> // basic_string
16
+ #include <vector> // vector
17
+
18
+ #ifndef JSON_NO_IO
19
+ #include <ios> // streamsize
20
+ #include <ostream> // basic_ostream
21
+ #endif // JSON_NO_IO
22
+
23
+ #include <nlohmann/detail/macro_scope.hpp>
24
+
25
+ NLOHMANN_JSON_NAMESPACE_BEGIN
26
+ namespace detail
27
+ {
28
+
29
+ /// abstract output adapter interface
30
+ template<typename CharType> struct output_adapter_protocol
31
+ {
32
+ virtual void write_character(CharType c) = 0;
33
+ virtual void write_characters(const CharType* s, std::size_t length) = 0;
34
+ virtual ~output_adapter_protocol() = default;
35
+
36
+ output_adapter_protocol() = default;
37
+ output_adapter_protocol(const output_adapter_protocol&) = default;
38
+ output_adapter_protocol(output_adapter_protocol&&) noexcept = default;
39
+ output_adapter_protocol& operator=(const output_adapter_protocol&) = default;
40
+ output_adapter_protocol& operator=(output_adapter_protocol&&) noexcept = default;
41
+ };
42
+
43
+ /// a type to simplify interfaces
44
+ template<typename CharType>
45
+ using output_adapter_t = std::shared_ptr<output_adapter_protocol<CharType>>;
46
+
47
+ /// output adapter for byte vectors
48
+ template<typename CharType, typename AllocatorType = std::allocator<CharType>>
49
+ class output_vector_adapter : public output_adapter_protocol<CharType>
50
+ {
51
+ public:
52
+ explicit output_vector_adapter(std::vector<CharType, AllocatorType>& vec) noexcept
53
+ : v(vec)
54
+ {}
55
+
56
+ void write_character(CharType c) override
57
+ {
58
+ v.push_back(c);
59
+ }
60
+
61
+ JSON_HEDLEY_NON_NULL(2)
62
+ void write_characters(const CharType* s, std::size_t length) override
63
+ {
64
+ v.insert(v.end(), s, s + length);
65
+ }
66
+
67
+ private:
68
+ std::vector<CharType, AllocatorType>& v;
69
+ };
70
+
71
+ #ifndef JSON_NO_IO
72
+ /// output adapter for output streams
73
+ template<typename CharType>
74
+ class output_stream_adapter : public output_adapter_protocol<CharType>
75
+ {
76
+ public:
77
+ explicit output_stream_adapter(std::basic_ostream<CharType>& s) noexcept
78
+ : stream(s)
79
+ {}
80
+
81
+ void write_character(CharType c) override
82
+ {
83
+ stream.put(c);
84
+ }
85
+
86
+ JSON_HEDLEY_NON_NULL(2)
87
+ void write_characters(const CharType* s, std::size_t length) override
88
+ {
89
+ stream.write(s, static_cast<std::streamsize>(length));
90
+ }
91
+
92
+ private:
93
+ std::basic_ostream<CharType>& stream;
94
+ };
95
+ #endif // JSON_NO_IO
96
+
97
+ /// output adapter for basic_string
98
+ template<typename CharType, typename StringType = std::basic_string<CharType>>
99
+ class output_string_adapter : public output_adapter_protocol<CharType>
100
+ {
101
+ public:
102
+ explicit output_string_adapter(StringType& s) noexcept
103
+ : str(s)
104
+ {}
105
+
106
+ void write_character(CharType c) override
107
+ {
108
+ str.push_back(c);
109
+ }
110
+
111
+ JSON_HEDLEY_NON_NULL(2)
112
+ void write_characters(const CharType* s, std::size_t length) override
113
+ {
114
+ str.append(s, length);
115
+ }
116
+
117
+ private:
118
+ StringType& str;
119
+ };
120
+
121
+ template<typename CharType, typename StringType = std::basic_string<CharType>>
122
+ class output_adapter
123
+ {
124
+ public:
125
+ template<typename AllocatorType = std::allocator<CharType>>
126
+ output_adapter(std::vector<CharType, AllocatorType>& vec)
127
+ : oa(std::make_shared<output_vector_adapter<CharType, AllocatorType>>(vec)) {}
128
+
129
+ #ifndef JSON_NO_IO
130
+ output_adapter(std::basic_ostream<CharType>& s)
131
+ : oa(std::make_shared<output_stream_adapter<CharType>>(s)) {}
132
+ #endif // JSON_NO_IO
133
+
134
+ output_adapter(StringType& s)
135
+ : oa(std::make_shared<output_string_adapter<CharType, StringType>>(s)) {}
136
+
137
+ operator output_adapter_t<CharType>()
138
+ {
139
+ return oa;
140
+ }
141
+
142
+ private:
143
+ output_adapter_t<CharType> oa = nullptr;
144
+ };
145
+
146
+ } // namespace detail
147
+ NLOHMANN_JSON_NAMESPACE_END