VTK  9.7.20260911
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn > Class Template Reference

#include <vtkWebGPUHandle.h>

Detailed Description

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
class vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >

Reference-counted owner of a WebGPU C API handle.

Template Parameters
Tthe raw handle type, e.g. WGPUBuffer
AddRefFnthe matching wgpu<Type>AddRef function
ReleaseFnthe matching wgpu<Type>Release function

Definition at line 65 of file vtkWebGPUHandle.h.

Public Member Functions

 Handle ()=default
 Handle (std::nullptr_t)
 A null handle.
 ~Handle ()
 Handle (const Handle &other)
 Handle (Handle &&other) noexcept
Handleoperator= (std::nullptr_t)
 Release whatever is held and become null.
Handleoperator= (Handle other) noexcept
void Reset ()
 Release the referenced object, if any, and become null.
Release ()
 Relinquish ownership to the caller, who becomes responsible for releasing the returned handle.
 operator bool () const
Get () const
 Access the underlying raw handle without transferring ownership.
 operator T () const &
 Access the underlying raw handle without transferring ownership.
 operator T () const &&=delete
 Deleted so that a temporary cannot silently decay to a raw handle.

Static Public Member Functions

static Handle Acquire (T raw)
 Adopt raw without adding a reference.
static Handle Reference (T raw)
 Take a new reference to raw, which stays owned by the caller.

Constructor & Destructor Documentation

◆ Handle() [1/4]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Handle ( )
default

◆ Handle() [2/4]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Handle ( std::nullptr_t )
inline

A null handle.

Unlike construction from a raw handle, nullptr carries no ownership question, so this one is allowed to be implicit.

Definition at line 74 of file vtkWebGPUHandle.h.

◆ ~Handle()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::~Handle ( )
inline

Definition at line 99 of file vtkWebGPUHandle.h.

◆ Handle() [3/4]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Handle ( const Handle< T, AddRefFn, ReleaseFn > & other)
inline

Definition at line 101 of file vtkWebGPUHandle.h.

◆ Handle() [4/4]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Handle ( Handle< T, AddRefFn, ReleaseFn > && other)
inlinenoexcept

Definition at line 110 of file vtkWebGPUHandle.h.

Member Function Documentation

◆ Acquire()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
Handle vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Acquire ( T raw)
inlinestatic

Adopt raw without adding a reference.

Use for handles returned by wgpu*Create* entry points, which hand back an owned reference.

Definition at line 80 of file vtkWebGPUHandle.h.

◆ Reference()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
Handle vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Reference ( T raw)
inlinestatic

Take a new reference to raw, which stays owned by the caller.

Definition at line 90 of file vtkWebGPUHandle.h.

◆ operator=() [1/2]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
Handle & vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::operator= ( std::nullptr_t )
inline

Release whatever is held and become null.

Definition at line 118 of file vtkWebGPUHandle.h.

◆ operator=() [2/2]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
Handle & vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::operator= ( Handle< T, AddRefFn, ReleaseFn > other)
inlinenoexcept

Definition at line 124 of file vtkWebGPUHandle.h.

◆ Reset()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
void vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Reset ( )
inline

Release the referenced object, if any, and become null.

Definition at line 135 of file vtkWebGPUHandle.h.

◆ Release()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
T vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Release ( )
inline

Relinquish ownership to the caller, who becomes responsible for releasing the returned handle.

This handle becomes null.

Definition at line 147 of file vtkWebGPUHandle.h.

◆ Get()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
T vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::Get ( ) const
inline

Access the underlying raw handle without transferring ownership.

The implicit conversion lets a Handle be passed straight to the C API.

Definition at line 154 of file vtkWebGPUHandle.h.

◆ operator T() [1/2]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::operator T ( ) const &
inline

Access the underlying raw handle without transferring ownership.

The implicit conversion lets a Handle be passed straight to the C API.

Definition at line 155 of file vtkWebGPUHandle.h.

◆ operator T() [2/2]

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::operator T ( ) const &&
delete

Deleted so that a temporary cannot silently decay to a raw handle.

Storing the result of Handle::Acquire(...) into a raw field would release the object at the end of the statement and leave the field dangling; bind the handle to a named variable that outlives the use, or call Get()/Release() to say explicitly which lifetime is intended.

◆ operator bool()

template<typename T, void(*)(T) AddRefFn, void(*)(T) ReleaseFn>
vtkWebGPU::Handle< T, AddRefFn, ReleaseFn >::operator bool ( ) const
inlineexplicit

Definition at line 167 of file vtkWebGPUHandle.h.


The documentation for this class was generated from the following file: