[PATCH v3] include: Add COM_DECLSPEC_NOTHROW define
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Thu Oct 17 21:48:15 CDT 2019
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
include/basetyps.h | 7 +++++--
include/objbase.h | 10 ++++++----
include/winnt.h | 10 ++++++++++
3 files changed, 21 insertions(+), 6 deletions(-)
diff --git a/include/basetyps.h b/include/basetyps.h
index 94875334b0..0a30ee1cc2 100644
--- a/include/basetyps.h
+++ b/include/basetyps.h
@@ -40,9 +40,12 @@
#define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE
#if defined(__cplusplus) && !defined(CINTERFACE)
+
+#define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
+
# define interface struct
-# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m
-# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m
+# define STDMETHOD(m) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE m
+# define STDMETHOD_(t,m) virtual COM_DECLSPEC_NOTHROW t STDMETHODCALLTYPE m
# define PURE =0
# define THIS_
# define THIS void
diff --git a/include/objbase.h b/include/objbase.h
index a241b71199..0f910f5da5 100644
--- a/include/objbase.h
+++ b/include/objbase.h
@@ -172,12 +172,14 @@
#if defined(__cplusplus) && !defined(CINTERFACE)
+#define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
+
/* C++ interface */
-#define STDMETHOD(method) virtual HRESULT STDMETHODCALLTYPE method
-#define STDMETHOD_(type,method) virtual type STDMETHODCALLTYPE method
-#define STDMETHODV(method) virtual HRESULT STDMETHODVCALLTYPE method
-#define STDMETHODV_(type,method) virtual type STDMETHODVCALLTYPE method
+#define STDMETHOD(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE method
+#define STDMETHOD_(type,method) virtual COM_DECLSPEC_NOTHROW type STDMETHODCALLTYPE method
+#define STDMETHODV(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODVCALLTYPE method
+#define STDMETHODV_(type,method) virtual COM_DECLSPEC_NOTHROW type STDMETHODVCALLTYPE method
#define PURE = 0
#define THIS_
diff --git a/include/winnt.h b/include/winnt.h
index 3f59bd9f30..9c39eb7e4d 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -76,6 +76,16 @@ extern "C" {
# endif
#endif
+#ifndef DECLSPEC_NOTHROW
+# if defined(_MSC_VER) && (_MSC_VER >= 1200) && !defined(MIDL_PASS)
+# define DECLSPEC_NOTHROW __declspec(nothrow)
+# elif defined(__GNUC__)
+# define DECLSPEC_NOTHROW __attribute__((nothrow))
+# else
+# define DECLSPEC_NOTHROW
+# endif
+#endif
+
#ifndef DECLSPEC_CACHEALIGN
# define DECLSPEC_CACHEALIGN DECLSPEC_ALIGN(128)
#endif
--
2.17.1
More information about the wine-devel
mailing list