AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
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
19public:
20 virtual ~IOutputStream() = default;
21
31 virtual void write(const char* src, size_t size) = 0;
32
37 template <typename T>
38 void write(const T& t);
39
44 template <typename T>
46 write<T>(t);
47 return *this;
48 }
49};
50
51#include <AUI/Traits/serializable.h>
52
53template <typename T>
54void IOutputStream::write(const T& t) {
55 aui::serialize(*this, t);
56}
Definition IOutputStream.h:18
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:45