diff options
Diffstat (limited to 'dev/kernel/NewKit/ArrayList.h')
| -rw-r--r-- | dev/kernel/NewKit/ArrayList.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/dev/kernel/NewKit/ArrayList.h b/dev/kernel/NewKit/ArrayList.h new file mode 100644 index 00000000..06763b5a --- /dev/null +++ b/dev/kernel/NewKit/ArrayList.h @@ -0,0 +1,63 @@ +/* ------------------------------------------- + + Copyright (C) 2024-2025, Amlal EL Mahrouss, all rights reserved. + +------------------------------------------- */ + +#pragma once + +#include <NewKit/Defines.h> + +namespace NeOS +{ + template <typename T> + class ArrayList final + { + public: + explicit ArrayList(T* list, SizeT length) + : fList(reinterpret_cast<T>(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 + { + 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 <typename ValueType> + ArrayList<ValueType> make_list(ValueType val) + { + return ArrayList<ValueType>{val}; + } +} // namespace NeOS |
