NeKernel dev
Loading...
Searching...
No Matches
Pair.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#pragma once
8
10#include <NeKit/Config.h>
11#include <NeKit/ErrorOr.h>
12
13namespace Kernel {
14template <typename T1, typename T2>
15class Pair;
16
17class PairBuilder;
18
19template <typename T1, typename T2>
20class Pair final {
21 T1 fFirst{nullptr};
22 T2 fSecond{nullptr};
23
25
26 public:
27 explicit Pair() = default;
28 ~Pair() = default;
29
31
32 T1& First() { return fFirst; }
33 T2& Second() { return fSecond; }
34
35 const T1& First() const { return *fFirst; }
36 const T2& Second() const { return *fSecond; }
37
38 private:
39 Pair(T1 first, T2 second) : fFirst(first), fSecond(second) {}
40};
41
42class PairBuilder final {
43 template <typename T1, typename T2>
44 STATIC Pair<T1, T2> Construct(T1 first, T2 second) {
45 return Pair(first, second);
46 }
47};
48
49template <typename T1, typename T2>
51} // namespace Kernel
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
#define STATIC
ErrorOr class for error handling.
Definition ErrorOr.h:22
Definition Pair.h:42
STATIC Pair< T1, T2 > Construct(T1 first, T2 second)
Definition Pair.h:44
Definition Pair.h:20
T2 & Second()
Definition Pair.h:33
Pair()=default
T2 fSecond
Definition Pair.h:22
T1 fFirst
Definition Pair.h:21
~Pair()=default
const T2 & Second() const
Definition Pair.h:36
T1 & First()
Definition Pair.h:32
const T1 & First() const
Definition Pair.h:35
Pair(T1 first, T2 second)
Definition Pair.h:39
friend PairBuilder
Definition Pair.h:24
UPS inline definitions.
Definition Device.h:12
ErrorOr< Pair< T1, T2 > > PairOr
Definition Pair.h:50