summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/dxsdk/Include/comdecl.h
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/dxsdk/Include/comdecl.h')
-rw-r--r--3rdparty/dxsdk/Include/comdecl.h59
1 files changed, 59 insertions, 0 deletions
diff --git a/3rdparty/dxsdk/Include/comdecl.h b/3rdparty/dxsdk/Include/comdecl.h
new file mode 100644
index 00000000000..2ae9a961e93
--- /dev/null
+++ b/3rdparty/dxsdk/Include/comdecl.h
@@ -0,0 +1,59 @@
+// comdecl.h: Macros to facilitate COM interface and GUID declarations.
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+#ifndef _COMDECL_H_
+#define _COMDECL_H_
+
+#ifndef _XBOX
+ #include <basetyps.h> // For standard COM interface macros
+#else
+ #pragma warning(push)
+ #pragma warning(disable:4061)
+ #include <xtl.h> // Required by xobjbase.h
+ #include <xobjbase.h> // Special definitions for Xbox build
+ #pragma warning(pop)
+#endif
+
+// The DEFINE_CLSID() and DEFINE_IID() macros defined below allow COM GUIDs to
+// be declared and defined in such a way that clients can obtain the GUIDs using
+// either the __uuidof() extension or the old-style CLSID_Foo / IID_IFoo names.
+// If using the latter approach, the client can also choose whether to get the
+// GUID definitions by defining the INITGUID preprocessor constant or by linking
+// to a GUID library. This works in either C or C++.
+
+#ifdef __cplusplus
+
+ #define DECLSPEC_UUID_WRAPPER(x) __declspec(uuid(#x))
+ #ifdef INITGUID
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
+ EXTERN_C const GUID DECLSPEC_SELECTANY CLSID_##className = __uuidof(className)
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
+ EXTERN_C const GUID DECLSPEC_SELECTANY IID_##interfaceName = __uuidof(interfaceName)
+
+ #else // INITGUID
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
+ EXTERN_C const GUID CLSID_##className
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
+ EXTERN_C const GUID IID_##interfaceName
+
+ #endif // INITGUID
+
+#else // __cplusplus
+
+ #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
+
+ #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+ DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8)
+
+#endif // __cplusplus
+
+#endif // #ifndef _COMDECL_H_