di 0.1.0
Loading...
Searching...
No Matches
string_writer.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/meta/core.h"
7#include "di/meta/vocab.h"
8#include "di/util/declval.h"
10
11namespace di::io {
12template<concepts::detail::MutableString T = container::String>
13requires(concepts::SameAs<meta::Encoding<T>, container::string::Utf8Encoding>)
15public:
16 constexpr explicit StringWriter(bool interactive_device = false) : m_interactive_device(interactive_device) {}
17
20 for (auto byte : data) {
21 m_output.push_back(c32(byte));
22 }
23 return data.size();
24 }
25
26 constexpr auto flush() -> vocab::Result<void> { return {}; }
27
28 constexpr auto output() && -> T { return util::move(m_output); }
29
30 constexpr auto interactive_device() const -> bool { return m_interactive_device; }
31
32private:
33 T m_output;
34 bool m_interactive_device { false };
35};
36}
37
38namespace di {
40}
Definition string_writer.h:14
constexpr auto output() &&-> T
Definition string_writer.h:28
constexpr auto write_some(vocab::Span< byte const > data) -> meta::LikeExpected< decltype(util::declval< T & >().push_back(c32(0))), usize >
Definition string_writer.h:18
constexpr auto interactive_device() const -> bool
Definition string_writer.h:30
constexpr StringWriter(bool interactive_device=false)
Definition string_writer.h:16
constexpr auto flush() -> vocab::Result< void >
Definition string_writer.h:26
Definition span_forward_declaration.h:10
Definition reader.h:7
Type< detail::LikeExpectedHelper< T, U > > LikeExpected
Definition vocab.h:60
size_t usize
Definition integers.h:33
char32_t c32
Definition char.h:6
Expected< T, Error > Result
Definition result.h:8
Definition any_storable.h:9
constexpr auto data
Definition data.h:51