NeKernel dev
Loading...
Searching...
No Matches
ArrayList.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
9#include <NeKit/Config.h>
10
11namespace Kernel {
12template <typename T>
13class ArrayList final {
14 public:
15 explicit ArrayList(T* list, SizeT length) : fList(reinterpret_cast<T>(list)), fLen(length) {}
16
17 ~ArrayList() = default;
18
19 ArrayList& operator=(const ArrayList&) = default;
20 ArrayList(const ArrayList&) = default;
21
22 T* Data() { return fList; }
23
24 const T* CData() { return fList; }
25
26 T& operator[](SizeT index) const {
27 MUST_PASS(index < this->Count());
28 return fList[index];
29 }
30
31 explicit operator bool() { return fList; }
32
33 SizeT Count() const { return fLen; }
34
35 private:
36 T* fList{nullptr};
38};
39
40template <typename ValueType>
42 return ArrayList<ValueType>{val};
43}
44} // namespace Kernel
#define MUST_PASS(EXPR)
Definition KernelPanic.h:37
Definition ArrayList.h:13
T & operator[](SizeT index) const
Definition ArrayList.h:26
T * fList
Definition ArrayList.h:36
SizeT Count() const
Definition ArrayList.h:33
~ArrayList()=default
ArrayList & operator=(const ArrayList &)=default
ArrayList(T *list, SizeT length)
Definition ArrayList.h:15
ArrayList(const ArrayList &)=default
const T * CData()
Definition ArrayList.h:24
T * Data()
Definition ArrayList.h:22
SizeT fLen
Definition ArrayList.h:37
UPS inline definitions.
Definition Device.h:12
auto make_list(ValueType val)
Definition Array.h:42
__SIZE_TYPE__ SizeT
Definition Config.h:60