[PATCH vkd3d 2/2] include: Add emulation of __uuidof().
Józef Kucia
joseph.kucia at gmail.com
Tue Apr 3 04:49:14 CDT 2018
From: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
include/vkd3d_windows.h | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/include/vkd3d_windows.h b/include/vkd3d_windows.h
index 3b1f92a13e51..425d13967bc8 100644
--- a/include/vkd3d_windows.h
+++ b/include/vkd3d_windows.h
@@ -122,6 +122,33 @@ typedef GUID IID;
EXTERN_C const GUID name DECLSPEC_HIDDEN;
# endif /* INITGUID */
+/* __uuidof emulation */
+#if defined(__cplusplus) && !defined(_MSC_VER)
+
+extern "C++"
+{
+ template<typename T> const GUID &__vkd3d_uuidof();
+}
+
+# define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ extern "C++" \
+ { \
+ template<> inline const GUID &__vkd3d_uuidof<type>() \
+ { \
+ static const IID __uuid_inst = {l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}}; \
+ return __uuid_inst; \
+ } \
+ template<> inline const GUID &__vkd3d_uuidof<type *>() \
+ { \
+ return __vkd3d_uuidof<type>(); \
+ } \
+ }
+
+# define __uuidof(type) __vkd3d_uuidof<typeof(type)>()
+#else
+# define __CRT_UUID_DECL(type, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
+#endif /* defined(__cplusplus) && !defined(_MSC_VER) */
+
typedef struct SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES;
#endif /* !defined(_WIN32) || defined(__WIDL__) */
--
2.16.1
More information about the wine-devel
mailing list