Compare commits
2 Commits
9e992db24e
...
master
Author | SHA1 | Date | |
---|---|---|---|
9136c74309 | |||
75c5630dbc |
@@ -125,7 +125,7 @@ namespace winstd
|
|||||||
if (this != std::addressof(h)) {
|
if (this != std::addressof(h)) {
|
||||||
if (m_h != invalid)
|
if (m_h != invalid)
|
||||||
free_internal();
|
free_internal();
|
||||||
if (h)
|
if (h.valid())
|
||||||
duplicate_internal(h);
|
duplicate_internal(h);
|
||||||
else
|
else
|
||||||
m_h = invalid;
|
m_h = invalid;
|
||||||
|
@@ -1665,7 +1665,7 @@ namespace winstd
|
|||||||
};
|
};
|
||||||
sa = SafeArrayCreate(VT_VARIANT, _countof(dim), dim);
|
sa = SafeArrayCreate(VT_VARIANT, _countof(dim), dim);
|
||||||
}
|
}
|
||||||
if (!sa)
|
if (!sa.valid())
|
||||||
throw std::bad_alloc();
|
throw std::bad_alloc();
|
||||||
|
|
||||||
assert(SafeArrayGetElemsize(sa) == sizeof(VARIANT));
|
assert(SafeArrayGetElemsize(sa) == sizeof(VARIANT));
|
||||||
|
@@ -1985,6 +1985,72 @@ namespace winstd
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Namespace handle wrapper
|
||||||
|
///
|
||||||
|
/// \sa [CreatePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-createprivatenamespacew)
|
||||||
|
///
|
||||||
|
class nspace : public handle<HANDLE, NULL>
|
||||||
|
{
|
||||||
|
WINSTD_HANDLE_IMPL(nspace, HANDLE, NULL)
|
||||||
|
|
||||||
|
public:
|
||||||
|
///
|
||||||
|
/// Closes an open namespace handle.
|
||||||
|
///
|
||||||
|
/// \sa [ClosePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-closeprivatenamespace)
|
||||||
|
///
|
||||||
|
virtual ~nspace()
|
||||||
|
{
|
||||||
|
if (m_h != invalid)
|
||||||
|
free_internal();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
///
|
||||||
|
/// Closes an open namespace handle.
|
||||||
|
///
|
||||||
|
/// \sa [ClosePrivateNamespace function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-closeprivatenamespace)
|
||||||
|
///
|
||||||
|
void free_internal() noexcept override
|
||||||
|
{
|
||||||
|
ClosePrivateNamespace(m_h, 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Boundary descriptor handle wrapper
|
||||||
|
///
|
||||||
|
/// \sa [CreateBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-createboundarydescriptorw)
|
||||||
|
///
|
||||||
|
class boundary_descriptor : public handle<HANDLE, NULL>
|
||||||
|
{
|
||||||
|
WINSTD_HANDLE_IMPL(boundary_descriptor, HANDLE, NULL)
|
||||||
|
|
||||||
|
public:
|
||||||
|
///
|
||||||
|
/// Deletes the specified boundary descriptor.
|
||||||
|
///
|
||||||
|
/// \sa [DeleteBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-deleteboundarydescriptor)
|
||||||
|
///
|
||||||
|
virtual ~boundary_descriptor()
|
||||||
|
{
|
||||||
|
if (m_h != invalid)
|
||||||
|
free_internal();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
///
|
||||||
|
/// Deletes the specified boundary descriptor.
|
||||||
|
///
|
||||||
|
/// \sa [DeleteBoundaryDescriptor function](https://learn.microsoft.com/en-us/windows/win32/api/namespaceapi/nf-namespaceapi-deleteboundarydescriptor)
|
||||||
|
///
|
||||||
|
void free_internal() noexcept override
|
||||||
|
{
|
||||||
|
DeleteBoundaryDescriptor(m_h);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \addtogroup WinStdExceptions
|
/// \addtogroup WinStdExceptions
|
||||||
|
Reference in New Issue
Block a user