From 65885f505e76ebecd65ce8c4a52443702c0d3c09 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 27 Jan 2023 13:54:03 +0530 Subject: [PATCH] Use lambdas for template specialization --- src/calibre/utils/cpp_binding.h | 11 ++++------- src/calibre/utils/windows/common.h | 6 ++---- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/calibre/utils/cpp_binding.h b/src/calibre/utils/cpp_binding.h index 31bbc1dcd5..dd6c4a869a 100644 --- a/src/calibre/utils/cpp_binding.h +++ b/src/calibre/utils/cpp_binding.h @@ -17,7 +17,7 @@ #define arraysz(x) (sizeof(x)/sizeof(x[0])) -template(NULL)> +template(NULL)> class generic_raii { private: generic_raii( const generic_raii & ) noexcept; @@ -45,8 +45,8 @@ class generic_raii { explicit operator bool() const noexcept { return handle != null; } }; +class wchar_raii : public generic_raii { #if __cplusplus >= 201703L -class wchar_raii : public generic_raii { private: Py_ssize_t sz; public: @@ -58,13 +58,10 @@ class wchar_raii : public generic_raii { } std::wstring_view as_view() const { return std::wstring_view(handle, sz); } std::wstring as_copy() const { return std::wstring(handle, sz); } -}; -#else -typedef generic_raii wchar_raii; #endif +}; -static inline void python_object_destructor(void *p) { PyObject *x = reinterpret_cast(p); Py_XDECREF(x); } -typedef generic_raii pyobject_raii; +typedef generic_raii pyobject_raii; template(NULL)> class generic_raii_array { diff --git a/src/calibre/utils/windows/common.h b/src/calibre/utils/windows/common.h index 3b5dcdf632..068bae1657 100644 --- a/src/calibre/utils/windows/common.h +++ b/src/calibre/utils/windows/common.h @@ -58,10 +58,8 @@ class scoped_com_initializer { // {{{ #define INITIALIZE_COM_IN_FUNCTION scoped_com_initializer com; if (!com) return com.set_python_error(); -static inline void co_task_mem_free(void* m) { CoTaskMemFree(m); } -typedef generic_raii com_wchar_raii; -static inline void mapping_destructor(void *p) { UnmapViewOfFile(p); } -typedef generic_raii mapping_raii; +typedef generic_raii com_wchar_raii; +typedef generic_raii mapping_raii; class handle_raii { private: