summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/NeKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-10-07 09:24:56 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-10-07 09:24:56 +0200
commit3b6a7e8c87f94391f92b55f20b9ba3e560ef280e (patch)
tree15fc04bff2ab6b07683dc1ea570aaf65dbce9fbb /dev/kernel/NeKit
parentabff64f38c988a5350cbeb243896c0ee30401058 (diff)
feat: kernel & libSystem: improvements and tweaks.
feat: docs: wip design of Launch. Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/NeKit')
-rw-r--r--dev/kernel/NeKit/ErrorOr.h2
-rw-r--r--dev/kernel/NeKit/Pair.h38
2 files changed, 39 insertions, 1 deletions
diff --git a/dev/kernel/NeKit/ErrorOr.h b/dev/kernel/NeKit/ErrorOr.h
index 09f0cad5..3351c65d 100644
--- a/dev/kernel/NeKit/ErrorOr.h
+++ b/dev/kernel/NeKit/ErrorOr.h
@@ -50,7 +50,7 @@ class ErrorOr final {
private:
Ref<T> mRef;
- ErrorT mId{0};
+ ErrorT mId{0};
};
using ErrorOrAny = ErrorOr<voidPtr>;
diff --git a/dev/kernel/NeKit/Pair.h b/dev/kernel/NeKit/Pair.h
index aeeeb8a2..61668f5a 100644
--- a/dev/kernel/NeKit/Pair.h
+++ b/dev/kernel/NeKit/Pair.h
@@ -6,8 +6,46 @@
#pragma once
+#include <CompilerKit/CompilerKit.h>
#include <NeKit/Defines.h>
+#include <NeKit/ErrorOr.h>
namespace Kernel {
+template <typename T1, typename T2>
class Pair;
+
+class PairBuilder;
+
+template <typename T1, typename T2>
+class Pair final {
+ T1 fFirst{nullptr};
+ T2 fSecond{nullptr};
+
+ friend PairBuilder;
+
+ public:
+ explicit Pair() = default;
+ ~Pair() = default;
+
+ NE_COPY_DEFAULT(Pair)
+
+ T1& First() { return fFirst; }
+ T2& Second() { return fSecond; }
+
+ const T1& First() const { return *fFirst; }
+ const T2& Second() const { return *fSecond; }
+
+ private:
+ Pair(T1 first, T2 second) : fFirst(first), fSecond(second) {}
+};
+
+class PairBuilder final {
+ template <typename T1, typename T2>
+ STATIC Pair<T1, T2> Construct(T1 first, T2 second) {
+ return Pair(first, second);
+ }
+};
+
+template <typename T1, typename T2>
+using PairOr = ErrorOr<Pair<T1, T2>>;
} // namespace Kernel