/* ------------------------------------------- Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved. ------------------------------------------- */ #pragma once #include namespace Kernel { template class ArrayList final { public: explicit ArrayList(T* list, SizeT length) : fList(reinterpret_cast(list)) {} ~ArrayList() = default; ArrayList& operator=(const ArrayList&) = default; ArrayList(const ArrayList&) = default; T* Data() { return fList; } const T* CData() { return fList; } T& operator[](SizeT index) const { MUST_PASS(index < this->Count()); return fList[index]; } operator bool() { return fList; } SizeT Count() const { return fLen; } private: T* fList{nullptr}; SizeT fLen{0}; }; template ArrayList make_list(ValueType val) { return ArrayList{val}; } } // namespace Kernel