Added better missing function emulation.
[wine.git] / include / wine / obj_oleaut.h
blob121bf5048b6a29834894cca780e8bad66f4fbb1d
1 /*
2 * Defines the COM interfaces and APIs related to OLE automation support.
3 */
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 DEFINE_GUID(IID_IErrorInfo, 0x1CF2B120,0x547D,0x101B,0x8E,0x65,
50 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
51 typedef struct IErrorInfo IErrorInfo,*LPERRORINFO;
53 DEFINE_GUID(IID_ICreateErrorInfo, 0x22F03340,0x547D,0x101B,0x8E,0x65,
54 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
55 typedef struct ICreateErrorInfo ICreateErrorInfo,*LPCREATEERRORINFO;
57 DEFINE_GUID(IID_ISupportErrorInfo, 0xDF0B3D60,0x547D,0x101B,0x8E,0x65,
58 0x08,0x00, 0x2B,0x2B,0xD1,0x19);
59 typedef struct ISupportErrorInfo ISupportErrorInfo,*LPSUPPORTERRORINFO;
61 /*****************************************************************************
62 * Automation data types
65 /*****************************************************************
66 * SafeArray defines and structs
69 #define FADF_AUTO ( 0x1 )
70 #define FADF_STATIC ( 0x2 )
71 #define FADF_EMBEDDED ( 0x4 )
72 #define FADF_FIXEDSIZE ( 0x10 )
73 #define FADF_BSTR ( 0x100 )
74 #define FADF_UNKNOWN ( 0x200 )
75 #define FADF_DISPATCH ( 0x400 )
76 #define FADF_VARIANT ( 0x800 )
77 #define FADF_RESERVED ( 0xf0e8 )
79 typedef struct tagSAFEARRAYBOUND
81 ULONG cElements; /* Number of elements in dimension */
82 LONG lLbound; /* Lower bound of dimension */
83 } SAFEARRAYBOUND;
85 typedef struct tagSAFEARRAY
87 USHORT cDims; /* Count of array dimension */
88 USHORT fFeatures; /* Flags describing the array */
89 ULONG cbElements; /* Size of each element */
90 ULONG cLocks; /* Number of lock on array */
91 PVOID pvData; /* Pointer to data valid when cLocks > 0 */
92 SAFEARRAYBOUND rgsabound[ 1 ]; /* One bound for each dimension */
93 } SAFEARRAY, *LPSAFEARRAY;
95 typedef enum tagCALLCONV {
96 CC_CDECL = 1,
97 CC_MSCPASCAL = CC_CDECL + 1,
98 CC_PASCAL = CC_MSCPASCAL,
99 CC_MACPASCAL = CC_PASCAL + 1,
100 CC_STDCALL = CC_MACPASCAL + 1,
101 CC_RESERVED = CC_STDCALL + 1,
102 CC_SYSCALL = CC_RESERVED + 1,
103 CC_MPWCDECL = CC_SYSCALL + 1,
104 CC_MPWPASCAL = CC_MPWCDECL + 1,
105 CC_MAX = CC_MPWPASCAL + 1
106 } CALLCONV;
108 typedef CY CURRENCY;
111 * Declarations of the VARIANT structure and the VARIANT APIs.
113 /* S_OK : Success.
114 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
115 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
116 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
117 * E_INVALIDARG : One argument is invalid.
118 * * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
119 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
122 typedef struct tagVARIANT VARIANT, *LPVARIANT;
123 typedef struct tagVARIANT VARIANTARG, *LPVARIANTARG;
125 struct tagVARIANT {
126 VARTYPE vt;
127 WORD wReserved1;
128 WORD wReserved2;
129 WORD wReserved3;
130 union /* DUMMYUNIONNAME */
132 /* By value. */
133 CHAR cVal;
134 USHORT uiVal;
135 ULONG ulVal;
136 INT intVal;
137 UINT uintVal;
138 BYTE bVal;
139 short iVal;
140 long lVal;
141 float fltVal;
142 double dblVal;
143 VARIANT_BOOL boolVal;
144 SCODE scode;
145 DATE date;
146 BSTR bstrVal;
147 CY cyVal;
148 /* DECIMAL decVal; */
149 IUnknown* punkVal;
150 IDispatch* pdispVal;
151 SAFEARRAY* parray;
153 /* By reference */
154 CHAR* pcVal;
155 USHORT* puiVal;
156 ULONG* pulVal;
157 INT* pintVal;
158 UINT* puintVal;
159 BYTE* pbVal;
160 short* piVal;
161 long* plVal;
162 float* pfltVal;
163 double* pdblVal;
164 VARIANT_BOOL* pboolVal;
165 SCODE* pscode;
166 DATE* pdate;
167 BSTR* pbstrVal;
168 VARIANT* pvarVal;
169 PVOID byref;
170 CY* pcyVal;
171 /* DECIMAL* pdecVal; */
172 IUnknown** ppunkVal;
173 IDispatch** ppdispVal;
174 SAFEARRAY** pparray;
175 } DUMMYUNIONNAME;
179 typedef LONG DISPID;
180 typedef DWORD HREFTYPE;
181 typedef DISPID MEMBERID;
183 #define DISPATCH_METHOD 0x1
184 #define DISPATCH_PROPERTYGET 0x2
185 #define DISPATCH_PROPERTYPUT 0x4
186 #define DISPATCH_PROPERTYPUTREF 0x8
188 #define DISPID_UNKNOWN ( -1 )
189 #define DISPID_VALUE ( 0 )
190 #define DISPID_PROPERTYPUT ( -3 )
191 #define DISPID_NEWENUM ( -4 )
192 #define DISPID_EVALUATE ( -5 )
193 #define DISPID_CONSTRUCTOR ( -6 )
194 #define DISPID_DESTRUCTOR ( -7 )
195 #define DISPID_COLLECT ( -8 )
197 #define MEMBERID_NIL DISPID_UNKNOWN
199 #define IMPLTYPEFLAG_FDEFAULT (0x1)
200 #define IMPLTYPEFLAG_FSOURCE (0x2)
201 #define IMPLTYPEFLAG_FRESTRICTED (0x4)
202 #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
204 typedef struct tagDISPPARAMS
206 VARIANTARG* rgvarg;
207 DISPID* rgdispidNamedArgs;
208 UINT cArgs;
209 UINT cNamedArgs;
210 } DISPPARAMS;
212 typedef struct tagEXCEPINFO
214 WORD wCode;
215 WORD wReserved;
216 BSTR bstrSource;
217 BSTR bstrDescription;
218 BSTR bstrHelpFile;
219 DWORD dwHelpContext;
220 PVOID pvReserved;
221 HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);
222 SCODE scode;
223 } EXCEPINFO, * LPEXCEPINFO;
225 typedef struct tagIDLDESC
227 ULONG dwReserved;
228 USHORT wIDLFlags;
229 } IDLDESC;
231 typedef struct tagPARAMDESCEX
233 ULONG cBytes;
234 VARIANTARG varDefaultValue;
235 } PARAMDESCEX, *LPPARAMDESCEX;
237 typedef struct tagPARAMDESC
239 LPPARAMDESCEX pparamdescex;
240 USHORT wParamFlags;
241 } PARAMDESC;
243 #define PARAMFLAG_NONE (0x00)
244 #define PARAMFLAG_FIN (0x01)
245 #define PARAMFLAG_FOUT (0x02)
246 #define PARAMFLAG_FLCID (0x04)
247 #define PARAMFLAG_FRETVAL (0x08)
248 #define PARAMFLAG_FOPT (0x10)
249 #define PARAMFLAG_FHASDEFAULT (0x20)
252 typedef struct tagTYPEDESC
254 union {
255 struct tagTYPEDESC *lptdesc;
256 struct tagARRAYDESC *lpadesc;
257 HREFTYPE hreftype;
258 } DUMMYUNIONNAME;
259 VARTYPE vt;
260 } TYPEDESC;
262 typedef struct tagELEMDESC
264 TYPEDESC tdesc;
265 union {
266 IDLDESC idldesc;
267 PARAMDESC paramdesc;
268 } DUMMYUNIONNAME;
269 } ELEMDESC, *LPELEMDESC;
271 typedef enum tagTYPEKIND
273 TKIND_ENUM = 0,
274 TKIND_RECORD = 1,
275 TKIND_MODULE = 2,
276 TKIND_INTERFACE = 3,
277 TKIND_DISPATCH = 4,
278 TKIND_COCLASS = 5,
279 TKIND_ALIAS = 6,
280 TKIND_UNION = 7,
281 TKIND_MAX = 8
282 } TYPEKIND;
284 typedef struct tagTYPEATTR
286 GUID guid;
287 LCID lcid;
288 DWORD dwReserved;
289 MEMBERID memidConstructor;
290 MEMBERID memidDestructor;
291 LPOLESTR lpstrSchema;
292 ULONG cbSizeInstance;
293 TYPEKIND typekind;
294 WORD cFuncs;
295 WORD cVars;
296 WORD cImplTypes;
297 WORD cbSizeVft;
298 WORD cbAlignment;
299 WORD wTypeFlags;
300 WORD wMajorVerNum;
301 WORD wMinorVerNum;
302 TYPEDESC tdescAlias;
303 IDLDESC idldescType;
304 } TYPEATTR, *LPTYPEATTR;
306 typedef struct tagARRAYDESC
308 TYPEDESC tdescElem;
309 USHORT cDims;
310 SAFEARRAYBOUND rgbounds[1];
311 } ARRAYDESC;
313 typedef enum tagFUNCKIND
315 FUNC_VIRTUAL = 0,
316 FUNC_PUREVIRTUAL = 1,
317 FUNC_NONVIRTUAL = 2,
318 FUNC_STATIC = 3,
319 FUNC_DISPATCH = 4
320 } FUNCKIND;
322 typedef enum tagINVOKEKIND
324 INVOKE_FUNC = 1,
325 INVOKE_PROPERTYGET = 2,
326 INVOKE_PROPERTYPUT = 3,
327 INVOKE_PROPERTYPUTREF = 4
328 } INVOKEKIND;
330 typedef struct tagFUNCDESC
332 MEMBERID memid;
333 SCODE *lprgscode;
334 ELEMDESC *lprgelemdescParam;
335 FUNCKIND funckind;
336 INVOKEKIND invkind;
337 CALLCONV callconv;
338 SHORT cParams;
339 SHORT cParamsOpt;
340 SHORT oVft;
341 SHORT cScodes;
342 ELEMDESC elemdescFunc;
343 WORD wFuncFlags;
344 } FUNCDESC, *LPFUNCDESC;
346 typedef enum tagVARKIND
348 VAR_PERINSTANCE = 0,
349 VAR_STATIC = 1,
350 VAR_CONST = 2,
351 VAR_DISPATCH = 3
352 } VARKIND;
354 typedef struct tagVARDESC
356 MEMBERID memid;
357 LPOLESTR lpstrSchema;
358 union {
359 ULONG oInst;
360 VARIANT *lpvarValue;
361 } DUMMYUNIONNAME;
362 ELEMDESC elemdescVar;
363 WORD wVarFlags;
364 VARKIND varkind;
365 } VARDESC, *LPVARDESC;
367 typedef enum tagSYSKIND
369 SYS_WIN16 = 0,
370 SYS_WIN32 = 1,
371 SYS_MAC = 2
372 } SYSKIND;
374 typedef enum tagLIBFLAGS
376 LIBFLAG_FRESTRICTED = 0x1,
377 LIBFLAG_FCONTROL = 0x2,
378 LIBFLAG_FHIDDEN = 0x4,
379 LIBFLAG_FHASDISKIMAGE = 0x8
380 } LIBFLAGS;
382 typedef struct tagTLIBATTR
384 GUID guid;
385 LCID lcid;
386 SYSKIND syskind;
387 WORD wMajorVerNum;
388 WORD wMinorVerNum;
389 WORD wLibFlags;
390 } TLIBATTR, *LPTLIBATTR;
392 typedef enum tagDESCKIND
394 DESCKIND_NONE = 0,
395 DESCKIND_FUNCDESC = 1,
396 DESCKIND_VARDESC = 2,
397 DESCKIND_TYPECOMP = 3,
398 DESCKIND_IMPLICITAPPOBJ = 4,
399 DESCKIND_MAX = 6
400 } DESCKIND;
402 typedef union tagBINDPTR
404 FUNCDESC *lpfuncdesc;
405 VARDESC *lpvardesc;
406 ITypeComp *lptcomp;
407 } BINDPTR, *LPBINDPTR;
409 typedef enum tagVARFLAGS
411 VARFLAG_FREADONLY = 0x1,
412 VARFLAG_FSOURCE = 0x2,
413 VARFLAG_FBINDABLE = 0x4,
414 VARFLAG_FREQUESTEDIT = 0x8,
415 VARFLAG_FDISPLAYBIND = 0x10,
416 VARFLAG_FDEFAULTBIND = 0x20,
417 VARFLAG_FHIDDEN = 0x40,
418 VARFLAG_FRESTRICTED = 0x80,
419 VARFLAG_FDEFAULTCOLLELEM = 0x100,
420 VARFLAG_FUIDEFAULT = 0x200,
421 VARFLAG_FNONBROWSABLE = 0x400,
422 VARFLAG_FREPLACEABLE = 0x800,
423 VARFLAG_FIMMEDIATEBIND = 0x1000
424 } VARFLAGS;
426 /*****************************************************************
427 * SafeArray defines and structs
430 #define FADF_AUTO ( 0x1 )
431 #define FADF_STATIC ( 0x2 )
432 #define FADF_EMBEDDED ( 0x4 )
433 #define FADF_FIXEDSIZE ( 0x10 )
434 #define FADF_BSTR ( 0x100 )
435 #define FADF_UNKNOWN ( 0x200 )
436 #define FADF_DISPATCH ( 0x400 )
437 #define FADF_VARIANT ( 0x800 )
438 #define FADF_RESERVED ( 0xf0e8 )
441 * Data types for Variants.
444 enum VARENUM {
445 VT_EMPTY = 0,
446 VT_NULL = 1,
447 VT_I2 = 2,
448 VT_I4 = 3,
449 VT_R4 = 4,
450 VT_R8 = 5,
451 VT_CY = 6,
452 VT_DATE = 7,
453 VT_BSTR = 8,
454 VT_DISPATCH = 9,
455 VT_ERROR = 10,
456 VT_BOOL = 11,
457 VT_VARIANT = 12,
458 VT_UNKNOWN = 13,
459 VT_DECIMAL = 14,
460 VT_I1 = 16,
461 VT_UI1 = 17,
462 VT_UI2 = 18,
463 VT_UI4 = 19,
464 VT_I8 = 20,
465 VT_UI8 = 21,
466 VT_INT = 22,
467 VT_UINT = 23,
468 VT_VOID = 24,
469 VT_HRESULT = 25,
470 VT_PTR = 26,
471 VT_SAFEARRAY = 27,
472 VT_CARRAY = 28,
473 VT_USERDEFINED = 29,
474 VT_LPSTR = 30,
475 VT_LPWSTR = 31,
476 VT_FILETIME = 64,
477 VT_BLOB = 65,
478 VT_STREAM = 66,
479 VT_STORAGE = 67,
480 VT_STREAMED_OBJECT = 68,
481 VT_STORED_OBJECT = 69,
482 VT_BLOB_OBJECT = 70,
483 VT_CF = 71,
484 VT_CLSID = 72,
485 VT_VECTOR = 0x1000,
486 VT_ARRAY = 0x2000,
487 VT_BYREF = 0x4000,
488 VT_RESERVED = 0x8000,
489 VT_ILLEGAL = 0xffff,
490 VT_ILLEGALMASKED = 0xfff,
491 VT_TYPEMASK = 0xfff
494 /* the largest valide type
496 #define VT_MAXVALIDTYPE VT_CLSID
500 * Declarations of the VARIANT structure and the VARIANT APIs.
503 /* S_OK : Success.
504 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
505 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
506 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
507 * E_INVALIDARG : One argument is invalid.
508 * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
509 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
513 typedef struct tagCUSTDATAITEM {
514 GUID guid;
515 VARIANTARG varValue;
516 } CUSTDATAITEM, *LPCUSTDATAITEM;
518 typedef struct tagCUSTDATA {
519 INT cCustData;
520 LPCUSTDATAITEM prgCustData; /* count cCustdata */
521 } CUSTDATA, *LPCUSTDATA;
525 /*****************************************************************************
526 * IDispatch interface
528 #define ICOM_INTERFACE IDispatch
529 #define IDispatch_METHODS \
530 ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo) \
531 ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo) \
532 ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId) \
533 ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr)
534 #define IDispatch_IMETHODS \
535 IUnknown_IMETHODS \
536 IDispatch_METHODS
537 ICOM_DEFINE(IDispatch,IUnknown)
538 #undef ICOM_INTERFACE
540 /*** IUnknown methods ***/
541 #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
542 #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
543 #define IDispatch_Release(p) ICOM_CALL (Release,p)
544 /*** IDispatch methods ***/
545 #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
546 #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,b,c)
547 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
548 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
551 /*****************************************************************************
552 * ITypeInfo interface
554 #define ICOM_INTERFACE ITypeInfo
555 #define ITypeInfo_METHODS \
556 ICOM_METHOD1(HRESULT,GetTypeAttr, TYPEATTR**,ppTypeAttr) \
557 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
558 ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \
559 ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \
560 ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \
561 ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \
562 ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\
563 ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \
564 ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \
565 ICOM_METHOD5(HRESULT,GetDocumentation, MEMBERID,memid, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
566 ICOM_METHOD5(HRESULT,GetDllEntry, MEMBERID,memid, INVOKEKIND,invKind, BSTR*,pBstrDllName, BSTR*,pBstrName, WORD*,pwOrdinal) \
567 ICOM_METHOD2(HRESULT,GetRefTypeInfo, HREFTYPE,hRefType, ITypeInfo**,ppTInfo) \
568 ICOM_METHOD3(HRESULT,AddressOfMember, MEMBERID,memid, INVOKEKIND,invKind, PVOID*,ppv) \
569 ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \
570 ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \
571 ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
572 ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
573 ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
574 ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)\
577 /* itypeinfo2 methods */\
578 ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
579 ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
580 ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
581 invKind, UINT*, pFuncIndex) \
582 ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
583 pVarIndex) \
584 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
585 ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
586 VARIANT*, pVarVal) \
587 ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
588 indexParam, REFGUID, guid, VARIANT*, pVarVal) \
589 ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
590 VARIANT*, pVarVal) \
591 ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
592 VARIANT*, pVarVal) \
593 ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
594 BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
595 BSTR*, pbstrHelpStringDll) \
596 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
597 ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
598 pCustData)\
599 ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
600 indexParam, CUSTDATA*, pCustData) \
601 ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
602 pCustData) \
603 ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
604 pCustData)
606 #define ITypeInfo_IMETHODS \
607 IUnknown_IMETHODS \
608 ITypeInfo_METHODS
609 ICOM_DEFINE(ITypeInfo,IUnknown)
610 #undef ICOM_INTERFACE
612 /*** IUnknown methods ***/
613 #define ITypeInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
614 #define ITypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
615 #define ITypeInfo_Release(p) ICOM_CALL (Release,p)
616 /*** ITypeInfo methods ***/
617 #define ITypeInfo_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
618 #define ITypeInfo_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
619 #define ITypeInfo_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
620 #define ITypeInfo_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
621 #define ITypeInfo_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
622 #define ITypeInfo_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
623 #define ITypeInfo_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
624 #define ITypeInfo_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
625 #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
626 #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
627 #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
628 #define ITypeInfo_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
629 #define ITypeInfo_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
630 #define ITypeInfo_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
631 #define ITypeInfo_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
632 #define ITypeInfo_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
633 #define ITypeInfo_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
634 #define ITypeInfo_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
635 #define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
638 /*****************************************************************************
639 * ITypeLib interface
641 #define ICOM_INTERFACE ITypeLib
642 #define ITypeLib_METHODS \
643 ICOM_METHOD (UINT,GetTypeInfoCount) \
644 ICOM_METHOD2(HRESULT,GetTypeInfo, UINT,index, ITypeInfo**,ppTInfo) \
645 ICOM_METHOD2(HRESULT,GetTypeInfoType, UINT,index, TYPEKIND*,pTKind) \
646 ICOM_METHOD2(HRESULT,GetTypeInfoOfGuid, REFGUID,guid, ITypeInfo**,ppTinfo) \
647 ICOM_METHOD1(HRESULT,GetLibAttr, TLIBATTR**,ppTLibAttr) \
648 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
649 ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
650 ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
651 ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
652 ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)\
654 ICOM_METHOD2(HRESULT,GetCustData, REFGUID,guid, VARIANT*, pVarVal)\
655 ICOM_METHOD2(HRESULT, GetLibStatistics, UINT *,pcUniqueNames, \
656 UINT*, pcchUniqueNames) \
657 ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,\
658 BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
659 BSTR*, pbstrHelpStringDll)\
660 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
662 #define ITypeLib_IMETHODS \
663 IUnknown_IMETHODS \
664 ITypeLib_METHODS
665 ICOM_DEFINE(ITypeLib,IUnknown)
666 #undef ICOM_INTERFACE
668 /*** IUnknown methods ***/
669 #define ITypeLib_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
670 #define ITypeLib_AddRef(p) ICOM_CALL (AddRef,p)
671 #define ITypeLib_Release(p) ICOM_CALL (Release,p)
672 /*** ITypeLib methods ***/
673 #define ITypeLib_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
674 #define ITypeLib_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
675 #define ITypeLib_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
676 #define ITypeLib_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
677 #define ITypeLib_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
678 #define ITypeLib_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
679 #define ITypeLib_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
680 #define ITypeLib_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
681 #define ITypeLib_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
682 #define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
685 /*****************************************************************************
686 * ITypeComp interface
688 #define ICOM_INTERFACE ITypeComp
689 #define ITypeComp_METHODS \
690 ICOM_METHOD6(HRESULT,Bind, LPOLESTR,szName, ULONG,lHashVal, WORD,wFlags, ITypeInfo**,ppTInfo, DESCKIND*,pDescKind, BINDPTR*,pBindPtr) \
691 ICOM_METHOD4(HRESULT,BindType, LPOLESTR,szName, ULONG,lHashVal, ITypeInfo**,ppTInfo, ITypeComp**,ppTComp)
692 #define ITypeComp_IMETHODS \
693 IUnknown_IMETHODS \
694 ITypeComp_METHODS
695 ICOM_DEFINE(ITypeComp,IUnknown)
696 #undef ICOM_INTERFACE
698 /*** IUnknown methods ***/
699 #define ITypeComp_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
700 #define ITypeComp_AddRef(p) ICOM_CALL (AddRef,p)
701 #define ITypeComp_Release(p) ICOM_CALL (Release,p)
702 /*** ITypeComp methods ***/
703 #define ITypeComp_Bind(p,a,b,c,d,e,f) ICOM_CALL6(Bind,p,a,b,c,d,e,f)
704 #define ITypeComp_BindType(p,a,b,c,d) ICOM_CALL4(BindType,p,a,b,c,d)
706 /*****************************************************************************
707 * IEnumVARIANT interface
709 #define ICOM_INTERFACE IEnumVARIANT
710 #define IEnumVARIANT_METHODS \
711 ICOM_METHOD3(HRESULT,Next, ULONG,celt, VARIANT*,rgVar, ULONG*,pCeltFetched) \
712 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
713 ICOM_METHOD (HRESULT,Reset) \
714 ICOM_METHOD1(HRESULT,Clone, IEnumVARIANT**,ppEnum)
715 #define IEnumVARIANT_IMETHODS \
716 IUnknown_IMETHODS \
717 IEnumVARIANT_METHODS
718 ICOM_DEFINE(IEnumVARIANT,IUnknown)
719 #undef ICOM_INTERFACE
721 /*** IUnknown methods ***/
722 #define IEnumVARIANT_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
723 #define IEnumVARIANT_AddRef(p) ICOM_CALL (AddRef,p)
724 #define IEnumVARIANT_Release(p) ICOM_CALL (Release,p)
725 /*** IEnumVARIANT methods ***/
726 #define IEnumVARIANT_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
727 #define IEnumVARIANT_Skip(p,a) ICOM_CALL1(Skip,p,a)
728 #define IEnumVARIANT_Reset(p) ICOM_CALL (Reset,p)
729 #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a)
731 #endif /* __WINE_WINE_OBJ_OLEAUT_H */