/* ------------------------------------------- Copyright (C) 2024, Amlal EL Mahrouss, all rights reserved. ------------------------------------------- */ #pragma once #include namespace Kernel { template class ArrayList final { public: explicit ArrayList(T* list) : 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[](int index) const { return fList[index]; } operator bool() { return fList; } private: T* fList; friend class InitHelpers; }; template ArrayList make_list(ValueType val) { return ArrayList{val}; } } // namespace Kernel