8#ifndef SEN_CORE_IO_OUTPUT_STREAM_H
9#define SEN_CORE_IO_OUTPUT_STREAM_H
26template <
typename BufferEndian>
58 impl::IfBasic<T, void> writeBasic(T val);
70template <
typename BufferEndian>
74 auto size =
static_cast<uint32_t
>(val.size());
82 std::memcpy(writer_.advance(size), val.data(), size);
85template <
typename BufferEndian>
87inline impl::IfBasic<T, void> OutputStreamTemplate<BufferEndian>::writeBasic(T val)
89 static_assert(std::is_trivially_copyable_v<T>);
90 constexpr auto size =
sizeof(T);
92 ::sen::impl::swapBytesIfNeeded(val, BufferEndian {});
93 std::memcpy(writer_.advance(size), &val, size);
constexpr ValueType getNanoseconds() const noexcept
Number of nanoseconds.
Definition duration.h:55
Binary output stream. Serializes values. In general, I/O operations throw on failure.
Definition output_stream.h:28
void writeString(std::string_view val)
Definition output_stream.h:71
void writeUInt32(uint32_t val)
Definition output_stream.h:44
~OutputStreamTemplate() noexcept=default
OutputStreamTemplate(Writer &writer) noexcept
Definition output_stream.h:32
void writeUInt8(uint8_t val)
Definition output_stream.h:40
Writer & getWriter() noexcept
Definition output_stream.h:53
void writeUInt16(uint16_t val)
Definition output_stream.h:42
void writeTimestamp(TimeStamp val)
Definition output_stream.h:50
void writeFloat32(float32_t val)
Definition output_stream.h:47
void writeUChar(unsigned char val)
Definition output_stream.h:38
const Writer & getWriter() const noexcept
Definition output_stream.h:54
void writeInt32(int32_t val)
Definition output_stream.h:43
void writeInt64(int64_t val)
Definition output_stream.h:45
void writeBool(bool val)
Definition output_stream.h:36
void writeChar(char val)
Definition output_stream.h:37
void writeUInt64(uint64_t val)
Definition output_stream.h:46
void writeInt8(int8_t val)
Definition output_stream.h:39
void writeFloat64(float64_t val)
Definition output_stream.h:48
void writeInt16(int16_t val)
Definition output_stream.h:41
A point in time.
Definition timestamp.h:26
constexpr Duration sinceEpoch() const noexcept
Time passed since 1 January 1970 UTC.
Definition timestamp.h:46
Interface for writing to a device.
Definition buffer_writer.h:20
float float32_t
Definition numbers.h:16
unsigned char uchar_t
Definition numbers.h:18
double float64_t
Definition numbers.h:17
OutputStreamTemplate< LittleEndian > OutputStream
Definition output_stream.h:64