NeKernel dev
Loading...
Searching...
No Matches
Stream.h
Go to the documentation of this file.
1
2/* ========================================
3
4 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
5
6======================================== */
7
8#pragma once
9
10#include <NeKit/Config.h>
11#include <NeKit/Ref.h>
12
13namespace Kernel {
14template <typename StreamTrait, typename Kind>
15class Stream final {
16 public:
17 explicit Stream(Ref<Stream> ref) : fStream(ref) {}
18
19 ~Stream() = default;
20
21 Stream& operator=(const Stream&) = default;
22 Stream(const Stream&) = default;
23
24 template <typename Data>
26 Ks.fKind = Ks.fStream->In(Buf);
27 return *Ks;
28 }
29
30 template <typename Data>
32 Ks.fKind = Buf;
33 Ks.fStream->Out(Buf.Leak());
34 return *Ks;
35 }
36
38
39 Ref<Kind>& AsType() { return fKind; }
40
41 private:
44};
45} // namespace Kernel
Reference wrapper class. /// =========================================================== ///.
Definition Ref.h:22
T & Leak()
Definition Ref.h:41
Ref< StreamTrait > & AsStreamTrait()
Definition Stream.h:37
Stream(Ref< Stream > ref)
Definition Stream.h:17
~Stream()=default
Ref< Kind > fKind
Definition Stream.h:43
Ref< Kind > & AsType()
Definition Stream.h:39
friend Stream< StreamTrait, Kind > & operator<<(Stream< StreamTrait, Kind > &Ks, Ref< Data > &Buf)
Definition Stream.h:31
Stream & operator=(const Stream &)=default
Stream(const Stream &)=default
Ref< AsciiJsonStreamReader > fStream
Definition Stream.h:42
friend Stream< StreamTrait, Kind > & operator>>(Stream< StreamTrait, Kind > &Ks, Ref< Data > &Buf)
Definition Stream.h:25
UPS inline definitions.
Definition Device.h:12