=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: include: Add emulation of __uuidof().

Alexandre Julliard julliard at winehq.org
Tue Apr 3 15:08:29 CDT 2018


Module: vkd3d
Branch: master
Commit: 3ebe7d5b9b4a102bd3f6595f155087ce5eab8c4d
URL:    https://source.winehq.org/git/vkd3d.git/?a=commit;h=3ebe7d5b9b4a102bd3f6595f155087ce5eab8c4d

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Tue Apr  3 11:49:14 2018 +0200

include: Add emulation of __uuidof().

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/vkd3d_windows.h | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/include/vkd3d_windows.h b/include/vkd3d_windows.h
index 3b1f92a..425d139 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__) */
 




More information about the wine-cvs mailing list