The declaration of DECIMAL in VARIANT happens in the wrong place.
[wine.git] / include / wine / obj_oleaut.h
blob04c5c0cd205839489bb5254b72b1050c26028815
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
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 */
79 } SAFEARRAYBOUND;
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 {
92 CC_CDECL = 1,
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
102 } CALLCONV;
104 typedef CY CURRENCY;
107 * Declarations of the VARIANT structure and the VARIANT APIs.
109 /* S_OK : Success.
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;
121 struct tagVARIANT {
122 VARTYPE vt;
123 WORD wReserved1;
124 WORD wReserved2;
125 WORD wReserved3;
126 union /* DUMMYUNIONNAME */
128 /* By value. */
129 CHAR cVal;
130 USHORT uiVal;
131 ULONG ulVal;
132 INT intVal;
133 UINT uintVal;
134 BYTE bVal;
135 short iVal;
136 long lVal;
137 float fltVal;
138 double dblVal;
139 VARIANT_BOOL boolVal;
140 SCODE scode;
141 DATE date;
142 BSTR bstrVal;
143 CY cyVal;
144 /* FIXME: This is not supposed to be at this level
145 * See bug #181 in bugzilla
146 * DECIMAL decVal;
148 IUnknown* punkVal;
149 IDispatch* pdispVal;
150 SAFEARRAY* parray;
152 /* By reference */
153 CHAR* pcVal;
154 USHORT* puiVal;
155 ULONG* pulVal;
156 INT* pintVal;
157 UINT* puintVal;
158 BYTE* pbVal;
159 short* piVal;
160 long* plVal;
161 float* pfltVal;
162 double* pdblVal;
163 VARIANT_BOOL* pboolVal;
164 SCODE* pscode;
165 DATE* pdate;
166 BSTR* pbstrVal;
167 VARIANT* pvarVal;
168 PVOID byref;
169 CY* pcyVal;
170 DECIMAL* pdecVal;
171 IUnknown** ppunkVal;
172 IDispatch** ppdispVal;
173 SAFEARRAY** pparray;
174 } DUMMYUNIONNAME;
178 typedef LONG DISPID;
179 typedef DWORD HREFTYPE;
180 typedef DISPID MEMBERID;
182 #define DISPATCH_METHOD 0x1
183 #define DISPATCH_PROPERTYGET 0x2
184 #define DISPATCH_PROPERTYPUT 0x4
185 #define DISPATCH_PROPERTYPUTREF 0x8
187 #define DISPID_UNKNOWN ( -1 )
188 #define DISPID_VALUE ( 0 )
189 #define DISPID_PROPERTYPUT ( -3 )
190 #define DISPID_NEWENUM ( -4 )
191 #define DISPID_EVALUATE ( -5 )
192 #define DISPID_CONSTRUCTOR ( -6 )
193 #define DISPID_DESTRUCTOR ( -7 )
194 #define DISPID_COLLECT ( -8 )
196 #define MEMBERID_NIL DISPID_UNKNOWN
198 #define IMPLTYPEFLAG_FDEFAULT (0x1)
199 #define IMPLTYPEFLAG_FSOURCE (0x2)
200 #define IMPLTYPEFLAG_FRESTRICTED (0x4)
201 #define IMPLTYPEFLAG_FDEFAULTVTABLE (0x8)
203 typedef struct tagDISPPARAMS
205 VARIANTARG* rgvarg;
206 DISPID* rgdispidNamedArgs;
207 UINT cArgs;
208 UINT cNamedArgs;
209 } DISPPARAMS;
211 typedef struct tagEXCEPINFO
213 WORD wCode;
214 WORD wReserved;
215 BSTR bstrSource;
216 BSTR bstrDescription;
217 BSTR bstrHelpFile;
218 DWORD dwHelpContext;
219 PVOID pvReserved;
220 HRESULT __stdcall (*pfnDeferredFillIn)(struct tagEXCEPINFO *);
221 SCODE scode;
222 } EXCEPINFO, * LPEXCEPINFO;
224 typedef struct tagIDLDESC
226 ULONG dwReserved;
227 USHORT wIDLFlags;
228 } IDLDESC;
230 typedef struct tagPARAMDESCEX
232 ULONG cBytes;
233 VARIANTARG varDefaultValue;
234 } PARAMDESCEX, *LPPARAMDESCEX;
236 typedef struct tagPARAMDESC
238 LPPARAMDESCEX pparamdescex;
239 USHORT wParamFlags;
240 } PARAMDESC;
242 #define PARAMFLAG_NONE (0x00)
243 #define PARAMFLAG_FIN (0x01)
244 #define PARAMFLAG_FOUT (0x02)
245 #define PARAMFLAG_FLCID (0x04)
246 #define PARAMFLAG_FRETVAL (0x08)
247 #define PARAMFLAG_FOPT (0x10)
248 #define PARAMFLAG_FHASDEFAULT (0x20)
251 typedef struct tagTYPEDESC
253 union {
254 struct tagTYPEDESC *lptdesc;
255 struct tagARRAYDESC *lpadesc;
256 HREFTYPE hreftype;
257 } DUMMYUNIONNAME;
258 VARTYPE vt;
259 } TYPEDESC;
261 typedef struct tagELEMDESC
263 TYPEDESC tdesc;
264 union {
265 IDLDESC idldesc;
266 PARAMDESC paramdesc;
267 } DUMMYUNIONNAME;
268 } ELEMDESC, *LPELEMDESC;
270 typedef enum tagTYPEKIND
272 TKIND_ENUM = 0,
273 TKIND_RECORD = 1,
274 TKIND_MODULE = 2,
275 TKIND_INTERFACE = 3,
276 TKIND_DISPATCH = 4,
277 TKIND_COCLASS = 5,
278 TKIND_ALIAS = 6,
279 TKIND_UNION = 7,
280 TKIND_MAX = 8
281 } TYPEKIND;
283 typedef struct tagTYPEATTR
285 GUID guid;
286 LCID lcid;
287 DWORD dwReserved;
288 MEMBERID memidConstructor;
289 MEMBERID memidDestructor;
290 LPOLESTR lpstrSchema;
291 ULONG cbSizeInstance;
292 TYPEKIND typekind;
293 WORD cFuncs;
294 WORD cVars;
295 WORD cImplTypes;
296 WORD cbSizeVft;
297 WORD cbAlignment;
298 WORD wTypeFlags;
299 WORD wMajorVerNum;
300 WORD wMinorVerNum;
301 TYPEDESC tdescAlias;
302 IDLDESC idldescType;
303 } TYPEATTR, *LPTYPEATTR;
305 #define TYPEFLAG_NONE (0x00)
306 #define TYPEFLAG_FAPPOBJECT (0x01)
307 #define TYPEFLAG_FCANCREATE (0x02)
308 #define TYPEFLAG_FLICENSED (0x04)
309 #define TYPEFLAG_FPREDECLID (0x08)
310 #define TYPEFLAG_FHIDDEN (0x0f)
311 #define TYPEFLAG_FCONTROL (0x20)
312 #define TYPEFLAG_FDUAL (0x40)
313 #define TYPEFLAG_FNONEXTENSIBLE (0x80)
314 #define TYPEFLAG_FOLEAUTOMATION (0x100)
315 #define TYPEFLAG_FRESTRICTED (0x200)
316 #define TYPEFLAG_FAGGREGATABLE (0x400)
317 #define TYPEFLAG_FREPLACEABLE (0x800)
318 #define TYPEFLAG_FDISPATCHABLE (0x1000)
319 #define TYPEFLAG_FREVERSEBIND (0x2000)
320 #define TYPEFLAG_FPROXY (0x4000)
321 #define TYPEFLAG_DEFAULTFILTER (0x8000)
322 #define TYPEFLAG_COCLASSATTRIBUTES (0x63f)
323 #define TYPEFLAG_INTERFACEATTRIBUTES (0x7bd0)
324 #define TYPEFLAG_DISPATCHATTRIBUTES (0x5a90)
325 #define TYPEFLAG_ALIASATTRIBUTES (0x210)
326 #define TYPEFLAG_MODULEATTRIBUTES (0x210)
327 #define TYPEFLAG_ENUMATTRIBUTES (0x210)
328 #define TYPEFLAG_RECORDATTRIBUTES (0x210)
329 #define TYPEFLAG_UNIONATTRIBUTES (0x210)
331 typedef struct tagARRAYDESC
333 TYPEDESC tdescElem;
334 USHORT cDims;
335 SAFEARRAYBOUND rgbounds[1];
336 } ARRAYDESC;
338 typedef enum tagFUNCKIND
340 FUNC_VIRTUAL = 0,
341 FUNC_PUREVIRTUAL = 1,
342 FUNC_NONVIRTUAL = 2,
343 FUNC_STATIC = 3,
344 FUNC_DISPATCH = 4
345 } FUNCKIND;
347 typedef enum tagINVOKEKIND
349 INVOKE_FUNC = 1,
350 INVOKE_PROPERTYGET = 2,
351 INVOKE_PROPERTYPUT = 3,
352 INVOKE_PROPERTYPUTREF = 4
353 } INVOKEKIND;
355 typedef struct tagFUNCDESC
357 MEMBERID memid;
358 SCODE *lprgscode;
359 ELEMDESC *lprgelemdescParam;
360 FUNCKIND funckind;
361 INVOKEKIND invkind;
362 CALLCONV callconv;
363 SHORT cParams;
364 SHORT cParamsOpt;
365 SHORT oVft;
366 SHORT cScodes;
367 ELEMDESC elemdescFunc;
368 WORD wFuncFlags;
369 } FUNCDESC, *LPFUNCDESC;
371 typedef enum tagVARKIND
373 VAR_PERINSTANCE = 0,
374 VAR_STATIC = 1,
375 VAR_CONST = 2,
376 VAR_DISPATCH = 3
377 } VARKIND;
379 typedef struct tagVARDESC
381 MEMBERID memid;
382 LPOLESTR lpstrSchema;
383 union {
384 ULONG oInst;
385 VARIANT *lpvarValue;
386 } DUMMYUNIONNAME;
387 ELEMDESC elemdescVar;
388 WORD wVarFlags;
389 VARKIND varkind;
390 } VARDESC, *LPVARDESC;
392 typedef enum tagSYSKIND
394 SYS_WIN16 = 0,
395 SYS_WIN32 = 1,
396 SYS_MAC = 2
397 } SYSKIND;
399 typedef enum tagLIBFLAGS
401 LIBFLAG_FRESTRICTED = 0x1,
402 LIBFLAG_FCONTROL = 0x2,
403 LIBFLAG_FHIDDEN = 0x4,
404 LIBFLAG_FHASDISKIMAGE = 0x8
405 } LIBFLAGS;
407 typedef struct tagTLIBATTR
409 GUID guid;
410 LCID lcid;
411 SYSKIND syskind;
412 WORD wMajorVerNum;
413 WORD wMinorVerNum;
414 WORD wLibFlags;
415 } TLIBATTR, *LPTLIBATTR;
417 typedef enum tagDESCKIND
419 DESCKIND_NONE = 0,
420 DESCKIND_FUNCDESC = 1,
421 DESCKIND_VARDESC = 2,
422 DESCKIND_TYPECOMP = 3,
423 DESCKIND_IMPLICITAPPOBJ = 4,
424 DESCKIND_MAX = 6
425 } DESCKIND;
427 typedef union tagBINDPTR
429 FUNCDESC *lpfuncdesc;
430 VARDESC *lpvardesc;
431 ITypeComp *lptcomp;
432 } BINDPTR, *LPBINDPTR;
434 typedef enum tagVARFLAGS
436 VARFLAG_FREADONLY = 0x1,
437 VARFLAG_FSOURCE = 0x2,
438 VARFLAG_FBINDABLE = 0x4,
439 VARFLAG_FREQUESTEDIT = 0x8,
440 VARFLAG_FDISPLAYBIND = 0x10,
441 VARFLAG_FDEFAULTBIND = 0x20,
442 VARFLAG_FHIDDEN = 0x40,
443 VARFLAG_FRESTRICTED = 0x80,
444 VARFLAG_FDEFAULTCOLLELEM = 0x100,
445 VARFLAG_FUIDEFAULT = 0x200,
446 VARFLAG_FNONBROWSABLE = 0x400,
447 VARFLAG_FREPLACEABLE = 0x800,
448 VARFLAG_FIMMEDIATEBIND = 0x1000
449 } VARFLAGS;
453 * Data types for Variants.
456 enum VARENUM {
457 VT_EMPTY = 0,
458 VT_NULL = 1,
459 VT_I2 = 2,
460 VT_I4 = 3,
461 VT_R4 = 4,
462 VT_R8 = 5,
463 VT_CY = 6,
464 VT_DATE = 7,
465 VT_BSTR = 8,
466 VT_DISPATCH = 9,
467 VT_ERROR = 10,
468 VT_BOOL = 11,
469 VT_VARIANT = 12,
470 VT_UNKNOWN = 13,
471 VT_DECIMAL = 14,
472 VT_I1 = 16,
473 VT_UI1 = 17,
474 VT_UI2 = 18,
475 VT_UI4 = 19,
476 VT_I8 = 20,
477 VT_UI8 = 21,
478 VT_INT = 22,
479 VT_UINT = 23,
480 VT_VOID = 24,
481 VT_HRESULT = 25,
482 VT_PTR = 26,
483 VT_SAFEARRAY = 27,
484 VT_CARRAY = 28,
485 VT_USERDEFINED = 29,
486 VT_LPSTR = 30,
487 VT_LPWSTR = 31,
488 VT_RECORD = 36,
489 VT_FILETIME = 64,
490 VT_BLOB = 65,
491 VT_STREAM = 66,
492 VT_STORAGE = 67,
493 VT_STREAMED_OBJECT = 68,
494 VT_STORED_OBJECT = 69,
495 VT_BLOB_OBJECT = 70,
496 VT_CF = 71,
497 VT_CLSID = 72,
498 VT_VECTOR = 0x1000,
499 VT_ARRAY = 0x2000,
500 VT_BYREF = 0x4000,
501 VT_RESERVED = 0x8000,
502 VT_ILLEGAL = 0xffff,
503 VT_ILLEGALMASKED = 0xfff,
504 VT_TYPEMASK = 0xfff
507 /* the largest valide type
509 #define VT_MAXVALIDTYPE VT_CLSID
513 * Declarations of the VARIANT structure and the VARIANT APIs.
516 /* S_OK : Success.
517 * DISP_E_BADVARTYPE : The variant type vt in not a valid type of variant.
518 * DISP_E_OVERFLOW : The data pointed to by pvarSrc does not fit in the destination type.
519 * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
520 * E_INVALIDARG : One argument is invalid.
521 * E_OUTOFMEMORY : Memory could not be allocated for the conversion.
522 * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
526 typedef struct tagCUSTDATAITEM {
527 GUID guid;
528 VARIANTARG varValue;
529 } CUSTDATAITEM, *LPCUSTDATAITEM;
531 typedef struct tagCUSTDATA {
532 INT cCustData;
533 LPCUSTDATAITEM prgCustData; /* count cCustdata */
534 } CUSTDATA, *LPCUSTDATA;
538 /*****************************************************************************
539 * IDispatch interface
541 #define ICOM_INTERFACE IDispatch
542 #define IDispatch_METHODS \
543 ICOM_METHOD1(HRESULT, GetTypeInfoCount, UINT*, pctinfo) \
544 ICOM_METHOD3(HRESULT, GetTypeInfo, UINT, iTInfo, LCID, lcid, ITypeInfo**, ppTInfo) \
545 ICOM_METHOD5(HRESULT, GetIDsOfNames, REFIID, riid, LPOLESTR*, rgszNames, UINT, cNames, LCID, lcid, DISPID*, rgDispId) \
546 ICOM_METHOD8(HRESULT, Invoke, DISPID, dispIdMember, REFIID, riid, LCID, lcid, WORD, wFlags, DISPPARAMS*, pDispParams, VARIANT*, pVarResult, EXCEPINFO*, pExepInfo, UINT*, puArgErr)
547 #define IDispatch_IMETHODS \
548 IUnknown_IMETHODS \
549 IDispatch_METHODS
550 ICOM_DEFINE(IDispatch,IUnknown)
551 #undef ICOM_INTERFACE
553 /*** IUnknown methods ***/
554 #define IDispatch_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
555 #define IDispatch_AddRef(p) ICOM_CALL (AddRef,p)
556 #define IDispatch_Release(p) ICOM_CALL (Release,p)
557 /*** IDispatch methods ***/
558 #define IDispatch_GetTypeInfoCount(p,a) ICOM_CALL1 (GetTypeInfoCount,p,a)
559 #define IDispatch_GetTypeInfo(p,a,b,c) ICOM_CALL3 (GetTypeInfo,p,a,b,c)
560 #define IDispatch_GetIDsOfNames(p,a,b,c,d,e) ICOM_CALL5 (GetIDsOfNames,p,a,b,c,d,e)
561 #define IDispatch_Invoke(p,a,b,c,d,e,f,g,h) ICOM_CALL8 (Invoke,p,a,b,c,d,e,f,g,h)
564 /*****************************************************************************
565 * ITypeInfo interface
567 #define ICOM_INTERFACE ITypeInfo
568 #define ITypeInfo_METHODS \
569 ICOM_METHOD1(HRESULT,GetTypeAttr, TYPEATTR**,ppTypeAttr) \
570 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
571 ICOM_METHOD2(HRESULT,GetFuncDesc, UINT,index, FUNCDESC**,ppFuncDesc) \
572 ICOM_METHOD2(HRESULT,GetVarDesc, UINT,index, VARDESC**,ppVarDesc) \
573 ICOM_METHOD4(HRESULT,GetNames, MEMBERID,memid, BSTR*,rgBstrNames, UINT,cMaxNames, UINT*,pcNames) \
574 ICOM_METHOD2(HRESULT,GetRefTypeOfImplType, UINT,index, HREFTYPE*, pRefType) \
575 ICOM_METHOD2(HRESULT,GetImplTypeFlags, UINT,index, INT*,pImplTypeFlags)\
576 ICOM_METHOD3(HRESULT,GetIDsOfNames, LPOLESTR*,rgszNames, UINT,cNames, MEMBERID*,pMemId) \
577 ICOM_METHOD7(HRESULT,Invoke, PVOID,pvInstance, MEMBERID,memid, WORD,wFlags, DISPPARAMS*,pDispParams, VARIANT*,pVarResult, EXCEPINFO*,pExcepInfo, UINT*,puArgErr) \
578 ICOM_METHOD5(HRESULT,GetDocumentation, MEMBERID,memid, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
579 ICOM_METHOD5(HRESULT,GetDllEntry, MEMBERID,memid, INVOKEKIND,invKind, BSTR*,pBstrDllName, BSTR*,pBstrName, WORD*,pwOrdinal) \
580 ICOM_METHOD2(HRESULT,GetRefTypeInfo, HREFTYPE,hRefType, ITypeInfo**,ppTInfo) \
581 ICOM_METHOD3(HRESULT,AddressOfMember, MEMBERID,memid, INVOKEKIND,invKind, PVOID*,ppv) \
582 ICOM_METHOD3(HRESULT,CreateInstance, IUnknown*,pUnkOuter, REFIID,riid, PVOID*,ppvObj) \
583 ICOM_METHOD2(HRESULT,GetMops, MEMBERID,memid, BSTR*,pBstrMops) \
584 ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
585 ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
586 ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
587 ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)
589 #define ITypeInfo_IMETHODS \
590 IUnknown_IMETHODS \
591 ITypeInfo_METHODS
592 ICOM_DEFINE(ITypeInfo,IUnknown)
593 #undef ICOM_INTERFACE
595 /*** IUnknown methods ***/
596 #define ITypeInfo_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
597 #define ITypeInfo_AddRef(p) ICOM_CALL (AddRef,p)
598 #define ITypeInfo_Release(p) ICOM_CALL (Release,p)
599 /*** ITypeInfo methods ***/
600 #define ITypeInfo_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
601 #define ITypeInfo_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
602 #define ITypeInfo_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
603 #define ITypeInfo_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
604 #define ITypeInfo_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
605 #define ITypeInfo_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
606 #define ITypeInfo_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
607 #define ITypeInfo_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
608 #define ITypeInfo_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
609 #define ITypeInfo_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
610 #define ITypeInfo_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
611 #define ITypeInfo_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
612 #define ITypeInfo_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
613 #define ITypeInfo_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
614 #define ITypeInfo_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
615 #define ITypeInfo_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
616 #define ITypeInfo_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
617 #define ITypeInfo_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
618 #define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
621 /*****************************************************************************
622 * ITypeInfo2 interface
624 #define ICOM_INTERFACE ITypeInfo2
625 #define ITypeInfo2_METHODS \
626 ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
627 ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
628 ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
629 invKind, UINT*, pFuncIndex) \
630 ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
631 pVarIndex) \
632 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
633 ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
634 VARIANT*, pVarVal) \
635 ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
636 indexParam, REFGUID, guid, VARIANT*, pVarVal) \
637 ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
638 VARIANT*, pVarVal) \
639 ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
640 VARIANT*, pVarVal) \
641 ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
642 BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\
643 BSTR*, pbstrHelpStringDll) \
644 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
645 ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
646 pCustData)\
647 ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
648 indexParam, CUSTDATA*, pCustData) \
649 ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
650 pCustData) \
651 ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
652 pCustData)
654 #define ITypeInfo2_IMETHODS \
655 IUnknown_IMETHODS \
656 ITypeInfo_METHODS \
657 ITypeInfo2_METHODS
658 ICOM_DEFINE(ITypeInfo2,ITypeInfo)
659 #undef ICOM_INTERFACE
661 /*** IUnknown methods ***/
662 #define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
663 #define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p)
664 #define ITypeInfo2_Release(p) ICOM_CALL (Release,p)
665 /*** ITypeInfo methods ***/
666 #define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
667 #define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
668 #define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
669 #define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
670 #define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
671 #define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
672 #define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
673 #define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
674 #define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
675 #define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
676 #define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
677 #define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
678 #define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
679 #define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
680 #define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
681 #define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
682 #define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
683 #define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
684 #define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
685 /*** ITypeInfo2 methods ***/
686 #define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a)
687 #define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a)
688 #define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c)
689 #define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b)
690 #define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
691 #define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c)
692 #define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d)
693 #define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c)
694 #define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c)
695 #define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
696 #define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
697 #define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b)
698 #define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c)
699 #define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b)
700 #define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b)
702 /*****************************************************************************
703 * ITypeLib interface
705 #define ICOM_INTERFACE ITypeLib
706 #define ITypeLib_METHODS \
707 ICOM_METHOD (UINT,GetTypeInfoCount) \
708 ICOM_METHOD2(HRESULT,GetTypeInfo, UINT,index, ITypeInfo**,ppTInfo) \
709 ICOM_METHOD2(HRESULT,GetTypeInfoType, UINT,index, TYPEKIND*,pTKind) \
710 ICOM_METHOD2(HRESULT,GetTypeInfoOfGuid, REFGUID,guid, ITypeInfo**,ppTinfo) \
711 ICOM_METHOD1(HRESULT,GetLibAttr, TLIBATTR**,ppTLibAttr) \
712 ICOM_METHOD1(HRESULT,GetTypeComp, ITypeComp**,ppTComp) \
713 ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
714 ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
715 ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
716 ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)
717 #define ITypeLib_IMETHODS \
718 IUnknown_IMETHODS \
719 ITypeLib_METHODS
720 ICOM_DEFINE(ITypeLib,IUnknown)
721 #undef ICOM_INTERFACE
723 /*** IUnknown methods ***/
724 #define ITypeLib_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
725 #define ITypeLib_AddRef(p) ICOM_CALL (AddRef,p)
726 #define ITypeLib_Release(p) ICOM_CALL (Release,p)
727 /*** ITypeLib methods ***/
728 #define ITypeLib_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
729 #define ITypeLib_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
730 #define ITypeLib_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
731 #define ITypeLib_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
732 #define ITypeLib_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
733 #define ITypeLib_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
734 #define ITypeLib_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
735 #define ITypeLib_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
736 #define ITypeLib_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
737 #define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
740 /*****************************************************************************
741 * ITypeLib2 interface
743 #define ICOM_INTERFACE ITypeLib2
744 #define ITypeLib2_METHODS \
745 ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
746 ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \
747 ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \
748 ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
749 #define ITypeLib2_IMETHODS \
750 IUnknown_IMETHODS \
751 ITypeLib_IMETHODS \
752 ITypeLib2_METHODS
753 ICOM_DEFINE(ITypeLib2,ITypeLib)
754 #undef ICOM_INTERFACE
756 /*** IUnknown methods ***/
757 #define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
758 #define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p)
759 #define ITypeLib2_Release(p) ICOM_CALL (Release,p)
760 /*** ITypeLib methods ***/
761 #define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
762 #define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
763 #define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
764 #define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
765 #define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
766 #define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
767 #define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
768 #define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
769 #define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
770 #define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
771 /*** ITypeLib2 methods ***/
772 #define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
773 #define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b)
774 #define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
775 #define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
777 /*****************************************************************************
778 * ITypeComp interface
780 #define ICOM_INTERFACE ITypeComp
781 #define ITypeComp_METHODS \
782 ICOM_METHOD6(HRESULT,Bind, LPOLESTR,szName, ULONG,lHashVal, WORD,wFlags, ITypeInfo**,ppTInfo, DESCKIND*,pDescKind, BINDPTR*,pBindPtr) \
783 ICOM_METHOD4(HRESULT,BindType, LPOLESTR,szName, ULONG,lHashVal, ITypeInfo**,ppTInfo, ITypeComp**,ppTComp)
784 #define ITypeComp_IMETHODS \
785 IUnknown_IMETHODS \
786 ITypeComp_METHODS
787 ICOM_DEFINE(ITypeComp,IUnknown)
788 #undef ICOM_INTERFACE
790 /*** IUnknown methods ***/
791 #define ITypeComp_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
792 #define ITypeComp_AddRef(p) ICOM_CALL (AddRef,p)
793 #define ITypeComp_Release(p) ICOM_CALL (Release,p)
794 /*** ITypeComp methods ***/
795 #define ITypeComp_Bind(p,a,b,c,d,e,f) ICOM_CALL6(Bind,p,a,b,c,d,e,f)
796 #define ITypeComp_BindType(p,a,b,c,d) ICOM_CALL4(BindType,p,a,b,c,d)
798 /*****************************************************************************
799 * IEnumVARIANT interface
801 #define ICOM_INTERFACE IEnumVARIANT
802 #define IEnumVARIANT_METHODS \
803 ICOM_METHOD3(HRESULT,Next, ULONG,celt, VARIANT*,rgVar, ULONG*,pCeltFetched) \
804 ICOM_METHOD1(HRESULT,Skip, ULONG,celt) \
805 ICOM_METHOD (HRESULT,Reset) \
806 ICOM_METHOD1(HRESULT,Clone, IEnumVARIANT**,ppEnum)
807 #define IEnumVARIANT_IMETHODS \
808 IUnknown_IMETHODS \
809 IEnumVARIANT_METHODS
810 ICOM_DEFINE(IEnumVARIANT,IUnknown)
811 #undef ICOM_INTERFACE
813 /*** IUnknown methods ***/
814 #define IEnumVARIANT_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
815 #define IEnumVARIANT_AddRef(p) ICOM_CALL (AddRef,p)
816 #define IEnumVARIANT_Release(p) ICOM_CALL (Release,p)
817 /*** IEnumVARIANT methods ***/
818 #define IEnumVARIANT_Next(p,a,b,c) ICOM_CALL3(Next,p,a,b,c)
819 #define IEnumVARIANT_Skip(p,a) ICOM_CALL1(Skip,p,a)
820 #define IEnumVARIANT_Reset(p) ICOM_CALL (Reset,p)
821 #define IEnumVARIANT_Clone(p,a) ICOM_CALL1(Clone,p,a)
823 #endif /* __WINE_WINE_OBJ_OLEAUT_H */