
.. _program_listing_file_Src_GraphicsEngineVulkan_vulkan_base_VulkanBuffer.ixx:

Program Listing for File VulkanBuffer.ixx
=========================================

|exhale_lsh| :ref:`Return to documentation for file <file_Src_GraphicsEngineVulkan_vulkan_base_VulkanBuffer.ixx>` (``Src/GraphicsEngineVulkan/vulkan_base/VulkanBuffer.ixx``)

.. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS

.. code-block:: cpp

   module;
   #include <vulkan/vulkan.hpp>
   
   export module kataglyphis.vulkan.buffer;
   
   import kataglyphis.vulkan.device;
   
   export namespace Kataglyphis {
   class VulkanBuffer
   {
     public:
       VulkanBuffer();
       VulkanBuffer(const VulkanBuffer &) = delete;
       VulkanBuffer &operator=(const VulkanBuffer &) = delete;
       VulkanBuffer(VulkanBuffer &&other) noexcept;
       VulkanBuffer &operator=(VulkanBuffer &&other) noexcept;
   
       void create(VulkanDevice *vulkanDevice,
         vk::DeviceSize buffer_size,
         vk::BufferUsageFlags buffer_usage_flags,
         vk::MemoryPropertyFlags buffer_propertiy_flags,
         vk::MemoryAllocateFlags buffer_allocate_flags = {});
   
       void cleanUp();
   
       vk::Buffer &getBuffer() { return buffer; };
       vk::DeviceMemory &getBufferMemory() { return bufferMemory; };
   
       ~VulkanBuffer();
   
     private:
       VulkanDevice *device{ nullptr };
   
       vk::Buffer buffer{};
       vk::DeviceMemory bufferMemory{};
   
       bool created{ false };
   };
   }// namespace Kataglyphis
