Lugdunum  0.1.0
Semaphore.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
6 namespace lug {
7 namespace Graphics {
8 namespace Vulkan {
9 namespace API {
10 
11 namespace Builder {
12 class Semaphore;
13 } // Builder
14 
15 class Device;
16 
18  friend class Builder::Semaphore;
19 
20 public:
21  Semaphore() = default;
22 
23  Semaphore(const Semaphore&) = delete;
24  Semaphore(Semaphore&& semaphore);
25 
26  Semaphore& operator=(const Semaphore&) = delete;
27  Semaphore& operator=(Semaphore&& semaphore);
28 
29  ~Semaphore();
30 
31  explicit operator VkSemaphore() const {
32  return _semaphore;
33  }
34 
35  void destroy();
36 
37 private:
38  explicit Semaphore(VkSemaphore semaphore, const Device* device);
39 
40 private:
41  VkSemaphore _semaphore{VK_NULL_HANDLE};
42  const Device* _device{nullptr};
43 };
44 
45 } // API
46 } // Vulkan
47 } // Graphics
48 } // lug
#define LUG_GRAPHICS_API
Definition: Export.hpp:11