diff --git a/_c_o_m_8h_source.html b/_c_o_m_8h_source.html
index e3289969..8518934b 100644
--- a/_c_o_m_8h_source.html
+++ b/_c_o_m_8h_source.html
@@ -3,7 +3,7 @@
-
+
WinStd: include/WinStd/COM.h Source File
@@ -30,7 +30,7 @@
-
+
+
+
+
+
+
94 _In_opt_ LPUNKNOWN pUnkOuter,
@@ -133,8 +150,10 @@ $(function() {
+
107 template <
class _Other>
+
@@ -142,30 +161,38 @@ $(function() {
+
121 template <
class _Other>
+
124 HRESULT hr = other->QueryInterface(__uuidof(T), (
void **)&
m_h );
+
+
143 template <
class _Other>
+
148 return m_h ->QueryInterface(__uuidof(_Other), (
void **)h);
+
156 template <
class _Other>
+
@@ -175,730 +202,908 @@ $(function() {
+
+
+
+
+
-
+
+
207 m_h = SysAllocString(src);
209 throw std::bad_alloc();
+
-
215 bstr (_In_ LPCOLESTR src, _In_ UINT len)
+
+
215 bstr (_In_reads_opt_(len) LPCOLESTR src, _In_ UINT len)
217 m_h = SysAllocStringLen(src, len);
219 throw std::bad_alloc();
+
225 template <
class _Traits,
class _Ax>
-
226 bstr (_In_
const std::basic_string<wchar_t, _Traits, _Ax> &src)
+
+
226 bstr (_In_
const std::basic_string<OLECHAR, _Traits, _Ax> &src)
-
228 m_h = SysAllocStringLen(src.c_str(), (UINT)src.length());
-
-
230 throw std::bad_alloc();
-
-
-
-
-
-
-
-
-
-
-
251 return SysStringLen(
m_h );
-
-
-
-
-
-
-
-
-
-
-
276 handle_type h_new = SysAllocStringLen(h, SysStringLen(h));
-
-
-
279 throw std::bad_alloc();
-
-
-
-
286 #pragma warning(push)
-
287 #pragma warning(disable: 26432)
-
-
-
-
-
-
-
-
-
-
-
-
305 const HRESULT hr = VariantCopy(
this , &varSrc);
-
-
-
-
-
313 #pragma warning(suppress: 26495)
-
-
-
316 memcpy(
this , &varSrc,
sizeof (VARIANT));
-
317 varSrc.vt = VT_EMPTY;
-
-
-
-
-
-
326 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
368 variant (_In_
int nSrc, _In_ VARTYPE vtSrc = VT_I4)
noexcept
-
-
370 assert(vtSrc == VT_I4 || vtSrc == VT_INT);
-
-
-
-
-
378 variant (_In_
unsigned int nSrc, _In_ VARTYPE vtSrc = VT_UI4)
noexcept
-
-
380 assert(vtSrc == VT_UI4 || vtSrc == VT_UINT);
-
-
-
-
-
388 variant (_In_
long nSrc, _In_ VARTYPE vtSrc = VT_I4)
noexcept
-
-
390 assert(vtSrc == VT_I4 || vtSrc == VT_ERROR);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
416 variant (_In_
double dblSrc, _In_ VARTYPE vtSrc = VT_R8)
noexcept
-
-
418 assert(vtSrc == VT_R8 || vtSrc == VT_DATE);
-
-
-
-
-
-
-
-
-
-
-
435 variant (_In_
unsigned long long nSrc)
noexcept
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
477 if (pdispVal != NULL)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
498 assert(pSrc != NULL);
-
-
-
501 const HRESULT hr = SafeArrayCopy(
const_cast< LPSAFEARRAY
> (pSrc), &pCopy);
-
-
-
-
505 SafeArrayGetVartype(
const_cast< LPSAFEARRAY
> (pSrc), &vt);
-
-
-
-
-
-
-
-
-
-
-
-
523 if (
this != &varSrc) {
-
524 const HRESULT hr = VariantCopy(
this , &varSrc);
-
-
-
-
-
-
-
-
-
536 if (
this != &varSrc) {
-
-
538 memcpy(
this , &varSrc,
sizeof (VARIANT));
-
539 varSrc.vt = VT_EMPTY;
-
-
-
-
-
-
-
-
-
-
-
553 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
735 bstrVal = SysAllocString(lpszSrc);
-
-
-
-
-
-
-
-
-
747 if (pdispVal != NULL)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
770 if (vt != (VT_UI1|VT_BYREF)) {
-
-
772 vt = VT_UI1|VT_BYREF;
-
-
-
-
-
-
-
-
783 if (vt != (VT_I2|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
796 if (vt != (VT_UI2|VT_BYREF)) {
-
-
798 vt = VT_UI2|VT_BYREF;
-
-
-
-
-
-
-
-
809 if (vt != (VT_I4|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
822 if (vt != (VT_UI4|VT_BYREF)) {
-
-
824 vt = VT_UI4|VT_BYREF;
-
-
-
-
-
-
-
-
835 if (vt != (VT_I4|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
848 if (vt != (VT_UI4|VT_BYREF)) {
-
-
850 vt = VT_UI4|VT_BYREF;
-
-
-
-
-
-
-
-
861 if (vt != (VT_I8|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
874 if (vt != (VT_UI8|VT_BYREF)) {
-
-
876 vt = VT_UI8|VT_BYREF;
-
-
-
-
-
-
-
-
887 if (vt != (VT_R4|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
900 if (vt != (VT_R8|VT_BYREF)) {
-
-
-
-
-
-
-
-
-
-
913 assert(pSrc != NULL);
-
-
-
-
917 const HRESULT hr = SafeArrayCopy(
const_cast< LPSAFEARRAY
> (pSrc), &pCopy);
-
-
919 SafeArrayGetVartype(
const_cast< LPSAFEARRAY
> (pSrc), &vt);
-
-
-
-
-
-
-
-
-
-
-
938 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return true ;
-
939 if (vt != varSrc.vt)
return false ;
-
940 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0) ==
static_cast< HRESULT
> (VARCMP_EQ);
-
-
-
-
-
-
-
-
964 bool operator< (_In_
const VARIANT& varSrc)
const noexcept
-
-
966 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return false ;
-
967 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0)==
static_cast< HRESULT
> (VARCMP_LT);
-
-
-
978 bool operator> (_In_
const VARIANT& varSrc)
const noexcept
-
-
980 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return false ;
-
981 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0)==
static_cast< HRESULT
> (VARCMP_GT);
-
-
-
-
-
-
-
-
-
-
-
-
-
1015 HRESULT
change_type (_In_ VARTYPE _vt, _In_opt_ USHORT wFlags = 0) noexcept
-
-
1017 return VariantChangeType(
this ,
this , wFlags, _vt);
-
-
-
-
1022 HRESULT compare(_In_
const VARIANT &varLeft, _In_
const VARIANT &varRight, _In_ LCID lcid, _In_ ULONG dwFlags)
const noexcept
-
-
-
1025 case VT_I1:
return varLeft.cVal == varRight.cVal ? VARCMP_EQ : varLeft.cVal > varRight.cVal ? VARCMP_GT : VARCMP_LT;
-
1026 case VT_UI2:
return varLeft.uiVal == varRight.uiVal ? VARCMP_EQ : varLeft.uiVal > varRight.uiVal ? VARCMP_GT : VARCMP_LT;
-
1027 case VT_UI4:
return varLeft.uintVal == varRight.uintVal ? VARCMP_EQ : varLeft.uintVal > varRight.uintVal ? VARCMP_GT : VARCMP_LT;
-
1028 case VT_UI8:
return varLeft.ullVal == varRight.ullVal ? VARCMP_EQ : varLeft.ullVal > varRight.ullVal ? VARCMP_GT : VARCMP_LT;
-
1029 default :
return VarCmp(
const_cast< LPVARIANT
> (&varLeft),
const_cast< LPVARIANT
> (&varRight), lcid, dwFlags);
-
-
-
-
1034 #pragma warning(pop)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1063 SafeArrayDestroy(
m_h );
-
-
-
-
-
-
1078 HRESULT hr = SafeArrayCopy(h, &h_new);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1102 HRESULT hr = SafeArrayAccessData(psa, (
void HUGEP**)&
m_data );
-
-
-
-
-
-
-
1114 SafeArrayUnaccessData(
m_sa );
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1146 m_result = CoInitialize(pvReserved);
-
-
-
-
-
1156 m_result = CoInitializeEx(pvReserved, dwCoInit);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1199 HRESULT hr =
CoCreateInstance (rclsid, pUnkOuter, dwClsContext, __uuidof(T), (LPVOID*)&ppv);
-
-
-
-
-
-
-
-
-
-
1214 HRESULT hr =
CoGetObject (pszName, pBindOptions, riid, (LPVOID*)&ppv);
-
-
-
-
-
+
228 if (src.length() >= UINT_MAX)
+
229 throw std::invalid_argument(
"String too long" );
+
230 m_h = SysAllocStringLen(src.c_str(), (UINT)src.length());
+
+
232 throw std::bad_alloc();
+
+
+
+
+
+
+
+
+
253 return SysStringLen(
m_h );
+
+
+
+
+
+
+
+
+
+
278 handle_type h_new = SysAllocStringLen(h, SysStringLen(h));
+
+
+
281 throw std::bad_alloc();
+
+
+
+
+
+ 288 #pragma warning(push)
+ 289 #pragma warning(disable: 26432)
+
+
+
+
+
+
+
+
+
+
+
307 const HRESULT hr = VariantCopy(
this , &varSrc);
+
+
+
+
+
+
315 #pragma warning(suppress: 26495)
+
+
+
+
318 memcpy(
this , &varSrc,
sizeof (VARIANT));
+
319 varSrc.vt = VT_EMPTY;
+
+
+
+
+
+
+
+
328 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
+
+
+
+
+
+
+
+
+
+
+
+
370 variant (_In_
int nSrc, _In_ VARTYPE vtSrc = VT_I4)
noexcept
+
+
372 assert(vtSrc == VT_I4 || vtSrc == VT_INT);
+
+
+
+
+
+
+
380 variant (_In_
unsigned int nSrc, _In_ VARTYPE vtSrc = VT_UI4)
noexcept
+
+
382 assert(vtSrc == VT_UI4 || vtSrc == VT_UINT);
+
+
+
+
+
+
+
390 variant (_In_
long nSrc, _In_ VARTYPE vtSrc = VT_I4)
noexcept
+
+
392 assert(vtSrc == VT_I4 || vtSrc == VT_ERROR);
+
+
+
+
+
+
+
+
+
+
+
418 variant (_In_
double dblSrc, _In_ VARTYPE vtSrc = VT_R8)
noexcept
+
+
420 assert(vtSrc == VT_R8 || vtSrc == VT_DATE);
+
+
+
+
+
+
+
+
+
437 variant (_In_
unsigned long long nSrc)
noexcept
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
479 if (pdispVal != NULL)
+
+
+
+
+
+
+
+
+
+
500 assert(pSrc != NULL);
+
+
+
503 const HRESULT hr = SafeArrayCopy(
const_cast< LPSAFEARRAY
> (pSrc), &pCopy);
+
+
+
+
507 SafeArrayGetVartype(
const_cast< LPSAFEARRAY
> (pSrc), &vt);
+
+
+
+
+
+
+
+
+
+
+
525 if (
this != &varSrc) {
+
526 const HRESULT hr = VariantCopy(
this , &varSrc);
+
+
+
+
+
+
+
+
+
+
+
538 if (
this != &varSrc) {
+
+
540 memcpy(
this , &varSrc,
sizeof (VARIANT));
+
541 varSrc.vt = VT_EMPTY;
+
+
+
+
+
+
+
+
+
+
+
+
+
555 boolVal = bSrc ? VARIANT_TRUE : VARIANT_FALSE;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
737 bstrVal = SysAllocString(lpszSrc);
+
+
+
+
+
+
+
+
+
+
+
749 if (pdispVal != NULL)
+
+
+
+
+
+
+
+
+
+
+
772 if (vt != (VT_UI1|VT_BYREF)) {
+
+
774 vt = VT_UI1|VT_BYREF;
+
+
+
+
+
+
+
+
+
+
785 if (vt != (VT_I2|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
798 if (vt != (VT_UI2|VT_BYREF)) {
+
+
800 vt = VT_UI2|VT_BYREF;
+
+
+
+
+
+
+
+
+
+
811 if (vt != (VT_I4|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
824 if (vt != (VT_UI4|VT_BYREF)) {
+
+
826 vt = VT_UI4|VT_BYREF;
+
+
+
+
+
+
+
+
+
+
837 if (vt != (VT_I4|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
850 if (vt != (VT_UI4|VT_BYREF)) {
+
+
852 vt = VT_UI4|VT_BYREF;
+
+
+
+
+
+
+
+
+
+
863 if (vt != (VT_I8|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
876 if (vt != (VT_UI8|VT_BYREF)) {
+
+
878 vt = VT_UI8|VT_BYREF;
+
+
+
+
+
+
+
+
+
+
889 if (vt != (VT_R4|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
902 if (vt != (VT_R8|VT_BYREF)) {
+
+
+
+
+
+
+
+
+
+
+
+
915 assert(pSrc != NULL);
+
+
+
+
919 const HRESULT hr = SafeArrayCopy(
const_cast< LPSAFEARRAY
> (pSrc), &pCopy);
+
+
921 SafeArrayGetVartype(
const_cast< LPSAFEARRAY
> (pSrc), &vt);
+
+
+
+
+
+
+
+
+
+
+
+
+
940 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return true ;
+
941 if (vt != varSrc.vt)
return false ;
+
942 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0) ==
static_cast< HRESULT
> (VARCMP_EQ);
+
+
+
+
+
+
+
966 bool operator< (_In_
const VARIANT& varSrc)
const noexcept
+
+
968 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return false ;
+
969 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0)==
static_cast< HRESULT
> (VARCMP_LT);
+
+
+
+
+
980 bool operator> (_In_
const VARIANT& varSrc)
const noexcept
+
+
982 if (vt == VT_NULL && varSrc.vt == VT_NULL)
return false ;
+
983 return compare(
static_cast< const VARIANT&
> (*
this ), varSrc, LOCALE_USER_DEFAULT, 0)==
static_cast< HRESULT
> (VARCMP_GT);
+
+
+
+
+
+
+
+
+
1017 HRESULT
change_type (_In_ VARTYPE _vt, _In_opt_ USHORT wFlags = 0) noexcept
+
+
1019 return VariantChangeType(
this ,
this , wFlags, _vt);
+
+
+
+
+
1024 HRESULT compare(_In_
const VARIANT &varLeft, _In_
const VARIANT &varRight, _In_ LCID lcid, _In_ ULONG dwFlags)
const noexcept
+
+
+
1027 case VT_I1:
return varLeft.cVal == varRight.cVal ? VARCMP_EQ : varLeft.cVal > varRight.cVal ? VARCMP_GT : VARCMP_LT;
+
1028 case VT_UI2:
return varLeft.uiVal == varRight.uiVal ? VARCMP_EQ : varLeft.uiVal > varRight.uiVal ? VARCMP_GT : VARCMP_LT;
+
1029 case VT_UI4:
return varLeft.uintVal == varRight.uintVal ? VARCMP_EQ : varLeft.uintVal > varRight.uintVal ? VARCMP_GT : VARCMP_LT;
+
1030 case VT_UI8:
return varLeft.ullVal == varRight.ullVal ? VARCMP_EQ : varLeft.ullVal > varRight.ullVal ? VARCMP_GT : VARCMP_LT;
+
1031 default :
return VarCmp(
const_cast< LPVARIANT
> (&varLeft),
const_cast< LPVARIANT
> (&varRight), lcid, dwFlags);
+
+
+
+
+ 1036 #pragma warning(pop)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1065 SafeArrayDestroy(
m_h );
+
+
+
+
+
+
+
+
1080 HRESULT hr = SafeArrayCopy(h, &h_new);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1104 HRESULT hr = SafeArrayAccessData(psa, (
void HUGEP**)&
m_data );
+
+
+
+
+
+
+
+
+
1116 SafeArrayUnaccessData(
m_sa );
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1148 m_result = CoInitialize(pvReserved);
+
+
+
+
+
+
+
1158 m_result = CoInitializeEx(pvReserved, dwCoInit);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
1201 HRESULT hr =
CoCreateInstance (rclsid, pUnkOuter, dwClsContext, __uuidof(T), (LPVOID*)&ppv);
+
+
+
+
+
+
+
+
+
+
+
+
1216 HRESULT hr =
CoGetObject (pszName, pBindOptions, riid, (LPVOID*)&ppv);
+
+
+
+
+
+
BSTR string wrapper.
Definition COM.h:198
bstr(LPCOLESTR src)
Constructs BSTR from OLE string.
Definition COM.h:205
-bstr(const std::basic_string< wchar_t, _Traits, _Ax > &src)
Constructs BSTR from std::basic_string.
Definition COM.h:226
-handle_type duplicate_internal(handle_type h) const override
Duplicates the string.
Definition COM.h:274
-virtual ~bstr()
Destroys the string.
Definition COM.h:238
-void free_internal() noexcept override
Destroys the string.
Definition COM.h:260
-UINT length() const noexcept
Returns the length of the string.
Definition COM.h:249
+handle_type duplicate_internal(handle_type h) const override
Duplicates the string.
Definition COM.h:276
+virtual ~bstr()
Destroys the string.
Definition COM.h:240
+void free_internal() noexcept override
Destroys the string.
Definition COM.h:262
+UINT length() const noexcept
Returns the length of the string.
Definition COM.h:251
bstr(LPCOLESTR src, UINT len)
Constructs BSTR from OLE string with length.
Definition COM.h:215
-Context scope automatic COM (un)initialization.
Definition COM.h:1134
-com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept
Initializes the COM library for use by the calling thread, sets the thread's concurrency model,...
Definition COM.h:1154
-com_initializer(LPVOID pvReserved) noexcept
Initializes the COM library on the current thread and identifies the concurrency model as single-thre...
Definition COM.h:1144
-HRESULT status() const noexcept
Return result of CoInitialize() call.
Definition COM.h:1175
-virtual ~com_initializer()
Uninitializes COM.
Definition COM.h:1164
-HRESULT m_result
Result of CoInitialize call.
Definition COM.h:1181
+bstr(const std::basic_string< OLECHAR, _Traits, _Ax > &src)
Constructs BSTR from std::basic_string.
Definition COM.h:226
+Context scope automatic COM (un)initialization.
Definition COM.h:1136
+com_initializer(LPVOID pvReserved, DWORD dwCoInit) noexcept
Initializes the COM library for use by the calling thread, sets the thread's concurrency model,...
Definition COM.h:1156
+com_initializer(LPVOID pvReserved) noexcept
Initializes the COM library on the current thread and identifies the concurrency model as single-thre...
Definition COM.h:1146
+HRESULT status() const noexcept
Return result of CoInitialize() call.
Definition COM.h:1177
+virtual ~com_initializer()
Uninitializes COM.
Definition COM.h:1166
+HRESULT m_result
Result of CoInitialize call.
Definition COM.h:1183
COM object wrapper template.
Definition COM.h:83
void free_internal() noexcept override
Releases the object by decrementing reference counter.
Definition COM.h:173
com_obj(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext)
Creates a new instance of a class.
Definition COM.h:92
@@ -911,96 +1116,96 @@ $(function() {
COM runtime error.
Definition COM.h:26
com_runtime_error(error_type num, const std::string &msg)
Constructs an exception.
Definition COM.h:34
com_runtime_error(error_type num, const char *msg=nullptr)
Constructs an exception.
Definition COM.h:44
-Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:900
-T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:640
-handle_type m_h
Object handle.
Definition Common.h:889
-Numerical runtime error.
Definition Common.h:1029
-HRESULT error_type
Error number type.
Definition Common.h:1031
-Context scope automatic SAFEARRAY (un)access.
Definition COM.h:1090
-safearray_accessor(SAFEARRAY *psa)
Increments the lock count of an array, and retrieves a pointer to the array data.
Definition COM.h:1100
-T HUGEP * data() const noexcept
Return SAFEARRAY data pointer.
Definition COM.h:1120
-SAFEARRAY * m_sa
SAFEARRAY.
Definition COM.h:1126
-virtual ~safearray_accessor()
Decrements the lock count of an array.
Definition COM.h:1112
-T HUGEP * m_data
SAFEARRAY data.
Definition COM.h:1127
-SAFEARRAY string wrapper.
Definition COM.h:1040
-virtual ~safearray()
Destroys the array.
Definition COM.h:1049
-handle_type duplicate_internal(handle_type h) const override
Duplicates the array.
Definition COM.h:1075
-void free_internal() noexcept override
Destroys the array.
Definition COM.h:1061
-VARIANT struct wrapper.
Definition COM.h:289
-bool operator<=(const VARIANT &varSrc) const noexcept
Is variant less than or equal to?
Definition COM.h:992
-variant(bool bSrc) noexcept
Constructs VARIANT from bool.
Definition COM.h:323
-variant & operator=(unsigned int nSrc) noexcept
Copy from unsigned int value.
Definition COM.h:625
-variant & operator=(unsigned long nSrc) noexcept
Copy from unsigned long value.
Definition COM.h:651
-variant(float fltSrc) noexcept
Constructs VARIANT from float.
Definition COM.h:407
-variant(VARIANT &&varSrc) noexcept
Moves VARIANT from another.
Definition COM.h:314
-variant & operator=(float fltSrc) noexcept
Copy from float value.
Definition COM.h:691
-variant & operator=(float *pfSrc) noexcept
Copy from float reference.
Definition COM.h:885
-variant(IDispatch *pSrc)
Constructs VARIANT from IDispatch.
Definition COM.h:472
-variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from integer.
Definition COM.h:368
-variant(const SAFEARRAY *pSrc)
Constructs VARIANT from SAFEARRAY.
Definition COM.h:496
-variant & operator=(double *pfSrc) noexcept
Copy from double reference.
Definition COM.h:898
-variant & operator=(const SAFEARRAY *pSrc)
Copy from SAFEARRAY.
Definition COM.h:911
-variant & operator=(int *pnSrc) noexcept
Copy from int reference.
Definition COM.h:807
-bool operator>(const VARIANT &varSrc) const noexcept
Is variant greater than?
Definition COM.h:978
-variant & operator=(bool bSrc) noexcept
Copy from bool value.
Definition COM.h:547
-variant & operator=(long nSrc) noexcept
Copy from long value.
Definition COM.h:638
-HRESULT change_type(VARTYPE _vt, USHORT wFlags=0) noexcept
Converts a variant from one type to another.
Definition COM.h:1015
-variant & operator=(IUnknown *pSrc)
Copy from IUnknown.
Definition COM.h:755
-variant & operator=(short nSrc) noexcept
Copy from short value.
Definition COM.h:586
-variant & operator=(unsigned char *pbSrc) noexcept
Copy from unsigned char reference.
Definition COM.h:768
-variant & operator=(unsigned short nSrc) noexcept
Copy from unsigned short value.
Definition COM.h:599
-variant & operator=(unsigned char nSrc) noexcept
Copy from unsigned char value.
Definition COM.h:573
-variant & operator=(char cSrc) noexcept
Copy from char value.
Definition COM.h:560
-variant(LPCOLESTR lpszSrc) noexcept
Constructs VARIANT from OLE string.
Definition COM.h:454
-virtual ~variant()
Destroys VARIANT.
Definition COM.h:513
-variant(const VARIANT &varSrc)
Constructs VARIANT from another.
Definition COM.h:302
-variant(unsigned char nSrc) noexcept
Constructs VARIANT from byte.
Definition COM.h:341
-variant & operator=(double dblSrc) noexcept
Copy from double value.
Definition COM.h:704
-bool operator!=(const VARIANT &varSrc) const noexcept
Is variant not equal to?
Definition COM.h:951
-variant & operator=(int nSrc) noexcept
Copy from int value.
Definition COM.h:612
-variant(unsigned long nSrc) noexcept
Constructs VARIANT from unsigned long.
Definition COM.h:398
-bool operator==(const VARIANT &varSrc) const noexcept
Is variant equal to?
Definition COM.h:936
-variant(IUnknown *pSrc)
Constructs VARIANT from IUnknown.
Definition COM.h:484
-variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:378
-variant & operator=(CY cySrc) noexcept
Copy from CY value.
Definition COM.h:717
-variant & operator=(LPCOLESTR lpszSrc) noexcept
Copy from OLE string value.
Definition COM.h:731
-variant(long long nSrc) noexcept
Constructs VARIANT from 64-bit integer.
Definition COM.h:426
-variant & operator=(unsigned int *pnSrc) noexcept
Copy from unsigned int reference.
Definition COM.h:820
-variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from long.
Definition COM.h:388
-variant & operator=(long *pnSrc) noexcept
Copy from long reference.
Definition COM.h:833
-variant(unsigned short nSrc) noexcept
Constructs VARIANT from unsigned short.
Definition COM.h:359
-bool operator>=(const VARIANT &varSrc) const noexcept
Is variant greater than or equal to?
Definition COM.h:1005
-variant & operator=(short *pnSrc) noexcept
Copy from short reference.
Definition COM.h:781
-variant() noexcept
Constructs blank VARIANT.
Definition COM.h:294
-bool operator<(const VARIANT &varSrc) const noexcept
Is variant less than?
Definition COM.h:964
-variant(unsigned long long nSrc) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:435
-variant(char cSrc) noexcept
Constructs VARIANT from character.
Definition COM.h:332
-variant & operator=(unsigned short *pnSrc) noexcept
Copy from unsigned short reference.
Definition COM.h:794
-variant & operator=(long long *pnSrc) noexcept
Copy from long long reference.
Definition COM.h:859
-variant(BSTR bstr) noexcept
Constructs VARIANT from BSTR.
Definition COM.h:463
-variant & operator=(unsigned long long *pnSrc) noexcept
Copy from unsigned long long reference.
Definition COM.h:872
-variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept
Constructs VARIANT from double or variant date.
Definition COM.h:416
-variant(short nSrc) noexcept
Constructs VARIANT from short.
Definition COM.h:350
-variant(CY cySrc) noexcept
Constructs VARIANT from CY (64-bit integer)
Definition COM.h:444
-variant & operator=(unsigned long long nSrc) noexcept
Copy from unsigned long long value.
Definition COM.h:677
-variant & operator=(VARIANT &&varSrc) noexcept
Moves from another VARIANT.
Definition COM.h:534
-variant & operator=(long long nSrc) noexcept
Copy from long long value.
Definition COM.h:664
-variant & operator=(IDispatch *pSrc)
Copy from IDispatch.
Definition COM.h:742
-variant & operator=(unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition COM.h:846
-variant & operator=(const VARIANT &varSrc)
Copy from another VARIANT.
Definition COM.h:521
-static _Check_return_ HRESULT CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
Converts a display name into a moniker that identifies the object named, and then binds to the object...
Definition COM.h:1211
-static _Check_return_ HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
Creates and default-initializes a single object of the class associated with a specified CLSID.
Definition COM.h:1196
+Base abstract template class to support object handle keeping for objects that support trivial handle...
Definition Common.h:1248
+T handle_type
Datatype of the object handle this template class handles.
Definition Common.h:988
+handle_type m_h
Object handle.
Definition Common.h:1237
+Numerical runtime error.
Definition Common.h:1377
+HRESULT error_type
Error number type.
Definition Common.h:1379
+Context scope automatic SAFEARRAY (un)access.
Definition COM.h:1092
+safearray_accessor(SAFEARRAY *psa)
Increments the lock count of an array, and retrieves a pointer to the array data.
Definition COM.h:1102
+T HUGEP * data() const noexcept
Return SAFEARRAY data pointer.
Definition COM.h:1122
+SAFEARRAY * m_sa
SAFEARRAY.
Definition COM.h:1128
+virtual ~safearray_accessor()
Decrements the lock count of an array.
Definition COM.h:1114
+T HUGEP * m_data
SAFEARRAY data.
Definition COM.h:1129
+SAFEARRAY string wrapper.
Definition COM.h:1042
+virtual ~safearray()
Destroys the array.
Definition COM.h:1051
+handle_type duplicate_internal(handle_type h) const override
Duplicates the array.
Definition COM.h:1077
+void free_internal() noexcept override
Destroys the array.
Definition COM.h:1063
+VARIANT struct wrapper.
Definition COM.h:291
+bool operator<=(const VARIANT &varSrc) const noexcept
Is variant less than or equal to?
Definition COM.h:994
+variant(bool bSrc) noexcept
Constructs VARIANT from bool.
Definition COM.h:325
+variant & operator=(unsigned int nSrc) noexcept
Copy from unsigned int value.
Definition COM.h:627
+variant & operator=(unsigned long nSrc) noexcept
Copy from unsigned long value.
Definition COM.h:653
+variant(float fltSrc) noexcept
Constructs VARIANT from float.
Definition COM.h:409
+variant(VARIANT &&varSrc) noexcept
Moves VARIANT from another.
Definition COM.h:316
+variant & operator=(float fltSrc) noexcept
Copy from float value.
Definition COM.h:693
+variant & operator=(float *pfSrc) noexcept
Copy from float reference.
Definition COM.h:887
+variant(IDispatch *pSrc)
Constructs VARIANT from IDispatch.
Definition COM.h:474
+variant(int nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from integer.
Definition COM.h:370
+variant(const SAFEARRAY *pSrc)
Constructs VARIANT from SAFEARRAY.
Definition COM.h:498
+variant & operator=(double *pfSrc) noexcept
Copy from double reference.
Definition COM.h:900
+variant & operator=(const SAFEARRAY *pSrc)
Copy from SAFEARRAY.
Definition COM.h:913
+variant & operator=(int *pnSrc) noexcept
Copy from int reference.
Definition COM.h:809
+bool operator>(const VARIANT &varSrc) const noexcept
Is variant greater than?
Definition COM.h:980
+variant & operator=(bool bSrc) noexcept
Copy from bool value.
Definition COM.h:549
+variant & operator=(long nSrc) noexcept
Copy from long value.
Definition COM.h:640
+HRESULT change_type(VARTYPE _vt, USHORT wFlags=0) noexcept
Converts a variant from one type to another.
Definition COM.h:1017
+variant & operator=(IUnknown *pSrc)
Copy from IUnknown.
Definition COM.h:757
+variant & operator=(short nSrc) noexcept
Copy from short value.
Definition COM.h:588
+variant & operator=(unsigned char *pbSrc) noexcept
Copy from unsigned char reference.
Definition COM.h:770
+variant & operator=(unsigned short nSrc) noexcept
Copy from unsigned short value.
Definition COM.h:601
+variant & operator=(unsigned char nSrc) noexcept
Copy from unsigned char value.
Definition COM.h:575
+variant & operator=(char cSrc) noexcept
Copy from char value.
Definition COM.h:562
+variant(LPCOLESTR lpszSrc) noexcept
Constructs VARIANT from OLE string.
Definition COM.h:456
+virtual ~variant()
Destroys VARIANT.
Definition COM.h:515
+variant(const VARIANT &varSrc)
Constructs VARIANT from another.
Definition COM.h:304
+variant(unsigned char nSrc) noexcept
Constructs VARIANT from byte.
Definition COM.h:343
+variant & operator=(double dblSrc) noexcept
Copy from double value.
Definition COM.h:706
+bool operator!=(const VARIANT &varSrc) const noexcept
Is variant not equal to?
Definition COM.h:953
+variant & operator=(int nSrc) noexcept
Copy from int value.
Definition COM.h:614
+variant(unsigned long nSrc) noexcept
Constructs VARIANT from unsigned long.
Definition COM.h:400
+bool operator==(const VARIANT &varSrc) const noexcept
Is variant equal to?
Definition COM.h:938
+variant(IUnknown *pSrc)
Constructs VARIANT from IUnknown.
Definition COM.h:486
+variant(unsigned int nSrc, VARTYPE vtSrc=VT_UI4) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:380
+variant & operator=(CY cySrc) noexcept
Copy from CY value.
Definition COM.h:719
+variant & operator=(LPCOLESTR lpszSrc) noexcept
Copy from OLE string value.
Definition COM.h:733
+variant(long long nSrc) noexcept
Constructs VARIANT from 64-bit integer.
Definition COM.h:428
+variant & operator=(unsigned int *pnSrc) noexcept
Copy from unsigned int reference.
Definition COM.h:822
+variant(long nSrc, VARTYPE vtSrc=VT_I4) noexcept
Constructs VARIANT from long.
Definition COM.h:390
+variant & operator=(long *pnSrc) noexcept
Copy from long reference.
Definition COM.h:835
+variant(unsigned short nSrc) noexcept
Constructs VARIANT from unsigned short.
Definition COM.h:361
+bool operator>=(const VARIANT &varSrc) const noexcept
Is variant greater than or equal to?
Definition COM.h:1007
+variant & operator=(short *pnSrc) noexcept
Copy from short reference.
Definition COM.h:783
+variant() noexcept
Constructs blank VARIANT.
Definition COM.h:296
+bool operator<(const VARIANT &varSrc) const noexcept
Is variant less than?
Definition COM.h:966
+variant(unsigned long long nSrc) noexcept
Constructs VARIANT from unsigned integer.
Definition COM.h:437
+variant(char cSrc) noexcept
Constructs VARIANT from character.
Definition COM.h:334
+variant & operator=(unsigned short *pnSrc) noexcept
Copy from unsigned short reference.
Definition COM.h:796
+variant & operator=(long long *pnSrc) noexcept
Copy from long long reference.
Definition COM.h:861
+variant(BSTR bstr) noexcept
Constructs VARIANT from BSTR.
Definition COM.h:465
+variant & operator=(unsigned long long *pnSrc) noexcept
Copy from unsigned long long reference.
Definition COM.h:874
+variant(double dblSrc, VARTYPE vtSrc=VT_R8) noexcept
Constructs VARIANT from double or variant date.
Definition COM.h:418
+variant(short nSrc) noexcept
Constructs VARIANT from short.
Definition COM.h:352
+variant(CY cySrc) noexcept
Constructs VARIANT from CY (64-bit integer)
Definition COM.h:446
+variant & operator=(unsigned long long nSrc) noexcept
Copy from unsigned long long value.
Definition COM.h:679
+variant & operator=(VARIANT &&varSrc) noexcept
Moves from another VARIANT.
Definition COM.h:536
+variant & operator=(long long nSrc) noexcept
Copy from long long value.
Definition COM.h:666
+variant & operator=(IDispatch *pSrc)
Copy from IDispatch.
Definition COM.h:744
+variant & operator=(unsigned long *pnSrc) noexcept
Copy from unsigned long reference.
Definition COM.h:848
+variant & operator=(const VARIANT &varSrc)
Copy from another VARIANT.
Definition COM.h:523
+static _Check_return_ HRESULT CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, winstd::com_obj< T > &v)
Converts a display name into a moniker that identifies the object named, and then binds to the object...
Definition COM.h:1213
+static _Check_return_ HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, winstd::com_obj< T > &v)
Creates and default-initializes a single object of the class associated with a specified CLSID.
Definition COM.h:1198
#define WINSTD_NONCOPYABLE(C)
Declares a class as non-copyable.
Definition Common.h:66
#define WINSTD_NONMOVABLE(C)
Declares a class as non-movable.
Definition Common.h:74
#define WINSTD_DPLHANDLE_IMPL(C, INVAL)
Implements default constructors and operators to prevent their auto-generation by compiler.
Definition Common.h:175
-static const T invalid
Invalid handle value.
Definition Common.h:645
+static const T invalid
Invalid handle value.
Definition Common.h:993
Deleter for unique_ptr using CoTaskMemFree.
Definition COM.h:58
void operator()(_T *_Ptr) const
Delete a pointer.
Definition COM.h:70
CoTaskMemFree_delete() noexcept
Default constructor.
Definition COM.h:62