Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
Gray::cHandlePtr< _TYPE_HAND > Class Template Reference

#include <cHandlePtr.h>

Inheritance diagram for Gray::cHandlePtr< _TYPE_HAND >:
Gray::cNonCopyable

Public Member Functions

 cHandlePtr (_TYPE_HAND h=nullptr) noexcept
 
 ~cHandlePtr ()
 
bool isValidHandle () const noexcept
 
 operator _TYPE_HAND () const noexcept
 
_TYPE_HAND operator-> () const noexcept
 
_TYPE_HAND get_Handle () const noexcept
 
_TYPE_HAND & ref_Handle () noexcept
 
void CloseHandle ()
 
void AttachHandle (_TYPE_HAND h)
 
_TYPE_HAND DetachHandle () noexcept
 

Static Public Member Functions

static void CloseHandle (_TYPE_HAND h)
 MUST Implement versions of this for each _TYPE_HAND. More...
 

Protected Member Functions

void CloseHandleLast ()
 
- Protected Member Functions inherited from Gray::cNonCopyable
 cNonCopyable () noexcept
 Force the use of Factory creation via protected constructor. More...
 
 ~cNonCopyable () noexcept
 

Detailed Description

template<typename _TYPE_HAND = void*>
class Gray::cHandlePtr< _TYPE_HAND >

Generic handle/pointer that requires an open/close operation. The underlying type is a pointer more or less. Assumes handle has been declared as a pointer type with DECLARE_HANDLE() and STRICT or similar.

Note
NOT the same as cOSHandle. Might be GUI or User handle. NOT _WIN32 = CloseHandle(HANDLE).
this can't be used with handles that don't declare a type using DECLARE_HANDLE. e.g. HCERTSTORE. e.g. _WIN32 types RegCloseKey(HKEY), SC_HANDLE, HDESK, HWINSTA, FreeLibrary(HMODULE), UnhookWindowsHookEx(HHOOK) _WIN32 http://msdn.microsoft.com/en-us/library/ms724515(VS.85).aspx

Constructor & Destructor Documentation

◆ cHandlePtr()

template<typename _TYPE_HAND = void*>
Gray::cHandlePtr< _TYPE_HAND >::cHandlePtr ( _TYPE_HAND  h = nullptr)
inlineexplicitnoexcept

◆ ~cHandlePtr()

template<typename _TYPE_HAND = void*>
Gray::cHandlePtr< _TYPE_HAND >::~cHandlePtr ( )
inline

Member Function Documentation

◆ AttachHandle()

template<typename _TYPE_HAND = void*>
void Gray::cHandlePtr< _TYPE_HAND >::AttachHandle ( _TYPE_HAND  h)
inline

◆ CloseHandle() [1/2]

template<typename _TYPE_HAND = void*>
void Gray::cHandlePtr< _TYPE_HAND >::CloseHandle ( )
inline

◆ CloseHandle() [2/2]

template<typename _TYPE_HAND = void*>
static void Gray::cHandlePtr< _TYPE_HAND >::CloseHandle ( _TYPE_HAND  h)
inlinestatic

MUST Implement versions of this for each _TYPE_HAND.

◆ CloseHandleLast()

template<typename _TYPE_HAND = void*>
void Gray::cHandlePtr< _TYPE_HAND >::CloseHandleLast ( )
inlineprotected

Assume destruction or my caller will clear m_h

◆ DetachHandle()

template<typename _TYPE_HAND = void*>
_TYPE_HAND Gray::cHandlePtr< _TYPE_HAND >::DetachHandle ( )
inlinenoexcept

◆ get_Handle()

template<typename _TYPE_HAND = void*>
_TYPE_HAND Gray::cHandlePtr< _TYPE_HAND >::get_Handle ( ) const
inlinenoexcept

◆ isValidHandle()

template<typename _TYPE_HAND = void*>
bool Gray::cHandlePtr< _TYPE_HAND >::isValidHandle ( ) const
inlinenoexcept

◆ operator _TYPE_HAND()

template<typename _TYPE_HAND = void*>
Gray::cHandlePtr< _TYPE_HAND >::operator _TYPE_HAND ( ) const
inlinenoexcept

◆ operator->()

template<typename _TYPE_HAND = void*>
_TYPE_HAND Gray::cHandlePtr< _TYPE_HAND >::operator-> ( ) const
inlinenoexcept

◆ ref_Handle()

template<typename _TYPE_HAND = void*>
_TYPE_HAND& Gray::cHandlePtr< _TYPE_HAND >::ref_Handle ( )
inlinenoexcept

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