Iros
 
Loading...
Searching...
No Matches
vector_writer.h
Go to the documentation of this file.
1#pragma once
2
8#include "di/types/byte.h"
9#include "di/types/in_place.h"
10#include "di/util/move.h"
15
16namespace di::io {
17template<concepts::detail::MutableVector T = container::Vector<byte>>
18requires(concepts::ContainerOf<T, byte>)
20private:
21 template<typename U = void>
22 using Result = vocab::Result<U>;
23
24public:
27 = default;
28
29 VectorWriter(T vector) : m_vector(di::move(vector)) {}
30
31 template<typename... Args>
32 requires(ConstructibleFrom<T, Args...>)
33 constexpr explicit VectorWriter(InPlace, Args&&... args) : m_vector(di::forward<Args>(args)...) {}
34
35 constexpr auto vector() & -> T& { return m_vector; }
36 constexpr auto vector() const& -> T const& { return m_vector; }
37 constexpr auto vector() && -> T&& { return di::move(*this).m_vector; }
38
39 constexpr auto write_some(Span<byte const> bytes) -> Result<usize> {
40 return invoke_as_fallible([&] {
42 }) % [&] {
43 return bytes.size();
45 }
46 constexpr auto flush() -> Result<> { return {}; }
47
48private:
49 T m_vector;
50};
51}
52
53namespace di {
54using io::VectorWriter;
55}
constexpr auto vector() &-> T &
Definition vector_writer.h:35
constexpr auto vector() &&-> T &&
Definition vector_writer.h:37
constexpr auto flush() -> Result<>
Definition vector_writer.h:46
VectorWriter(T vector)
Definition vector_writer.h:29
constexpr VectorWriter(InPlace, Args &&... args)
Definition vector_writer.h:33
constexpr auto vector() const &-> T const &
Definition vector_writer.h:36
constexpr auto write_some(Span< byte const > bytes) -> Result< usize >
Definition vector_writer.h:39
Definition span_forward_declaration.h:10
Definition operations.h:24
constexpr auto append_container(Vec &vector, Con &&container) -> R
Definition vector_append_container.h:21
Definition reader.h:7
Expected< T, Error > Result
Definition result.h:8
Definition zstring_parser.h:9
constexpr auto invoke_as_fallible
Definition invoke_as_fallible.h:37
constexpr auto try_infallible
Definition try_infallible.h:31
Definition in_place.h:4