# WinStd: winstd::dplhandle< T, INVAL > Class Template Reference

Loading...
Searching...
No Matches
winstd::dplhandle< T, INVAL > Class Template Referenceabstract
System Handles

Base abstract template class to support object handle keeping for objects that support trivial handle duplication. More...

`#include <WinStd/Common.h>`

Inheritance diagram for winstd::dplhandle< T, INVAL >:

## Public Member Functions

| dplhandle () noexcept
| Initializes a new class instance with the object handle set to INVAL.
| dplhandle (handle_type h) noexcept
| Initializes a new class instance with an already available object handle.
| dplhandle (const dplhandle< handle_type, INVAL > &h)
| Copy constructor.
| dplhandle (dplhandle< handle_type, INVAL > &&h) noexcept
| Move constructor.
dplhandle< handle_type, INVAL > & | operator= (handle_type h) noexcept
| Attaches already available object handle.
dplhandle< handle_type, INVAL > & | operator= (const dplhandle< handle_type, INVAL > &h) noexcept
| Duplicates the object.
dplhandle< handle_type, INVAL > & | operator= (dplhandle< handle_type, INVAL > &&h) noexcept
| Moves the object.
handle_type | duplicate () const
| Duplicates and returns a new object handle.
void | attach_duplicated (handle_type h)
| Duplicates an object handle and sets a new object handle.
Public Member Functions inherited from winstd::handle< T, INVAL >
| handle () noexcept
| Initializes a new class instance with the object handle set to INVAL.
| handle (handle_type h) noexcept
| Initializes a new class instance with an already available object handle.
| handle (handle< handle_type, INVAL > &&h) noexcept
| Move constructor.
handle< handle_type, INVAL > & | operator= (handle_type h) noexcept
| Attaches already available object handle.
handle< handle_type, INVAL > & | operator= (handle< handle_type, INVAL > &&h) noexcept
| Move assignment.
| operator handle_type () const
| Auto-typecasting operator.
handle_type *& | operator* () const
| Returns the object handle value when the object handle is a pointer to a value (class, struct, etc.).
handle_type * | operator& ()
| Returns the object handle reference.
handle_type | operator-> () const
| Provides object handle member access when the object handle is a pointer to a class or struct.
bool | operator! () const
| Tests if the object handle is invalid.
bool | operator< (handle_type h) const
| Is handle less than?
bool | operator<= (handle_type h) const
| Is handle less than or equal to?
bool | operator>= (handle_type h) const
| Is handle greater than or equal to?
bool | operator> (handle_type h) const
| Is handle greater than?
bool | operator!= (handle_type h) const
| Is handle not equal to?
bool | operator== (handle_type h) const
| Is handle equal to?
void | attach (handle_type h) noexcept
| Sets a new object handle for the class.
handle_type | detach ()
| Dismisses the object handle from this class.
void | free ()
| Destroys the object.

## Protected Member Functions

virtual handle_type | duplicate_internal (handle_type h) const =0
| Abstract member function that must be implemented by child classes to do the actual object handle duplication. On failure, it should throw appropriate exception describing the cause, rather than return an invalid handle.
Protected Member Functions inherited from winstd::handle< T, INVAL >
virtual void | free_internal () noexcept=0
| Abstract member function that must be implemented by child classes to do the actual object destruction.

## Additional Inherited Members

Public Types inherited from winstd::handle< T, INVAL >
typedef T | handle_type
| Datatype of the object handle this template class handles.
Static Public Attributes inherited from winstd::handle< T, INVAL >
static const T | invalid = INVAL
| Invalid handle value.
Protected Attributes inherited from winstd::handle< T, INVAL >
handle_type | m_h
| Object handle.

## Detailed Description

template<class T, T INVAL>
class winstd::dplhandle< T, INVAL >

Base abstract template class to support object handle keeping for objects that support trivial handle duplication.

## Constructor & Destructor Documentation

## dplhandle() [1/3]

template<class T , T INVAL>

winstd::dplhandle< T, INVAL >::dplhandle | ( | handle_type | h | ) |

inlinenoexcept

Initializes a new class instance with an already available object handle.

Parameters

  [in] | h | Initial object handle value

## dplhandle() [2/3]

template<class T , T INVAL>

winstd::dplhandle< T, INVAL >::dplhandle | ( | const dplhandle< handle_type, INVAL > & | h | ) |

inline

Copy constructor.

Parameters

  [in,out] | h | A reference of another object

## dplhandle() [3/3]

template<class T , T INVAL>

winstd::dplhandle< T, INVAL >::dplhandle | ( | dplhandle< handle_type, INVAL > && | h | ) |

inlinenoexcept

Move constructor.

Parameters

  [in,out] | h | A rvalue reference of another object

## Member Function Documentation

## attach_duplicated()

template<class T , T INVAL>

void winstd::dplhandle< T, INVAL >::attach_duplicated | ( | handle_type | h | ) |

inline

Duplicates an object handle and sets a new object handle.

Parameters

  [in] | h | Object handle of existing object

## duplicate()

template<class T , T INVAL>

handle_type winstd::dplhandle< T, INVAL >::duplicate | ( |  | ) | const

inline

Duplicates and returns a new object handle.

Returns
  Duplicated object handle

## duplicate_internal()

template<class T , T INVAL>

virtual handle_type winstd::dplhandle< T, INVAL >::duplicate_internal | ( | handle_type | h | ) | const

protectedpure virtual

Abstract member function that must be implemented by child classes to do the actual object handle duplication. On failure, it should throw appropriate exception describing the cause, rather than return an invalid handle.

Parameters

  [in] | h | Object handle of existing object

Returns
  Duplicated object handle

Implemented in winstd::bstr, winstd::cert_chain_context, winstd::cert_context, winstd::crypt_hash, winstd::crypt_key, winstd::eap_packet, and winstd::safearray.

## operator=() [1/3]

template<class T , T INVAL>

dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= | ( | const dplhandle< handle_type, INVAL > & | h | ) |

inlinenoexcept

Duplicates the object.

Parameters

  [in] | h | Object

## operator=() [2/3]

template<class T , T INVAL>

dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= | ( | dplhandle< handle_type, INVAL > && | h | ) |

inlinenoexcept

Moves the object.

Parameters

  [in,out] | h | A rvalue reference of another object

## operator=() [3/3]

template<class T , T INVAL>

dplhandle< handle_type, INVAL > & winstd::dplhandle< T, INVAL >::operator= | ( | handle_type | h | ) |

inlinenoexcept

Attaches already available object handle.

Parameters

  [in] | h | Object handle value

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

- include/WinStd/Common.h