diff --git a/util/custom_allocator.hpp b/util/custom_allocator.hpp index 9eacd91..78be093 100644 --- a/util/custom_allocator.hpp +++ b/util/custom_allocator.hpp @@ -38,6 +38,15 @@ namespace util template class deleter; +/** + * @brief Wrapper for unique_ptr. + * + * This is a wrapper for unique_ptr that can be used to construct/destroy objects using the allocators in + * VkAllocationCallbacks. This smart pointer contains a full copy of the VkAllocationCallbacks, so its size is + * considerably larger than sizeof(void*). + * + * allocator::make_unique is provided to facilitate creating instances of this object. + */ template using unique_ptr = std::unique_ptr>; @@ -232,6 +241,10 @@ void allocator::destroy(size_t num_objects, T *objects) const noexcept allocator.deallocate(objects, num_objects); } +/** + * @brief Class deleter is used to free the resource managed by the util::unique_ptr. Uses the passed in allocator's + * destroy method. + */ template class deleter { @@ -249,6 +262,9 @@ private: allocator m_allocator; }; +/** + * @brief Creates a util::unique_ptr object using the allocator for the deleter. + */ template util::unique_ptr allocator::make_unique(Args &&...args) const noexcept {