diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-11-23 21:06:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-23 21:06:27 -0500 |
| commit | 23040fad647634c08697451fc22ee2ca999629c8 (patch) | |
| tree | 72888f88c7728c82f3f6df1f4f70591de15eab36 /src/kernel/NeKit/Pair.h | |
| parent | e5cc7351f0577b54c528fb827a7c7e6306c3e843 (diff) | |
| parent | 83d870e58457a1d335a1d9b9966a6a1887cc297b (diff) | |
Merge pull request #81 from nekernel-org/dev
feat! breaking changes on kernel sources.
Diffstat (limited to 'src/kernel/NeKit/Pair.h')
| -rw-r--r-- | src/kernel/NeKit/Pair.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/kernel/NeKit/Pair.h b/src/kernel/NeKit/Pair.h new file mode 100644 index 00000000..c8914ec6 --- /dev/null +++ b/src/kernel/NeKit/Pair.h @@ -0,0 +1,51 @@ +/* ======================================== + + Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. + +======================================== */ + +#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 |
