1/**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
7 * Source: $(DRUNTIMESRC core/sys/windows/_oleauto.d)
8 */
9module core.sys.windows.oleauto;
10version (Windows):
11@system:
12pragma(lib, "oleaut32");
13
14import core.sys.windows.oaidl;
15import core.sys.windows.basetyps, core.sys.windows.unknwn, core.sys.windows.windef, core.sys.windows.wtypes;
16import core.sys.windows.winbase; // for SYSTEMTIME
17
18align(8):
19enum STDOLE_MAJORVERNUM = 1;
20enum STDOLE_MINORVERNUM = 0;
21enum STDOLE_LCID = 0;
22
23enum VARIANT_NOVALUEPROP = 0x01;
24enum VARIANT_ALPHABOOL = 0x02;
25enum VARIANT_NOUSEOVERRIDE = 0x04;
26enum VARIANT_LOCALBOOL = 0x08;
27
28enum VAR_TIMEVALUEONLY = 0x0001;
29enum VAR_DATEVALUEONLY = 0x0002;
30enum VAR_VALIDDATE = 0x0004;
31enum VAR_CALENDAR_HIJRI = 0x0008;
32enum VAR_LOCALBOOL = 0x0010;
33enum VAR_FORMAT_NOSUBSTITUTE = 0x0020;
34enum VAR_FOURDIGITYEARS = 0x0040;
35enum VAR_CALENDAR_THAI = 0x0080;
36enum VAR_CALENDAR_GREGORIAN = 0x0100;
37
38enum MEMBERID_NIL = DISPID_UNKNOWN;
39enum ID_DEFAULTINST =  -2;
40enum DISPATCH_METHOD = 1;
41enum DISPATCH_PROPERTYGET = 2;
42enum DISPATCH_PROPERTYPUT = 4;
43enum DISPATCH_PROPERTYPUTREF = 8;
44
45//ULONG LHashValOfName(LCID l, OLECHAR* n) { return LHashValOfNameSys(SYSKIND.SYS_WIN32, l, n); }
46
47// DAC: These aren't in the 2003 SDK.
48//MACRO #define WHashValOfLHashVal(h) ((unsigned short)(0x0000ffff&(h)))
49//MACRO #define IsHashValCompatible(h1, h2) ((BOOL)((0x00ff0000&(h1))==(0x00ff0000&(h2))))
50
51enum {
52    ACTIVEOBJECT_STRONG = 0,
53    ACTIVEOBJECT_WEAK   = 1
54}
55
56// DAC: These seem to be irrelevant for D.
57//#define V_UNION(X, Y) ((X)->Y)
58//#define V_VT(X) ((X)->vt)
59//#define V_BOOL(X) V_UNION(X, boolVal)
60//#define V_ISBYREF(X) (V_VT(X)&VT_BYREF)
61//#define V_ISARRAY(X) (V_VT(X)&VT_ARRAY)
62//#define V_ISVECTOR(X) (V_VT(X)&VT_VECTOR)
63//#define V_NONE(X) V_I2(X)
64//#define V_UI1(X) V_UNION(X, bVal)
65//#define V_UI1REF(X) V_UNION(X, pbVal)
66//#define V_I2(X) V_UNION(X, iVal)
67//#define V_UI2(X) V_UNION(X, uiVal)
68//#define V_I2REF(X) V_UNION(X, piVal)
69//#define V_I4(X) V_UNION(X, lVal)
70//#define V_UI4(X) V_UNION(X, ulVal)
71//#define V_I4REF(X) V_UNION(X, plVal)
72//#define V_UI4REF(X) V_UNION(X, pulVal)
73//#define V_I8(X) V_UNION(X, llVal)
74//#define V_UI8(X) V_UNION(X, ullVal)
75//#define V_I8REF(X) V_UNION(X, pllVal)
76//#define V_UI8REF(X) V_UNION(X, pullVal)
77//#define V_R4(X) V_UNION(X, fltVal)
78//#define V_R4REF(X) V_UNION(X, pfltVal)
79//#define V_R8(X) V_UNION(X, dblVal)
80//#define V_R8REF(X) V_UNION(X, pdblVal)
81//#define V_CY(X) V_UNION(X, cyVal)
82//#define V_CYREF(X) V_UNION(X, pcyVal)
83//#define V_DATE(X) V_UNION(X, date)
84//#define V_DATEREF(X) V_UNION(X, pdate)
85//#define V_BSTR(X) V_UNION(X, bstrVal)
86//#define V_BSTRREF(X) V_UNION(X, pbstrVal)
87//#define V_DISPATCH(X) V_UNION(X, pdispVal)
88//#define V_DISPATCHREF(X) V_UNION(X, ppdispVal)
89//#define V_ERROR(X) V_UNION(X, scode)
90//#define V_ERRORREF(X) V_UNION(X, pscode)
91//#define V_BOOLREF(X) V_UNION(X, pboolVal)
92//#define V_UNKNOWN(X) V_UNION(X, punkVal)
93//#define V_UNKNOWNREF(X) V_UNION(X, ppunkVal)
94//#define V_VARIANTREF(X) V_UNION(X, pvarVal)
95//#define V_LPSTR(X) V_UNION(X, pszVal)
96//#define V_LPSTRREF(X) V_UNION(X, ppszVal)
97//#define V_LPWSTR(X) V_UNION(X, pwszVal)
98//#define V_LPWSTRREF(X) V_UNION(X, ppwszVal)
99//#define V_FILETIME(X) V_UNION(X, filetime)
100//#define V_FILETIMEREF(X) V_UNION(X, pfiletime)
101//#define V_BLOB(X) V_UNION(X, blob)
102//#define V_UUID(X) V_UNION(X, puuid)
103//#define V_CLSID(X) V_UNION(X, puuid)
104//#define V_ARRAY(X) V_UNION(X, parray)
105//#define V_ARRAYREF(X) V_UNION(X, pparray)
106//#define V_BYREF(X) V_UNION(X, byref)
107//#define V_DECIMAL(X) ((X)->decVal)
108//#define V_DECIMALREF(X) V_UNION(X, pdecVal)
109//#define V_I1(X) V_UNION(X, cVal)
110
111//#ifdef _WIN64
112//#define V_INT_PTR(X) V_I8(X)
113//#define V_UINT_PTR(X) V_UI8(X)
114//#define V_INT_PTRREF(X) V_I8REF(X)
115//#define V_UINT_PTRREF(X) V_UI8REF(X)
116//#else
117//#define V_INT_PTR(X) V_I4(X)
118//#define V_UINT_PTR(X) V_UI4(X)
119//#define V_INT_PTRREF(X) V_I4REF(X)
120//#define V_UINT_PTRREF(X) V_UI4REF(X)
121//#endif
122
123enum {
124    VARCMP_LT = 0,
125    VARCMP_EQ,
126    VARCMP_GT,
127    VARCMP_NULL // = 3
128}
129
130enum LOCALE_USE_NLS = 0x10000000;
131
132enum VARIANT_NOUSEROVERRIDE     = 0x04;
133enum VARIANT_CALENDAR_HIJRI     = 0x08;
134enum VARIANT_CALENDAR_THAI      = 0x20;
135enum VARIANT_CALENDAR_GREGORIAN = 0x40;
136enum VARIANT_USE_NLS            = 0x80;
137
138enum NUMPRS_LEADING_WHITE  = 0x00001;
139enum NUMPRS_TRAILING_WHITE = 0x00002;
140enum NUMPRS_LEADING_PLUS   = 0x00004;
141enum NUMPRS_TRAILING_PLUS  = 0x00008;
142enum NUMPRS_LEADING_MINUS  = 0x00010;
143enum NUMPRS_TRAILING_MINUS = 0x00020;
144enum NUMPRS_HEX_OCT        = 0x00040;
145enum NUMPRS_PARENS         = 0x00080;
146enum NUMPRS_DECIMAL        = 0x00100;
147enum NUMPRS_THOUSANDS      = 0x00200;
148enum NUMPRS_CURRENCY       = 0x00400;
149enum NUMPRS_EXPONENT       = 0x00800;
150enum NUMPRS_USE_ALL        = 0x01000;
151enum NUMPRS_STD            = 0x01FFF;
152enum NUMPRS_NEG            = 0x10000;
153enum NUMPRS_INEXACT        = 0x20000;
154
155enum VTBIT_I1 = 1 << VARENUM.VT_I1;
156enum VTBIT_UI1 = 1 << VARENUM.VT_UI1;
157enum VTBIT_I2 = 1 << VARENUM.VT_I2;
158enum VTBIT_UI2 = 1 << VARENUM.VT_UI2;
159enum VTBIT_I4 = 1 << VARENUM.VT_I4;
160enum VTBIT_UI4 = 1 << VARENUM.VT_UI4;
161enum VTBIT_I8 = 1 << VARENUM.VT_I8;
162enum VTBIT_UI8 = 1 << VARENUM.VT_UI8;
163enum VTBIT_R4 = 1 << VARENUM.VT_R4;
164enum VTBIT_R8 = 1 << VARENUM.VT_R8;
165enum VTBIT_CY = 1 << VARENUM.VT_CY;
166enum VTBIT_DECIMAL = 1 << VARENUM.VT_DECIMAL;
167
168
169enum REGKIND{
170    REGKIND_DEFAULT,
171    REGKIND_REGISTER,
172    REGKIND_NONE
173}
174
175struct PARAMDATA{
176    OLECHAR* szName;
177    VARTYPE vt;
178}
179alias PARAMDATA* LPPARAMDATA;
180
181struct METHODDATA{
182    OLECHAR* szName;
183    PARAMDATA* ppdata;
184    DISPID dispid;
185    UINT iMeth;
186    CALLCONV cc;
187    UINT cArgs;
188    WORD wFlags;
189    VARTYPE vtReturn;
190}
191alias METHODDATA* LPMETHODDATA;
192
193struct INTERFACEDATA{
194    METHODDATA* pmethdata;
195    UINT cMembers;
196}
197alias INTERFACEDATA* LPINTERFACEDATA;
198
199struct UDATE {
200    SYSTEMTIME st;
201    USHORT wDayOfYear;
202}
203
204struct NUMPARSE {
205    int cDig;
206    uint dwInFlags;
207    uint dwOutFlags;
208    int cchUsed;
209    int nBaseShift;
210    int nPwr10;
211}
212
213
214// DAC: In MinGW, these were declared but not defined in oaidl.
215// The SDK docs suggest they belong in this file instead.
216
217deprecated {  // not actually deprecated, but they aren't converted yet.
218              // (will need to reinstate CreateTypeLib as well)
219    interface ICreateTypeInfo {}
220    interface ICreateTypeInfo2 {}
221    interface ICreateTypeLib {}
222    interface ICreateTypeLib2 {}
223
224    alias ICreateTypeInfo LPCREATETYPEINFO;
225    alias ICreateTypeInfo2 LPCREATETYPEINFO2;
226    alias ICreateTypeLib LPCREATETYPELIB;
227    alias ICreateTypeLib2 LPCREATETYPELIB2;
228}
229
230extern (Windows) {
231    BSTR SysAllocString(const(OLECHAR)*);
232    int SysReAllocString(BSTR*, const(OLECHAR)*);
233    BSTR SysAllocStringLen(const(OLECHAR)*, uint);
234    int SysReAllocStringLen(BSTR*, const(OLECHAR)*, uint);
235    void SysFreeString(BSTR);
236    uint SysStringLen(BSTR);
237    uint SysStringByteLen(BSTR);
238    BSTR SysAllocStringByteLen(const(char)*, uint);
239    int DosDateTimeToVariantTime(ushort, ushort, double*);
240    int VariantTimeToDosDateTime(double, ushort*, ushort*);
241    int VariantTimeToSystemTime(double, LPSYSTEMTIME);
242    int SystemTimeToVariantTime(LPSYSTEMTIME, double*);
243    HRESULT VarDateFromUdate(UDATE*, ULONG, DATE*);
244    HRESULT VarDateFromUdateEx(UDATE*, LCID, ULONG, DATE*);
245    HRESULT VarUdateFromDate(DATE, ULONG, UDATE*);
246    HRESULT SafeArrayAllocDescriptor(uint, SAFEARRAY**);
247    HRESULT SafeArrayAllocData(SAFEARRAY*);
248    SAFEARRAY* SafeArrayCreate(VARTYPE, uint, SAFEARRAYBOUND*);
249    HRESULT SafeArrayDestroyDescriptor(SAFEARRAY*);
250    HRESULT SafeArrayDestroyData(SAFEARRAY*);
251    HRESULT SafeArrayDestroy(SAFEARRAY*);
252    HRESULT SafeArrayRedim(SAFEARRAY*, SAFEARRAYBOUND*);
253    uint SafeArrayGetDim(SAFEARRAY*);
254    uint SafeArrayGetElemsize(SAFEARRAY*);
255    HRESULT SafeArrayGetUBound(SAFEARRAY*, uint, int*);
256    HRESULT SafeArrayGetLBound(SAFEARRAY*, uint, int*);
257    HRESULT SafeArrayLock(SAFEARRAY*);
258    HRESULT SafeArrayUnlock(SAFEARRAY*);
259    HRESULT SafeArrayAccessData(SAFEARRAY*, void**);
260    HRESULT SafeArrayUnaccessData(SAFEARRAY*);
261    HRESULT SafeArrayGetElement(SAFEARRAY*, int*, void*);
262    HRESULT SafeArrayPutElement(SAFEARRAY*, int*, void*);
263    HRESULT SafeArrayCopy(SAFEARRAY*, SAFEARRAY**);
264    HRESULT SafeArrayPtrOfIndex(SAFEARRAY*, int*, void**);
265    SAFEARRAY* SafeArrayCreateVector(VARTYPE, LONG, ULONG);
266    SAFEARRAY* SafeArrayCreateVectorEx(VARTYPE, LONG, ULONG, LPVOID);
267    HRESULT SafeArrayAllocDescriptorEx(VARTYPE, UINT, SAFEARRAY**);
268    HRESULT SafeArrayGetVartype(SAFEARRAY*, VARTYPE*);
269    HRESULT SafeArraySetRecordInfo(SAFEARRAY*, IRecordInfo);
270    HRESULT SafeArrayGetRecordInfo(SAFEARRAY*, IRecordInfo*);
271    HRESULT SafeArraySetIID(SAFEARRAY*, REFGUID);
272    HRESULT SafeArrayGetIID(SAFEARRAY*, GUID*);
273    void VariantInit(VARIANTARG*);
274    HRESULT VariantClear(VARIANTARG*);
275    HRESULT VariantCopy(VARIANTARG*, VARIANTARG*);
276    HRESULT VariantCopyInd(VARIANT*, VARIANTARG*);
277    HRESULT VariantChangeType(VARIANTARG*, VARIANTARG*, ushort, VARTYPE);
278    HRESULT VariantChangeTypeEx(VARIANTARG*, VARIANTARG*, LCID, ushort, VARTYPE);
279    HRESULT VarUI1FromI2(short, ubyte*);
280    HRESULT VarUI1FromI4(int, ubyte*);
281    HRESULT VarUI1FromR4(float, ubyte*);
282    HRESULT VarUI1FromR8(double, ubyte*);
283    HRESULT VarUI1FromCy(CY, ubyte*);
284    HRESULT VarUI1FromDate(DATE, ubyte*);
285    HRESULT VarUI1FromStr(OLECHAR*, LCID, uint, ubyte*);
286    HRESULT VarUI1FromDisp(LPDISPATCH, LCID, ubyte*);
287    HRESULT VarUI1FromBool(VARIANT_BOOL, ubyte*);
288    HRESULT VarI2FromUI1(ubyte, short*);
289    HRESULT VarI2FromI4(int, short*);
290    HRESULT VarI2FromR4(float, short*);
291    HRESULT VarI2FromR8(double, short*);
292    HRESULT VarI2FromCy(CY cyIn, short*);
293    HRESULT VarI2FromDate(DATE, short*);
294    HRESULT VarI2FromStr(OLECHAR*, LCID, uint, short*);
295    HRESULT VarI2FromDisp(LPDISPATCH, LCID, short*);
296    HRESULT VarI2FromBool(VARIANT_BOOL, short*);
297    HRESULT VarI4FromUI1(ubyte, int*);
298    HRESULT VarI4FromI2(short, int*);
299    HRESULT VarI4FromR4(float, int*);
300    HRESULT VarI4FromR8(double, int*);
301    HRESULT VarI4FromCy(CY, int*);
302    HRESULT VarI4FromDate(DATE, int*);
303    HRESULT VarI4FromStr(OLECHAR*, LCID, uint, int*);
304    HRESULT VarI4FromDisp(LPDISPATCH, LCID, int*);
305    HRESULT VarI4FromBool(VARIANT_BOOL, int*);
306    HRESULT VarR4FromUI1(ubyte, float*);
307    HRESULT VarR4FromI2(short, float*);
308    HRESULT VarR4FromI4(int, float*);
309    HRESULT VarR4FromR8(double, float*);
310    HRESULT VarR4FromCy(CY, float*);
311    HRESULT VarR4FromDate(DATE, float*);
312    HRESULT VarR4FromStr(OLECHAR*, LCID, uint, float*);
313    HRESULT VarR4FromDisp(LPDISPATCH, LCID, float*);
314    HRESULT VarR4FromBool(VARIANT_BOOL, float*);
315    HRESULT VarR8FromUI1(ubyte, double*);
316    HRESULT VarR8FromI2(short, double*);
317    HRESULT VarR8FromI4(int, double*);
318    HRESULT VarR8FromR4(float, double*);
319    HRESULT VarR8FromCy(CY, double*);
320    HRESULT VarR8FromDate(DATE, double*);
321    HRESULT VarR8FromStr(OLECHAR*, LCID, uint, double*);
322    HRESULT VarR8FromDisp(LPDISPATCH, LCID, double*);
323    HRESULT VarR8FromBool(VARIANT_BOOL, double*);
324    HRESULT VarR8FromDec(DECIMAL*, double*);
325    HRESULT VarDateFromUI1(ubyte, DATE*);
326    HRESULT VarDateFromI2(short, DATE*);
327    HRESULT VarDateFromI4(int, DATE*);
328    HRESULT VarDateFromR4(float, DATE*);
329    HRESULT VarDateFromR8(double, DATE*);
330    HRESULT VarDateFromCy(CY, DATE*);
331    HRESULT VarDateFromStr(OLECHAR*, LCID, uint, DATE*);
332    HRESULT VarDateFromDisp(LPDISPATCH, LCID, DATE*);
333    HRESULT VarDateFromBool(VARIANT_BOOL, DATE*);
334    HRESULT VarCyFromUI1(ubyte, CY*);
335    HRESULT VarCyFromI2(short, CY*);
336    HRESULT VarCyFromI4(int, CY*);
337    HRESULT VarCyFromR4(float, CY*);
338    HRESULT VarCyFromR8(double, CY*);
339    HRESULT VarCyFromDate(DATE, CY*);
340    HRESULT VarCyFromStr(OLECHAR*, LCID, uint, CY*);
341    HRESULT VarCyFromDisp(LPDISPATCH, LCID, CY*);
342    HRESULT VarCyFromBool(VARIANT_BOOL, CY*);
343    HRESULT VarBstrFromUI1(ubyte, LCID, uint, BSTR*);
344    HRESULT VarBstrFromI2(short, LCID, uint, BSTR*);
345    HRESULT VarBstrFromI4(int, LCID, uint, BSTR*);
346    HRESULT VarBstrFromR4(float, LCID, uint, BSTR*);
347    HRESULT VarBstrFromR8(double, LCID, uint, BSTR*);
348    HRESULT VarBstrFromCy(CY, LCID, uint, BSTR*);
349    HRESULT VarBstrFromDate(DATE, LCID, uint, BSTR*);
350    HRESULT VarBstrFromDisp(LPDISPATCH, LCID, uint, BSTR*);
351    HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, uint, BSTR*);
352    HRESULT VarBoolFromUI1(ubyte, VARIANT_BOOL*);
353    HRESULT VarBoolFromI2(short, VARIANT_BOOL*);
354    HRESULT VarBoolFromI4(int, VARIANT_BOOL*);
355    HRESULT VarBoolFromR4(float, VARIANT_BOOL*);
356    HRESULT VarBoolFromR8(double, VARIANT_BOOL*);
357    HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*);
358    HRESULT VarBoolFromCy(CY, VARIANT_BOOL*);
359    HRESULT VarBoolFromStr(OLECHAR*, LCID, uint, VARIANT_BOOL*);
360    HRESULT VarBoolFromDisp(LPDISPATCH, LCID, VARIANT_BOOL*);
361    HRESULT VarDecFromR8(double, DECIMAL*);
362    ULONG LHashValOfNameSysA(SYSKIND, LCID, const(char)*);
363    ULONG LHashValOfNameSys(SYSKIND, LCID, const(OLECHAR)*);
364    HRESULT LoadTypeLib(const(OLECHAR)*, LPTYPELIB*);
365    HRESULT LoadTypeLibEx(LPCOLESTR, REGKIND, LPTYPELIB*);
366    HRESULT LoadRegTypeLib(REFGUID, WORD, WORD, LCID, LPTYPELIB*);
367    HRESULT QueryPathOfRegTypeLib(REFGUID, ushort, ushort, LCID, LPBSTR);
368    HRESULT RegisterTypeLib(LPTYPELIB, OLECHAR*, OLECHAR*);
369    HRESULT UnRegisterTypeLib(REFGUID, WORD, WORD, LCID, SYSKIND);
370    // not actually deprecated, but depends on unconverted ICreateTypeLib
371    deprecated HRESULT CreateTypeLib(SYSKIND, const(OLECHAR)*, LPCREATETYPELIB*);
372    HRESULT DispGetParam(DISPPARAMS*, UINT, VARTYPE, VARIANT*, UINT*);
373    HRESULT DispGetIDsOfNames(LPTYPEINFO, OLECHAR**, UINT, DISPID*);
374    HRESULT DispInvoke(void*, LPTYPEINFO, DISPID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*);
375    HRESULT CreateDispTypeInfo(INTERFACEDATA*, LCID, LPTYPEINFO*);
376    HRESULT CreateStdDispatch(IUnknown, void*, LPTYPEINFO, IUnknown*);
377    HRESULT RegisterActiveObject(IUnknown, REFCLSID, DWORD, DWORD*);
378    HRESULT RevokeActiveObject(DWORD, void*);
379    HRESULT GetActiveObject(REFCLSID, void*, IUnknown*);
380    HRESULT SetErrorInfo(uint, LPERRORINFO);
381    HRESULT GetErrorInfo(uint, LPERRORINFO*);
382    HRESULT CreateErrorInfo(LPCREATEERRORINFO*);
383    uint OaBuildVersion();
384    HRESULT VectorFromBstr (BSTR, SAFEARRAY**);
385    HRESULT BstrFromVector (SAFEARRAY*, BSTR*);
386    HRESULT VarParseNumFromStr(OLECHAR*, LCID, ULONG, NUMPARSE*, BYTE*);
387    HRESULT VarNumFromParseNum(NUMPARSE*, BYTE*, ULONG, VARIANT*);
388
389    HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
390    HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
391    HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
392    HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
393
394    HRESULT VarUI1FromI2(SHORT, BYTE*);
395    HRESULT VarUI1FromI4(LONG, BYTE*);
396    HRESULT VarUI1FromI8(LONG64, BYTE*);
397    HRESULT VarUI1FromR4(FLOAT, BYTE*);
398    HRESULT VarUI1FromR8(DOUBLE, BYTE*);
399    HRESULT VarUI1FromDate(DATE, BYTE*);
400    HRESULT VarUI1FromBool(VARIANT_BOOL, BYTE*);
401    HRESULT VarUI1FromI1(byte, BYTE*);
402    HRESULT VarUI1FromUI2(USHORT, BYTE*);
403    HRESULT VarUI1FromUI4(ULONG, BYTE*);
404    HRESULT VarUI1FromUI8(ULONG64, BYTE*);
405    HRESULT VarUI1FromStr(OLECHAR*, LCID, ULONG, BYTE*);
406    HRESULT VarUI1FromCy(CY, BYTE*);
407    HRESULT VarUI1FromDec(DECIMAL*, BYTE*);
408    HRESULT VarUI1FromDisp(IDispatch, LCID, BYTE*);
409
410    HRESULT VarI2FromUI1(BYTE, SHORT*);
411    HRESULT VarI2FromI4(LONG, SHORT*);
412    HRESULT VarI2FromI8(LONG64, SHORT*);
413    HRESULT VarI2FromR4(FLOAT, SHORT*);
414    HRESULT VarI2FromR8(DOUBLE, SHORT*);
415    HRESULT VarI2FromDate(DATE, SHORT*);
416    HRESULT VarI2FromBool(VARIANT_BOOL, SHORT*);
417    HRESULT VarI2FromI1(byte, SHORT*);
418    HRESULT VarI2FromUI2(USHORT, SHORT*);
419    HRESULT VarI2FromUI4(ULONG, SHORT*);
420    HRESULT VarI2FromUI8(ULONG64, SHORT*);
421    HRESULT VarI2FromStr(OLECHAR*, LCID, ULONG, SHORT*);
422    HRESULT VarI2FromCy(CY, SHORT*);
423    HRESULT VarI2FromDec(DECIMAL*, SHORT*);
424    HRESULT VarI2FromDisp(IDispatch, LCID, SHORT*);
425
426    HRESULT VarI4FromUI1(BYTE, LONG*);
427    HRESULT VarI4FromI2(SHORT, LONG*);
428    HRESULT VarI4FromI8(LONG64, LONG*);
429    HRESULT VarI4FromR4(FLOAT, LONG*);
430    HRESULT VarI4FromR8(DOUBLE, LONG*);
431    HRESULT VarI4FromDate(DATE, LONG*);
432    HRESULT VarI4FromBool(VARIANT_BOOL, LONG*);
433    HRESULT VarI4FromI1(byte, LONG*);
434    HRESULT VarI4FromUI2(USHORT, LONG*);
435    HRESULT VarI4FromUI4(ULONG, LONG*);
436    HRESULT VarI4FromUI8(ULONG64, LONG*);
437    HRESULT VarI4FromStr(OLECHAR*, LCID, ULONG, LONG*);
438    HRESULT VarI4FromCy(CY, LONG*);
439    HRESULT VarI4FromDec(DECIMAL*, LONG*);
440    HRESULT VarI4FromDisp(IDispatch, LCID, LONG*);
441
442    HRESULT VarI8FromUI1(BYTE, LONG64*);
443    HRESULT VarI8FromI2(SHORT, LONG64*);
444    HRESULT VarI8FromI4(LONG, LONG64*);
445    HRESULT VarI8FromR4(FLOAT, LONG64*);
446    HRESULT VarI8FromR8(DOUBLE, LONG64*);
447    HRESULT VarI8FromDate(DATE, LONG64*);
448    HRESULT VarI8FromStr(OLECHAR*, LCID, ULONG, LONG64*);
449    HRESULT VarI8FromBool(VARIANT_BOOL, LONG64*);
450    HRESULT VarI8FromI1(byte, LONG64*);
451    HRESULT VarI8FromUI2(USHORT, LONG64*);
452    HRESULT VarI8FromUI4(ULONG, LONG64*);
453    HRESULT VarI8FromUI8(ULONG64, LONG64*);
454    HRESULT VarI8FromDec(DECIMAL* pdecIn, LONG64*);
455    HRESULT VarI8FromInt(INT intIn, LONG64*);
456    HRESULT VarI8FromCy(CY, LONG64*);
457    HRESULT VarI8FromDisp(IDispatch, LCID, LONG64*);
458
459    HRESULT VarR4FromUI1(BYTE, FLOAT*);
460    HRESULT VarR4FromI2(SHORT, FLOAT*);
461    HRESULT VarR4FromI4(LONG, FLOAT*);
462    HRESULT VarR4FromI8(LONG64, FLOAT*);
463    HRESULT VarR4FromR8(DOUBLE, FLOAT*);
464    HRESULT VarR4FromDate(DATE, FLOAT*);
465    HRESULT VarR4FromBool(VARIANT_BOOL, FLOAT*);
466    HRESULT VarR4FromI1(byte, FLOAT*);
467    HRESULT VarR4FromUI2(USHORT, FLOAT*);
468    HRESULT VarR4FromUI4(ULONG, FLOAT*);
469    HRESULT VarR4FromUI8(ULONG64, FLOAT*);
470    HRESULT VarR4FromStr(OLECHAR*, LCID, ULONG, FLOAT*);
471    HRESULT VarR4FromCy(CY, FLOAT*);
472    HRESULT VarR4FromDec(DECIMAL*, FLOAT*);
473    HRESULT VarR4FromDisp(IDispatch, LCID, FLOAT*);
474
475    HRESULT VarR8FromUI1(BYTE, double*);
476    HRESULT VarR8FromI2(SHORT, double*);
477    HRESULT VarR8FromI4(LONG, double*);
478    HRESULT VarR8FromI8(LONG64, double*);
479    HRESULT VarR8FromR4(FLOAT, double*);
480    HRESULT VarR8FromDate(DATE, double*);
481    HRESULT VarR8FromBool(VARIANT_BOOL, double*);
482    HRESULT VarR8FromI1(byte, double*);
483    HRESULT VarR8FromUI2(USHORT, double*);
484    HRESULT VarR8FromUI4(ULONG, double*);
485    HRESULT VarR8FromUI8(ULONG64, double*);
486    HRESULT VarR8FromStr(OLECHAR*, LCID, ULONG, double*);
487    HRESULT VarR8FromCy(CY, double*);
488    HRESULT VarR8FromDec(DECIMAL*, double*);
489    HRESULT VarR8FromDisp(IDispatch, LCID, double*);
490
491    HRESULT VarDateFromUI1(BYTE, DATE*);
492    HRESULT VarDateFromI2(SHORT, DATE*);
493    HRESULT VarDateFromI4(LONG, DATE*);
494    HRESULT VarDateFromI8(LONG64, DATE*);
495    HRESULT VarDateFromR4(FLOAT, DATE*);
496    HRESULT VarDateFromR8(DOUBLE, DATE*);
497    HRESULT VarDateFromStr(OLECHAR*, LCID, ULONG, DATE*);
498    HRESULT VarDateFromI1(byte, DATE*);
499    HRESULT VarDateFromUI2(USHORT, DATE*);
500    HRESULT VarDateFromUI4(ULONG, DATE*);
501    HRESULT VarDateFromUI8(ULONG64, DATE*);
502    HRESULT VarDateFromBool(VARIANT_BOOL, DATE*);
503    HRESULT VarDateFromCy(CY, DATE*);
504    HRESULT VarDateFromDec(DECIMAL*, DATE*);
505    HRESULT VarDateFromDisp(IDispatch, LCID, DATE*);
506
507    HRESULT VarCyFromUI1(BYTE, CY*);
508    HRESULT VarCyFromI2(SHORT sIn, CY*);
509    HRESULT VarCyFromI4(LONG, CY*);
510    HRESULT VarCyFromI8(LONG64, CY*);
511    HRESULT VarCyFromR4(FLOAT, CY*);
512    HRESULT VarCyFromR8(DOUBLE, CY*);
513    HRESULT VarCyFromDate(DATE, CY*);
514    HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*);
515    HRESULT VarCyFromBool(VARIANT_BOOL, CY*);
516    HRESULT VarCyFromI1(byte, CY*);
517    HRESULT VarCyFromUI2(USHORT, CY*);
518    HRESULT VarCyFromUI4(ULONG, CY*);
519    HRESULT VarCyFromUI8(ULONG64, CY*);
520    HRESULT VarCyFromDec(DECIMAL*, CY*);
521    HRESULT VarCyFromStr(OLECHAR*, LCID, ULONG, CY*);
522    HRESULT VarCyFromDisp(IDispatch, LCID, CY*);
523
524    HRESULT VarBstrFromUI1(BYTE, LCID, ULONG, BSTR*);
525    HRESULT VarBstrFromI2(SHORT, LCID, ULONG, BSTR*);
526    HRESULT VarBstrFromI4(LONG, LCID, ULONG, BSTR*);
527    HRESULT VarBstrFromI8(LONG64, LCID, ULONG, BSTR*);
528    HRESULT VarBstrFromR4(FLOAT, LCID, ULONG, BSTR*);
529    HRESULT VarBstrFromR8(DOUBLE, LCID, ULONG, BSTR*);
530    HRESULT VarBstrFromDate(DATE, LCID, ULONG, BSTR*);
531    HRESULT VarBstrFromBool(VARIANT_BOOL, LCID, ULONG, BSTR*);
532    HRESULT VarBstrFromI1(byte, LCID, ULONG, BSTR*);
533    HRESULT VarBstrFromUI2(USHORT, LCID, ULONG, BSTR*);
534    HRESULT VarBstrFromUI8(ULONG64, LCID, ULONG, BSTR*);
535    HRESULT VarBstrFromUI4(ULONG, LCID, ULONG, BSTR*);
536    HRESULT VarBstrFromCy(CY, LCID, ULONG, BSTR*);
537    HRESULT VarBstrFromDec(DECIMAL*, LCID, ULONG, BSTR*);
538    HRESULT VarBstrFromDisp(IDispatch, LCID, ULONG, BSTR*);
539
540    HRESULT VarBoolFromUI1(BYTE, VARIANT_BOOL*);
541    HRESULT VarBoolFromI2(SHORT, VARIANT_BOOL*);
542    HRESULT VarBoolFromI4(LONG, VARIANT_BOOL*);
543    HRESULT VarBoolFromI8(LONG64, VARIANT_BOOL*);
544    HRESULT VarBoolFromR4(FLOAT, VARIANT_BOOL*);
545    HRESULT VarBoolFromR8(DOUBLE, VARIANT_BOOL*);
546    HRESULT VarBoolFromDate(DATE, VARIANT_BOOL*);
547    HRESULT VarBoolFromStr(OLECHAR*, LCID, ULONG, VARIANT_BOOL*);
548    HRESULT VarBoolFromI1(byte, VARIANT_BOOL*);
549    HRESULT VarBoolFromUI2(USHORT, VARIANT_BOOL*);
550    HRESULT VarBoolFromUI4(ULONG, VARIANT_BOOL*);
551    HRESULT VarBoolFromUI8(ULONG64, VARIANT_BOOL*);
552    HRESULT VarBoolFromCy(CY, VARIANT_BOOL*);
553    HRESULT VarBoolFromDec(DECIMAL*, VARIANT_BOOL*);
554    HRESULT VarBoolFromDisp(IDispatch, LCID, VARIANT_BOOL*);
555
556    HRESULT VarI1FromUI1(BYTE, byte*);
557    HRESULT VarI1FromI2(SHORT, byte*);
558    HRESULT VarI1FromI4(LONG, byte*);
559    HRESULT VarI1FromI8(LONG64, byte*);
560    HRESULT VarI1FromR4(FLOAT, byte*);
561    HRESULT VarI1FromR8(DOUBLE, byte*);
562    HRESULT VarI1FromDate(DATE, byte*);
563    HRESULT VarI1FromStr(OLECHAR*, LCID, ULONG, byte*);
564    HRESULT VarI1FromBool(VARIANT_BOOL, byte*);
565    HRESULT VarI1FromUI2(USHORT, byte*);
566    HRESULT VarI1FromUI4(ULONG, byte*);
567    HRESULT VarI1FromUI8(ULONG64, byte*);
568    HRESULT VarI1FromCy(CY, byte*);
569    HRESULT VarI1FromDec(DECIMAL*, byte*);
570    HRESULT VarI1FromDisp(IDispatch, LCID, byte*);
571
572    HRESULT VarUI2FromUI1(BYTE, USHORT*);
573    HRESULT VarUI2FromI2(SHORT, USHORT*);
574    HRESULT VarUI2FromI4(LONG, USHORT*);
575    HRESULT VarUI2FromI8(LONG64, USHORT*);
576    HRESULT VarUI2FromR4(FLOAT, USHORT*);
577    HRESULT VarUI2FromR8(DOUBLE, USHORT*);
578    HRESULT VarUI2FromDate(DATE, USHORT*);
579    HRESULT VarUI2FromStr(OLECHAR*, LCID, ULONG, USHORT*);
580    HRESULT VarUI2FromBool(VARIANT_BOOL, USHORT*);
581    HRESULT VarUI2FromI1(byte, USHORT*);
582    HRESULT VarUI2FromUI4(ULONG, USHORT*);
583    HRESULT VarUI2FromUI8(ULONG64, USHORT*);
584    HRESULT VarUI2FromCy(CY, USHORT*);
585    HRESULT VarUI2FromDec(DECIMAL*, USHORT*);
586    HRESULT VarUI2FromDisp(IDispatch, LCID, USHORT*);
587
588    HRESULT VarUI4FromStr(OLECHAR*, LCID, ULONG, ULONG*);
589    HRESULT VarUI4FromUI1(BYTE, ULONG*);
590    HRESULT VarUI4FromI2(SHORT, ULONG*);
591    HRESULT VarUI4FromI4(LONG, ULONG*);
592    HRESULT VarUI4FromI8(LONG64, ULONG*);
593    HRESULT VarUI4FromR4(FLOAT, ULONG*);
594    HRESULT VarUI4FromR8(DOUBLE, ULONG*);
595    HRESULT VarUI4FromDate(DATE, ULONG*);
596    HRESULT VarUI4FromBool(VARIANT_BOOL, ULONG*);
597    HRESULT VarUI4FromI1(byte, ULONG*);
598    HRESULT VarUI4FromUI2(USHORT, ULONG*);
599    HRESULT VarUI4FromUI8(ULONG64, ULONG*);
600    HRESULT VarUI4FromCy(CY, ULONG*);
601    HRESULT VarUI4FromDec(DECIMAL*, ULONG*);
602    HRESULT VarUI4FromDisp(IDispatch, LCID, ULONG*);
603
604    HRESULT VarUI8FromUI1(BYTE, ULONG64*);
605    HRESULT VarUI8FromI2(SHORT, ULONG64*);
606    HRESULT VarUI8FromI4(LONG, ULONG64*);
607    HRESULT VarUI8FromI8(LONG64, ULONG64*);
608    HRESULT VarUI8FromR4(FLOAT, ULONG64*);
609    HRESULT VarUI8FromR8(DOUBLE, ULONG64*);
610    HRESULT VarUI8FromDate(DATE, ULONG64*);
611    HRESULT VarUI8FromStr(OLECHAR*, LCID, ULONG, ULONG64*);
612    HRESULT VarUI8FromBool(VARIANT_BOOL, ULONG64*);
613    HRESULT VarUI8FromI1(byte, ULONG64*);
614    HRESULT VarUI8FromUI2(USHORT, ULONG64*);
615    HRESULT VarUI8FromUI4(ULONG, ULONG64*);
616    HRESULT VarUI8FromDec(DECIMAL*, ULONG64*);
617    HRESULT VarUI8FromInt(INT, ULONG64*);
618    HRESULT VarUI8FromCy(CY, ULONG64*);
619    HRESULT VarUI8FromDisp(IDispatch, LCID, ULONG64*);
620
621    HRESULT VarDecFromUI1(BYTE, DECIMAL*);
622    HRESULT VarDecFromI2(SHORT, DECIMAL*);
623    HRESULT VarDecFromI4(LONG, DECIMAL*);
624    HRESULT VarDecFromI8(LONG64, DECIMAL*);
625    HRESULT VarDecFromR4(FLOAT, DECIMAL*);
626    HRESULT VarDecFromR8(DOUBLE, DECIMAL*);
627    HRESULT VarDecFromDate(DATE, DECIMAL*);
628    HRESULT VarDecFromStr(OLECHAR*, LCID, ULONG, DECIMAL*);
629    HRESULT VarDecFromBool(VARIANT_BOOL, DECIMAL*);
630    HRESULT VarDecFromI1(byte, DECIMAL*);
631    HRESULT VarDecFromUI2(USHORT, DECIMAL*);
632    HRESULT VarDecFromUI4(ULONG, DECIMAL*);
633    HRESULT VarDecFromUI8(ULONG64, DECIMAL*);
634    HRESULT VarDecFromCy(CY, DECIMAL*);
635    HRESULT VarDecFromDisp(IDispatch, LCID, DECIMAL*);
636
637    HRESULT VarDecNeg(const(DECIMAL)*, DECIMAL*);
638    HRESULT VarR4CmpR8(float, double);
639    HRESULT VarR8Pow(double, double, double*);
640    HRESULT VarR8Round(double, int, double*);
641    HRESULT VarDecAbs(const(DECIMAL)*, DECIMAL*);
642    HRESULT VarDecAdd(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*);
643    HRESULT VarDecCmp(const(DECIMAL)*, const(DECIMAL)*);
644    HRESULT VarDecCmpR8(const(DECIMAL)*, DOUBLE);
645    HRESULT VarDecDiv(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*);
646    HRESULT VarDecFix(const(DECIMAL)*, DECIMAL*);
647    HRESULT VarDecInt(const(DECIMAL)*, DECIMAL*);
648    HRESULT VarDecMul(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*);
649    HRESULT VarDecRound(const(DECIMAL)*, int, DECIMAL*);
650    HRESULT VarDecSub(const(DECIMAL)*, const(DECIMAL)*, DECIMAL*);
651    HRESULT VarCyAbs(CY, CY*);
652    HRESULT VarCyAdd(CY, CY, CY*);
653    HRESULT VarCyCmp(CY, CY);
654    HRESULT VarCyCmpR8(CY, DOUBLE);
655    HRESULT VarCyFix(CY, CY*);
656    HRESULT VarCyInt(CY, CY*);
657    HRESULT VarCyMul(CY, CY, CY*);
658    HRESULT VarCyMulI4(CY, LONG, CY*);
659    HRESULT VarCyMulI8(CY, LONG64, CY*);
660    HRESULT VarCyNeg(CY, CY*);
661    HRESULT VarCyRound(CY, INT, CY*);
662    HRESULT VarCySub(CY, CY, CY*);
663    HRESULT VarAdd(LPVARIANT, LPVARIANT, LPVARIANT);
664    HRESULT VarAnd(LPVARIANT, LPVARIANT, LPVARIANT);
665    HRESULT VarCat(LPVARIANT, LPVARIANT, LPVARIANT);
666    HRESULT VarDiv(LPVARIANT, LPVARIANT, LPVARIANT);
667    HRESULT VarEqv(LPVARIANT, LPVARIANT, LPVARIANT);
668    HRESULT VarIdiv(LPVARIANT, LPVARIANT, LPVARIANT);
669    HRESULT VarImp(LPVARIANT, LPVARIANT, LPVARIANT);
670    HRESULT VarMod(LPVARIANT, LPVARIANT, LPVARIANT);
671    HRESULT VarMul(LPVARIANT, LPVARIANT, LPVARIANT);
672    HRESULT VarOr(LPVARIANT, LPVARIANT, LPVARIANT);
673    HRESULT VarPow(LPVARIANT, LPVARIANT, LPVARIANT);
674    HRESULT VarSub(LPVARIANT, LPVARIANT, LPVARIANT);
675    HRESULT VarXor(LPVARIANT, LPVARIANT, LPVARIANT);
676    HRESULT VarAbs(LPVARIANT, LPVARIANT);
677    HRESULT VarFix(LPVARIANT, LPVARIANT);
678    HRESULT VarInt(LPVARIANT, LPVARIANT);
679    HRESULT VarNeg(LPVARIANT, LPVARIANT);
680    HRESULT VarNot(LPVARIANT, LPVARIANT);
681    HRESULT VarRound(LPVARIANT, int, LPVARIANT);
682    HRESULT VarCmp(LPVARIANT, LPVARIANT, LCID, ULONG);
683    HRESULT VarBstrCmp(BSTR, BSTR, LCID, ULONG);
684    HRESULT VarBstrCat(BSTR, BSTR, BSTR*);
685}
686