CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Stream.Filtered.hpp
Go to the documentation of this file.
1//
2// CeresEngine - A game development framework
3//
4// Created by Rogiel Sulzbach.
5// Copyright (c) 2018-2022 Rogiel Sulzbach. All rights reserved.
6//
7
8#pragma once
9
10#include "Stream.hpp"
11
12namespace CeresEngine {
13
17 protected:
20
21 public:
23 explicit FilteredInputStream(InputStream&& inputStream) : mInputStream(std::move(inputStream)) {}
24
27
28 public:
31
34
35 public: // IInputStream interface
37 [[nodiscard]] bool isSeekable(const Seek mode = Seek::Start) const noexcept override {
38 CE_ASSERT(mInputStream != nullptr);
39 return mInputStream->isSeekable(mode);
40 }
41
43 void seek(const std::streamsize position, const Seek mode = Seek::Start) override {
44 CE_ASSERT(mInputStream != nullptr);
45 mInputStream->seek(position, mode);
46 }
47
49 [[nodiscard]] bool isTellable() const noexcept override {
50 CE_ASSERT(mInputStream != nullptr);
51 return mInputStream->isTellable();
52 }
53
55 [[nodiscard]] size_t tell() override {
56 CE_ASSERT(mInputStream != nullptr);
57 return mInputStream->tell();
58 }
59
61 [[nodiscard]] bool isSizeKnown() const noexcept override {
62 CE_ASSERT(mInputStream != nullptr);
63 return mInputStream->isSizeKnown();
64 }
65
67 [[nodiscard]] size_t size() override {
68 CE_ASSERT(mInputStream != nullptr);
69 return mInputStream->size();
70 }
71
73 [[nodiscard]] bool isReadable() const noexcept override {
74 CE_ASSERT(mInputStream != nullptr);
75 return mInputStream->isReadable();
76 }
77
79 [[nodiscard]] size_t read(void* data, const size_t n) override {
80 CE_ASSERT(mInputStream != nullptr);
81 return mInputStream->read(data, n);
82 }
83
85 [[nodiscard]] bool invalidate() override {
86 CE_ASSERT(mInputStream != nullptr);
87 return mInputStream->invalidate();
88 }
89 };
90
94 protected:
97
98 public:
101
104
105 public:
108
111
112 public: // IOutputStream interface
114 [[nodiscard]] bool isSeekable(const Seek mode = Seek::Start) const noexcept override {
115 CE_ASSERT(mOutputStream != nullptr);
116 return mOutputStream->isSeekable(mode);
117 }
118
120 void seek(const std::streamsize position, const Seek mode = Seek::Start) override {
121 CE_ASSERT(mOutputStream != nullptr);
122 mOutputStream->seek(position, mode);
123 }
124
126 [[nodiscard]] bool isTellable() const noexcept override {
127 CE_ASSERT(mOutputStream != nullptr);
128 return mOutputStream->isTellable();
129 }
130
132 [[nodiscard]] size_t tell() override {
133 CE_ASSERT(mOutputStream != nullptr);
134 return mOutputStream->tell();
135 }
136
138 [[nodiscard]] bool isSizeKnown() const noexcept override {
139 CE_ASSERT(mOutputStream != nullptr);
140 return mOutputStream->isSizeKnown();
141 }
142
144 [[nodiscard]] size_t size() override {
145 CE_ASSERT(mOutputStream != nullptr);
146 return mOutputStream->size();
147 }
148
150 [[nodiscard]] bool isWritable() const noexcept override {
151 CE_ASSERT(mOutputStream != nullptr);
152 return mOutputStream->isWritable();
153 }
154
156
158 [[nodiscard]] size_t write(const void* data, const size_t n) override {
159 CE_ASSERT(mOutputStream != nullptr);
160 return mOutputStream->write(data, n);
161 }
162
164 [[nodiscard]] bool flush() override {
165 CE_ASSERT(mOutputStream != nullptr);
166 return mOutputStream->flush();
167 }
168 };
169
173 protected:
176
177 public:
180
183
184 public:
187
190
191 public: // IDataStream interface
193 [[nodiscard]] bool isSeekable(const Seek mode = Seek::Start) const noexcept override {
194 CE_ASSERT(mDataStream != nullptr);
195 return mDataStream->isSeekable(mode);
196 }
197
199 void seek(const std::streamsize position, const Seek mode = Seek::Start) override {
200 CE_ASSERT(mDataStream != nullptr);
201 mDataStream->seek(position, mode);
202 }
203
205 [[nodiscard]] bool isTellable() const noexcept override {
206 CE_ASSERT(mDataStream != nullptr);
207 return mDataStream->isTellable();
208 }
209
211 [[nodiscard]] size_t tell() override {
212 CE_ASSERT(mDataStream != nullptr);
213 return mDataStream->tell();
214 }
215
217 [[nodiscard]] bool isSizeKnown() const noexcept override {
218 CE_ASSERT(mDataStream != nullptr);
219 return mDataStream->isSizeKnown();
220 }
221
223 [[nodiscard]] size_t size() override {
224 CE_ASSERT(mDataStream != nullptr);
225 return mDataStream->size();
226 }
227
229 [[nodiscard]] bool isReadable() const noexcept override {
230 CE_ASSERT(mDataStream != nullptr);
231 return mDataStream->isReadable();
232 }
233
235 [[nodiscard]] size_t read(void* data, const size_t n) override {
236 CE_ASSERT(mDataStream != nullptr);
237 return mDataStream->read(data, n);
238 }
239
241 [[nodiscard]] bool invalidate() override {
242 CE_ASSERT(mDataStream != nullptr);
243 return mDataStream->invalidate();
244 }
245
247 [[nodiscard]] bool isWritable() const noexcept override {
248 CE_ASSERT(mDataStream != nullptr);
249 return mDataStream->isWritable();
250 }
251
253 [[nodiscard]] size_t write(const void* data, const size_t n) override {
254 CE_ASSERT(mDataStream != nullptr);
255 return mDataStream->write(data, n);
256 }
257
259 [[nodiscard]] bool flush() override {
260 CE_ASSERT(mDataStream != nullptr);
261 return mDataStream->flush();
262 }
263 };
264
265} // namespace CeresEngine
#define CE_ASSERT(...)
Definition Macros.hpp:323
General purpose class used for encapsulating the reading and writing of data from and to various sour...
Definition Stream.hpp:460
A helper data stream that allows filtering the results of another data stream.
Definition Stream.Filtered.hpp:172
bool isSeekable(const Seek mode=Seek::Start) const noexcept override
Checks if the stream is seekable.
Definition Stream.Filtered.hpp:193
size_t write(const void *data, const size_t n) override
Writes data to the data stream from a buffer of raw memory data with length n.
Definition Stream.Filtered.hpp:253
bool invalidate() override
In the stream is buffered, invalidates any buffered read data from the stream.
Definition Stream.Filtered.hpp:241
bool isTellable() const noexcept override
Checks if the stream knows it's current absolute position.
Definition Stream.Filtered.hpp:205
const DataStream & getDataStream() const noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:189
size_t size() override
Gets the number of bytes available on the stream.
Definition Stream.Filtered.hpp:223
DataStream & getDataStream() noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:186
FilteredDataStream(FilteredDataStream &&) noexcept=default
DataStream mDataStream
The data stream being filtered.
Definition Stream.Filtered.hpp:175
bool isReadable() const noexcept override
Checks if the stream is readable.
Definition Stream.Filtered.hpp:229
bool isWritable() const noexcept override
Checks if the stream is writable.
Definition Stream.Filtered.hpp:247
bool isSizeKnown() const noexcept override
Checks if the stream knows the size of the data.
Definition Stream.Filtered.hpp:217
size_t tell() override
Gets the absolute stream position, in bytes.
Definition Stream.Filtered.hpp:211
size_t read(void *data, const size_t n) override
Reads data from the data stream to a buffer of raw memory data with length n.
Definition Stream.Filtered.hpp:235
void seek(const std::streamsize position, const Seek mode=Seek::Start) override
Changes the position of the data stream.
Definition Stream.Filtered.hpp:199
FilteredDataStream(DataStream &&dataStream)
Creates a new filtered data stream.
Definition Stream.Filtered.hpp:179
bool flush() override
In the stream is buffered, invalidates any buffered write data from to stream.
Definition Stream.Filtered.hpp:259
A helper data stream that allows filtering the results of another data stream.
Definition Stream.Filtered.hpp:16
bool invalidate() override
In the stream is buffered, invalidates any buffered read data from the stream.
Definition Stream.Filtered.hpp:85
bool isTellable() const noexcept override
Checks if the stream knows it's current absolute position.
Definition Stream.Filtered.hpp:49
InputStream mInputStream
The data stream being filtered.
Definition Stream.Filtered.hpp:19
size_t tell() override
Gets the absolute stream position, in bytes.
Definition Stream.Filtered.hpp:55
const InputStream & getInputStream() const noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:33
size_t size() override
Gets the number of bytes available on the stream.
Definition Stream.Filtered.hpp:67
InputStream & getInputStream() noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:30
size_t read(void *data, const size_t n) override
Reads data from the data stream to a buffer of raw memory data with length n.
Definition Stream.Filtered.hpp:79
FilteredInputStream(InputStream &&inputStream)
Creates a new filtered data stream.
Definition Stream.Filtered.hpp:23
bool isReadable() const noexcept override
Checks if the stream is readable.
Definition Stream.Filtered.hpp:73
void seek(const std::streamsize position, const Seek mode=Seek::Start) override
Changes the position of the data stream.
Definition Stream.Filtered.hpp:43
FilteredInputStream(FilteredInputStream &&) noexcept=default
bool isSeekable(const Seek mode=Seek::Start) const noexcept override
Checks if the stream is seekable.
Definition Stream.Filtered.hpp:37
bool isSizeKnown() const noexcept override
Checks if the stream knows the size of the data.
Definition Stream.Filtered.hpp:61
A helper data stream that allows filtering the results of another data stream.
Definition Stream.Filtered.hpp:93
const OutputStream & getOutputStream() const noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:110
OutputStream & getOutputStream() noexcept
The data stream being filtered.
Definition Stream.Filtered.hpp:107
FilteredOutputStream(FilteredOutputStream &&) noexcept=default
size_t size() override
Gets the number of bytes available on the stream.
Definition Stream.Filtered.hpp:144
bool isWritable() const noexcept override
Checks if the stream is writable.
Definition Stream.Filtered.hpp:150
OutputStream mOutputStream
The data stream being filtered.
Definition Stream.Filtered.hpp:96
bool flush() override
In the stream is buffered, invalidates any buffered write data from to stream.
Definition Stream.Filtered.hpp:164
size_t tell() override
Gets the absolute stream position, in bytes.
Definition Stream.Filtered.hpp:132
void seek(const std::streamsize position, const Seek mode=Seek::Start) override
Changes the position of the data stream.
Definition Stream.Filtered.hpp:120
bool isSizeKnown() const noexcept override
Checks if the stream knows the size of the data.
Definition Stream.Filtered.hpp:138
FilteredOutputStream(OutputStream &&outputStream)
Creates a new filtered data stream.
Definition Stream.Filtered.hpp:100
bool isSeekable(const Seek mode=Seek::Start) const noexcept override
Checks if the stream is seekable.
Definition Stream.Filtered.hpp:114
size_t write(const void *data, const size_t n) override
Writes data to the data stream from a buffer of raw memory data with length n.
Definition Stream.Filtered.hpp:158
bool isTellable() const noexcept override
Checks if the stream knows it's current absolute position.
Definition Stream.Filtered.hpp:126
An interface that all data streams must implement.
Definition Stream.hpp:456
A stream that provides read-only stream functionality.
Definition Stream.hpp:126
A stream that provides write-only stream functionality.
Definition Stream.hpp:233
virtual size_t write(const void *data, size_t n)
Writes data to the data stream from a buffer of raw memory data with length n.
Seek
An enumeration that describes how a data stream should be seeked.
Definition Stream.hpp:72
A stream that provides read-only stream functionality.
Definition Stream.hpp:210
A stream that provides write-only stream functionality.
Definition Stream.hpp:307
Definition Application.hpp:19
auto move(Vector3 position)
Moves a entity to the given position.
Definition Helpers.hpp:22
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
Definition Span.hpp:668