diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-10-26 16:01:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-26 16:01:12 +0100 |
| commit | 36269e57831e560df6a0da9c9d02c00671b0163d (patch) | |
| tree | 69f6a0c6f08ef5ef2f6fcbb7302537dbce222e6e /dev/kernel/NeKit/Pair.h | |
| parent | 2117a9b0f4b84f5bd6c99566bcf5849a64104467 (diff) | |
| parent | b6ce6640afaf6c1cc6ad274f3053b2e218a49554 (diff) | |
Merge pull request #68 from nekernel-org/dev
NeKernel: v0.0.6e1
Diffstat (limited to 'dev/kernel/NeKit/Pair.h')
| -rw-r--r-- | dev/kernel/NeKit/Pair.h | 38 |
1 files changed, 38 insertions, 0 deletions
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 |
