/** * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER within this package. */ #ifndef _BASETYPS_H_ #define _BASETYPS_H_ #ifdef __cplusplus #define EXTERN_C extern "C" #else #define EXTERN_C extern #endif /* Keep in sync with winnt.h header. */ #ifndef STDMETHODCALLTYPE #define STDMETHODCALLTYPE WINAPI #define STDMETHODVCALLTYPE __cdecl #define STDAPICALLTYPE WINAPI #define STDAPIVCALLTYPE __cdecl #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE #define STDMETHODIMP HRESULT STDMETHODCALLTYPE #define STDMETHODIMP_(type) type STDMETHODCALLTYPE #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE #endif #if defined (__cplusplus) && !defined (CINTERFACE) #ifdef COM_STDMETHOD_CAN_THROW #define COM_DECLSPEC_NOTHROW #else #define COM_DECLSPEC_NOTHROW DECLSPEC_NOTHROW #endif #define __STRUCT__ struct #ifndef __OBJC__ #undef interface #define interface __STRUCT__ #endif #define STDMETHOD(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODCALLTYPE method #define STDMETHOD_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODCALLTYPE method #define STDMETHODV(method) virtual COM_DECLSPEC_NOTHROW HRESULT STDMETHODVCALLTYPE method #define STDMETHODV_(type, method) virtual COM_DECLSPEC_NOTHROW type STDMETHODVCALLTYPE method #define PURE = 0 #define THIS_ #define THIS void #define DECLARE_INTERFACE(iface) interface DECLSPEC_NOVTABLE iface #define DECLARE_INTERFACE_(iface, baseiface) interface DECLSPEC_NOVTABLE iface : public baseiface #else #ifndef __OBJC__ #undef interface #define interface struct #endif #define STDMETHOD(method) HRESULT (STDMETHODCALLTYPE *method) #define STDMETHOD_(type, method) type (STDMETHODCALLTYPE *method) #define STDMETHODV(method) HRESULT (STDMETHODVCALLTYPE *method) #define STDMETHODV_(type, method) type (STDMETHODVCALLTYPE *method) #define PURE #define THIS_ INTERFACE *This, #define THIS INTERFACE *This #ifdef CONST_VTABLE #define DECLARE_INTERFACE(iface) typedef interface iface { const struct iface##Vtbl *lpVtbl; } iface; typedef const struct iface##Vtbl iface##Vtbl; const struct iface##Vtbl #else #define DECLARE_INTERFACE(iface) typedef interface iface { struct iface##Vtbl *lpVtbl; } iface; typedef struct iface##Vtbl iface##Vtbl; struct iface##Vtbl #endif #define DECLARE_INTERFACE_(iface, baseiface) DECLARE_INTERFACE (iface) #endif #define IFACEMETHOD(method) /*override*/ STDMETHOD (method) #define IFACEMETHOD_(type, method) /*override*/ STDMETHOD_(type, method) #define IFACEMETHODV(method) /*override*/ STDMETHODV (method) #define IFACEMETHODV_(type, method) /*override*/ STDMETHODV_(type, method) #include #ifndef _ERROR_STATUS_T_DEFINED #define _ERROR_STATUS_T_DEFINED typedef unsigned __LONG32 error_status_t; #endif #ifndef _WCHAR_T_DEFINED #define _WCHAR_T_DEFINED typedef unsigned short wchar_t; #endif #endif