/* ------------------------------------------- Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license. ------------------------------------------- */ #pragma once #include #include #include namespace Kernel { template class Array final { public: explicit Array() = default; ~Array() = default; Array& operator=(const Array&) = default; Array(const Array&) = default; T& operator[](SizeT at) { return fArray[at]; } Boolean Empty() { return this->Count() > 0; } SizeT Capacity() { return N; } SizeT Count() { const static SizeT kArrCnt = N; return kArrCnt; // avoid constexpr error. } const T* CData() { return fArray; } operator bool() { return !Empty(); } private: T fArray[N]; }; template auto make_list(ValueType val) { return Array{val}; } } // namespace Kernel