AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
IOutputStream.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
14#include <cstring>
15#include <AUI/Traits/values.h>
16#include "AEOFException.h"
17
18
20{
21public:
22 virtual ~IOutputStream() = default;
23
33 virtual void write(const char* src, size_t size) = 0;
34
39 template<typename T>
40 void write(const T& t);
41
46 template<typename T>
48 write<T>(t);
49 return *this;
50 }
51};
52
53#include <AUI/Traits/serializable.h>
54
55template<typename T>
56void IOutputStream::write(const T& t) {
57 aui::serialize(*this, t);
58}
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.
IOutputStream & operator<<(const T &t)
Definition: IOutputStream.h:47