Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
IOutputStream.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_STREAMS_IOUTPUTSTREAM_HPP_
2#define IV_SRC_STREAMS_IOUTPUTSTREAM_HPP_
3
4#include "core/concepts.hpp"
5
6namespace iv::streams
7{
8
10{
11public:
12 virtual ~IOutputStream() = default;
13
14 template<iv::concepts::StreamWritable T>
15 void write(T value)
16 {
17 writeImpl(value);
18 }
19
20 virtual void writeBuffer(const void *buffer, uint64_t sizeBuffer) = 0;
21
22 template<typename TypeEnum>
23 void writeUCharEnum(TypeEnum value);
24
25 template<typename TypeEnum>
26 void writeUShortEnum(TypeEnum value);
27
28 template<typename TypeEnum>
29 void writeEnum(TypeEnum value);
30
31private:
32 virtual void writeImpl(bool value) = 0;
33
34 virtual void writeImpl(std::byte value) = 0;
35
36 virtual void writeImpl(uint8_t value) = 0;
37 virtual void writeImpl(int8_t value) = 0;
38
39 virtual void writeImpl(uint16_t value) = 0;
40 virtual void writeImpl(int16_t value) = 0;
41
42 virtual void writeImpl(uint32_t value) = 0;
43 virtual void writeImpl(int32_t value) = 0;
44
45 virtual void writeImpl(uint64_t value) = 0;
46 virtual void writeImpl(int64_t value) = 0;
47
48 virtual void writeImpl(double value) = 0;
49 virtual void writeImpl(float value) = 0;
50
51 virtual void writeImpl(std::string_view) = 0;
52};
53
54template<typename TypeEnum>
56{
57 write((uint8_t) value);
58}
59
60template<typename TypeEnum>
62{
63 write((uint16_t) value);
64}
65
66template<typename TypeEnum>
67void IOutputStream::writeEnum(TypeEnum value)
68{
69 write((uint32_t) value);
70}
71
72}// namespace iv::streams
73
74#endif//IV_SRC_STREAMS_IOUTPUTSTREAM_HPP_
Definition IOutputStream.hpp:10
virtual void writeImpl(float value)=0
void writeUShortEnum(TypeEnum value)
Definition IOutputStream.hpp:61
void writeUCharEnum(TypeEnum value)
Definition IOutputStream.hpp:55
virtual void writeImpl(std::byte value)=0
virtual void writeImpl(int64_t value)=0
virtual ~IOutputStream()=default
virtual void writeImpl(uint64_t value)=0
virtual void writeImpl(uint8_t value)=0
virtual void writeBuffer(const void *buffer, uint64_t sizeBuffer)=0
virtual void writeImpl(double value)=0
void write(T value)
Definition IOutputStream.hpp:15
virtual void writeImpl(int32_t value)=0
void writeEnum(TypeEnum value)
Definition IOutputStream.hpp:67
virtual void writeImpl(int16_t value)=0
virtual void writeImpl(bool value)=0
virtual void writeImpl(int8_t value)=0
virtual void writeImpl(std::string_view)=0
virtual void writeImpl(uint16_t value)=0
virtual void writeImpl(uint32_t value)=0
Definition IInputStream.hpp:7