summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/NeKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2026-03-07 11:33:23 +0100
committerGitHub <noreply@github.com>2026-03-07 11:33:23 +0100
commitb7d4f9943ca6d2561a31fc212b8e074e4984b850 (patch)
treeeac88db0b56afbe6d62f4692855e38ca5e2b652c /src/kernel/NeKit
parent1fc1b9c7e89d4691c82cc434d43bbfdc221cb5b1 (diff)
parent3edb3cb672aa5008225a40020bbc707730897cab (diff)
Merge pull request #127 from ne-foss-org/buffered-stream-requirements
[FEAT] Buffered and Unbuffered stream types.
Diffstat (limited to 'src/kernel/NeKit')
-rw-r--r--src/kernel/NeKit/Stream.h17
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