2 * Defines the COM interfaces and APIs related to OLE automation support.
5 #ifndef __WINE_WINE_OBJ_OLEAUT_H
6 #define __WINE_WINE_OBJ_OLEAUT_H
9 DEFINE_OLEGUID(IID_StdOle
, 0x00020430,0,0);
11 /*****************************************************************************
12 * Predeclare the interfaces
14 DEFINE_OLEGUID(IID_IDispatch
, 0x00020400,0,0);
15 typedef struct IDispatch IDispatch
,*LPDISPATCH
;
17 DEFINE_OLEGUID(IID_ITypeInfo
, 0x00020401,0,0);
18 typedef struct ITypeInfo ITypeInfo
,*LPTYPEINFO
;
20 DEFINE_OLEGUID(IID_ITypeLib
, 0x00020402,0,0);
21 typedef struct ITypeLib ITypeLib
,*LPTYPELIB
;
23 DEFINE_OLEGUID(IID_ITypeComp
, 0x00020403,0,0);
24 typedef struct ITypeComp ITypeComp
,*LPTYPECOMP
;
26 DEFINE_OLEGUID(IID_IEnumVARIANT
, 0x00020404,0,0);
27 typedef struct IEnumVARIANT IEnumVARIANT
,*LPENUMVARIANT
;
29 DEFINE_OLEGUID(IID_ICreateTypeInfo
, 0x00020405,0,0);
30 typedef struct ICreateTypeInfo ICreateTypeInfo
,*LPCREATETYPEINFO
;
32 DEFINE_OLEGUID(IID_ICreateTypeLib
, 0x00020406,0,0);
33 typedef struct ICreateTypeLib ICreateTypeLib
,*LPCREATETYPELIB
;
35 DEFINE_OLEGUID(IID_ICreateTypeInfo2
,0x0002040E,0,0);
36 typedef struct ICreateTypeInfo2 ICreateTypeInfo2
,*LPCREATETYPEINFO2
;
38 DEFINE_OLEGUID(IID_ICreateTypeLib2
, 0x0002040F,0,0);
39 typedef struct ICreateTypeLib2 ICreateTypeLib2
,*LPCREATETYPELIB2
;
41 DEFINE_OLEGUID(IID_ITypeChangeEvents
,0x00020410,0,0);
42 typedef struct ITypeChangeEvents ITypeChangeEvents
,*LPTYPECHANGEEVENTS
;
44 DEFINE_OLEGUID(IID_ITypeLib2
, 0x00020411,0,0);
45 typedef struct ITypeLib2 ITypeLib2
,*LPTYPELIB2
;
47 DEFINE_OLEGUID(IID_ITypeInfo2
, 0x00020412,0,0);
48 typedef struct ITypeInfo2 ITypeInfo2
,*LPTYPEINFO2
;
50 /*****************************************************************************
51 * Automation data types
54 /*****************************************************************
55 * SafeArray defines and structs
58 #define FADF_AUTO ( 0x1 )
59 #define FADF_STATIC ( 0x2 )
60 #define FADF_EMBEDDED ( 0x4 )
61 #define FADF_FIXEDSIZE ( 0x10 )
62 #define FADF_RECORD ( 0x20 )
63 #define FADF_HAVEIID ( 0x40 )
64 #define FADF_HAVEVARTYPE ( 0x80 )
65 #define FADF_BSTR ( 0x100 )
66 #define FADF_UNKNOWN ( 0x200 )
67 #define FADF_DISPATCH ( 0x400 )
68 #define FADF_VARIANT ( 0x800 )
69 #define FADF_RESERVED ( 0xf008 )
71 /* Undocumented flags */
72 #define FADF_CREATEVECTOR ( 0x2000 ) /* set when the safe array is created using SafeArrayCreateVector */
75 typedef struct tagSAFEARRAYBOUND
77 ULONG cElements
; /* Number of elements in dimension */
78 LONG lLbound
; /* Lower bound of dimension */
81 typedef struct tagSAFEARRAY
83 USHORT cDims
; /* Count of array dimension */
84 USHORT fFeatures
; /* Flags describing the array */
85 ULONG cbElements
; /* Size of each element */
86 ULONG cLocks
; /* Number of lock on array */
87 PVOID pvData
; /* Pointer to data valid when cLocks > 0 */
88 SAFEARRAYBOUND rgsabound
[ 1 ]; /* One bound for each dimension */
89 } SAFEARRAY
, *LPSAFEARRAY
;
91 typedef enum tagCALLCONV
{
93 CC_MSCPASCAL
= CC_CDECL
+ 1,
94 CC_PASCAL
= CC_MSCPASCAL
,
95 CC_MACPASCAL
= CC_PASCAL
+ 1,
96 CC_STDCALL
= CC_MACPASCAL
+ 1,
97 CC_RESERVED
= CC_STDCALL
+ 1,
98 CC_SYSCALL
= CC_RESERVED
+ 1,
99 CC_MPWCDECL
= CC_SYSCALL
+ 1,
100 CC_MPWPASCAL
= CC_MPWCDECL
+ 1,
101 CC_MAX
= CC_MPWPASCAL
+ 1
107 * Declarations of the VARIANT structure and the VARIANT APIs.
110 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
111 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
112 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
113 * E_INVALIDARG : One argument is invalid.
114 * * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
115 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
118 typedef struct tagVARIANT VARIANT
, *LPVARIANT
;
119 typedef struct tagVARIANT VARIANTARG
, *LPVARIANTARG
;
126 union /* DUMMYUNIONNAME */
139 VARIANT_BOOL boolVal
;
144 /* DECIMAL decVal; */
160 VARIANT_BOOL
* pboolVal
;
167 /* DECIMAL* pdecVal; */
169 IDispatch
** ppdispVal
;
176 typedef DWORD HREFTYPE
;
177 typedef DISPID MEMBERID
;
179 #define DISPATCH_METHOD 0x1
180 #define DISPATCH_PROPERTYGET 0x2
181 #define DISPATCH_PROPERTYPUT 0x4
182 #define DISPATCH_PROPERTYPUTREF 0x8
184 #define DISPID_UNKNOWN ( -1 )
185 #define DISPID_VALUE ( 0 )
186 #define DISPID_PROPERTYPUT ( -3 )
187 #define DISPID_NEWENUM ( -4 )
188 #define DISPID_EVALUATE ( -5 )
189 #define DISPID_CONSTRUCTOR ( -6 )
190 #define DISPID_DESTRUCTOR ( -7 )
191 #define DISPID_COLLECT ( -8 )
193 #define MEMBERID_NIL DISPID_UNKNOWN
195 #define IMPLTYPEFLAG_FDEFAULT (0x1)
196 #define IMPLTYPEFLAG_FSOURCE (0x2)
197 #define IMPLTYPEFLAG_FRESTRICTED (0x4)
198 #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
200 typedef struct tagDISPPARAMS
203 DISPID
* rgdispidNamedArgs
;
208 typedef struct tagEXCEPINFO
213 BSTR bstrDescription
;
217 HRESULT
__stdcall (*pfnDeferredFillIn
)(struct tagEXCEPINFO
*);
219 } EXCEPINFO
, * LPEXCEPINFO
;
221 typedef struct tagIDLDESC
227 typedef struct tagPARAMDESCEX
230 VARIANTARG varDefaultValue
;
231 } PARAMDESCEX
, *LPPARAMDESCEX
;
233 typedef struct tagPARAMDESC
235 LPPARAMDESCEX pparamdescex
;
239 #define PARAMFLAG_NONE (0x00)
240 #define PARAMFLAG_FIN (0x01)
241 #define PARAMFLAG_FOUT (0x02)
242 #define PARAMFLAG_FLCID (0x04)
243 #define PARAMFLAG_FRETVAL (0x08)
244 #define PARAMFLAG_FOPT (0x10)
245 #define PARAMFLAG_FHASDEFAULT (0x20)
248 typedef struct tagTYPEDESC
251 struct tagTYPEDESC
*lptdesc
;
252 struct tagARRAYDESC
*lpadesc
;
258 typedef struct tagELEMDESC
265 } ELEMDESC
, *LPELEMDESC
;
267 typedef enum tagTYPEKIND
280 typedef struct tagTYPEATTR
285 MEMBERID memidConstructor
;
286 MEMBERID memidDestructor
;
287 LPOLESTR lpstrSchema
;
288 ULONG cbSizeInstance
;
300 } TYPEATTR
, *LPTYPEATTR
;
302 #define TYPEFLAG_NONE (0x00)
303 #define TYPEFLAG_FAPPOBJECT (0x01)
304 #define TYPEFLAG_FCANCREATE (0x02)
305 #define TYPEFLAG_FLICENSED (0x04)
306 #define TYPEFLAG_FPREDECLID (0x08)
307 #define TYPEFLAG_FHIDDEN (0x0f)
308 #define TYPEFLAG_FCONTROL (0x20)
309 #define TYPEFLAG_FDUAL (0x40)
310 #define TYPEFLAG_FNONEXTENSIBLE (0x80)
311 #define TYPEFLAG_FOLEAUTOMATION (0x100)
312 #define TYPEFLAG_FRESTRICTED (0x200)
313 #define TYPEFLAG_FAGGREGATABLE (0x400)
314 #define TYPEFLAG_FREPLACEABLE (0x800)
315 #define TYPEFLAG_FDISPATCHABLE (0x1000)
316 #define TYPEFLAG_FREVERSEBIND (0x2000)
317 #define TYPEFLAG_FPROXY (0x4000)
318 #define TYPEFLAG_DEFAULTFILTER (0x8000)
319 #define TYPEFLAG_COCLASSATTRIBUTES (0x63f)
320 #define TYPEFLAG_INTERFACEATTRIBUTES (0x7bd0)
321 #define TYPEFLAG_DISPATCHATTRIBUTES (0x5a90)
322 #define TYPEFLAG_ALIASATTRIBUTES (0x210)
323 #define TYPEFLAG_MODULEATTRIBUTES (0x210)
324 #define TYPEFLAG_ENUMATTRIBUTES (0x210)
325 #define TYPEFLAG_RECORDATTRIBUTES (0x210)
326 #define TYPEFLAG_UNIONATTRIBUTES (0x210)
328 typedef struct tagARRAYDESC
332 SAFEARRAYBOUND rgbounds
[1];
335 typedef enum tagFUNCKIND
338 FUNC_PUREVIRTUAL
= 1,
344 typedef enum tagINVOKEKIND
347 INVOKE_PROPERTYGET
= 2,
348 INVOKE_PROPERTYPUT
= 3,
349 INVOKE_PROPERTYPUTREF
= 4
352 typedef struct tagFUNCDESC
356 ELEMDESC
*lprgelemdescParam
;
364 ELEMDESC elemdescFunc
;
366 } FUNCDESC
, *LPFUNCDESC
;
368 typedef enum tagVARKIND
376 typedef struct tagVARDESC
379 LPOLESTR lpstrSchema
;
384 ELEMDESC elemdescVar
;
387 } VARDESC
, *LPVARDESC
;
389 typedef enum tagSYSKIND
396 typedef enum tagLIBFLAGS
398 LIBFLAG_FRESTRICTED
= 0x1,
399 LIBFLAG_FCONTROL
= 0x2,
400 LIBFLAG_FHIDDEN
= 0x4,
401 LIBFLAG_FHASDISKIMAGE
= 0x8
404 typedef struct tagTLIBATTR
412 } TLIBATTR
, *LPTLIBATTR
;
414 typedef enum tagDESCKIND
417 DESCKIND_FUNCDESC
= 1,
418 DESCKIND_VARDESC
= 2,
419 DESCKIND_TYPECOMP
= 3,
420 DESCKIND_IMPLICITAPPOBJ
= 4,
424 typedef union tagBINDPTR
426 FUNCDESC
*lpfuncdesc
;
429 } BINDPTR
, *LPBINDPTR
;
431 typedef enum tagVARFLAGS
433 VARFLAG_FREADONLY
= 0x1,
434 VARFLAG_FSOURCE
= 0x2,
435 VARFLAG_FBINDABLE
= 0x4,
436 VARFLAG_FREQUESTEDIT
= 0x8,
437 VARFLAG_FDISPLAYBIND
= 0x10,
438 VARFLAG_FDEFAULTBIND
= 0x20,
439 VARFLAG_FHIDDEN
= 0x40,
440 VARFLAG_FRESTRICTED
= 0x80,
441 VARFLAG_FDEFAULTCOLLELEM
= 0x100,
442 VARFLAG_FUIDEFAULT
= 0x200,
443 VARFLAG_FNONBROWSABLE
= 0x400,
444 VARFLAG_FREPLACEABLE
= 0x800,
445 VARFLAG_FIMMEDIATEBIND
= 0x1000
450 * Data types for Variants.
490 VT_STREAMED_OBJECT
= 68,
491 VT_STORED_OBJECT
= 69,
498 VT_RESERVED
= 0x8000,
500 VT_ILLEGALMASKED
= 0xfff,
504 /* the largest valide type
506 #define VT_MAXVALIDTYPE VT_CLSID
510 * Declarations of the VARIANT structure and the VARIANT APIs.
514 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
515 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
516 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
517 * E_INVALIDARG : One argument is invalid.
518 * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
519 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
523 typedef struct tagCUSTDATAITEM
{
526 } CUSTDATAITEM
, *LPCUSTDATAITEM
;
528 typedef struct tagCUSTDATA
{
530 LPCUSTDATAITEM prgCustData
; /* count cCustdata */
531 } CUSTDATA
, *LPCUSTDATA
;
535 /*****************************************************************************
536 * IDispatch interface
538 #define ICOM_INTERFACE IDispatch
539 #define IDispatch_METHODS \
540 ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo) \
541 ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo) \
542 ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId) \
543 ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr)
544 #define IDispatch_IMETHODS \
547 ICOM_DEFINE(IDispatch
,IUnknown
)
548 #undef ICOM_INTERFACE
550 /*** IUnknown methods ***/
551 #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
552 #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
553 #define IDispatch_Release(p) ICOM_CALL (Release,p)
554 /*** IDispatch methods ***/
555 #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
556 #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
557 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
558 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
561 /*****************************************************************************
562 * ITypeInfo interface
564 #define ICOM_INTERFACE ITypeInfo
565 #define ITypeInfo_METHODS \
566 ICOM_METHOD1(HRESULT,GetTypeAttr, TYPEATTR**,ppTypeAttr) \
567 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
568 ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \
569 ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \
570 ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \
571 ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \
572 ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\
573 ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \
574 ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \
575 ICOM_METHOD5(HRESULT,GetDocumentation, MEMBERID,memid, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
576 ICOM_METHOD5(HRESULT,GetDllEntry, MEMBERID,memid, INVOKEKIND,invKind, BSTR*,pBstrDllName, BSTR*,pBstrName, WORD*,pwOrdinal) \
577 ICOM_METHOD2(HRESULT,GetRefTypeInfo, HREFTYPE,hRefType, ITypeInfo**,ppTInfo) \
578 ICOM_METHOD3(HRESULT,AddressOfMember, MEMBERID,memid, INVOKEKIND,invKind, PVOID*,ppv) \
579 ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \
580 ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \
581 ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
582 ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
583 ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
584 ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)
586 #define ITypeInfo_IMETHODS \
589 ICOM_DEFINE(ITypeInfo
,IUnknown
)
590 #undef ICOM_INTERFACE
592 /*** IUnknown methods ***/
593 #define ITypeInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
594 #define ITypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
595 #define ITypeInfo_Release(p) ICOM_CALL (Release,p)
596 /*** ITypeInfo methods ***/
597 #define ITypeInfo_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
598 #define ITypeInfo_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
599 #define ITypeInfo_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
600 #define ITypeInfo_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
601 #define ITypeInfo_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
602 #define ITypeInfo_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
603 #define ITypeInfo_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
604 #define ITypeInfo_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
605 #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
606 #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
607 #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
608 #define ITypeInfo_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
609 #define ITypeInfo_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
610 #define ITypeInfo_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
611 #define ITypeInfo_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
612 #define ITypeInfo_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
613 #define ITypeInfo_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
614 #define ITypeInfo_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
615 #define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
618 /*****************************************************************************
619 * ITypeInfo2 interface
621 #define ICOM_INTERFACE ITypeInfo2
622 #define ITypeInfo2_METHODS \
623 ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
624 ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
625 ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
626 invKind, UINT*, pFuncIndex) \
627 ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
629 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
630 ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
632 ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
633 indexParam, REFGUID, guid, VARIANT*, pVarVal) \
634 ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
636 ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
638 ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
639 BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\
640 BSTR*, pbstrHelpStringDll) \
641 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
642 ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
644 ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
645 indexParam, CUSTDATA*, pCustData) \
646 ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
648 ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
651 #define ITypeInfo2_IMETHODS \
655 ICOM_DEFINE(ITypeInfo2
,ITypeInfo
)
656 #undef ICOM_INTERFACE
658 /*** IUnknown methods ***/
659 #define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
660 #define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p)
661 #define ITypeInfo2_Release(p) ICOM_CALL (Release,p)
662 /*** ITypeInfo methods ***/
663 #define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
664 #define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
665 #define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
666 #define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
667 #define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
668 #define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
669 #define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
670 #define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
671 #define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
672 #define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
673 #define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
674 #define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
675 #define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
676 #define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
677 #define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
678 #define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
679 #define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
680 #define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
681 #define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
682 /*** ITypeInfo2 methods ***/
683 #define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a)
684 #define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a)
685 #define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c)
686 #define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b)
687 #define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
688 #define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c)
689 #define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d)
690 #define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c)
691 #define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c)
692 #define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
693 #define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
694 #define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b)
695 #define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c)
696 #define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b)
697 #define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b)
699 /*****************************************************************************
702 #define ICOM_INTERFACE ITypeLib
703 #define ITypeLib_METHODS \
704 ICOM_METHOD (UINT,GetTypeInfoCount) \
705 ICOM_METHOD2(HRESULT,GetTypeInfo, UINT,index, ITypeInfo**,ppTInfo) \
706 ICOM_METHOD2(HRESULT,GetTypeInfoType, UINT,index, TYPEKIND*,pTKind) \
707 ICOM_METHOD2(HRESULT,GetTypeInfoOfGuid, REFGUID,guid, ITypeInfo**,ppTinfo) \
708 ICOM_METHOD1(HRESULT,GetLibAttr, TLIBATTR**,ppTLibAttr) \
709 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
710 ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
711 ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
712 ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
713 ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)
714 #define ITypeLib_IMETHODS \
717 ICOM_DEFINE(ITypeLib
,IUnknown
)
718 #undef ICOM_INTERFACE
720 /*** IUnknown methods ***/
721 #define ITypeLib_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
722 #define ITypeLib_AddRef(p) ICOM_CALL (AddRef,p)
723 #define ITypeLib_Release(p) ICOM_CALL (Release,p)
724 /*** ITypeLib methods ***/
725 #define ITypeLib_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
726 #define ITypeLib_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
727 #define ITypeLib_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
728 #define ITypeLib_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
729 #define ITypeLib_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
730 #define ITypeLib_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
731 #define ITypeLib_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
732 #define ITypeLib_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
733 #define ITypeLib_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
734 #define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
737 /*****************************************************************************
738 * ITypeLib2 interface
740 #define ICOM_INTERFACE ITypeLib2
741 #define ITypeLib2_METHODS \
742 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
743 ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \
744 ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \
745 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
746 #define ITypeLib2_IMETHODS \
750 ICOM_DEFINE(ITypeLib2
,ITypeLib
)
751 #undef ICOM_INTERFACE
753 /*** IUnknown methods ***/
754 #define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
755 #define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p)
756 #define ITypeLib2_Release(p) ICOM_CALL (Release,p)
757 /*** ITypeLib methods ***/
758 #define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
759 #define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
760 #define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
761 #define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
762 #define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
763 #define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
764 #define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
765 #define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
766 #define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
767 #define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
768 /*** ITypeLib2 methods ***/
769 #define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
770 #define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b)
771 #define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
772 #define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
774 /*****************************************************************************
775 * ITypeComp interface
777 #define ICOM_INTERFACE ITypeComp
778 #define ITypeComp_METHODS \
779 ICOM_METHOD6(HRESULT,Bind, LPOLESTR,szName, ULONG,lHashVal, WORD,wFlags, ITypeInfo**,ppTInfo, DESCKIND*,pDescKind, BINDPTR*,pBindPtr) \
780 ICOM_METHOD4(HRESULT,BindType, LPOLESTR,szName, ULONG,lHashVal, ITypeInfo**,ppTInfo, ITypeComp**,ppTComp)
781 #define ITypeComp_IMETHODS \
784 ICOM_DEFINE(ITypeComp
,IUnknown
)
785 #undef ICOM_INTERFACE
787 /*** IUnknown methods ***/
788 #define ITypeComp_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
789 #define ITypeComp_AddRef(p) ICOM_CALL (AddRef,p)
790 #define ITypeComp_Release(p) ICOM_CALL (Release,p)
791 /*** ITypeComp methods ***/
792 #define ITypeComp_Bind(p,a,b,c,d,e,f) ICOM_CALL6(Bind,p,a,b,c,d,e,f)
793 #define ITypeComp_BindType(p,a,b,c,d) ICOM_CALL4(BindType,p,a,b,c,d)
795 /*****************************************************************************
796 * IEnumVARIANT interface
798 #define ICOM_INTERFACE IEnumVARIANT
799 #define IEnumVARIANT_METHODS \
800 ICOM_METHOD3(HRESULT,Next, ULONG,celt, VARIANT*,rgVar, ULONG*,pCeltFetched) \
801 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
802 ICOM_METHOD (HRESULT,Reset) \
803 ICOM_METHOD1(HRESULT,Clone, IEnumVARIANT**,ppEnum)
804 #define IEnumVARIANT_IMETHODS \
807 ICOM_DEFINE(IEnumVARIANT
,IUnknown
)
808 #undef ICOM_INTERFACE
810 /*** IUnknown methods ***/
811 #define IEnumVARIANT_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
812 #define IEnumVARIANT_AddRef(p) ICOM_CALL (AddRef,p)
813 #define IEnumVARIANT_Release(p) ICOM_CALL (Release,p)
814 /*** IEnumVARIANT methods ***/
815 #define IEnumVARIANT_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
816 #define IEnumVARIANT_Skip(p,a) ICOM_CALL1(Skip,p,a)
817 #define IEnumVARIANT_Reset(p) ICOM_CALL (Reset,p)
818 #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a)
820 #endif /* __WINE_WINE_OBJ_OLEAUT_H */