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
8 #include "wine/obj_base.h"
10 /*****************************************************************************
11 * Predeclare the interfaces
13 DEFINE_OLEGUID(IID_IDispatch, 0x00020400,0,0);
14 typedef struct IDispatch IDispatch,*LPDISPATCH;
16 DEFINE_OLEGUID(IID_ITypeInfo, 0x00020401,0,0);
17 typedef struct ITypeInfo ITypeInfo,*LPTYPEINFO;
19 DEFINE_OLEGUID(IID_ITypeLib, 0x00020402,0,0);
20 typedef struct ITypeLib ITypeLib,*LPTYPELIB;
22 DEFINE_OLEGUID(IID_ITypeComp, 0x00020403,0,0);
23 typedef struct ITypeComp ITypeComp,*LPTYPECOMP;
25 DEFINE_OLEGUID(IID_IEnumVARIANT, 0x00020404,0,0);
26 typedef struct IEnumVARIANT IEnumVARIANT,*LPENUMVARIANT;
28 DEFINE_OLEGUID(IID_ICreateTypeInfo, 0x00020405,0,0);
29 typedef struct ICreateTypeInfo ICreateTypeInfo,*LPCREATETYPEINFO;
31 DEFINE_OLEGUID(IID_ICreateTypeLib, 0x00020406,0,0);
32 typedef struct ICreateTypeLib ICreateTypeLib,*LPCREATETYPELIB;
34 DEFINE_OLEGUID(IID_ICreateTypeInfo2,0x0002040E,0,0);
35 typedef struct ICreateTypeInfo2 ICreateTypeInfo2,*LPCREATETYPEINFO2;
37 DEFINE_OLEGUID(IID_ICreateTypeLib2, 0x0002040F,0,0);
38 typedef struct ICreateTypeLib2 ICreateTypeLib2,*LPCREATETYPELIB2;
40 DEFINE_OLEGUID(IID_ITypeChangeEvents,0x00020410,0,0);
41 typedef struct ITypeChangeEvents ITypeChangeEvents,*LPTYPECHANGEEVENTS;
43 DEFINE_OLEGUID(IID_ITypeLib2, 0x00020411,0,0);
44 typedef struct ITypeLib2 ITypeLib2,*LPTYPELIB2;
46 DEFINE_OLEGUID(IID_ITypeInfo2, 0x00020412,0,0);
47 typedef struct ITypeInfo2 ITypeInfo2,*LPTYPEINFO2;
49 /*****************************************************************************
50 * Automation data types
53 /*****************************************************************
54 * SafeArray defines and structs
57 #define FADF_AUTO ( 0x1 )
58 #define FADF_STATIC ( 0x2 )
59 #define FADF_EMBEDDED ( 0x4 )
60 #define FADF_FIXEDSIZE ( 0x10 )
61 #define FADF_RECORD ( 0x20 )
62 #define FADF_HAVEIID ( 0x40 )
63 #define FADF_HAVEVARTYPE ( 0x80 )
64 #define FADF_BSTR ( 0x100 )
65 #define FADF_UNKNOWN ( 0x200 )
66 #define FADF_DISPATCH ( 0x400 )
67 #define FADF_VARIANT ( 0x800 )
68 #define FADF_RESERVED ( 0xf008 )
70 /* Undocumented flags */
71 #define FADF_CREATEVECTOR ( 0x2000 ) /* set when the safe array is created using SafeArrayCreateVector */
74 typedef struct tagSAFEARRAYBOUND
76 ULONG cElements; /* Number of elements in dimension */
77 LONG lLbound; /* Lower bound of dimension */
80 typedef struct tagSAFEARRAY
82 USHORT cDims; /* Count of array dimension */
83 USHORT fFeatures; /* Flags describing the array */
84 ULONG cbElements; /* Size of each element */
85 ULONG cLocks; /* Number of lock on array */
86 PVOID pvData; /* Pointer to data valid when cLocks > 0 */
87 SAFEARRAYBOUND rgsabound[ 1 ]; /* One bound for each dimension */
88 } SAFEARRAY, *LPSAFEARRAY;
90 typedef enum tagCALLCONV {
92 CC_MSCPASCAL = CC_CDECL + 1,
93 CC_PASCAL = CC_MSCPASCAL,
94 CC_MACPASCAL = CC_PASCAL + 1,
95 CC_STDCALL = CC_MACPASCAL + 1,
96 CC_RESERVED = CC_STDCALL + 1,
97 CC_SYSCALL = CC_RESERVED + 1,
98 CC_MPWCDECL = CC_SYSCALL + 1,
99 CC_MPWPASCAL = CC_MPWCDECL + 1,
100 CC_MAX = CC_MPWPASCAL + 1
106 * Declarations of the VARIANT structure and the VARIANT APIs.
109 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
110 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
111 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
112 * E_INVALIDARG : One argument is invalid.
113 * * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
114 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
117 typedef struct tagVARIANT VARIANT, *LPVARIANT;
118 typedef struct tagVARIANT VARIANTARG, *LPVARIANTARG;
125 union /* DUMMYUNIONNAME */
138 VARIANT_BOOL boolVal;
143 /* DECIMAL decVal; */
159 VARIANT_BOOL* pboolVal;
166 /* DECIMAL* pdecVal; */
168 IDispatch** ppdispVal;
175 typedef DWORD HREFTYPE;
176 typedef DISPID MEMBERID;
178 #define DISPATCH_METHOD 0x1
179 #define DISPATCH_PROPERTYGET 0x2
180 #define DISPATCH_PROPERTYPUT 0x4
181 #define DISPATCH_PROPERTYPUTREF 0x8
183 #define DISPID_UNKNOWN ( -1 )
184 #define DISPID_VALUE ( 0 )
185 #define DISPID_PROPERTYPUT ( -3 )
186 #define DISPID_NEWENUM ( -4 )
187 #define DISPID_EVALUATE ( -5 )
188 #define DISPID_CONSTRUCTOR ( -6 )
189 #define DISPID_DESTRUCTOR ( -7 )
190 #define DISPID_COLLECT ( -8 )
192 #define MEMBERID_NIL DISPID_UNKNOWN
194 #define IMPLTYPEFLAG_FDEFAULT (0x1)
195 #define IMPLTYPEFLAG_FSOURCE (0x2)
196 #define IMPLTYPEFLAG_FRESTRICTED (0x4)
197 #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
199 typedef struct tagDISPPARAMS
202 DISPID* rgdispidNamedArgs;
207 typedef struct tagEXCEPINFO
212 BSTR bstrDescription;
216 HRESULT __stdcall (*pfnDeferredFillIn)(struct tagEXCEPINFO *);
218 } EXCEPINFO, * LPEXCEPINFO;
220 typedef struct tagIDLDESC
226 typedef struct tagPARAMDESCEX
229 VARIANTARG varDefaultValue;
230 } PARAMDESCEX, *LPPARAMDESCEX;
232 typedef struct tagPARAMDESC
234 LPPARAMDESCEX pparamdescex;
238 #define PARAMFLAG_NONE (0x00)
239 #define PARAMFLAG_FIN (0x01)
240 #define PARAMFLAG_FOUT (0x02)
241 #define PARAMFLAG_FLCID (0x04)
242 #define PARAMFLAG_FRETVAL (0x08)
243 #define PARAMFLAG_FOPT (0x10)
244 #define PARAMFLAG_FHASDEFAULT (0x20)
247 typedef struct tagTYPEDESC
250 struct tagTYPEDESC *lptdesc;
251 struct tagARRAYDESC *lpadesc;
257 typedef struct tagELEMDESC
264 } ELEMDESC, *LPELEMDESC;
266 typedef enum tagTYPEKIND
279 typedef struct tagTYPEATTR
284 MEMBERID memidConstructor;
285 MEMBERID memidDestructor;
286 LPOLESTR lpstrSchema;
287 ULONG cbSizeInstance;
299 } TYPEATTR, *LPTYPEATTR;
301 typedef struct tagARRAYDESC
305 SAFEARRAYBOUND rgbounds[1];
308 typedef enum tagFUNCKIND
311 FUNC_PUREVIRTUAL = 1,
317 typedef enum tagINVOKEKIND
320 INVOKE_PROPERTYGET = 2,
321 INVOKE_PROPERTYPUT = 3,
322 INVOKE_PROPERTYPUTREF = 4
325 typedef struct tagFUNCDESC
329 ELEMDESC *lprgelemdescParam;
337 ELEMDESC elemdescFunc;
339 } FUNCDESC, *LPFUNCDESC;
341 typedef enum tagVARKIND
349 typedef struct tagVARDESC
352 LPOLESTR lpstrSchema;
357 ELEMDESC elemdescVar;
360 } VARDESC, *LPVARDESC;
362 typedef enum tagSYSKIND
369 typedef enum tagLIBFLAGS
371 LIBFLAG_FRESTRICTED = 0x1,
372 LIBFLAG_FCONTROL = 0x2,
373 LIBFLAG_FHIDDEN = 0x4,
374 LIBFLAG_FHASDISKIMAGE = 0x8
377 typedef struct tagTLIBATTR
385 } TLIBATTR, *LPTLIBATTR;
387 typedef enum tagDESCKIND
390 DESCKIND_FUNCDESC = 1,
391 DESCKIND_VARDESC = 2,
392 DESCKIND_TYPECOMP = 3,
393 DESCKIND_IMPLICITAPPOBJ = 4,
397 typedef union tagBINDPTR
399 FUNCDESC *lpfuncdesc;
402 } BINDPTR, *LPBINDPTR;
404 typedef enum tagVARFLAGS
406 VARFLAG_FREADONLY = 0x1,
407 VARFLAG_FSOURCE = 0x2,
408 VARFLAG_FBINDABLE = 0x4,
409 VARFLAG_FREQUESTEDIT = 0x8,
410 VARFLAG_FDISPLAYBIND = 0x10,
411 VARFLAG_FDEFAULTBIND = 0x20,
412 VARFLAG_FHIDDEN = 0x40,
413 VARFLAG_FRESTRICTED = 0x80,
414 VARFLAG_FDEFAULTCOLLELEM = 0x100,
415 VARFLAG_FUIDEFAULT = 0x200,
416 VARFLAG_FNONBROWSABLE = 0x400,
417 VARFLAG_FREPLACEABLE = 0x800,
418 VARFLAG_FIMMEDIATEBIND = 0x1000
423 * Data types for Variants.
463 VT_STREAMED_OBJECT = 68,
464 VT_STORED_OBJECT = 69,
471 VT_RESERVED = 0x8000,
473 VT_ILLEGALMASKED = 0xfff,
477 /* the largest valide type
479 #define VT_MAXVALIDTYPE VT_CLSID
483 * Declarations of the VARIANT structure and the VARIANT APIs.
487 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
488 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
489 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
490 * E_INVALIDARG : One argument is invalid.
491 * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
492 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
496 typedef struct tagCUSTDATAITEM {
499 } CUSTDATAITEM, *LPCUSTDATAITEM;
501 typedef struct tagCUSTDATA {
503 LPCUSTDATAITEM prgCustData; /* count cCustdata */
504 } CUSTDATA, *LPCUSTDATA;
508 /*****************************************************************************
509 * IDispatch interface
511 #define ICOM_INTERFACE IDispatch
512 #define IDispatch_METHODS \
513 ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo) \
514 ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo) \
515 ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId) \
516 ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr)
517 #define IDispatch_IMETHODS \
520 ICOM_DEFINE(IDispatch,IUnknown)
521 #undef ICOM_INTERFACE
523 /*** IUnknown methods ***/
524 #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
525 #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
526 #define IDispatch_Release(p) ICOM_CALL (Release,p)
527 /*** IDispatch methods ***/
528 #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
529 #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
530 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
531 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
534 /*****************************************************************************
535 * ITypeInfo interface
537 #define ICOM_INTERFACE ITypeInfo
538 #define ITypeInfo_METHODS \
539 ICOM_METHOD1(HRESULT,GetTypeAttr, TYPEATTR**,ppTypeAttr) \
540 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
541 ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \
542 ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \
543 ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \
544 ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \
545 ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\
546 ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \
547 ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \
548 ICOM_METHOD5(HRESULT,GetDocumentation, MEMBERID,memid, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
549 ICOM_METHOD5(HRESULT,GetDllEntry, MEMBERID,memid, INVOKEKIND,invKind, BSTR*,pBstrDllName, BSTR*,pBstrName, WORD*,pwOrdinal) \
550 ICOM_METHOD2(HRESULT,GetRefTypeInfo, HREFTYPE,hRefType, ITypeInfo**,ppTInfo) \
551 ICOM_METHOD3(HRESULT,AddressOfMember, MEMBERID,memid, INVOKEKIND,invKind, PVOID*,ppv) \
552 ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \
553 ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \
554 ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
555 ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
556 ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
557 ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)
559 #define ITypeInfo_IMETHODS \
562 ICOM_DEFINE(ITypeInfo,IUnknown)
563 #undef ICOM_INTERFACE
565 /*** IUnknown methods ***/
566 #define ITypeInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
567 #define ITypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
568 #define ITypeInfo_Release(p) ICOM_CALL (Release,p)
569 /*** ITypeInfo methods ***/
570 #define ITypeInfo_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
571 #define ITypeInfo_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
572 #define ITypeInfo_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
573 #define ITypeInfo_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
574 #define ITypeInfo_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
575 #define ITypeInfo_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
576 #define ITypeInfo_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
577 #define ITypeInfo_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
578 #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
579 #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
580 #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
581 #define ITypeInfo_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
582 #define ITypeInfo_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
583 #define ITypeInfo_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
584 #define ITypeInfo_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
585 #define ITypeInfo_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
586 #define ITypeInfo_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
587 #define ITypeInfo_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
588 #define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
591 /*****************************************************************************
592 * ITypeInfo2 interface
594 #define ICOM_INTERFACE ITypeInfo2
595 #define ITypeInfo2_METHODS \
596 ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
597 ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
598 ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
599 invKind, UINT*, pFuncIndex) \
600 ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
602 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
603 ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
605 ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
606 indexParam, REFGUID, guid, VARIANT*, pVarVal) \
607 ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
609 ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
611 ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
612 BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\
613 BSTR*, pbstrHelpStringDll) \
614 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
615 ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
617 ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
618 indexParam, CUSTDATA*, pCustData) \
619 ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
621 ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
624 #define ITypeInfo2_IMETHODS \
628 ICOM_DEFINE(ITypeInfo2,ITypeInfo)
629 #undef ICOM_INTERFACE
631 /*** IUnknown methods ***/
632 #define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
633 #define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p)
634 #define ITypeInfo2_Release(p) ICOM_CALL (Release,p)
635 /*** ITypeInfo methods ***/
636 #define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
637 #define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
638 #define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
639 #define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
640 #define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
641 #define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
642 #define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
643 #define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
644 #define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
645 #define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
646 #define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
647 #define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
648 #define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
649 #define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
650 #define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
651 #define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
652 #define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
653 #define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
654 #define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
655 /*** ITypeInfo2 methods ***/
656 #define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a)
657 #define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a)
658 #define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c)
659 #define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b)
660 #define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
661 #define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c)
662 #define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d)
663 #define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c)
664 #define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c)
665 #define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
666 #define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
667 #define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b)
668 #define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c)
669 #define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b)
670 #define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b)
672 /*****************************************************************************
675 #define ICOM_INTERFACE ITypeLib
676 #define ITypeLib_METHODS \
677 ICOM_METHOD (UINT,GetTypeInfoCount) \
678 ICOM_METHOD2(HRESULT,GetTypeInfo, UINT,index, ITypeInfo**,ppTInfo) \
679 ICOM_METHOD2(HRESULT,GetTypeInfoType, UINT,index, TYPEKIND*,pTKind) \
680 ICOM_METHOD2(HRESULT,GetTypeInfoOfGuid, REFGUID,guid, ITypeInfo**,ppTinfo) \
681 ICOM_METHOD1(HRESULT,GetLibAttr, TLIBATTR**,ppTLibAttr) \
682 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
683 ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
684 ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
685 ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
686 ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)
687 #define ITypeLib_IMETHODS \
690 ICOM_DEFINE(ITypeLib,IUnknown)
691 #undef ICOM_INTERFACE
693 /*** IUnknown methods ***/
694 #define ITypeLib_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
695 #define ITypeLib_AddRef(p) ICOM_CALL (AddRef,p)
696 #define ITypeLib_Release(p) ICOM_CALL (Release,p)
697 /*** ITypeLib methods ***/
698 #define ITypeLib_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
699 #define ITypeLib_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
700 #define ITypeLib_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
701 #define ITypeLib_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
702 #define ITypeLib_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
703 #define ITypeLib_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
704 #define ITypeLib_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
705 #define ITypeLib_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
706 #define ITypeLib_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
707 #define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
710 /*****************************************************************************
711 * ITypeLib2 interface
713 #define ICOM_INTERFACE ITypeLib2
714 #define ITypeLib2_METHODS \
715 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
716 ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \
717 ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \
718 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
719 #define ITypeLib2_IMETHODS \
723 ICOM_DEFINE(ITypeLib2,ITypeLib)
724 #undef ICOM_INTERFACE
726 /*** IUnknown methods ***/
727 #define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
728 #define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p)
729 #define ITypeLib2_Release(p) ICOM_CALL (Release,p)
730 /*** ITypeLib methods ***/
731 #define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
732 #define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
733 #define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
734 #define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
735 #define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
736 #define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
737 #define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
738 #define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
739 #define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
740 #define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
741 /*** ITypeLib2 methods ***/
742 #define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
743 #define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b)
744 #define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
745 #define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
747 /*****************************************************************************
748 * ITypeComp interface
750 #define ICOM_INTERFACE ITypeComp
751 #define ITypeComp_METHODS \
752 ICOM_METHOD6(HRESULT,Bind, LPOLESTR,szName, ULONG,lHashVal, WORD,wFlags, ITypeInfo**,ppTInfo, DESCKIND*,pDescKind, BINDPTR*,pBindPtr) \
753 ICOM_METHOD4(HRESULT,BindType, LPOLESTR,szName, ULONG,lHashVal, ITypeInfo**,ppTInfo, ITypeComp**,ppTComp)
754 #define ITypeComp_IMETHODS \
757 ICOM_DEFINE(ITypeComp,IUnknown)
758 #undef ICOM_INTERFACE
760 /*** IUnknown methods ***/
761 #define ITypeComp_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
762 #define ITypeComp_AddRef(p) ICOM_CALL (AddRef,p)
763 #define ITypeComp_Release(p) ICOM_CALL (Release,p)
764 /*** ITypeComp methods ***/
765 #define ITypeComp_Bind(p,a,b,c,d,e,f) ICOM_CALL6(Bind,p,a,b,c,d,e,f)
766 #define ITypeComp_BindType(p,a,b,c,d) ICOM_CALL4(BindType,p,a,b,c,d)
768 /*****************************************************************************
769 * IEnumVARIANT interface
771 #define ICOM_INTERFACE IEnumVARIANT
772 #define IEnumVARIANT_METHODS \
773 ICOM_METHOD3(HRESULT,Next, ULONG,celt, VARIANT*,rgVar, ULONG*,pCeltFetched) \
774 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
775 ICOM_METHOD (HRESULT,Reset) \
776 ICOM_METHOD1(HRESULT,Clone, IEnumVARIANT**,ppEnum)
777 #define IEnumVARIANT_IMETHODS \
780 ICOM_DEFINE(IEnumVARIANT,IUnknown)
781 #undef ICOM_INTERFACE
783 /*** IUnknown methods ***/
784 #define IEnumVARIANT_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
785 #define IEnumVARIANT_AddRef(p) ICOM_CALL (AddRef,p)
786 #define IEnumVARIANT_Release(p) ICOM_CALL (Release,p)
787 /*** IEnumVARIANT methods ***/
788 #define IEnumVARIANT_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
789 #define IEnumVARIANT_Skip(p,a) ICOM_CALL1(Skip,p,a)
790 #define IEnumVARIANT_Reset(p) ICOM_CALL (Reset,p)
791 #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a)
793 #endif /* __WINE_WINE_OBJ_OLEAUT_H */