Support for C++17

Signed-off-by: Simon Rozman <simon@rozman.si>
This commit is contained in:
Simon Rozman 2023-11-07 08:53:06 +01:00
parent 16df7b86a1
commit 512451ec0e
11 changed files with 43 additions and 43 deletions

View File

@ -81,7 +81,7 @@ namespace winstd
template <class T> template <class T>
class com_obj : public dplhandle<T*, NULL> class com_obj : public dplhandle<T*, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(com_obj, NULL) WINSTD_DPLHANDLE_IMPL(com_obj, T*, NULL)
public: public:
/// ///
@ -196,7 +196,7 @@ namespace winstd
/// ///
class bstr : public dplhandle<BSTR, NULL> class bstr : public dplhandle<BSTR, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(bstr, NULL) WINSTD_DPLHANDLE_IMPL(bstr, BSTR, NULL)
public: public:
/// ///
@ -1041,7 +1041,7 @@ namespace winstd
/// ///
class safearray : public dplhandle<SAFEARRAY*, NULL> class safearray : public dplhandle<SAFEARRAY*, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(safearray, NULL) WINSTD_DPLHANDLE_IMPL(safearray, SAFEARRAY*, NULL)
public: public:
/// ///

View File

@ -161,27 +161,27 @@ private: \
/// ///
/// Implements default constructors and operators to prevent their auto-generation by compiler. /// Implements default constructors and operators to prevent their auto-generation by compiler.
/// ///
#define WINSTD_HANDLE_IMPL(C, INVAL) \ #define WINSTD_HANDLE_IMPL(C, T, INVAL) \
public: \ public: \
C ( ) noexcept {} \ C ( ) noexcept {} \
C (_In_opt_ handle_type h) noexcept : handle<handle_type, INVAL>( h ) { } \ C (_In_opt_ T h) noexcept : handle<T, INVAL>( h ) {} \
C (_Inout_ C &&h) noexcept : handle<handle_type, INVAL>(std::move(h)) { } \ C (_Inout_ C &&h) noexcept : handle<T, INVAL>(std::move(h)) {} \
C& operator=(_In_opt_ handle_type h) noexcept { handle<handle_type, INVAL>::operator=( h ); return *this; } \ C& operator=(_In_opt_ T h) noexcept { handle<T, INVAL>::operator=( h ); return *this; } \
C& operator=(_Inout_ C &&h) noexcept { handle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \ C& operator=(_Inout_ C &&h) noexcept { handle<T, INVAL>::operator=(std::move(h)); return *this; } \
WINSTD_NONCOPYABLE(C) WINSTD_NONCOPYABLE(C)
/// ///
/// Implements default constructors and operators to prevent their auto-generation by compiler. /// Implements default constructors and operators to prevent their auto-generation by compiler.
/// ///
#define WINSTD_DPLHANDLE_IMPL(C, INVAL) \ #define WINSTD_DPLHANDLE_IMPL(C, T, INVAL) \
public: \ public: \
C ( ) noexcept {} \ C ( ) noexcept {} \
C (_In_opt_ handle_type h) noexcept : dplhandle<handle_type, INVAL>( h ) { } \ C (_In_opt_ T h) noexcept : dplhandle<T, INVAL>( h ) {} \
C (_In_ const C &h) noexcept : dplhandle<handle_type, INVAL>(duplicate_internal(h.m_h)) { } \ C (_In_ const C &h) noexcept : dplhandle<T, INVAL>(duplicate_internal(h.m_h)) {} \
C (_Inout_ C &&h) noexcept : dplhandle<handle_type, INVAL>(std::move (h )) { } \ C (_Inout_ C &&h) noexcept : dplhandle<T, INVAL>(std::move (h )) {} \
C& operator=(_In_opt_ handle_type h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \ C& operator=(_In_opt_ T h) noexcept { dplhandle<T, INVAL>::operator=( h ); return *this; } \
C& operator=(_In_ const C &h) noexcept { dplhandle<handle_type, INVAL>::operator=( h ); return *this; } \ C& operator=(_In_ const C &h) noexcept { dplhandle<T, INVAL>::operator=( h ); return *this; } \
C& operator=(_Inout_ C &&h) noexcept { dplhandle<handle_type, INVAL>::operator=(std::move(h)); return *this; } \ C& operator=(_Inout_ C &&h) noexcept { dplhandle<T, INVAL>::operator=(std::move(h)); return *this; } \
private: private:
/// @} /// @}
@ -1951,7 +1951,7 @@ namespace winstd
/// ///
/// Deallocate object at _Ptr sanitizing its content first /// Deallocate object at _Ptr sanitizing its content first
/// ///
void deallocate(_In_ pointer _Ptr, _In_ size_type _Count) void deallocate(_In_ _Ty* const _Ptr, _In_ const std::size_t _Count)
{ {
// Sanitize then free. // Sanitize then free.
SecureZeroMemory(_Ptr, sizeof(_Ty) * _Count); SecureZeroMemory(_Ptr, sizeof(_Ty) * _Count);

View File

@ -259,7 +259,7 @@ namespace winstd
/// ///
class cert_context : public dplhandle<PCCERT_CONTEXT, NULL> class cert_context : public dplhandle<PCCERT_CONTEXT, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(cert_context, NULL) WINSTD_DPLHANDLE_IMPL(cert_context, PCCERT_CONTEXT, NULL)
public: public:
/// ///
@ -392,7 +392,7 @@ namespace winstd
/// ///
class cert_chain_context : public dplhandle<PCCERT_CHAIN_CONTEXT, NULL> class cert_chain_context : public dplhandle<PCCERT_CHAIN_CONTEXT, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(cert_chain_context, NULL) WINSTD_DPLHANDLE_IMPL(cert_chain_context, PCCERT_CHAIN_CONTEXT, NULL)
public: public:
/// ///
@ -441,7 +441,7 @@ namespace winstd
/// ///
class cert_store : public handle<HCERTSTORE, NULL> class cert_store : public handle<HCERTSTORE, NULL>
{ {
WINSTD_HANDLE_IMPL(cert_store, NULL) WINSTD_HANDLE_IMPL(cert_store, HCERTSTORE, NULL)
public: public:
/// ///
@ -474,7 +474,7 @@ namespace winstd
/// ///
class crypt_prov : public handle<HCRYPTPROV, NULL> class crypt_prov : public handle<HCRYPTPROV, NULL>
{ {
WINSTD_HANDLE_IMPL(crypt_prov, NULL) WINSTD_HANDLE_IMPL(crypt_prov, HCRYPTPROV, NULL)
public: public:
/// ///
@ -507,7 +507,7 @@ namespace winstd
/// ///
class crypt_hash : public dplhandle<HCRYPTHASH, NULL> class crypt_hash : public dplhandle<HCRYPTHASH, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(crypt_hash, NULL) WINSTD_DPLHANDLE_IMPL(crypt_hash, HCRYPTHASH, NULL)
public: public:
/// ///
@ -560,7 +560,7 @@ namespace winstd
/// ///
class crypt_key : public dplhandle<HCRYPTKEY, NULL> class crypt_key : public dplhandle<HCRYPTKEY, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(crypt_key, NULL) WINSTD_DPLHANDLE_IMPL(crypt_key, HCRYPTKEY, NULL)
public: public:
/// ///

View File

@ -405,7 +405,7 @@ namespace winstd
/// ///
class eap_packet : public dplhandle<EapPacket*, NULL> class eap_packet : public dplhandle<EapPacket*, NULL>
{ {
WINSTD_DPLHANDLE_IMPL(eap_packet, NULL) WINSTD_DPLHANDLE_IMPL(eap_packet, EapPacket*, NULL)
public: public:
/// ///

View File

@ -490,7 +490,7 @@ namespace winstd
/// ///
class event_provider : public handle<REGHANDLE, NULL> class event_provider : public handle<REGHANDLE, NULL>
{ {
WINSTD_HANDLE_IMPL(event_provider, NULL) WINSTD_HANDLE_IMPL(event_provider, REGHANDLE, NULL)
public: public:
/// ///
@ -904,7 +904,7 @@ namespace winstd
/// ///
class event_trace : public handle<TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE> class event_trace : public handle<TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE>
{ {
WINSTD_HANDLE_IMPL(event_trace, INVALID_PROCESSTRACE_HANDLE) WINSTD_HANDLE_IMPL(event_trace, TRACEHANDLE, INVALID_PROCESSTRACE_HANDLE)
public: public:
/// ///

View File

@ -20,7 +20,7 @@ namespace winstd
template<class T> template<class T>
class gdi_handle : public handle<T, NULL> class gdi_handle : public handle<T, NULL>
{ {
WINSTD_HANDLE_IMPL(gdi_handle, NULL) WINSTD_HANDLE_IMPL(gdi_handle, T, NULL)
public: public:
/// ///
@ -51,7 +51,7 @@ namespace winstd
/// ///
class icon : public handle<HICON, NULL> class icon : public handle<HICON, NULL>
{ {
WINSTD_HANDLE_IMPL(icon, NULL) WINSTD_HANDLE_IMPL(icon, HICON, NULL)
public: public:
/// ///
@ -82,7 +82,7 @@ namespace winstd
/// ///
class dc : public handle<HDC, NULL> class dc : public handle<HDC, NULL>
{ {
WINSTD_HANDLE_IMPL(dc, NULL) WINSTD_HANDLE_IMPL(dc, HDC, NULL)
public: public:
/// ///

View File

@ -24,7 +24,7 @@ namespace winstd
/// ///
class setup_device_info_list : public handle<HDEVINFO, INVALID_HANDLE_VALUE> class setup_device_info_list : public handle<HDEVINFO, INVALID_HANDLE_VALUE>
{ {
WINSTD_HANDLE_IMPL(setup_device_info_list, INVALID_HANDLE_VALUE) WINSTD_HANDLE_IMPL(setup_device_info_list, HDEVINFO, INVALID_HANDLE_VALUE)
public: public:
/// ///

View File

@ -131,7 +131,7 @@ namespace winstd
/// ///
class wlan_handle : public handle<HANDLE, NULL> class wlan_handle : public handle<HANDLE, NULL>
{ {
WINSTD_HANDLE_IMPL(wlan_handle, NULL) WINSTD_HANDLE_IMPL(wlan_handle, HANDLE, NULL)
public: public:
/// ///

View File

@ -1030,7 +1030,7 @@ namespace winstd
template<HANDLE INVALID> template<HANDLE INVALID>
class win_handle : public handle<HANDLE, INVALID> class win_handle : public handle<HANDLE, INVALID>
{ {
WINSTD_HANDLE_IMPL(win_handle, INVALID) WINSTD_HANDLE_IMPL(win_handle, HANDLE, INVALID)
public: public:
/// ///
@ -1063,7 +1063,7 @@ namespace winstd
/// ///
class library : public handle<HMODULE, NULL> class library : public handle<HMODULE, NULL>
{ {
WINSTD_HANDLE_IMPL(library, NULL) WINSTD_HANDLE_IMPL(library, HMODULE, NULL)
public: public:
/// ///
@ -1249,7 +1249,7 @@ namespace winstd
/// ///
class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE> class find_file : public handle<HANDLE, INVALID_HANDLE_VALUE>
{ {
WINSTD_HANDLE_IMPL(find_file, INVALID_HANDLE_VALUE) WINSTD_HANDLE_IMPL(find_file, HANDLE, INVALID_HANDLE_VALUE)
public: public:
/// ///
@ -1282,7 +1282,7 @@ namespace winstd
/// ///
class heap : public handle<HANDLE, NULL> class heap : public handle<HANDLE, NULL>
{ {
WINSTD_HANDLE_IMPL(heap, NULL) WINSTD_HANDLE_IMPL(heap, HANDLE, NULL)
public: public:
/// ///
@ -1809,7 +1809,7 @@ namespace winstd
/// ///
class reg_key : public handle<HKEY, NULL> class reg_key : public handle<HKEY, NULL>
{ {
WINSTD_HANDLE_IMPL(reg_key, NULL) WINSTD_HANDLE_IMPL(reg_key, HKEY, NULL)
public: public:
/// ///
@ -1891,7 +1891,7 @@ namespace winstd
/// ///
class security_id : public handle<PSID, NULL> class security_id : public handle<PSID, NULL>
{ {
WINSTD_HANDLE_IMPL(security_id, NULL) WINSTD_HANDLE_IMPL(security_id, PSID, NULL)
public: public:
/// ///
@ -1962,7 +1962,7 @@ namespace winstd
/// ///
class event_log : public handle<HANDLE, NULL> class event_log : public handle<HANDLE, NULL>
{ {
WINSTD_HANDLE_IMPL(event_log, NULL) WINSTD_HANDLE_IMPL(event_log, HANDLE, NULL)
public: public:
/// ///
@ -1993,7 +1993,7 @@ namespace winstd
/// ///
class sc_handle : public handle<SC_HANDLE, NULL> class sc_handle : public handle<SC_HANDLE, NULL>
{ {
WINSTD_HANDLE_IMPL(sc_handle, NULL) WINSTD_HANDLE_IMPL(sc_handle, SC_HANDLE, NULL)
public: public:
/// ///

View File

@ -23,7 +23,7 @@ namespace winstd
/// ///
class http : public handle<HINTERNET, NULL> class http : public handle<HINTERNET, NULL>
{ {
WINSTD_HANDLE_IMPL(http, NULL) WINSTD_HANDLE_IMPL(http, HINTERNET, NULL)
public: public:
/// ///

View File

@ -107,7 +107,7 @@ namespace winstd
/// ///
class addrinfo : public handle<PADDRINFOA, NULL> class addrinfo : public handle<PADDRINFOA, NULL>
{ {
WINSTD_HANDLE_IMPL(addrinfo, NULL) WINSTD_HANDLE_IMPL(addrinfo, PADDRINFOA, NULL)
public: public:
/// ///
@ -140,7 +140,7 @@ namespace winstd
/// ///
class waddrinfo : public handle<PADDRINFOW, NULL> class waddrinfo : public handle<PADDRINFOW, NULL>
{ {
WINSTD_HANDLE_IMPL(waddrinfo, NULL) WINSTD_HANDLE_IMPL(waddrinfo, PADDRINFOW, NULL)
public: public:
/// ///