aboutsummaryrefslogtreecommitdiff
path: root/kapi/src/cio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kapi/src/cio.cpp')
-rw-r--r--kapi/src/cio.cpp21
1 files changed, 18 insertions, 3 deletions
diff --git a/kapi/src/cio.cpp b/kapi/src/cio.cpp
index 210e58e..66493b6 100644
--- a/kapi/src/cio.cpp
+++ b/kapi/src/cio.cpp
@@ -1,14 +1,29 @@
#include "kapi/cio.hpp"
#include <optional>
+#include <string_view>
#include <utility>
namespace teachos::cio
{
+ namespace
+ {
+ struct null_device final : public output_device
+ {
+ null_device static instance;
+
+ auto write(std::string_view) -> void override {}
+ auto writeln(std::string_view) -> void override {}
+
+ auto write_error(std::string_view) -> void override {}
+ auto writeln_error(std::string_view) -> void override {}
+ };
+
+ constinit null_device null_device::instance;
+ } // namespace
+
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
- auto constinit null_device = output_device{};
- // NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
- auto constinit active_device = &null_device;
+ constinit auto active_device = static_cast<output_device *>(&null_device::instance);
auto set_output_device(output_device & device) -> std::optional<output_device *>
{