System Handles

Simplifies work with object handles of various type. More...

## Classes

class | winstd::handle< T, INVAL >
| Base abstract template class to support generic object handle keeping. More...
class | winstd::dplhandle< T, INVAL >
| Base abstract template class to support object handle keeping for objects that support handle duplication. More...

## Macros

#define | WINSTD_HANDLE_IMPL(C, INVAL)
| Implements default constructors and operators to prevent their auto-generation by compiler. More...
#define | WINSTD_DPLHANDLE_IMPL(C, INVAL)
| Implements default constructors and operators to prevent their auto-generation by compiler. More...

## Variables

static const T | winstd::handle< T, INVAL >::invalid = INVAL
| Invalid handle value.

## Detailed Description

Simplifies work with object handles of various type.

## Macro Definition Documentation

## WINSTD_DPLHANDLE_IMPL

#define WINSTD_DPLHANDLE_IMPL | ( |  | C,
|  |  | INVAL
| ) |  |

Value:
public: \
C ( ) noexcept { } \
C (_In_opt_ handle_type h) noexcept : dplhandle<handle_type, INVAL>( h ) { } \
C (_In_ const C &h) noexcept : dplhandle<handle_type, INVAL>(duplicate_internal(h.m_h)) { } \
C (_Inout_ C &&h) noexcept : dplhandle<handle_type, INVAL>(std::move (h )) { } \
C& operator=(_In_opt_ handle_type h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
C& operator=(_In_ const C &h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \
C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
private:

Implements default constructors and operators to prevent their auto-generation by compiler.

## WINSTD_HANDLE_IMPL

#define WINSTD_HANDLE_IMPL | ( |  | C,
|  |  | INVAL
| ) |  |

Value:
public: \
C ( ) noexcept { } \
C (_In_opt_ handle_type h) noexcept : handle<handle_type, INVAL>( h ) { } \
C (_Inout_ C &&h) noexcept : handle<handle_type, INVAL>(std::move(h)) { } \
C& operator=(_In_opt_ handle_type h) noexcept { handle<handle_type, INVAL>::operator=( h ); return *this; } \
C& operator=(_Inout_ C &&h) noexcept { handle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \
WINSTD_NONCOPYABLE(C)

Implements default constructors and operators to prevent their auto-generation by compiler.