diff options
| author | Rémi Verschelde <rverschelde@gmail.com> | 2023-01-30 12:32:07 +0100 |
|---|---|---|
| committer | Rémi Verschelde <rverschelde@gmail.com> | 2023-01-30 12:32:07 +0100 |
| commit | c1d4fb2b68fe592442c288e493956a92ad39e8ca (patch) | |
| tree | a2ca696b1cb73e8dd69afa78863d67a5eb8a341f /include/godot_cpp | |
| parent | f59fd96ab4a71ee541bbb6a29417d8b39d31f8ea (diff) | |
| parent | a8be6aa8dd980bcce64b55d042e4558b5a91798f (diff) | |
| download | redot-cpp-c1d4fb2b68fe592442c288e493956a92ad39e8ca.tar.gz | |
Merge pull request #1023 from mashumafi/fix-alloc-order
Move DefaultTypedAllocator after memdelete
Diffstat (limited to 'include/godot_cpp')
| -rw-r--r-- | include/godot_cpp/core/memory.hpp | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/include/godot_cpp/core/memory.hpp b/include/godot_cpp/core/memory.hpp index d17e05e..25f87ec 100644 --- a/include/godot_cpp/core/memory.hpp +++ b/include/godot_cpp/core/memory.hpp @@ -92,20 +92,6 @@ struct Comparator { _ALWAYS_INLINE_ bool operator()(const T &p_a, const T &p_b) const { return (p_a < p_b); } }; -class DefaultAllocator { -public: - _ALWAYS_INLINE_ static void *alloc(size_t p_memory) { return Memory::alloc_static(p_memory); } - _ALWAYS_INLINE_ static void free(void *p_ptr) { Memory::free_static(p_ptr); } -}; - -template <class T> -class DefaultTypedAllocator { -public: - template <class... Args> - _ALWAYS_INLINE_ T *new_allocation(const Args &&...p_args) { return memnew(T(p_args...)); } - _ALWAYS_INLINE_ void delete_allocation(T *p_allocation) { memdelete(p_allocation); } -}; - template <class T> void memdelete(T *p_class, typename std::enable_if<!std::is_base_of_v<godot::Wrapped, T>>::type * = nullptr) { if (!std::is_trivially_destructible<T>::value) { @@ -129,6 +115,20 @@ void memdelete_allocator(T *p_class) { A::free(p_class); } +class DefaultAllocator { +public: + _ALWAYS_INLINE_ static void *alloc(size_t p_memory) { return Memory::alloc_static(p_memory); } + _ALWAYS_INLINE_ static void free(void *p_ptr) { Memory::free_static(p_ptr); } +}; + +template <class T> +class DefaultTypedAllocator { +public: + template <class... Args> + _ALWAYS_INLINE_ T *new_allocation(const Args &&...p_args) { return memnew(T(p_args...)); } + _ALWAYS_INLINE_ void delete_allocation(T *p_allocation) { memdelete(p_allocation); } +}; + #define memnew_arr(m_class, m_count) memnew_arr_template<m_class>(m_count) template <typename T> |
