AUI Framework
master
Cross-platform module-based framework for developing C++20 desktop applications
AConcatInputStream.h
1
/*
2
* AUI Framework - Declarative UI toolkit for modern C++20
3
* Copyright (C) 2020-2024 Alex2772 and Contributors
4
*
5
* SPDX-License-Identifier: MPL-2.0
6
*
7
* This Source Code Form is subject to the terms of the Mozilla Public
8
* License, v. 2.0. If a copy of the MPL was not distributed with this
9
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
10
*/
11
12
//
13
// Created by alex2 on 13.11.2020.
14
//
15
16
#pragma once
17
18
19
#include "IInputStream.h"
20
#include <AUI/Common/AVector.h>
21
26
class
API_AUI_CORE
AConcatInputStream
:
public
IInputStream
{
27
private
:
28
ADeque<_<IInputStream>
> mInputStreams;
29
30
public
:
31
explicit
AConcatInputStream
(
ADeque
<
_<IInputStream>
> inputStreams)
noexcept
: mInputStreams(std::move(inputStreams)) {
32
33
}
34
35
~AConcatInputStream
()
override
=
default
;
36
37
size_t
read
(
char
* dst,
size_t
size)
override
;
38
};
39
40
AConcatInputStream
Concatenates multiple sequential input streams into one.
Definition:
AConcatInputStream.h:26
ADeque
A std::deque with AUI extensions.
Definition:
ADeque.h:27
IInputStream
Represents an input stream.
Definition:
IInputStream.h:26
IInputStream::read
virtual size_t read(char *dst, size_t size)=0
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
_
An std::weak_ptr with AUI extensions.
Definition:
SharedPtrTypes.h:177