diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2026-03-07 11:33:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-07 11:33:23 +0100 |
| commit | b7d4f9943ca6d2561a31fc212b8e074e4984b850 (patch) | |
| tree | eac88db0b56afbe6d62f4692855e38ca5e2b652c /src/kernel/NeKit/Stream.h | |
| parent | 1fc1b9c7e89d4691c82cc434d43bbfdc221cb5b1 (diff) | |
| parent | 3edb3cb672aa5008225a40020bbc707730897cab (diff) | |
Merge pull request #127 from ne-foss-org/buffered-stream-requirements
[FEAT] Buffered and Unbuffered stream types.
Diffstat (limited to 'src/kernel/NeKit/Stream.h')
| -rw-r--r-- | src/kernel/NeKit/Stream.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/kernel/NeKit/Stream.h b/src/kernel/NeKit/Stream.h index d69df6d0..ad458d5a 100644 --- a/src/kernel/NeKit/Stream.h +++ b/src/kernel/NeKit/Stream.h @@ -1,23 +1,23 @@ -// Copyright 2024-2025, Amlal El Mahrouss (amlal@nekernel.org) +// Copyright 2024-2026, Amlal El Mahrouss (amlal@nekernel.org) // Licensed under the Apache License, Version 2.0 (see LICENSE file) // Official repository: https://github.com/ne-foss-org/nekernel #ifndef NEKIT_STREAM_H #define NEKIT_STREAM_H +#include <CompilerKit/CompilerKit.h> #include <NeKit/Config.h> #include <NeKit/Ref.h> namespace Kernel { + template <typename StreamTrait, typename Kind> class Stream final { public: explicit Stream(Ref<Stream> ref) : fStream(ref) {} - ~Stream() = default; - Stream& operator=(const Stream&) = default; - Stream(const Stream&) = default; + NE_COPY_DEFAULT(Stream) template <typename Data> friend Stream<StreamTrait, Kind>& operator>>(Stream<StreamTrait, Kind>& Ks, Ref<Data>& Buf) { @@ -27,8 +27,8 @@ class Stream final { template <typename Data> friend Stream<StreamTrait, Kind>& operator<<(Stream<StreamTrait, Kind>& Ks, Ref<Data>& Buf) { + *Ks = Ks.fStream->Out(Buf.Leak()); Ks.fKind = Buf; - Ks.fStream->Out(Buf.Leak()); return *Ks; } @@ -40,6 +40,13 @@ class Stream final { Ref<StreamTrait> fStream; Ref<Kind> fKind; }; + +template <class ST, class Kind> +using UnbufferedStream = Stream<ST, Kind>; + +template <class BST, class BKind> +using BufferedStream = Stream<BST, BKind>; + } // namespace Kernel #endif |
