diff --git a/include/RED4ext/DynArray.hpp b/include/RED4ext/DynArray.hpp index 40524c2dd..c1019a552 100644 --- a/include/RED4ext/DynArray.hpp +++ b/include/RED4ext/DynArray.hpp @@ -277,6 +277,31 @@ struct DynArray return *(entries + size - 1); } + [[nodiscard]] T* Data() noexcept + { + return entries; + } + + [[nodiscard]] const T* Data() const noexcept + { + return entries; + } + + [[nodiscard]] uint32_t Capacity() const noexcept + { + return capacity; + } + + [[nodiscard]] uint32_t Size() const noexcept + { + return size; + } + + [[nodiscard]] bool IsEmpty() const noexcept + { + return size == 0; + } + T* entries; // 00 uint32_t capacity; // 08 uint32_t size; // 0C diff --git a/include/RED4ext/Span.hpp b/include/RED4ext/Span.hpp index 3f554af81..b4da71f29 100644 --- a/include/RED4ext/Span.hpp +++ b/include/RED4ext/Span.hpp @@ -29,7 +29,7 @@ struct Span constexpr operator bool() const noexcept { - return IsEmpty(); + return !IsEmpty(); } T& operator[](size_t aIndex) @@ -57,6 +57,21 @@ struct Span return endPtr - beginPtr; } + [[nodiscard]] inline T* Data() + { + return beginPtr; + } + + [[nodiscard]] inline const T* Data() const + { + return beginPtr; + } + + [[nodiscard]] inline auto Size() const + { + return endPtr - beginPtr; + } + T* beginPtr; // 00 T* endPtr; // 08 };