AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
AStringStream.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#pragma once
13#include "AUI/Common/AString.h"
14#include "IInputStream.h"
15#include "IOutputStream.h"
16
21class API_AUI_CORE AStringStream: public IInputStream, public IOutputStream
22{
23private:
24 std::string mString;
25 size_t mReadPos = 0;
26
27public:
29 explicit AStringStream(std::string string);
30 explicit AStringStream(const AString& string);
31 virtual ~AStringStream() = default;
32
33 void seekRead(size_t position);
34
35 size_t read(char* dst, size_t size) override;
36 void write(const char *src, size_t size) override;
37
38 [[nodiscard]]
39 const std::string& str() const noexcept {
40 return mString;
41 }
42};
A buffer input/output stream based on std::string.
Definition: AStringStream.h:22
Represents a Unicode character string.
Definition: AString.h:37
Represents an input stream.
Definition: IInputStream.h:26
virtual size_t read(char *dst, size_t size)=0
Reads up to size bytes from stream. Blocking (waiting for new data) is allowed.
Definition: IOutputStream.h:20
virtual void write(const char *src, size_t size)=0
Writes exact size bytes to stream. Blocking (waiting for write all data) is allowed.