SDL  2.0
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch > Class Template Reference

#include <vulkan.hpp>

+ Inheritance diagram for VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >:
+ Collaboration diagram for VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >:

Public Member Functions

 UniqueHandle (Type const &value=Type(), Deleter const &deleter=Deleter())
 
 UniqueHandle (UniqueHandle const &)=delete
 
 UniqueHandle (UniqueHandle &&other)
 
 ~UniqueHandle ()
 
UniqueHandleoperator= (UniqueHandle const &)=delete
 
UniqueHandleoperator= (UniqueHandle &&other)
 
 operator bool () const
 
Type const * operator-> () const
 
Typeoperator-> ()
 
Type const & operator* () const
 
Typeoperator* ()
 
const Typeget () const
 
Typeget ()
 
void reset (Type const &value=Type())
 
Type release ()
 
void swap (UniqueHandle< Type, Dispatch > &rhs)
 

Private Types

using Deleter = typename UniqueHandleTraits< Type, Dispatch >::deleter
 

Private Attributes

Type m_value
 

Detailed Description

template<typename Type, typename Dispatch>
class VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >

Definition at line 382 of file vulkan.hpp.

Member Typedef Documentation

◆ Deleter

template<typename Type , typename Dispatch >
using VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::Deleter = typename UniqueHandleTraits<Type,Dispatch>::deleter
private

Definition at line 385 of file vulkan.hpp.

Constructor & Destructor Documentation

◆ UniqueHandle() [1/3]

template<typename Type , typename Dispatch >
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::UniqueHandle ( Type const &  value = Type(),
Deleter const &  deleter = Deleter() 
)
inlineexplicit

Definition at line 387 of file vulkan.hpp.

388  : Deleter( deleter)
389  , m_value( value )
390  {}

◆ UniqueHandle() [2/3]

template<typename Type , typename Dispatch >
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::UniqueHandle ( UniqueHandle< Type, Dispatch > const &  )
delete

◆ UniqueHandle() [3/3]

template<typename Type , typename Dispatch >
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::UniqueHandle ( UniqueHandle< Type, Dispatch > &&  other)
inline

Definition at line 394 of file vulkan.hpp.

395  : Deleter( std::move( static_cast<Deleter&>( other ) ) )
396  , m_value( other.release() )
397  {}

◆ ~UniqueHandle()

template<typename Type , typename Dispatch >
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::~UniqueHandle ( )
inline

Definition at line 399 of file vulkan.hpp.

400  {
401  if ( m_value ) this->destroy( m_value );
402  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

Member Function Documentation

◆ get() [1/2]

template<typename Type , typename Dispatch >
Type& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::get ( )
inline

Definition at line 443 of file vulkan.hpp.

444  {
445  return m_value;
446  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ get() [2/2]

template<typename Type , typename Dispatch >
const Type& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::get ( ) const
inline

Definition at line 438 of file vulkan.hpp.

439  {
440  return m_value;
441  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator bool()

template<typename Type , typename Dispatch >
VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator bool ( ) const
inlineexplicit

Definition at line 413 of file vulkan.hpp.

414  {
415  return m_value.operator bool();
416  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator*() [1/2]

template<typename Type , typename Dispatch >
Type& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator* ( )
inline

Definition at line 433 of file vulkan.hpp.

434  {
435  return m_value;
436  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator*() [2/2]

template<typename Type , typename Dispatch >
Type const& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator* ( ) const
inline

Definition at line 428 of file vulkan.hpp.

429  {
430  return m_value;
431  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator->() [1/2]

template<typename Type , typename Dispatch >
Type* VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator-> ( )
inline

Definition at line 423 of file vulkan.hpp.

424  {
425  return &m_value;
426  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator->() [2/2]

template<typename Type , typename Dispatch >
Type const* VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator-> ( ) const
inline

Definition at line 418 of file vulkan.hpp.

419  {
420  return &m_value;
421  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ operator=() [1/2]

template<typename Type , typename Dispatch >
UniqueHandle& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator= ( UniqueHandle< Type, Dispatch > &&  other)
inline

Definition at line 406 of file vulkan.hpp.

407  {
408  reset( other.release() );
409  *static_cast<Deleter*>(this) = std::move( static_cast<Deleter&>(other) );
410  return *this;
411  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::reset().

◆ operator=() [2/2]

template<typename Type , typename Dispatch >
UniqueHandle& VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator= ( UniqueHandle< Type, Dispatch > const &  )
delete

◆ release()

template<typename Type , typename Dispatch >
Type VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::release ( )
inline

Definition at line 457 of file vulkan.hpp.

458  {
459  Type value = m_value;
460  m_value = nullptr;
461  return value;
462  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

◆ reset()

template<typename Type , typename Dispatch >
void VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::reset ( Type const &  value = Type())
inline

Definition at line 448 of file vulkan.hpp.

449  {
450  if ( m_value != value )
451  {
452  if ( m_value ) this->destroy( m_value );
453  m_value = value;
454  }
455  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value.

Referenced by VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::operator=().

◆ swap()

template<typename Type , typename Dispatch >
void VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::swap ( UniqueHandle< Type, Dispatch > &  rhs)
inline

Definition at line 464 of file vulkan.hpp.

465  {
466  std::swap(m_value, rhs.m_value);
467  std::swap(static_cast<Deleter&>(*this), static_cast<Deleter&>(rhs));
468  }

References VULKAN_HPP_NAMESPACE::UniqueHandle< Type, Dispatch >::m_value, and VULKAN_HPP_NAMESPACE::swap().

Referenced by VULKAN_HPP_NAMESPACE::swap().

Field Documentation

◆ m_value


The documentation for this class was generated from the following file:
VULKAN_HPP_NAMESPACE::UniqueHandle::m_value
Type m_value
Definition: vulkan.hpp:471
Type
Type
Definition: SDL_windowsjoystick_c.h:46
VULKAN_HPP_NAMESPACE::UniqueHandle::reset
void reset(Type const &value=Type())
Definition: vulkan.hpp:448
VULKAN_HPP_NAMESPACE::swap
VULKAN_HPP_INLINE void swap(UniqueHandle< Type, Dispatch > &lhs, UniqueHandle< Type, Dispatch > &rhs)
Definition: vulkan.hpp:475
value
GLsizei const GLfloat * value
Definition: SDL_opengl_glext.h:698
VULKAN_HPP_NAMESPACE::UniqueHandle::Deleter
typename UniqueHandleTraits< Type, Dispatch >::deleter Deleter
Definition: vulkan.hpp:385