Nix (Dev) 3.5.10
dev - 3.5.10 - 1af9301
Loading...
Searching...
No Matches
IInputStream.hpp
Go to the documentation of this file.
1#ifndef IV_SRC_STREAMS_IINPUTSTREAM_HPP_
2#define IV_SRC_STREAMS_IINPUTSTREAM_HPP_
3
4#include "core/concepts.hpp"
5
6namespace iv::streams
7{
8
10{
11public:
12 virtual ~IInputStream() = default;
13
14 template<iv::concepts::StreamReadable T>
15 void read(T *value)
16 {
17 readImpl(*value);
18 }
19
20 template<iv::concepts::StreamReadable T>
21 void skip()
22 {
23 skipImpl(T {});
24 }
25
26 virtual void readBuffer(void *buffer, uint64_t sizeBuffer) = 0;
27
28 template<typename TypeEnum>
29 TypeEnum readByteEnum();
30
31 template<typename TypeEnum>
32 TypeEnum readUShortEnum();
33
34 template<typename TypeEnum>
35 TypeEnum readEnum();
36
37private:
38 virtual void readImpl(bool &value) = 0;
39
40 virtual void readImpl(std::byte &value) = 0;
41
42 virtual void readImpl(uint8_t &value) = 0;
43 virtual void readImpl(int8_t &value) = 0;
44
45 virtual void readImpl(uint16_t &value) = 0;
46 virtual void readImpl(int16_t &value) = 0;
47
48 virtual void readImpl(uint32_t &value) = 0;
49 virtual void readImpl(int32_t &value) = 0;
50
51 virtual void readImpl(uint64_t &value) = 0;
52 virtual void readImpl(int64_t &value) = 0;
53
54 virtual void readImpl(double &value) = 0;
55 virtual void readImpl(float &value) = 0;
56
57 virtual void readImpl(std::string &value) = 0;
58
59 virtual void skipImpl(bool value) = 0;
60
61 virtual void skipImpl(std::byte value) = 0;
62
63 virtual void skipImpl(uint8_t value) = 0;
64 virtual void skipImpl(int8_t value) = 0;
65
66 virtual void skipImpl(uint16_t value) = 0;
67 virtual void skipImpl(int16_t value) = 0;
68
69 virtual void skipImpl(uint32_t value) = 0;
70 virtual void skipImpl(int32_t value) = 0;
71
72 virtual void skipImpl(uint64_t value) = 0;
73 virtual void skipImpl(int64_t value) = 0;
74
75 virtual void skipImpl(double value) = 0;
76 virtual void skipImpl(float value) = 0;
77
78 virtual void skipImpl(std::string_view value) = 0;
79};
80
81template<typename TypeEnum>
83{
84 std::byte valueEnum;
85
86 read(&valueEnum);
87 return (TypeEnum) valueEnum;
88}
89
90template<typename TypeEnum>
92{
93 uint16_t valueEnum;
94
95 read(&valueEnum);
96 return (TypeEnum) valueEnum;
97}
98
99template<typename TypeEnum>
101{
102 uint32_t valueEnum;
103
104 read(&valueEnum);
105 return (TypeEnum) valueEnum;
106}
107
108}// namespace iv::streams
109
110#endif//IV_SRC_STREAMS_IINPUTSTREAM_HPP_
Definition IInputStream.hpp:10
void read(T *value)
Definition IInputStream.hpp:15
virtual void readImpl(int32_t &value)=0
TypeEnum readEnum()
Definition IInputStream.hpp:100
virtual void skipImpl(uint16_t value)=0
virtual void readImpl(uint64_t &value)=0
TypeEnum readByteEnum()
Definition IInputStream.hpp:82
virtual void readImpl(uint16_t &value)=0
virtual void readImpl(bool &value)=0
virtual void skipImpl(int32_t value)=0
virtual void readImpl(int64_t &value)=0
virtual void skipImpl(float value)=0
virtual void skipImpl(std::string_view value)=0
virtual void readImpl(uint32_t &value)=0
void skip()
Definition IInputStream.hpp:21
virtual void skipImpl(uint64_t value)=0
virtual void readImpl(uint8_t &value)=0
virtual void readImpl(int8_t &value)=0
virtual void readImpl(std::string &value)=0
virtual void readImpl(double &value)=0
virtual void skipImpl(int64_t value)=0
virtual ~IInputStream()=default
virtual void readImpl(float &value)=0
virtual void skipImpl(uint8_t value)=0
virtual void skipImpl(bool value)=0
virtual void skipImpl(std::byte value)=0
TypeEnum readUShortEnum()
Definition IInputStream.hpp:91
virtual void skipImpl(int16_t value)=0
virtual void skipImpl(uint32_t value)=0
virtual void skipImpl(int8_t value)=0
virtual void readBuffer(void *buffer, uint64_t sizeBuffer)=0
virtual void readImpl(int16_t &value)=0
virtual void skipImpl(double value)=0
virtual void readImpl(std::byte &value)=0
Definition IInputStream.hpp:7