# WinStd: winstd::com_obj< T > Class Template Reference

Loading...
Searching...
No Matches
winstd::com_obj< T > Class Template Reference
COM Object Management

COM object wrapper template. More...

`#include <WinStd/COM.h>`

Inheritance diagram for winstd::com_obj< T >:

## Public Member Functions

| com_obj (REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)
| Creates a new instance of a class.
template<class _Other >
| com_obj (_Other *other)
| Queries the object for another interface and creates new class with it.
template<class _Other >
| com_obj (com_obj< _Other > &other)
| Queries the object for another interface and creates new class with it.
virtual | ~com_obj ()
| Releases object.
template<class _Other >
HRESULT | query_interface (_Other **h) const
| Queries the object for another interface.
template<class _Other >
HRESULT | query_interface (com_obj< _Other > &h) const
| Queries the object for another interface.
Public Member Functions inherited from winstd::dplhandle< T *, NULL >
| 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

void | free_internal () noexcept override
| Releases the object by decrementing reference counter.
T * | duplicate_internal (T *h) const override
| Duplicates the object by incrementing the reference counter.
Protected Member Functions inherited from winstd::dplhandle< T *, NULL >
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 >

## 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>
class winstd::com_obj< T >

COM object wrapper template.

See also
  CoCreateInstance function

## Constructor & Destructor Documentation

## com_obj() [1/3]

template<class T >

winstd::com_obj< T >::com_obj | ( | REFCLSID | rclsid,
|  | LPUNKNOWN | pUnkOuter,
|  | DWORD | dwClsContext )

inline

Creates a new instance of a class.

See also
  CoCreateInstance function

## com_obj() [2/3]

template<class T >
template<class _Other >

winstd::com_obj< T >::com_obj | ( | _Other * | other | ) |

inline

Queries the object for another interface and creates new class with it.

See also
  IUnknown::QueryInterface method

## com_obj() [3/3]

template<class T >
template<class _Other >

winstd::com_obj< T >::com_obj | ( | com_obj< _Other > & | other | ) |

inline

Queries the object for another interface and creates new class with it.

See also
  IUnknown::QueryInterface method

## Member Function Documentation

## duplicate_internal()

template<class T >

T * winstd::com_obj< T >::duplicate_internal | ( | T * | h | ) | const

inlineoverrideprotected

Duplicates the object by incrementing the reference counter.

See also
  IUnknown::AddRef method

Parameters

  [in] | h | Object handle of existing object

Returns
  Duplicated object handle

## free_internal()

template<class T >

void winstd::com_obj< T >::free_internal | ( |  | ) |

inlineoverrideprotectedvirtualnoexcept

Releases the object by decrementing reference counter.

See also
  IUnknown::Release method

Implements winstd::handle< T, INVAL >.

## query_interface() [1/2]

template<class T >
template<class _Other >

HRESULT winstd::com_obj< T >::query_interface | ( | _Other ** | h | ) | const

inline

Queries the object for another interface.

See also
  IUnknown::QueryInterface method

## query_interface() [2/2]

template<class T >
template<class _Other >

HRESULT winstd::com_obj< T >::query_interface | ( | com_obj< _Other > & | h | ) | const

inline

Queries the object for another interface.

See also
  IUnknown::QueryInterface method

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

- include/WinStd/COM.h