#pragma once #include "Scaleform/A/Allocator.h" #include "Scaleform/S/StatBasicValues.h" namespace Scaleform { class MemoryHeap; class ArrayDefaultPolicy { public: ~ArrayDefaultPolicy() noexcept {} // members std::size_t capacity; // 0 }; static_assert(sizeof(ArrayDefaultPolicy) == 0x8); template class ArrayConstPolicy { public: ~ArrayConstPolicy() noexcept {} // members std::size_t capacity; // 0 }; static_assert(sizeof(ArrayConstPolicy<>) == 0x8); template class ArrayDataBase { public: // members T* data; // 00 std::size_t size; // 08 SizePolicy policy; // 10 }; static_assert(sizeof(ArrayDataBase) == 0x18); template class ArrayData : public ArrayDataBase { public: }; static_assert(sizeof(ArrayData) == 0x18); template class ArrayDataDH : ArrayDataBase { public: // members const MemoryHeap* pHeap; }; static_assert(sizeof(ArrayDataDH) == 0x20); template class ArrayDataCC : public ArrayDataBase { public: T defaultValue; }; static_assert(sizeof(ArrayDataCC) == 0x20); template class ArrayBase { public: // members T data; // 00 }; static_assert(sizeof(ArrayBase) == 0x08); template class Array : public ArrayBase, SizePolicy>> { public: }; static_assert(sizeof(Array) == 0x18); template class ArrayLH : public ArrayBase, SizePolicy>> { public: }; static_assert(sizeof(ArrayLH) == 0x18); template class ArrayDH : public ArrayBase, SizePolicy>> { public: }; static_assert(sizeof(ArrayDH) == 0x20); template class ArrayCC : public ArrayBase, SizePolicy>> { public: }; static_assert(sizeof(ArrayCC) == 0x20); template class ArrayPOD : public ArrayBase, SizePolicy>> { public: }; static_assert(sizeof(ArrayPOD) == 0x18); }