1 /**
2  * This file is part of the mingw-w64 runtime package.
3  * No warranty is given; refer to the file DISCLAIMER within this package.
4  */
5 
6 #ifndef _BASETYPS_H_
7 #define _BASETYPS_H_
8 
9 #ifdef __cplusplus
10 #define EXTERN_C extern "C"
11 #else
12 #define EXTERN_C extern
13 #endif
14 
15 /* Keep in sync with winnt.h header.  */
16 #ifndef STDMETHODCALLTYPE
17 #define STDMETHODCALLTYPE WINAPI
18 #define STDMETHODVCALLTYPE __cdecl
19 #define STDAPICALLTYPE WINAPI
20 #define STDAPIVCALLTYPE __cdecl
21 
22 #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
23 #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE
24 
25 #define STDMETHODIMP HRESULT STDMETHODCALLTYPE
26 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE
27 
28 #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
29 #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE
30 
31 #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
32 #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE
33 #endif
34 
35 #if defined (__cplusplus) && !defined (CINTERFACE)
36 
37 #ifdef COM_STDMETHOD_CAN_THROW
38 #define COM_DECLSPEC_NOTHROW
39 #else
40 #define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW
41 #endif
42 
43 #define __STRUCT__ struct
44 #ifndef __OBJC__
45 #undef interface
46 #define interface __STRUCT__
47 #endif
48 #define STDMETHOD(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE method
49 #define STDMETHOD_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODCALLTYPE method
50 #define STDMETHODV(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODVCALLTYPE method
51 #define STDMETHODV_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODVCALLTYPE method
52 #define PURE = 0
53 #define THIS_
54 #define THIS void
55 #define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface
56 #define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface
57 #else
58 
59 #ifndef __OBJC__
60 #undef interface
61 #define interface struct
62 #endif
63 
64 #define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method)
65 #define STDMETHOD_(type, method) type (STDMETHODCALLTYPE *method)
66 #define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method)
67 #define STDMETHODV_(type, method) type (STDMETHODVCALLTYPE *method)
68 
69 #define PURE
70 #define THIS_ INTERFACE *This,
71 #define THIS INTERFACE *This
72 #ifdef CONST_VTABLE
73 #define DECLARE_INTERFACE(iface) typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl
74 #else
75 #define DECLARE_INTERFACE(iface) typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl
76 #endif
77 #define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE (iface)
78 #endif
79 
80 #define IFACEMETHOD(method) /*override*/ STDMETHOD (method)
81 #define IFACEMETHOD_(type, method) /*override*/ STDMETHOD_(type, method)
82 #define IFACEMETHODV(method) /*override*/ STDMETHODV (method)
83 #define IFACEMETHODV_(type, method) /*override*/ STDMETHODV_(type, method)
84 
85 #include <guiddef.h>
86 
87 #ifndef _ERROR_STATUS_T_DEFINED
88 #define _ERROR_STATUS_T_DEFINED
89 typedef unsigned __LONG32 error_status_t;
90 #endif
91 
92 #ifndef _WCHAR_T_DEFINED
93 #define _WCHAR_T_DEFINED
94 typedef unsigned short wchar_t;
95 #endif
96 
97 #endif
98