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
18
class
IOutputStream
{
19
public
:
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>
45
IOutputStream
&
operator<<
(
const
T& t) {
46
write<T>
(t);
47
return
*
this
;
48
}
49
};
50
51
#include <AUI/Traits/serializable.h>
52
53
template
<
typename
T>
54
void
IOutputStream::write
(
const
T& t) {
55
aui::serialize(*
this
, t);
56
}
IOutputStream
Definition
IOutputStream.h:18
IOutputStream::write
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<<
IOutputStream & operator<<(const T &t)
Definition
IOutputStream.h:45