Subversion Repositories Games.Chess Giants

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1 pmbaty 1
// comdecl.h: Macros to facilitate COM interface and GUID declarations.
2
// Copyright (c) Microsoft Corporation.  All rights reserved.
3
 
4
#ifndef _COMDECL_H_
5
#define _COMDECL_H_
6
 
7
#ifndef _XBOX
8
    #include <basetyps.h>   // For standard COM interface macros
9
#else
10
    #pragma warning(push)
11
    #pragma warning(disable:4061)
12
    #include <xtl.h>        // Required by xobjbase.h
13
    #include <xobjbase.h>   // Special definitions for Xbox build
14
    #pragma warning(pop)
15
#endif
16
 
17
// The DEFINE_CLSID() and DEFINE_IID() macros defined below allow COM GUIDs to
18
// be declared and defined in such a way that clients can obtain the GUIDs using
19
// either the __uuidof() extension or the old-style CLSID_Foo / IID_IFoo names.
20
// If using the latter approach, the client can also choose whether to get the
21
// GUID definitions by defining the INITGUID preprocessor constant or by linking
22
// to a GUID library.  This works in either C or C++.
23
 
24
#ifdef __cplusplus
25
 
26
    #define DECLSPEC_UUID_WRAPPER(x) __declspec(uuid(#x))
27
    #ifdef INITGUID
28
 
29
        #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
30
            class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
31
            EXTERN_C const GUID DECLSPEC_SELECTANY CLSID_##className = __uuidof(className)
32
 
33
        #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
34
            interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
35
            EXTERN_C const GUID DECLSPEC_SELECTANY IID_##interfaceName = __uuidof(interfaceName)
36
 
37
    #else // INITGUID
38
 
39
        #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
40
            class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
41
            EXTERN_C const GUID CLSID_##className
42
 
43
        #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
44
            interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
45
            EXTERN_C const GUID IID_##interfaceName
46
 
47
    #endif // INITGUID
48
 
49
#else // __cplusplus
50
 
51
    #define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
52
        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)
53
 
54
    #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
55
        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)
56
 
57
#endif // __cplusplus
58
 
59
#endif // #ifndef _COMDECL_H_