/usr/x86_64-w64-mingw32/include/comdef.h is in mingw-w64-x86-64-dev 2.0.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | /**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
*/
#ifndef _INC_COMDEF
#define _INC_COMDEF
#include <_mingw.h>
#ifndef RC_INVOKED
#ifndef __cplusplus
#error Native Compiler support only available in C++ compiler
#endif
#include <ole2.h>
#include <olectl.h>
#include <comutil.h>
#ifndef WINAPI
#define WINAPI __stdcall
#endif
#ifdef __cplusplus
class _com_error;
void WINAPI _com_raise_error(HRESULT hr,IErrorInfo *perrinfo = 0);
void WINAPI _set_com_error_handler(void (WINAPI *pHandler)(HRESULT hr,IErrorInfo *perrinfo));
void WINAPI _com_issue_error(HRESULT);
void WINAPI _com_issue_errorex(HRESULT,IUnknown*,REFIID);
HRESULT WINAPI _com_dispatch_propget(IDispatch*,DISPID,VARTYPE,void*);
HRESULT __cdecl _com_dispatch_propput(IDispatch*,DISPID,VARTYPE,...);
HRESULT __cdecl _com_dispatch_method(IDispatch*,DISPID,WORD,VARTYPE,void*,const wchar_t*,...);
HRESULT WINAPI _com_dispatch_raw_propget(IDispatch*,DISPID,VARTYPE,void*) throw();
HRESULT __cdecl _com_dispatch_raw_propput(IDispatch*,DISPID,VARTYPE,...) throw();
HRESULT __cdecl _com_dispatch_raw_method(IDispatch*,DISPID,WORD,VARTYPE,void*,const wchar_t*,...) throw();
class _com_error {
public:
_com_error(HRESULT hr,IErrorInfo *perrinfo = NULL,bool fAddRef = false) throw();
_com_error(const _com_error &that) throw();
virtual ~_com_error() throw();
_com_error &operator=(const _com_error &that) throw();
HRESULT Error() const throw();
WORD WCode() const throw();
IErrorInfo *ErrorInfo() const throw();
_bstr_t Description() const;
DWORD HelpContext() const throw();
_bstr_t HelpFile() const;
_bstr_t Source() const;
GUID GUID_() const throw();
const TCHAR *ErrorMessage() const throw();
static HRESULT WCodeToHRESULT(WORD wCode) throw();
static WORD HRESULTToWCode(HRESULT hr) throw();
private:
void Dtor() throw();
void Ctor(const _com_error &that) throw();
enum {
WCODE_HRESULT_FIRST = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200),WCODE_HRESULT_LAST = MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF+1,0) - 1
};
HRESULT m_hresult;
IErrorInfo *m_perrinfo;
mutable TCHAR *m_pszMsg;
};
inline _com_error::_com_error(HRESULT hr,IErrorInfo *perrinfo,bool fAddRef) throw() : m_hresult(hr),m_perrinfo(perrinfo),m_pszMsg(NULL) {
if(m_perrinfo!=NULL && fAddRef) m_perrinfo->AddRef();
}
inline _com_error::_com_error(const _com_error &that) throw() {
Ctor(that);
}
inline _com_error::~_com_error() throw() {
Dtor();
}
inline _com_error &_com_error::operator=(const _com_error &that) throw() {
if(this!=&that) {
Dtor();
Ctor(that);
}
return *this;
}
inline HRESULT _com_error::Error() const throw() { return m_hresult; }
inline WORD _com_error::WCode() const throw() { return HRESULTToWCode(m_hresult); }
inline IErrorInfo *_com_error::ErrorInfo() const throw() {
if(m_perrinfo!=NULL) m_perrinfo->AddRef();
return m_perrinfo;
}
inline _bstr_t _com_error::Description() const {
BSTR bstr = NULL;
if(m_perrinfo!=NULL) m_perrinfo->GetDescription(&bstr);
return _bstr_t(bstr,false);
}
inline DWORD _com_error::HelpContext() const throw() {
DWORD dwHelpContext = 0;
if(m_perrinfo!=NULL) m_perrinfo->GetHelpContext(&dwHelpContext);
return dwHelpContext;
}
inline _bstr_t _com_error::HelpFile() const {
BSTR bstr = NULL;
if(m_perrinfo!=NULL) m_perrinfo->GetHelpFile(&bstr);
return _bstr_t(bstr,false);
}
inline _bstr_t _com_error::Source() const {
BSTR bstr = NULL;
if(m_perrinfo!=NULL) m_perrinfo->GetSource(&bstr);
return _bstr_t(bstr,false);
}
inline _GUID _com_error::GUID_() const throw() {
_GUID guid;
memset (&guid, 0, sizeof (_GUID));
if(m_perrinfo!=NULL) m_perrinfo->GetGUID(&guid);
return guid;
}
inline const TCHAR *_com_error::ErrorMessage() const throw() {
if(!m_pszMsg) {
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM,NULL,m_hresult,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),(LPTSTR)&m_pszMsg,0,NULL);
if(m_pszMsg!=NULL) {
int nLen = lstrlen(m_pszMsg);
if(nLen > 1 && m_pszMsg[nLen - 1]=='\n') {
m_pszMsg[nLen-1] = 0;
if(m_pszMsg[nLen - 2]=='\r') m_pszMsg[nLen-2] = 0;
}
} else {
m_pszMsg = (LPTSTR)LocalAlloc(0,32 *sizeof(TCHAR));
if(m_pszMsg!=NULL) {
WORD wCode = WCode();
if(wCode!=0) {
_COM_PRINTF_S_1(m_pszMsg,32,TEXT("IDispatch error #%d"),wCode);
} else {
_COM_PRINTF_S_1(m_pszMsg,32,TEXT("Unknown error 0x%0lX"),m_hresult);
}
}
}
}
return m_pszMsg;
}
inline HRESULT _com_error::WCodeToHRESULT(WORD wCode) throw() { return wCode >= 0xFE00 ? WCODE_HRESULT_LAST : WCODE_HRESULT_FIRST + wCode; }
inline WORD _com_error::HRESULTToWCode(HRESULT hr) throw() { return (hr >= WCODE_HRESULT_FIRST && hr <= WCODE_HRESULT_LAST) ? WORD(hr - WCODE_HRESULT_FIRST) : 0; }
inline void _com_error::Dtor() throw() {
if(m_perrinfo!=NULL) m_perrinfo->Release();
if(m_pszMsg!=NULL) LocalFree((HLOCAL)m_pszMsg);
}
inline void _com_error::Ctor(const _com_error &that) throw() {
m_hresult = that.m_hresult;
m_perrinfo = that.m_perrinfo;
m_pszMsg = NULL;
if(m_perrinfo!=NULL) m_perrinfo->AddRef();
}
typedef int __missing_type__;
#if !defined(_COM_SMARTPTR)
#if !defined(_INC_COMIP)
#include <comip.h>
#endif
#define _COM_SMARTPTR _com_ptr_t
#define _COM_SMARTPTR_LEVEL2 _com_IIID
#endif
#if defined(_COM_SMARTPTR)
#if !defined(_COM_SMARTPTR_TYPEDEF)
#if defined(_COM_SMARTPTR_LEVEL2)
#define _COM_SMARTPTR_TYPEDEF(Interface,IID) UUID IIDArgForTypedef ## Interface = IID; typedef _COM_SMARTPTR< _COM_SMARTPTR_LEVEL2<Interface, &IIDArgForTypedef ## Interface > > Interface ## Ptr
#else
#define _COM_SMARTPTR_TYPEDEF(Interface,IID) UUID IIDArgForTypedef ## Interface = IID; typedef _COM_SMARTPTR<Interface,&IIDArgForTypedef ## Interface > Interface ## Ptr
#endif
#endif
#endif
#if !defined(_COM_NO_STANDARD_GUIDS_) && USE___UUIDOF != 0
#if defined(__IFontDisp_INTERFACE_DEFINED__)
#if !defined(Font)
struct Font : IFontDisp {};
#endif
_COM_SMARTPTR_TYPEDEF(Font,__uuidof(IDispatch));
#endif
#if defined(__IFontEventsDisp_INTERFACE_DEFINED__)
#if !defined(FontEvents)
struct FontEvents : IFontEventsDisp {};
#endif
_COM_SMARTPTR_TYPEDEF(FontEvents,__uuidof(IDispatch));
#endif
#if defined(__IPictureDisp_INTERFACE_DEFINED__)
#if !defined(Picture)
struct Picture : IPictureDisp {};
#endif
_COM_SMARTPTR_TYPEDEF(Picture,__uuidof(IDispatch));
#endif
#include "comdefsp.h"
#endif
#endif
#endif /* __cplusplus */
#endif
|