| /* |
| * Defines the COM interfaces and APIs related to OLE automation support. |
| * |
| * Copyright (C) the Wine project |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
| */ |
| |
| #ifndef __WINE_WINE_OBJ_OLEAUT_H |
| #define __WINE_WINE_OBJ_OLEAUT_H |
| |
| |
| DEFINE_OLEGUID(IID_StdOle, 0x00020430,0,0); |
| |
| /***************************************************************************** |
| * Predeclare the interfaces |
| */ |
| DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0); |
| typedef struct IDispatch IDispatch,*LPDISPATCH; |
| |
| DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0); |
| typedef struct ITypeInfo ITypeInfo,*LPTYPEINFO; |
| |
| DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0); |
| typedef struct ITypeLib ITypeLib,*LPTYPELIB; |
| |
| DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0); |
| typedef struct ITypeComp ITypeComp,*LPTYPECOMP; |
| |
| DEFINE_OLEGUID(IID_IEnumVARIANT, 0x00020404,0,0); |
| typedef struct IEnumVARIANT IEnumVARIANT,*LPENUMVARIANT; |
| |
| DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0); |
| typedef struct ICreateTypeInfo ICreateTypeInfo,*LPCREATETYPEINFO; |
| |
| DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0); |
| typedef struct ICreateTypeLib ICreateTypeLib,*LPCREATETYPELIB; |
| |
| DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0); |
| typedef struct ICreateTypeInfo2 ICreateTypeInfo2,*LPCREATETYPEINFO2; |
| |
| DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0); |
| typedef struct ICreateTypeLib2 ICreateTypeLib2,*LPCREATETYPELIB2; |
| |
| DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0); |
| typedef struct ITypeChangeEvents ITypeChangeEvents,*LPTYPECHANGEEVENTS; |
| |
| DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0); |
| typedef struct ITypeLib2 ITypeLib2,*LPTYPELIB2; |
| |
| DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0); |
| typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2; |
| |
| /* The OLE Automation ProxyStub Interface Class (aka Typelib Marshaler) */ |
| DEFINE_OLEGUID(CLSID_PSOAInterface, 0x00020424,0,0); |
| |
| /***************************************************************************** |
| * Automation data types |
| */ |
| |
| /***************************************************************** |
| * SafeArray defines and structs |
| */ |
| |
| #define FADF_AUTO ( 0x1 ) |
| #define FADF_STATIC ( 0x2 ) |
| #define FADF_EMBEDDED ( 0x4 ) |
| #define FADF_FIXEDSIZE ( 0x10 ) |
| #define FADF_RECORD ( 0x20 ) |
| #define FADF_HAVEIID ( 0x40 ) |
| #define FADF_HAVEVARTYPE ( 0x80 ) |
| #define FADF_BSTR ( 0x100 ) |
| #define FADF_UNKNOWN ( 0x200 ) |
| #define FADF_DISPATCH ( 0x400 ) |
| #define FADF_VARIANT ( 0x800 ) |
| #define FADF_RESERVED ( 0xf008 ) |
| |
| /* Undocumented flags */ |
| #define FADF_CREATEVECTOR ( 0x2000 ) /* set when the safe array is created using SafeArrayCreateVector */ |
| |
| |
| typedef struct tagSAFEARRAYBOUND |
| { |
| ULONG cElements; /* Number of elements in dimension */ |
| LONG lLbound; /* Lower bound of dimension */ |
| } SAFEARRAYBOUND; |
| |
| typedef struct tagSAFEARRAY |
| { |
| USHORT cDims; /* Count of array dimension */ |
| USHORT fFeatures; /* Flags describing the array */ |
| ULONG cbElements; /* Size of each element */ |
| ULONG cLocks; /* Number of lock on array */ |
| PVOID pvData; /* Pointer to data valid when cLocks > 0 */ |
| SAFEARRAYBOUND rgsabound[ 1 ]; /* One bound for each dimension */ |
| } SAFEARRAY, *LPSAFEARRAY; |
| |
| typedef enum tagCALLCONV { |
| CC_CDECL = 1, |
| CC_MSCPASCAL = CC_CDECL + 1, |
| CC_PASCAL = CC_MSCPASCAL, |
| CC_MACPASCAL = CC_PASCAL + 1, |
| CC_STDCALL = CC_MACPASCAL + 1, |
| CC_RESERVED = CC_STDCALL + 1, |
| CC_SYSCALL = CC_RESERVED + 1, |
| CC_MPWCDECL = CC_SYSCALL + 1, |
| CC_MPWPASCAL = CC_MPWCDECL + 1, |
| CC_MAX = CC_MPWPASCAL + 1 |
| } CALLCONV; |
| |
| typedef CY CURRENCY; |
| |
| /* |
| * Declarations of the VARIANT structure and the VARIANT APIs. |
| */ |
| /* S_OK : Success. |
| * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant. |
| * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type. |
| * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant. |
| * E_INVALIDARG : One argument is invalid. |
| * * E_OUTOFMEMORY : Memory could not be allocated for the conversion. |
| * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked. |
| */ |
| #if (__STDC__ && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) |
| #define __VARIANT_NAME_1 n1 |
| #define __VARIANT_NAME_2 n2 |
| #define __VARIANT_NAME_3 n3 |
| #else |
| #define __tagVARIANT |
| #define __VARIANT_NAME_1 |
| #define __VARIANT_NAME_2 |
| #define __VARIANT_NAME_3 |
| #endif |
| |
| typedef struct tagVARIANT VARIANT, *LPVARIANT; |
| typedef struct tagVARIANT VARIANTARG, *LPVARIANTARG; |
| |
| struct tagVARIANT |
| { |
| union |
| { |
| struct __tagVARIANT |
| { |
| VARTYPE vt; |
| WORD wReserved1; |
| WORD wReserved2; |
| WORD wReserved3; |
| union /* DUMMYUNIONNAME */ |
| { |
| /* By value. */ |
| CHAR cVal; |
| USHORT uiVal; |
| ULONG ulVal; |
| INT intVal; |
| UINT uintVal; |
| BYTE bVal; |
| short iVal; |
| long lVal; |
| float fltVal; |
| double dblVal; |
| VARIANT_BOOL boolVal; |
| SCODE scode; |
| DATE date; |
| BSTR bstrVal; |
| CY cyVal; |
| IUnknown* punkVal; |
| IDispatch* pdispVal; |
| SAFEARRAY* parray; |
| |
| /* By reference */ |
| CHAR* pcVal; |
| USHORT* puiVal; |
| ULONG* pulVal; |
| INT* pintVal; |
| UINT* puintVal; |
| BYTE* pbVal; |
| short* piVal; |
| long* plVal; |
| float* pfltVal; |
| double* pdblVal; |
| VARIANT_BOOL* pboolVal; |
| SCODE* pscode; |
| DATE* pdate; |
| BSTR* pbstrVal; |
| VARIANT* pvarVal; |
| PVOID byref; |
| CY* pcyVal; |
| DECIMAL* pdecVal; |
| IUnknown** ppunkVal; |
| IDispatch** ppdispVal; |
| SAFEARRAY** pparray; |
| } __VARIANT_NAME_3; |
| } __VARIANT_NAME_2; |
| DECIMAL decVal; |
| } __VARIANT_NAME_1; |
| }; |
| |
| |
| typedef LONG DISPID; |
| typedef DWORD HREFTYPE; |
| typedef DISPID MEMBERID; |
| |
| #define DISPATCH_METHOD 0x1 |
| #define DISPATCH_PROPERTYGET 0x2 |
| #define DISPATCH_PROPERTYPUT 0x4 |
| #define DISPATCH_PROPERTYPUTREF 0x8 |
| |
| #define DISPID_UNKNOWN ( -1 ) |
| #define DISPID_VALUE ( 0 ) |
| #define DISPID_PROPERTYPUT ( -3 ) |
| #define DISPID_NEWENUM ( -4 ) |
| #define DISPID_EVALUATE ( -5 ) |
| #define DISPID_CONSTRUCTOR ( -6 ) |
| #define DISPID_DESTRUCTOR ( -7 ) |
| #define DISPID_COLLECT ( -8 ) |
| |
| #define MEMBERID_NIL DISPID_UNKNOWN |
| |
| #define IMPLTYPEFLAG_FDEFAULT (0x1) |
| #define IMPLTYPEFLAG_FSOURCE (0x2) |
| #define IMPLTYPEFLAG_FRESTRICTED (0x4) |
| #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8) |
| |
| typedef struct tagDISPPARAMS |
| { |
| VARIANTARG* rgvarg; |
| DISPID* rgdispidNamedArgs; |
| UINT cArgs; |
| UINT cNamedArgs; |
| } DISPPARAMS; |
| |
| typedef struct tagEXCEPINFO |
| { |
| WORD wCode; |
| WORD wReserved; |
| BSTR bstrSource; |
| BSTR bstrDescription; |
| BSTR bstrHelpFile; |
| DWORD dwHelpContext; |
| PVOID pvReserved; |
| HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *); |
| SCODE scode; |
| } EXCEPINFO, * LPEXCEPINFO; |
| |
| typedef struct tagIDLDESC |
| { |
| ULONG dwReserved; |
| USHORT wIDLFlags; |
| } IDLDESC; |
| |
| typedef struct tagPARAMDESCEX |
| { |
| ULONG cBytes; |
| VARIANTARG varDefaultValue; |
| } PARAMDESCEX, *LPPARAMDESCEX; |
| |
| typedef struct tagPARAMDESC |
| { |
| LPPARAMDESCEX pparamdescex; |
| USHORT wParamFlags; |
| } PARAMDESC; |
| |
| #define PARAMFLAG_NONE (0x00) |
| #define PARAMFLAG_FIN (0x01) |
| #define PARAMFLAG_FOUT (0x02) |
| #define PARAMFLAG_FLCID (0x04) |
| #define PARAMFLAG_FRETVAL (0x08) |
| #define PARAMFLAG_FOPT (0x10) |
| #define PARAMFLAG_FHASDEFAULT (0x20) |
| #define PARAMFLAG_FHASCUSTDATA (0x40) |
| |
| typedef struct tagTYPEDESC |
| { |
| union { |
| struct tagTYPEDESC *lptdesc; |
| struct tagARRAYDESC *lpadesc; |
| HREFTYPE hreftype; |
| } DUMMYUNIONNAME; |
| VARTYPE vt; |
| } TYPEDESC; |
| |
| typedef struct tagELEMDESC |
| { |
| TYPEDESC tdesc; |
| union { |
| IDLDESC idldesc; |
| PARAMDESC paramdesc; |
| } DUMMYUNIONNAME; |
| } ELEMDESC, *LPELEMDESC; |
| |
| typedef enum tagTYPEKIND |
| { |
| TKIND_ENUM = 0, |
| TKIND_RECORD = 1, |
| TKIND_MODULE = 2, |
| TKIND_INTERFACE = 3, |
| TKIND_DISPATCH = 4, |
| TKIND_COCLASS = 5, |
| TKIND_ALIAS = 6, |
| TKIND_UNION = 7, |
| TKIND_MAX = 8 |
| } TYPEKIND; |
| |
| typedef struct tagTYPEATTR |
| { |
| GUID guid; |
| LCID lcid; |
| DWORD dwReserved; |
| MEMBERID memidConstructor; |
| MEMBERID memidDestructor; |
| LPOLESTR lpstrSchema; |
| ULONG cbSizeInstance; |
| TYPEKIND typekind; |
| WORD cFuncs; |
| WORD cVars; |
| WORD cImplTypes; |
| WORD cbSizeVft; |
| WORD cbAlignment; |
| WORD wTypeFlags; |
| WORD wMajorVerNum; |
| WORD wMinorVerNum; |
| TYPEDESC tdescAlias; |
| IDLDESC idldescType; |
| } TYPEATTR, *LPTYPEATTR; |
| |
| typedef enum tagTYPEFLAGS { |
| TYPEFLAG_FAPPOBJECT = 0x01, |
| TYPEFLAG_FCANCREATE = 0x02, |
| TYPEFLAG_FLICENSED = 0x04, |
| TYPEFLAG_FPREDECLID = 0x08, |
| TYPEFLAG_FHIDDEN = 0x10, |
| TYPEFLAG_FCONTROL = 0x20, |
| TYPEFLAG_FDUAL = 0x40, |
| TYPEFLAG_FNONEXTENSIBLE = 0x80, |
| TYPEFLAG_FOLEAUTOMATION = 0x100, |
| TYPEFLAG_FRESTRICTED = 0x200, |
| TYPEFLAG_FAGGREGATABLE = 0x400, |
| TYPEFLAG_FREPLACEABLE = 0x800, |
| TYPEFLAG_FDISPATCHABLE = 0x1000, |
| TYPEFLAG_FREVERSEBIND = 0x2000, |
| TYPEFLAG_FPROXY = 0x4000 |
| } TYPEFLAGS; |
| |
| typedef struct tagARRAYDESC |
| { |
| TYPEDESC tdescElem; |
| USHORT cDims; |
| SAFEARRAYBOUND rgbounds[1]; |
| } ARRAYDESC; |
| |
| typedef enum tagFUNCKIND |
| { |
| FUNC_VIRTUAL = 0, |
| FUNC_PUREVIRTUAL = 1, |
| FUNC_NONVIRTUAL = 2, |
| FUNC_STATIC = 3, |
| FUNC_DISPATCH = 4 |
| } FUNCKIND; |
| |
| typedef enum tagFUNCFLAGS |
| { |
| FUNCFLAG_FRESTRICTED = 0x1, |
| FUNCFLAG_FSOURCE = 0x2, |
| FUNCFLAG_FBINDABLE = 0x4, |
| FUNCFLAG_FREQUESTEDIT = 0x8, |
| FUNCFLAG_FDISPLAYBIND = 0x10, |
| FUNCFLAG_FDEFAULTBIND = 0x20, |
| FUNCFLAG_FHIDDEN = 0x40, |
| FUNCFLAG_FUSESGETLASTERROR = 0x80, |
| FUNCFLAG_FDEFAULTCOLLELEM = 0x100, |
| FUNCFLAG_FUIDEFAULT = 0x200, |
| FUNCFLAG_FNONBROWSABLE = 0x400, |
| FUNCFLAG_FREPLACEABLE = 0x800, |
| FUNCFLAG_FIMMEDIATEBIND = 0x1000 |
| } FUNCFLAGS; |
| |
| typedef enum tagINVOKEKIND |
| { |
| INVOKE_FUNC = 1, |
| INVOKE_PROPERTYGET = 2, |
| INVOKE_PROPERTYPUT = 4, |
| INVOKE_PROPERTYPUTREF = 8 |
| } INVOKEKIND; |
| |
| typedef struct tagFUNCDESC |
| { |
| MEMBERID memid; |
| SCODE *lprgscode; |
| ELEMDESC *lprgelemdescParam; |
| FUNCKIND funckind; |
| INVOKEKIND invkind; |
| CALLCONV callconv; |
| SHORT cParams; |
| SHORT cParamsOpt; |
| SHORT oVft; |
| SHORT cScodes; |
| ELEMDESC elemdescFunc; |
| WORD wFuncFlags; |
| } FUNCDESC, *LPFUNCDESC; |
| |
| typedef enum tagVARKIND |
| { |
| VAR_PERINSTANCE = 0, |
| VAR_STATIC = 1, |
| VAR_CONST = 2, |
| VAR_DISPATCH = 3 |
| } VARKIND; |
| |
| typedef struct tagVARDESC |
| { |
| MEMBERID memid; |
| LPOLESTR lpstrSchema; |
| union { |
| ULONG oInst; |
| VARIANT *lpvarValue; |
| } DUMMYUNIONNAME; |
| ELEMDESC elemdescVar; |
| WORD wVarFlags; |
| VARKIND varkind; |
| } VARDESC, *LPVARDESC; |
| |
| typedef enum tagSYSKIND |
| { |
| SYS_WIN16 = 0, |
| SYS_WIN32 = 1, |
| SYS_MAC = 2 |
| } SYSKIND; |
| |
| typedef enum tagLIBFLAGS |
| { |
| LIBFLAG_FRESTRICTED = 0x1, |
| LIBFLAG_FCONTROL = 0x2, |
| LIBFLAG_FHIDDEN = 0x4, |
| LIBFLAG_FHASDISKIMAGE = 0x8 |
| } LIBFLAGS; |
| |
| typedef struct tagTLIBATTR |
| { |
| GUID guid; |
| LCID lcid; |
| SYSKIND syskind; |
| WORD wMajorVerNum; |
| WORD wMinorVerNum; |
| WORD wLibFlags; |
| } TLIBATTR, *LPTLIBATTR; |
| |
| typedef enum tagDESCKIND |
| { |
| DESCKIND_NONE = 0, |
| DESCKIND_FUNCDESC = 1, |
| DESCKIND_VARDESC = 2, |
| DESCKIND_TYPECOMP = 3, |
| DESCKIND_IMPLICITAPPOBJ = 4, |
| DESCKIND_MAX = 5 |
| } DESCKIND; |
| |
| typedef union tagBINDPTR |
| { |
| FUNCDESC *lpfuncdesc; |
| VARDESC *lpvardesc; |
| ITypeComp *lptcomp; |
| } BINDPTR, *LPBINDPTR; |
| |
| typedef enum tagVARFLAGS |
| { |
| VARFLAG_FREADONLY = 0x1, |
| VARFLAG_FSOURCE = 0x2, |
| VARFLAG_FBINDABLE = 0x4, |
| VARFLAG_FREQUESTEDIT = 0x8, |
| VARFLAG_FDISPLAYBIND = 0x10, |
| VARFLAG_FDEFAULTBIND = 0x20, |
| VARFLAG_FHIDDEN = 0x40, |
| VARFLAG_FRESTRICTED = 0x80, |
| VARFLAG_FDEFAULTCOLLELEM = 0x100, |
| VARFLAG_FUIDEFAULT = 0x200, |
| VARFLAG_FNONBROWSABLE = 0x400, |
| VARFLAG_FREPLACEABLE = 0x800, |
| VARFLAG_FIMMEDIATEBIND = 0x1000 |
| } VARFLAGS; |
| |
| |
| /* |
| * Data types for Variants. |
| */ |
| |
| enum VARENUM { |
| VT_EMPTY = 0, |
| VT_NULL = 1, |
| VT_I2 = 2, |
| VT_I4 = 3, |
| VT_R4 = 4, |
| VT_R8 = 5, |
| VT_CY = 6, |
| VT_DATE = 7, |
| VT_BSTR = 8, |
| VT_DISPATCH = 9, |
| VT_ERROR = 10, |
| VT_BOOL = 11, |
| VT_VARIANT = 12, |
| VT_UNKNOWN = 13, |
| VT_DECIMAL = 14, |
| VT_I1 = 16, |
| VT_UI1 = 17, |
| VT_UI2 = 18, |
| VT_UI4 = 19, |
| VT_I8 = 20, |
| VT_UI8 = 21, |
| VT_INT = 22, |
| VT_UINT = 23, |
| VT_VOID = 24, |
| VT_HRESULT = 25, |
| VT_PTR = 26, |
| VT_SAFEARRAY = 27, |
| VT_CARRAY = 28, |
| VT_USERDEFINED = 29, |
| VT_LPSTR = 30, |
| VT_LPWSTR = 31, |
| VT_RECORD = 36, |
| VT_FILETIME = 64, |
| VT_BLOB = 65, |
| VT_STREAM = 66, |
| VT_STORAGE = 67, |
| VT_STREAMED_OBJECT = 68, |
| VT_STORED_OBJECT = 69, |
| VT_BLOB_OBJECT = 70, |
| VT_CF = 71, |
| VT_CLSID = 72, |
| VT_VECTOR = 0x1000, |
| VT_ARRAY = 0x2000, |
| VT_BYREF = 0x4000, |
| VT_RESERVED = 0x8000, |
| VT_ILLEGAL = 0xffff, |
| VT_ILLEGALMASKED = 0xfff, |
| VT_TYPEMASK = 0xfff |
| }; |
| |
| /* the largest valide type |
| */ |
| #define VT_MAXVALIDTYPE VT_CLSID |
| |
| |
| /* |
| * Declarations of the VARIANT structure and the VARIANT APIs. |
| */ |
| |
| /* S_OK : Success. |
| * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant. |
| * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type. |
| * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant. |
| * E_INVALIDARG : One argument is invalid. |
| * E_OUTOFMEMORY : Memory could not be allocated for the conversion. |
| * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked. |
| */ |
| |
| |
| typedef struct tagCUSTDATAITEM { |
| GUID guid; |
| VARIANTARG varValue; |
| } CUSTDATAITEM, *LPCUSTDATAITEM; |
| |
| typedef struct tagCUSTDATA { |
| INT cCustData; |
| LPCUSTDATAITEM prgCustData; /* count cCustdata */ |
| } CUSTDATA, *LPCUSTDATA; |
| |
| |
| |
| /***************************************************************************** |
| * IDispatch interface |
| */ |
| #define ICOM_INTERFACE IDispatch |
| #define IDispatch_METHODS \ |
| ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo) \ |
| ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo) \ |
| ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId) \ |
| ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr) |
| #define IDispatch_IMETHODS \ |
| IUnknown_IMETHODS \ |
| IDispatch_METHODS |
| ICOM_DEFINE(IDispatch,IUnknown) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p) |
| #define IDispatch_Release(p) ICOM_CALL (Release,p) |
| /*** IDispatch methods ***/ |
| #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a) |
| #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c) |
| #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e) |
| #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h) |
| |
| |
| /***************************************************************************** |
| * ITypeInfo interface |
| */ |
| #define ICOM_INTERFACE ITypeInfo |
| #define ITypeInfo_METHODS \ |
| ICOM_METHOD1(HRESULT,GetTypeAttr, TYPEATTR**,ppTypeAttr) \ |
| ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \ |
| ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \ |
| ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \ |
| ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \ |
| ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \ |
| ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\ |
| ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \ |
| ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \ |
| ICOM_METHOD5(HRESULT,GetDocumentation, MEMBERID,memid, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \ |
| ICOM_METHOD5(HRESULT,GetDllEntry, MEMBERID,memid, INVOKEKIND,invKind, BSTR*,pBstrDllName, BSTR*,pBstrName, WORD*,pwOrdinal) \ |
| ICOM_METHOD2(HRESULT,GetRefTypeInfo, HREFTYPE,hRefType, ITypeInfo**,ppTInfo) \ |
| ICOM_METHOD3(HRESULT,AddressOfMember, MEMBERID,memid, INVOKEKIND,invKind, PVOID*,ppv) \ |
| ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \ |
| ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \ |
| ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \ |
| ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \ |
| ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \ |
| ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc) |
| |
| #define ITypeInfo_IMETHODS \ |
| IUnknown_IMETHODS \ |
| ITypeInfo_METHODS |
| ICOM_DEFINE(ITypeInfo,IUnknown) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define ITypeInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define ITypeInfo_AddRef(p) ICOM_CALL (AddRef,p) |
| #define ITypeInfo_Release(p) ICOM_CALL (Release,p) |
| /*** ITypeInfo methods ***/ |
| #define ITypeInfo_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a) |
| #define ITypeInfo_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a) |
| #define ITypeInfo_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b) |
| #define ITypeInfo_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b) |
| #define ITypeInfo_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d) |
| #define ITypeInfo_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b) |
| #define ITypeInfo_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b) |
| #define ITypeInfo_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c) |
| #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g) |
| #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e) |
| #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e) |
| #define ITypeInfo_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b) |
| #define ITypeInfo_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c) |
| #define ITypeInfo_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c) |
| #define ITypeInfo_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b) |
| #define ITypeInfo_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b) |
| #define ITypeInfo_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a) |
| #define ITypeInfo_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a) |
| #define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a) |
| |
| |
| /***************************************************************************** |
| * ITypeInfo2 interface |
| */ |
| #define ICOM_INTERFACE ITypeInfo2 |
| #define ITypeInfo2_METHODS \ |
| ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \ |
| ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \ |
| ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\ |
| invKind, UINT*, pFuncIndex) \ |
| ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \ |
| pVarIndex) \ |
| ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \ |
| ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\ |
| VARIANT*, pVarVal) \ |
| ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\ |
| indexParam, REFGUID, guid, VARIANT*, pVarVal) \ |
| ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\ |
| VARIANT*, pVarVal) \ |
| ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\ |
| VARIANT*, pVarVal) \ |
| ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\ |
| BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\ |
| BSTR*, pbstrHelpStringDll) \ |
| ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \ |
| ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\ |
| pCustData)\ |
| ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\ |
| indexParam, CUSTDATA*, pCustData) \ |
| ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\ |
| pCustData) \ |
| ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\ |
| pCustData) |
| |
| #define ITypeInfo2_IMETHODS \ |
| IUnknown_IMETHODS \ |
| ITypeInfo_METHODS \ |
| ITypeInfo2_METHODS |
| ICOM_DEFINE(ITypeInfo2,ITypeInfo) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p) |
| #define ITypeInfo2_Release(p) ICOM_CALL (Release,p) |
| /*** ITypeInfo methods ***/ |
| #define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a) |
| #define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a) |
| #define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b) |
| #define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b) |
| #define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d) |
| #define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b) |
| #define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b) |
| #define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c) |
| #define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g) |
| #define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e) |
| #define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e) |
| #define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b) |
| #define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c) |
| #define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c) |
| #define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b) |
| #define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b) |
| #define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a) |
| #define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a) |
| #define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a) |
| /*** ITypeInfo2 methods ***/ |
| #define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a) |
| #define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a) |
| #define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c) |
| #define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b) |
| #define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b) |
| #define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c) |
| #define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d) |
| #define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c) |
| #define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c) |
| #define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e) |
| #define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a) |
| #define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b) |
| #define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c) |
| #define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b) |
| #define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b) |
| |
| /***************************************************************************** |
| * ITypeLib interface |
| */ |
| #define ICOM_INTERFACE ITypeLib |
| #define ITypeLib_METHODS \ |
| ICOM_METHOD (UINT,GetTypeInfoCount) \ |
| ICOM_METHOD2(HRESULT,GetTypeInfo, UINT,index, ITypeInfo**,ppTInfo) \ |
| ICOM_METHOD2(HRESULT,GetTypeInfoType, UINT,index, TYPEKIND*,pTKind) \ |
| ICOM_METHOD2(HRESULT,GetTypeInfoOfGuid, REFGUID,guid, ITypeInfo**,ppTinfo) \ |
| ICOM_METHOD1(HRESULT,GetLibAttr, TLIBATTR**,ppTLibAttr) \ |
| ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \ |
| ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \ |
| ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \ |
| ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \ |
| ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr) |
| #define ITypeLib_IMETHODS \ |
| IUnknown_IMETHODS \ |
| ITypeLib_METHODS |
| ICOM_DEFINE(ITypeLib,IUnknown) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define ITypeLib_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define ITypeLib_AddRef(p) ICOM_CALL (AddRef,p) |
| #define ITypeLib_Release(p) ICOM_CALL (Release,p) |
| /*** ITypeLib methods ***/ |
| #define ITypeLib_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p) |
| #define ITypeLib_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b) |
| #define ITypeLib_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b) |
| #define ITypeLib_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b) |
| #define ITypeLib_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a) |
| #define ITypeLib_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a) |
| #define ITypeLib_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e) |
| #define ITypeLib_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c) |
| #define ITypeLib_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e) |
| #define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a) |
| |
| |
| /***************************************************************************** |
| * ITypeLib2 interface |
| */ |
| #define ICOM_INTERFACE ITypeLib2 |
| #define ITypeLib2_METHODS \ |
| ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \ |
| ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \ |
| ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \ |
| ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData) |
| #define ITypeLib2_IMETHODS \ |
| IUnknown_IMETHODS \ |
| ITypeLib_IMETHODS \ |
| ITypeLib2_METHODS |
| ICOM_DEFINE(ITypeLib2,ITypeLib) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p) |
| #define ITypeLib2_Release(p) ICOM_CALL (Release,p) |
| /*** ITypeLib methods ***/ |
| #define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p) |
| #define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b) |
| #define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b) |
| #define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b) |
| #define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a) |
| #define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a) |
| #define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e) |
| #define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c) |
| #define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e) |
| #define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a) |
| /*** ITypeLib2 methods ***/ |
| #define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b) |
| #define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b) |
| #define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e) |
| #define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a) |
| |
| /***************************************************************************** |
| * ITypeComp interface |
| */ |
| #define ICOM_INTERFACE ITypeComp |
| #define ITypeComp_METHODS \ |
| ICOM_METHOD6(HRESULT,Bind, LPOLESTR,szName, ULONG,lHashVal, WORD,wFlags, ITypeInfo**,ppTInfo, DESCKIND*,pDescKind, BINDPTR*,pBindPtr) \ |
| ICOM_METHOD4(HRESULT,BindType, LPOLESTR,szName, ULONG,lHashVal, ITypeInfo**,ppTInfo, ITypeComp**,ppTComp) |
| #define ITypeComp_IMETHODS \ |
| IUnknown_IMETHODS \ |
| ITypeComp_METHODS |
| ICOM_DEFINE(ITypeComp,IUnknown) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define ITypeComp_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define ITypeComp_AddRef(p) ICOM_CALL (AddRef,p) |
| #define ITypeComp_Release(p) ICOM_CALL (Release,p) |
| /*** ITypeComp methods ***/ |
| #define ITypeComp_Bind(p,a,b,c,d,e,f) ICOM_CALL6(Bind,p,a,b,c,d,e,f) |
| #define ITypeComp_BindType(p,a,b,c,d) ICOM_CALL4(BindType,p,a,b,c,d) |
| |
| /***************************************************************************** |
| * IEnumVARIANT interface |
| */ |
| #define ICOM_INTERFACE IEnumVARIANT |
| #define IEnumVARIANT_METHODS \ |
| ICOM_METHOD3(HRESULT,Next, ULONG,celt, VARIANT*,rgVar, ULONG*,pCeltFetched) \ |
| ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \ |
| ICOM_METHOD (HRESULT,Reset) \ |
| ICOM_METHOD1(HRESULT,Clone, IEnumVARIANT**,ppEnum) |
| #define IEnumVARIANT_IMETHODS \ |
| IUnknown_IMETHODS \ |
| IEnumVARIANT_METHODS |
| ICOM_DEFINE(IEnumVARIANT,IUnknown) |
| #undef ICOM_INTERFACE |
| |
| /*** IUnknown methods ***/ |
| #define IEnumVARIANT_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b) |
| #define IEnumVARIANT_AddRef(p) ICOM_CALL (AddRef,p) |
| #define IEnumVARIANT_Release(p) ICOM_CALL (Release,p) |
| /*** IEnumVARIANT methods ***/ |
| #define IEnumVARIANT_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c) |
| #define IEnumVARIANT_Skip(p,a) ICOM_CALL1(Skip,p,a) |
| #define IEnumVARIANT_Reset(p) ICOM_CALL (Reset,p) |
| #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a) |
| |
| #endif /* __WINE_WINE_OBJ_OLEAUT_H */ |
| |