Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
Queue.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "utils/webgpu.hpp"
4
5namespace Graphic::Resource {
6class Queue {
7 public:
8 explicit Queue(wgpu::Queue wgpuQueue_) : wgpuQueue(wgpuQueue_) {}
10 {
11 if (wgpuQueue)
12 {
13 wgpuQueue.release();
14 wgpuQueue = nullptr;
15 }
16 }
17
18 Queue(Queue &other) = delete;
19 Queue &operator=(Queue &other) = delete;
20
21 // @note While using && ctor, you're destroying the previous Queue and will be invalid
22 Queue(Queue &&other) noexcept : wgpuQueue(other.wgpuQueue) { other.wgpuQueue = nullptr; }
23
24 // @note While using && assignement, you're destroying the previous Queue and will be invalid
25 Queue &operator=(Queue &&other) noexcept
26 {
27 if (this != &other)
28 {
29 if (wgpuQueue)
30 {
31 wgpuQueue.release();
32 }
33 wgpuQueue = std::move(other.wgpuQueue);
34 other.wgpuQueue = nullptr;
35 }
36 return *this;
37 }
38
39 wgpu::Queue &operator*(void) { return wgpuQueue; };
40 wgpu::Queue *operator->(void) { return &wgpuQueue; };
41
42 const wgpu::Queue &operator*(void) const { return wgpuQueue; };
43 const wgpu::Queue *operator->(void) const { return &wgpuQueue; };
44
45 private:
46 // @note We will assume that Queue is not null all the time
47 wgpu::Queue wgpuQueue = nullptr;
48};
49} // namespace Graphic::Resource
wgpu::Queue & operator*(void)
Definition Queue.hpp:39
Queue & operator=(Queue &&other) noexcept
Definition Queue.hpp:25
Queue(Queue &&other) noexcept
Definition Queue.hpp:22
wgpu::Queue * operator->(void)
Definition Queue.hpp:40
Queue(Queue &other)=delete
Queue(wgpu::Queue wgpuQueue_)
Definition Queue.hpp:8
const wgpu::Queue & operator*(void) const
Definition Queue.hpp:42
Queue & operator=(Queue &other)=delete
const wgpu::Queue * operator->(void) const
Definition Queue.hpp:43
~Queue()
Definition Queue.hpp:9
wgpu::Queue wgpuQueue
Definition Queue.hpp:47
Definition Adapter.hpp:5