@@ -36,74 +36,80 @@ template <typename WebGPUObjectType, typename WebGPUObjectDeleter>
3636class WebGPUObjectWrapper
3737{
3838public:
39- WebGPUObjectWrapper () :
40- m_ObjectHandle{}, m_ObjectDeleter{} {}
39+ WebGPUObjectWrapper ()
40+ {}
4141
4242 ~WebGPUObjectWrapper ()
4343 {
44- if (m_ObjectHandle )
45- m_ObjectDeleter (m_ObjectHandle );
44+ if (m_Handle )
45+ m_Deleter (m_Handle );
4646 }
4747
4848 explicit WebGPUObjectWrapper (WebGPUObjectType ObjectHandle, WebGPUObjectDeleter ObjectDeleter = WebGPUObjectDeleter{}) :
49- m_ObjectHandle(ObjectHandle), m_ObjectDeleter(ObjectDeleter) {}
49+ m_Handle{ObjectHandle},
50+ m_Deleter{ObjectDeleter}
51+ {}
5052
5153 WebGPUObjectWrapper (const WebGPUObjectWrapper&) = delete ;
5254
5355 WebGPUObjectWrapper& operator =(const WebGPUObjectWrapper&) = delete ;
5456
5557 WebGPUObjectWrapper (WebGPUObjectWrapper&& RHS) noexcept :
56- m_ObjectHandle (RHS.Release()), m_ObjectDeleter(std::move(RHS.m_ObjectDeleter))
58+ m_Handle{RHS.Detach ()},
59+ m_Deleter{std::move (RHS.m_Deleter )}
5760 {
5861 }
5962
6063 WebGPUObjectWrapper& operator =(WebGPUObjectWrapper&& RHS) noexcept
6164 {
62- Reset (RHS.Release ());
63- m_ObjectDeleter = std::move (RHS.m_ObjectDeleter );
65+ if (this == &RHS)
66+ return *this ;
67+
68+ Reset (RHS.Detach ());
69+ m_Deleter = std::move (RHS.m_Deleter );
6470 return *this ;
6571 }
6672
6773 const WebGPUObjectType& Get () const
6874 {
69- return m_ObjectHandle ;
75+ return m_Handle ;
7076 }
7177
7278 WebGPUObjectType& Get ()
7379 {
74- return m_ObjectHandle ;
80+ return m_Handle ;
7581 }
7682
7783 operator WebGPUObjectType () const
7884 {
79- return m_ObjectHandle ;
85+ return m_Handle ;
8086 }
8187
8288 void Reset (WebGPUObjectType Handle = nullptr )
8389 {
84- if (m_ObjectHandle != Handle)
90+ if (m_Handle != Handle)
8591 {
86- if (m_ObjectHandle )
87- m_ObjectDeleter (m_ObjectHandle );
88- m_ObjectHandle = Handle;
92+ if (m_Handle )
93+ m_Deleter (m_Handle );
94+ m_Handle = Handle;
8995 }
9096 }
9197
92- WebGPUObjectType Release ()
98+ WebGPUObjectType Detach ()
9399 {
94- WebGPUObjectType ReleaseHandle = m_ObjectHandle ;
95- m_ObjectHandle = nullptr ;
96- return ReleaseHandle ;
100+ WebGPUObjectType Handle = m_Handle ;
101+ m_Handle = nullptr ;
102+ return Handle ;
97103 }
98104
99105 explicit operator bool () const
100106 {
101- return m_ObjectHandle != nullptr ;
107+ return m_Handle != nullptr ;
102108 }
103109
104110private:
105- WebGPUObjectType m_ObjectHandle ;
106- WebGPUObjectDeleter m_ObjectDeleter ;
111+ WebGPUObjectType m_Handle{} ;
112+ WebGPUObjectDeleter m_Deleter{} ;
107113};
108114
109115
0 commit comments