NeKernel dev
Loading...
Searching...
No Matches
Array.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 T, SizeT N>
15class Array final {
16 public:
17 explicit Array() = default;
18 ~Array() = default;
19
20 Array& operator=(const Array&) = default;
21 Array(const Array&) = default;
22
23 T& operator[](SizeT at) { return fArray[at]; }
24
25 Boolean Empty() { return this->Count() > 0; }
26
27 SizeT Capacity() { return N; }
28
30 return N; // avoid constexpr error.
31 }
32
33 const T* CData() { return fArray; }
34
35 operator bool() { return !Empty(); }
36
37 private:
38 T fArray[N];
39};
40
41template <typename ValueType>
42auto make_list(ValueType val) {
43 return Array<ValueType, ARRAY_SIZE(val)>{val};
44}
45} // namespace Kernel
#define ARRAY_SIZE(a)
Definition Array.h:15
Array(const Array &)=default
T & operator[](SizeT at)
Definition Array.h:23
const T * CData()
Definition Array.h:33
Array & operator=(const Array &)=default
Property fArray[N]
Definition Array.h:38
SizeT Count()
Definition Array.h:29
SizeT Capacity()
Definition Array.h:27
Array()=default
Boolean Empty()
Definition Array.h:25
~Array()=default
UPS inline definitions.
Definition Device.h:12
auto make_list(ValueType val)
Definition Array.h:42
__SIZE_TYPE__ SizeT
Definition Config.h:60
bool Boolean
Definition Config.h:49