GridFormat
0.6.0
I/O-Library for grid-like data structures
Toggle main menu visibility
Loading...
Searching...
No Matches
raw.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2022-2023 Dennis Gläser <dennis.glaeser@iws.uni-stuttgart.de>
2
// SPDX-License-Identifier: MIT
8
#ifndef GRIDFORMAT_COMMON_ENCODING_RAW_HPP_
9
#define GRIDFORMAT_COMMON_ENCODING_RAW_HPP_
10
11
#include <span>
12
#include <istream>
13
14
#include <gridformat/common/serialization.hpp>
15
#include <gridformat/common/output_stream.hpp>
16
17
namespace
GridFormat {
18
21
23
struct
RawDecoder
{
24
Serialization decode_from(std::istream& stream, std::size_t num_decoded_bytes)
const
{
25
Serialization result{num_decoded_bytes};
26
auto
chars = result.template as_span_of<char>();
27
stream.read(chars.data(), chars.size());
28
if
(stream.gcount() !=
static_cast<
std::istream::pos_type
>
(chars.size()))
29
throw
IOError(
"Could not read the requested number of bytes from input stream"
);
30
return
result;
31
}
32
33
template
<std::
size_t
s>
34
std::size_t decode(std::span<char, s> chars)
const
{
35
return
chars.size();
36
}
37
};
38
40
template
<
typename
OStream>
41
class
RawBinaryStream :
public
OutputStreamWrapperBase<OStream> {
42
using
Byte = std::byte;
43
public
:
44
explicit
constexpr
RawBinaryStream(OStream& s)
45
: OutputStreamWrapperBase<OStream>(s)
46
{}
47
48
template
<
typename
T, std::
size_t
size>
49
void
write(std::span<T, size> data) {
50
this->_write_raw(data);
51
}
52
};
53
55
56
}
// namespace GridFormat
57
58
namespace
GridFormat::Encoding {
59
62
64
struct
RawBinary
{
65
template
<
typename
S>
66
constexpr
auto
operator()(S& s)
const
noexcept
{
67
return
RawBinaryStream
{s};
68
}
69
};
70
72
inline
constexpr
RawBinary
raw
;
73
75
76
}
// namespace GridFormat::Encoding
77
78
#endif
// GRIDFORMAT_COMMON_ENCODING_RAW_HPP_
GridFormat::RawBinaryStream
Wrapper around a given stream to write raw binary data.
Definition
raw.hpp:41
GridFormat::Encoding::raw
constexpr RawBinary raw
Instance of the raw binary encoder.
Definition
raw.hpp:72
GridFormat::Encoding::RawBinary
Raw binary encoder.
Definition
raw.hpp:64
GridFormat::RawDecoder
For compatibility with Base64.
Definition
raw.hpp:23
gridformat
encoding
raw.hpp
Generated by
1.18.0