Program Listing for File semaphore.hpp

Return to documentation for file (inexor/vulkan-renderer/wrapper/semaphore.hpp)

#pragma once

#include <volk.h>

#include <string>

namespace inexor::vulkan_renderer::wrapper {

// Forward declaration
class Device;

class Semaphore {
    const Device &m_device;
    VkSemaphore m_semaphore{VK_NULL_HANDLE};
    std::string m_name;

public:
    Semaphore(const Device &device, const std::string &name);
    Semaphore(const Semaphore &) = delete;
    Semaphore(Semaphore &&) noexcept;
    ~Semaphore();

    Semaphore &operator=(const Semaphore &) = delete;
    Semaphore &operator=(Semaphore &&) = delete;

    [[nodiscard]] const VkSemaphore *semaphore() const {
        return &m_semaphore;
    }
};

} // namespace inexor::vulkan_renderer::wrapper