Added implementation of the VARIANT APIs.
[wine] / include / oleauto.h
1 #ifndef __WINE_OLEAUTO_H
2 #define __WINE_OLEAUTO_H
3
4 #include <ole.h>
5
6 BSTR16 WINAPI SysAllocString16(LPOLESTR16);
7 BSTR32 WINAPI SysAllocString32(LPOLESTR32);
8 #define SysAllocString WINELIB_NAME(SysAllocString)
9 INT16 WINAPI SysReAllocString16(LPBSTR16,LPOLESTR16);
10 INT32 WINAPI SysReAllocString32(LPBSTR32,LPOLESTR32);
11 #define SysReAllocString WINELIB_NAME(SysReAllocString)
12 VOID WINAPI SysFreeString16(BSTR16);
13 VOID WINAPI SysFreeString32(BSTR32);
14 #define SysFreeString WINELIB_NAME(SysFreeString)
15 BSTR16 WINAPI SysAllocStringLen16(char*, int);
16 BSTR32 WINAPI SysAllocStringLen32(WCHAR*, int);
17 #define SysAllocStringLen WINELIB_NAME(SysAllocStringLen)
18 int WINAPI SysReAllocStringLen16(BSTR16*, char*,  int);
19 int WINAPI SysReAllocStringLen32(BSTR32*, WCHAR*, int);
20 #define SysReAllocStringLen WINELIB_NAME(SysReAllocStringLen)
21 int WINAPI SysStringLen16(BSTR16);
22 int WINAPI SysStringLen32(BSTR32);
23 #define SysStringLen WINELIB_NAME(SysStringLen)
24
25 typedef void ITypeLib;
26 typedef ITypeLib * LPTYPELIB;
27
28
29 /*
30  * Data types for Variants.
31  */
32
33 /*
34  * 0 == FALSE and -1 == TRUE
35  */
36 typedef short VARIANT_BOOL;
37
38 #define VARIANT_TRUE     0xFFFF
39 #define VARIANT_FALSE    0x0000
40
41 typedef double DATE;
42 typedef LONG SCODE;
43
44 enum VARENUM {
45         VT_EMPTY = 0,
46         VT_NULL = 1,
47         VT_I2 = 2,
48         VT_I4 = 3,
49         VT_R4 = 4,
50         VT_R8 = 5,
51         VT_CY = 6,
52         VT_DATE = 7,
53         VT_BSTR = 8,
54         VT_DISPATCH = 9,
55         VT_ERROR  = 10,
56         VT_BOOL = 11,
57         VT_VARIANT      = 12,
58         VT_UNKNOWN      = 13,
59         VT_DECIMAL      = 14,
60         VT_I1 = 16,
61         VT_UI1  = 17,
62         VT_UI2  = 18,
63         VT_UI4  = 19,
64         VT_I8 = 20,
65         VT_UI8  = 21,
66         VT_INT  = 22,
67         VT_UINT = 23,
68         VT_VOID = 24,
69         VT_HRESULT      = 25,
70         VT_PTR  = 26,
71         VT_SAFEARRAY  = 27,
72         VT_CARRAY = 28,
73         VT_USERDEFINED  = 29,
74         VT_LPSTR  = 30,
75         VT_LPWSTR = 31,
76         VT_FILETIME = 64,
77         VT_BLOB = 65,
78         VT_STREAM = 66,
79         VT_STORAGE      = 67,
80         VT_STREAMED_OBJECT      = 68,
81         VT_STORED_OBJECT  = 69,
82         VT_BLOB_OBJECT  = 70,
83         VT_CF = 71,
84         VT_CLSID  = 72,
85         VT_VECTOR = 0x1000,
86         VT_ARRAY  = 0x2000,
87         VT_BYREF  = 0x4000,
88         VT_RESERVED = 0x8000,
89         VT_ILLEGAL      = 0xffff,
90         VT_ILLEGALMASKED  = 0xfff,
91         VT_TYPEMASK = 0xfff
92 };
93
94 /* the largest valide type
95  */
96 #define VT_MAXVALIDTYPE VT_CLSID
97
98
99 /*
100  * Declarations of the VARIANT structure and the VARIANT APIs.
101  */
102
103 /* S_OK                            : Success.
104  * DISP_E_BADVARTYPE   : The variant type vt in not a valid type of variant.
105  * DISP_E_OVERFLOW         : The data pointed to by pvarSrc does not fit in the destination type.
106  * DISP_E_TYPEMISMATCH : The variant type vt is not a valid type of variant.
107  * E_INVALIDARG            : One argument is invalid.
108  * E_OUTOFMEMORY           : Memory could not be allocated for the conversion.
109  * DISP_E_ARRAYISLOCKED : The variant contains an array that is locked.
110  */
111
112 typedef struct tagVARIANT VARIANT;
113 typedef struct tagVARIANT VARIANTARG;
114
115 struct tagVARIANT {
116         VARTYPE vt;
117         WORD wReserved1;
118         WORD wReserved2;
119         WORD wReserved3;
120         union
121         {
122                 /* By value.
123                  */
124                 CHAR cVal;
125                 USHORT uiVal;
126                 ULONG ulVal;
127                 INT32 intVal;
128                 UINT32 uintVal;
129                 BYTE bVal;
130                 short iVal;
131                 long lVal;
132                 float fltVal;
133                 double dblVal;
134                 VARIANT_BOOL boolVal;
135                 SCODE scode;
136                 DATE date;
137                 BSTR32 bstrVal;
138         /*
139         DECIMAL decVal;
140                 CY cyVal;
141                 IUnknown* punkVal;
142                 IDispatch* pdispVal;
143         SAFEARRAY* parray;
144         */
145
146                 /* By reference
147                  */
148                 CHAR* pcVal;
149                 USHORT* puiVal;
150                 ULONG* pulVal;
151                 INT32* pintVal;
152                 UINT32* puintVal;
153                 BYTE* pbVal;
154                 short* piVal;
155                 long* plVal;
156                 float* pfltVal;
157                 double* pdblVal;
158                 VARIANT_BOOL* pboolVal;
159                 SCODE* pscode;
160                 DATE* pdate;
161                 BSTR32* pbstrVal;
162                 VARIANT* pvarVal;
163                 PVOID byref;
164         /*
165         DECIMAL* pdecVal;
166                 CY* pcyVal;
167                 IUnknown** ppunkVal;
168                 IDispatch** ppdispVal;
169         SAFEARRAY** pparray;
170         */
171         } u;
172 };
173
174
175 /* These are macros that help accessing the VARIANT date type.
176  */
177 #define V_UNION(A, B)   ((A)->u.B)
178 #define V_VT(A)                 ((A)->vt)
179
180 #define V_ISBYREF(A)     (V_VT(A)&VT_BYREF)
181 #define V_ISARRAY(A)     (V_VT(A)&VT_ARRAY)
182 #define V_ISVECTOR(A)    (V_VT(A)&VT_VECTOR)
183 #define V_NONE(A)                V_I2(A)
184
185 #define V_UI1(A)                 V_UNION(A, bVal)
186 #define V_UI1REF(A)      V_UNION(A, pbVal)
187 #define V_I2(A)                  V_UNION(A, iVal)
188 #define V_I2REF(A)               V_UNION(A, piVal)
189 #define V_I4(A)                  V_UNION(A, lVal)
190 #define V_I4REF(A)               V_UNION(A, plVal)
191 #define V_R4(A)                  V_UNION(A, fltVal)
192 #define V_R4REF(A)               V_UNION(A, pfltVal)
193 #define V_R8(A)                  V_UNION(A, dblVal)
194 #define V_R8REF(A)               V_UNION(A, pdblVal)
195 #define V_I1(A)                  V_UNION(A, cVal)
196 #define V_I1REF(A)               V_UNION(A, pcVal)
197 #define V_UI2(A)                 V_UNION(A, uiVal)
198 #define V_UI2REF(A)      V_UNION(A, puiVal)
199 #define V_UI4(A)                 V_UNION(A, ulVal)
200 #define V_UI4REF(A)      V_UNION(A, pulVal)
201 #define V_INT(A)                 V_UNION(A, intVal)
202 #define V_INTREF(A)      V_UNION(A, pintVal)
203 #define V_UINT(A)                V_UNION(A, uintVal)
204 #define V_UINTREF(A)     V_UNION(A, puintVal)
205 #define V_CY(A)                  V_UNION(A, cyVal)
206 #define V_CYREF(A)               V_UNION(A, pcyVal)
207 #define V_DATE(A)                V_UNION(A, date)
208 #define V_DATEREF(A)     V_UNION(A, pdate)
209 #define V_BSTR(A)                V_UNION(A, bstrVal)
210 #define V_BSTRREF(A)     V_UNION(A, pbstrVal)
211 #define V_DISPATCH(A)    V_UNION(A, pdispVal)
212 #define V_DISPATCHREF(A) V_UNION(A, ppdispVal)
213 #define V_ERROR(A)               V_UNION(A, scode)
214 #define V_ERRORREF(A)    V_UNION(A, pscode)
215 #define V_BOOL(A)                V_UNION(A, boolVal)
216 #define V_BOOLREF(A)     V_UNION(A, pboolVal)
217 #define V_UNKNOWN(A)     V_UNION(A, punkVal)
218 #define V_UNKNOWNREF(A)  V_UNION(A, ppunkVal)
219 #define V_VARIANTREF(A)  V_UNION(A, pvarVal)
220 #define V_ARRAY(A)               V_UNION(A, parray)
221 #define V_ARRAYREF(A)    V_UNION(A, pparray)
222 #define V_BYREF(A)               V_UNION(A, byref)
223 #define V_DECIMAL(A)     V_UNION(A, decVal)
224 #define V_DECIMALREF(A)  V_UNION(A, pdecVal)
225
226 /*
227  * VARIANT API
228  */
229
230 void VariantInit32(VARIANTARG* pvarg);
231 #define VariantInit WINELIB_NAME(VariantInit)
232 HRESULT VariantClear32(VARIANTARG* pvarg);
233 #define VariantClear WINELIB_NAME(VariantClear)
234 HRESULT VariantCopy32(VARIANTARG* pvargDest, VARIANTARG* pvargSrc);
235 #define VariantCopy WINELIB_NAME(VariantCopy)
236 HRESULT VariantCopyInd32(VARIANT* pvargDest, VARIANTARG* pvargSrc);
237 #define VariantCopyInd WINELIB_NAME(VariantCopyInd)
238 HRESULT VariantChangeType32(VARIANTARG* pvargDest, VARIANTARG* pvargSrc,
239                                                   USHORT wFlags, VARTYPE vt);
240 #define VariantChangeType WINELIB_NAME(VariantChangeType)
241 HRESULT VariantChangeTypeEx32(VARIANTARG* pvargDest, VARIANTARG* pvargSrc,
242                                                         LCID lcid, USHORT wFlags, VARTYPE vt);
243 #define VariantChangeTypeEx WINELIB_NAME(VariantChangeTypeEx)
244
245 /*
246  * These flags are used for the VariantChangeType and VariantChangeTypeEx APIs.
247  */
248
249 /*
250  * This one is of general use.
251  */
252 #define VARIANT_NOVALUEPROP    0x1
253 /*
254  * This one is used for conversions of VT_BOOL to VT_BSTR,
255  * the API will convert to "True"|"False" instead of "-1"|"0".
256  */
257 #define VARIANT_ALPHABOOL          0x2
258 /*
259  * This one is used for conversions to or from a VT_BSTR string,
260  * it passes LOCALE_NOUSEROVERRIDE to the core (low-level) coercion routines.
261  * This means it will use the system default locale settings instead of custom
262  * local settings.
263  */
264 #define VARIANT_NOUSEROVERRIDE 0x4
265
266
267 /*
268  * VARTYPE Coercion API
269  */
270
271 /* Omits the date portion and return only the time value.
272  */
273 #define VAR_TIMEVALUEONLY       ((DWORD)0x00000001)
274 /* Omits the time portion and return only the date value.
275  */
276 #define VAR_DATEVALUEONLY       ((DWORD)0x00000002)
277
278
279 HRESULT VarUI1FromI232(short sIn, BYTE* pbOut);
280 #define VarUI1FromI2 WINELIB_NAME(VarUI1FromI2)
281 HRESULT VarUI1FromI432(LONG lIn, BYTE* pbOut);
282 #define VarUI1FromI4 WINELIB_NAME(VarUI1FromI4)
283 HRESULT VarUI1FromR432(FLOAT fltIn, BYTE* pbOut);
284 #define VarUI1FromR4 WINELIB_NAME(VarUI1FromR4)
285 HRESULT VarUI1FromR832(double dblIn, BYTE* pbOut);
286 #define VarUI1FromR8 WINELIB_NAME(VarUI1FromR8)
287 HRESULT VarUI1FromDate32(DATE dateIn, BYTE* pbOut);
288 #define VarUI1FromDate WINELIB_NAME(VarUI1FromDate)
289 HRESULT VarUI1FromBool32(VARIANT_BOOL boolIn, BYTE* pbOut);
290 #define VarUI1FromBool WINELIB_NAME(VarUI1FromBool)
291 HRESULT VarUI1FromI132(CHAR cIn, BYTE*pbOut);
292 #define VarUI1FromI1 WINELIB_NAME(VarUI1FromI1)
293 HRESULT VarUI1FromUI232(USHORT uiIn, BYTE*pbOut);
294 #define VarUI1FromUI2 WINELIB_NAME(VarUI1FromUI2)
295 HRESULT VarUI1FromUI432(ULONG ulIn, BYTE*pbOut);
296 #define VarUI1FromUI4 WINELIB_NAME(VarUI1FromUI4)
297 HRESULT VarUI1FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, BYTE* pbOut);
298 #define VarUI1FromStr WINELIB_NAME(VarUI1FromStr)
299
300 /*
301 HRESULT VarUI1FromDec32(DECIMAL*pdecIn, BYTE*pbOut);
302 #define VarUI1FromDec WINELIB_NAME(VarUI1FromDec)
303 HRESULT VarUI1FromDisp32(IDispatch* pdispIn, LCID lcid, BYTE* pbOut);
304 #define VarUI1FromDisp WINELIB_NAME(VarUI1FromDisp)
305 HRESULT VarUI1FromCy32(CY cyIn, BYTE* pbOut);
306 #define VarUI1FromCy WINELIB_NAME(VarUI1FromCy)
307 */
308
309 HRESULT VarI2FromUI132(BYTE bIn, short* psOut);
310 #define VarI2FromUI1 WINELIB_NAME(VarI2FromUI1)
311 HRESULT VarI2FromI432(LONG lIn, short* psOut);
312 #define VarI2FromI4 WINELIB_NAME(VarI2FromI4)
313 HRESULT VarI2FromR432(FLOAT fltIn, short* psOut);
314 #define VarI2FromR4 WINELIB_NAME(VarI2FromR4)
315 HRESULT VarI2FromR832(double dblIn, short* psOut);
316 #define VarI2FromR8 WINELIB_NAME(VarI2FromR8)
317 HRESULT VarI2FromDate32(DATE dateIn, short* psOut);
318 #define VarI2FromDate WINELIB_NAME(VarI2FromDate)
319 HRESULT VarI2FromBool32(VARIANT_BOOL boolIn, short* psOut);
320 #define VarI2FromBool WINELIB_NAME(VarI2FromBool)
321 HRESULT VarI2FromI132(CHAR cIn, short*psOut);
322 #define VarI2FromI1 WINELIB_NAME(VarI2FromI1)
323 HRESULT VarI2FromUI232(USHORT uiIn, short*psOut);
324 #define VarI2FromUI2 WINELIB_NAME(VarI2FromUI2)
325 HRESULT VarI2FromUI432(ULONG ulIn, short*psOut);
326 #define VarI2FromUI4 WINELIB_NAME(VarI2FromUI4)
327 HRESULT VarI2FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, short* psOut);
328 #define VarI2FromStr WINELIB_NAME(VarI2FromStr)
329 /*
330 HRESULT VarI2FromDec32(DECIMAL*pdecIn, short*psOut);
331 #define VarI2FromDec WINELIB_NAME(VarI2FromDec)
332 HRESULT VarI2FromDisp32(IDispatch* pdispIn, LCID lcid, short* psOut);
333 #define VarI2FromDisp WINELIB_NAME(VarI2FromDisp)
334 HRESULT VarI2FromCy32(CY cyIn, short* psOut);
335 #define VarI2FromCy WINELIB_NAME(VarI2FromCy)
336 */
337
338 HRESULT VarI4FromUI132(BYTE bIn, LONG* plOut);
339 #define VarI4FromUI1 WINELIB_NAME(VarI4FromUI1)
340 HRESULT VarI4FromI232(short sIn, LONG* plOut);
341 #define VarI4FromI2 WINELIB_NAME(VarI4FromI2)
342 HRESULT VarI4FromR432(FLOAT fltIn, LONG* plOut);
343 #define VarI4FromR4 WINELIB_NAME(VarI4FromR4)
344 HRESULT VarI4FromR832(double dblIn, LONG* plOut);
345 #define VarI4FromR8 WINELIB_NAME(VarI4FromR8)
346 HRESULT VarI4FromDate32(DATE dateIn, LONG* plOut);
347 #define VarI4FromDate WINELIB_NAME(VarI4FromDate)
348 HRESULT VarI4FromBool32(VARIANT_BOOL boolIn, LONG* plOut);
349 #define VarI4FromBool WINELIB_NAME(VarI4FromBool)
350 HRESULT VarI4FromI132(CHAR cIn, LONG* plOut);
351 #define VarI4FromI1 WINELIB_NAME(VarI4FromI1)
352 HRESULT VarI4FromUI232(USHORT uiIn, LONG*plOut);
353 #define VarI4FromUI2 WINELIB_NAME(VarI4FromUI2)
354 HRESULT VarI4FromUI432(ULONG ulIn, LONG*plOut);
355 #define VarI4FromUI4 WINELIB_NAME(VarI4FromUI4)
356 HRESULT VarI4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, LONG* plOut);
357 #define VarI4FromStr WINELIB_NAME(VarI4FromStr)
358 /*
359 HRESULT VarI4FromCy32(CY cyIn, LONG* plOut);
360 #define VarI4FromCy WINELIB_NAME(VarI4FromCy)
361 HRESULT VarI4FromDec32(DECIMAL*pdecIn, LONG*plOut);
362 #define VarI4FromDec WINELIB_NAME(VarI4FromDec)
363 HRESULT VarI4FromDisp32(IDispatch* pdispIn, LCID lcid, LONG* plOut);
364 #define VarI4FromDisp WINELIB_NAME(VarI4FromDisp)
365 */
366
367 HRESULT VarR4FromUI132(BYTE bIn, FLOAT* pfltOut);
368 #define VarR4FromUI1 WINELIB_NAME(VarR4FromUI1)
369 HRESULT VarR4FromI232(short sIn, FLOAT* pfltOut);
370 #define VarR4FromI2 WINELIB_NAME(VarR4FromI2)
371 HRESULT VarR4FromI432(LONG lIn, FLOAT* pfltOut);
372 #define VarR4FromI4 WINELIB_NAME(VarR4FromI4)
373 HRESULT VarR4FromR832(double dblIn, FLOAT* pfltOut);
374 #define VarR4FromR8 WINELIB_NAME(VarR4FromR8)
375 HRESULT VarR4FromDate32(DATE dateIn, FLOAT* pfltOut);
376 #define VarR4FromDate WINELIB_NAME(VarR4FromDate)
377 HRESULT VarR4FromBool32(VARIANT_BOOL boolIn, FLOAT* pfltOut);
378 #define VarR4FromBool WINELIB_NAME(VarR4FromBool)
379 HRESULT VarR4FromI132(CHAR cIn, FLOAT*pfltOut);
380 #define VarR4FromI1 WINELIB_NAME(VarR4FromI1)
381 HRESULT VarR4FromUI232(USHORT uiIn, FLOAT*pfltOut);
382 #define VarR4FromUI2 WINELIB_NAME(VarR4FromUI2)
383 HRESULT VarR4FromUI432(ULONG ulIn, FLOAT*pfltOut);
384 #define VarR4FromUI4 WINELIB_NAME(VarR4FromUI4)
385 HRESULT VarR4FromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, FLOAT*pfltOut);
386 #define VarR4FromStr WINELIB_NAME(VarR4FromStr)
387 /*
388 HRESULT VarR4FromDec32(DECIMAL*pdecIn, FLOAT*pfltOut);
389 #define VarR4FromDec WINELIB_NAME(VarR4FromDec)
390 HRESULT VarR4FromDisp32(IDispatch* pdispIn, LCID lcid, FLOAT* pfltOut);
391 #define VarR4FromDisp WINELIB_NAME(VarR4FromDisp)
392 HRESULT VarR4FromCy32(CY cyIn, FLOAT* pfltOut);
393 #define VarR4FromCy WINELIB_NAME(VarR4FromCy)
394 */
395
396 HRESULT VarR8FromUI132(BYTE bIn, double* pdblOut);
397 #define VarR8FromUI1 WINELIB_NAME(VarR8FromUI1)
398 HRESULT VarR8FromI232(short sIn, double* pdblOut);
399 #define VarR8FromI2 WINELIB_NAME(VarR8FromI2)
400 HRESULT VarR8FromI432(LONG lIn, double* pdblOut);
401 #define VarR8FromI4 WINELIB_NAME(VarR8FromI4)
402 HRESULT VarR8FromR432(FLOAT fltIn, double* pdblOut);
403 #define VarR8FromR4 WINELIB_NAME(VarR8FromR4)
404 HRESULT VarR8FromDate32(DATE dateIn, double* pdblOut);
405 #define VarR8FromDate WINELIB_NAME(VarR8FromDate)
406 HRESULT VarR8FromBool32(VARIANT_BOOL boolIn, double* pdblOut);
407 #define VarR8FromBool WINELIB_NAME(VarR8FromBool)
408 HRESULT VarR8FromI132(CHAR cIn, double*pdblOut);
409 #define VarR8FromI1 WINELIB_NAME(VarR8FromI1)
410 HRESULT VarR8FromUI232(USHORT uiIn, double*pdblOut);
411 #define VarR8FromUI2 WINELIB_NAME(VarR8FromUI2)
412 HRESULT VarR8FromUI432(ULONG ulIn, double*pdblOut);
413 #define VarR8FromUI4 WINELIB_NAME(VarR8FromUI4)
414 HRESULT VarR8FromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, double*pdblOut);
415 #define VarR8FromStr WINELIB_NAME(VarR8FromStr)
416 /*
417 HRESULT VarR8FromDec32(DECIMAL*pdecIn, double*pdblOut);
418 #define VarR8FromDec WINELIB_NAME(VarR8FromDec)
419 HRESULT VarR8FromCy32(CY cyIn, double* pdblOut);
420 #define VarR8FromCy WINELIB_NAME(VarR8FromCy)
421 HRESULT VarR8FromDisp32(IDispatch* pdispIn, LCID lcid, double* pdblOut);
422 #define VarR8FromDisp WINELIB_NAME(VarR8FromDisp)
423 */
424
425 HRESULT VarDateFromUI132(BYTE bIn, DATE* pdateOut);
426 #define VarDateFromUI1 WINELIB_NAME(VarDateFromUI1)
427 HRESULT VarDateFromI232(short sIn, DATE* pdateOut);
428 #define VarDateFromI2 WINELIB_NAME(VarDateFromI2)
429 HRESULT VarDateFromI432(LONG lIn, DATE* pdateOut);
430 #define VarDateFromI4 WINELIB_NAME(VarDateFromI4)
431 HRESULT VarDateFromR432(FLOAT fltIn, DATE* pdateOut);
432 #define VarDateFromR4 WINELIB_NAME(VarDateFromR4)
433 HRESULT VarDateFromR832(double dblIn, DATE* pdateOut);
434 #define VarDateFromR8 WINELIB_NAME(VarDateFromR8)
435 HRESULT VarDateFromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, DATE*pdateOut);
436 #define VarDateFromStr WINELIB_NAME(VarDateFromStr)
437 HRESULT VarDateFromI132(CHAR cIn, DATE*pdateOut);
438 #define VarDateFromI1 WINELIB_NAME(VarDateFromI1)
439 HRESULT VarDateFromUI232(USHORT uiIn, DATE*pdateOut);
440 #define VarDateFromUI2 WINELIB_NAME(VarDateFromUI2)
441 HRESULT VarDateFromUI432(ULONG ulIn, DATE*pdateOut);
442 #define VarDateFromUI4 WINELIB_NAME(VarDateFromUI4)
443 HRESULT VarDateFromBool32(VARIANT_BOOL boolIn, DATE* pdateOut);
444 #define VarDateFromBool WINELIB_NAME(VarDateFromBool)
445 /*
446 HRESULT VarDateFromDec32(DECIMAL*pdecIn, DATE*pdateOut);
447 #define VarDateFromDec WINELIB_NAME(VarDateFromDec)
448 HRESULT VarDateFromDisp32(IDispatch* pdispIn, LCID lcid, DATE* pdateOut);
449 #define VarDateFromDisp WINELIB_NAME(VarDateFromDisp)
450 HRESULT VarDateFromCy32(CY cyIn, DATE* pdateOut);
451 #define VarDateFromCy WINELIB_NAME(VarDateFromCy)
452
453 HRESULT VarCyFromUI132(BYTE bIn, CY* pcyOut);
454 #define VarCyFromUI1 WINELIB_NAME(VarCyFromUI1)
455 HRESULT VarCyFromI232(short sIn, CY* pcyOut);
456 #define VarCyFromI2 WINELIB_NAME(VarCyFromI2)
457 HRESULT VarCyFromI432(LONG lIn, CY* pcyOut);
458 #define VarCyFromI4 WINELIB_NAME(VarCyFromI4)
459 HRESULT VarCyFromR432(FLOAT fltIn, CY* pcyOut);
460 #define VarCyFromR4 WINELIB_NAME(VarCyFromR4)
461 HRESULT VarCyFromR832(double dblIn, CY* pcyOut);
462 #define VarCyFromR8 WINELIB_NAME(VarCyFromR8)
463 HRESULT VarCyFromDate32(DATE dateIn, CY* pcyOut);
464 #define VarCyFromDate WINELIB_NAME(VarCyFromDate)
465 HRESULT VarCyFromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, CY* pcyOut);
466 #define VarCyFromStr WINELIB_NAME(VarCyFromStr)
467 HRESULT VarCyFromDisp32(IDispatch* pdispIn, LCID lcid, CY* pcyOut);
468 #define VarCyFromDisp WINELIB_NAME(VarCyFromDisp)
469 HRESULT VarCyFromBool32(VARIANT_BOOL boolIn, CY* pcyOut);
470 #define VarCyFromBool WINELIB_NAME(VarCyFromBool)
471 HRESULT VarCyFromI132(CHAR cIn, CY*pcyOut);
472 #define VarCyFromI1 WINELIB_NAME(VarCyFromI1)
473 HRESULT VarCyFromUI232(USHORT uiIn, CY*pcyOut);
474 #define VarCyFromUI2 WINELIB_NAME(VarCyFromUI2)
475 HRESULT VarCyFromUI432(ULONG ulIn, CY*pcyOut);
476 #define VarCyFromUI4 WINELIB_NAME(VarCyFromUI4)
477 HRESULT VarCyFromDec32(DECIMAL*pdecIn, CY*pcyOut);
478 #define VarCyFromDec WINELIB_NAME(VarCyFromDec)
479 */
480
481 HRESULT VarBstrFromUI132(BYTE bVal, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
482 #define VarBstrFromUI1 WINELIB_NAME(VarBstrFromUI1)
483 HRESULT VarBstrFromI232(short iVal, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
484 #define VarBstrFromI2 WINELIB_NAME(VarBstrFromI2)
485 HRESULT VarBstrFromI432(LONG lIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
486 #define VarBstrFromI4 WINELIB_NAME(VarBstrFromI4)
487 HRESULT VarBstrFromR432(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
488 #define VarBstrFromR4 WINELIB_NAME(VarBstrFromR4)
489 HRESULT VarBstrFromR832(double dblIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
490 #define VarBstrFromR8 WINELIB_NAME(VarBstrFromR8)
491 HRESULT VarBstrFromDate32(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
492 #define VarBstrFromDate WINELIB_NAME(VarBstrFromDate)
493 HRESULT VarBstrFromBool32(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
494 #define VarBstrFromBool WINELIB_NAME(VarBstrFromBool)
495 HRESULT VarBstrFromI132(CHAR cIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
496 #define VarBstrFromI1 WINELIB_NAME(VarBstrFromI1)
497 HRESULT VarBstrFromUI232(USHORT uiIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
498 #define VarBstrFromUI2 WINELIB_NAME(VarBstrFromUI2)
499 HRESULT VarBstrFromUI432(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
500 #define VarBstrFromUI4 WINELIB_NAME(VarBstrFromUI4)
501 /*
502 HRESULT VarBstrFromDec32(DECIMAL*pdecIn, LCID lcid, ULONG dwFlags, BSTR32*pbstrOut);
503 #define VarBstrFromDec WINELIB_NAME(VarBstrFromDec)
504 HRESULT VarBstrFromCy32(CY cyIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
505 #define VarBstrFromCy WINELIB_NAME(VarBstrFromCy)
506 HRESULT VarBstrFromDisp32(IDispatch* pdispIn, LCID lcid, ULONG dwFlags, BSTR32* pbstrOut);
507 #define VarBstrFromDisp WINELIB_NAME(VarBstrFromDisp)
508 */
509
510 HRESULT VarBoolFromUI132(BYTE bIn, VARIANT_BOOL* pboolOut);
511 #define VarBoolFromUI1 WINELIB_NAME(VarBoolFromUI1)
512 HRESULT VarBoolFromI232(short sIn, VARIANT_BOOL* pboolOut);
513 #define VarBoolFromI2 WINELIB_NAME(VarBoolFromI2)
514 HRESULT VarBoolFromI432(LONG lIn, VARIANT_BOOL* pboolOut);
515 #define VarBoolFromI4 WINELIB_NAME(VarBoolFromI4)
516 HRESULT VarBoolFromR432(FLOAT fltIn, VARIANT_BOOL* pboolOut);
517 #define VarBoolFromR4 WINELIB_NAME(VarBoolFromR4)
518 HRESULT VarBoolFromR832(double dblIn, VARIANT_BOOL* pboolOut);
519 #define VarBoolFromR8 WINELIB_NAME(VarBoolFromR8)
520 HRESULT VarBoolFromDate32(DATE dateIn, VARIANT_BOOL* pboolOut);
521 #define VarBoolFromDate WINELIB_NAME(VarBoolFromDate)
522 HRESULT VarBoolFromStr32(OLECHAR32* strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL* pboolOut);
523 #define VarBoolFromStr WINELIB_NAME(VarBoolFromStr)
524 HRESULT VarBoolFromI132(CHAR cIn, VARIANT_BOOL*pboolOut);
525 #define VarBoolFromI1 WINELIB_NAME(VarBoolFromI1)
526 HRESULT VarBoolFromUI232(USHORT uiIn, VARIANT_BOOL*pboolOut);
527 #define VarBoolFromUI2 WINELIB_NAME(VarBoolFromUI2)
528 HRESULT VarBoolFromUI432(ULONG ulIn, VARIANT_BOOL*pboolOut);
529 #define VarBoolFromUI4 WINELIB_NAME(VarBoolFromUI4)
530 /*
531 HRESULT VarBoolFromDec32(DECIMAL*pdecIn, VARIANT_BOOL*pboolOut);
532 #define VarBoolFromDec WINELIB_NAME(VarBoolFromDec)
533 HRESULT VarBoolFromCy32(CY cyIn, VARIANT_BOOL* pboolOut);
534 #define VarBoolFromCy WINELIB_NAME(VarBoolFromCy)
535 HRESULT VarBoolFromDisp32(IDispatch* pdispIn, LCID lcid, VARIANT_BOOL* pboolOut);
536 #define VarBoolFromDisp WINELIB_NAME(VarBoolFromDisp)
537 */
538
539 HRESULT VarI1FromUI132(BYTE bIn, CHAR*pcOut);
540 #define VarI1FromUI1 WINELIB_NAME(VarI1FromUI1)
541 HRESULT VarI1FromI232(short uiIn, CHAR*pcOut);
542 #define VarI1FromI2 WINELIB_NAME(VarI1FromI2)
543 HRESULT VarI1FromI432(LONG lIn, CHAR*pcOut);
544 #define VarI1FromI4 WINELIB_NAME(VarI1FromI4)
545 HRESULT VarI1FromR432(FLOAT fltIn, CHAR*pcOut);
546 #define VarI1FromR4 WINELIB_NAME(VarI1FromR4)
547 HRESULT VarI1FromR832(double dblIn, CHAR*pcOut);
548 #define VarI1FromR8 WINELIB_NAME(VarI1FromR8)
549 HRESULT VarI1FromDate32(DATE dateIn, CHAR*pcOut);
550 #define VarI1FromDate WINELIB_NAME(VarI1FromDate)
551 HRESULT VarI1FromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, CHAR*pcOut);
552 #define VarI1FromStr WINELIB_NAME(VarI1FromStr)
553 HRESULT VarI1FromBool32(VARIANT_BOOL boolIn, CHAR*pcOut);
554 #define VarI1FromBool WINELIB_NAME(VarI1FromBool)
555 HRESULT VarI1FromUI232(USHORT uiIn, CHAR*pcOut);
556 #define VarI1FromUI2 WINELIB_NAME(VarI1FromUI2)
557 HRESULT VarI1FromUI432(ULONG ulIn, CHAR*pcOut);
558 #define VarI1FromUI4 WINELIB_NAME(VarI1FromUI4)
559 /*
560 HRESULT VarI1FromDec32(DECIMAL*pdecIn, CHAR*pcOut);
561 #define VarI1FromDec WINELIB_NAME(VarI1FromDec)
562 HRESULT VarI1FromDisp32(IDispatch*pdispIn, LCID lcid, CHAR*pcOut);
563 #define VarI1FromDisp WINELIB_NAME(VarI1FromDisp)
564 HRESULT VarI1FromCy32(CY cyIn, CHAR*pcOut);
565 #define VarI1FromCy WINELIB_NAME(VarI1FromCy)
566 */
567
568 HRESULT VarUI2FromUI132(BYTE bIn, USHORT*puiOut);
569 #define VarUI2FromUI1 WINELIB_NAME(VarUI2FromUI1)
570 HRESULT VarUI2FromI232(short uiIn, USHORT*puiOut);
571 #define VarUI2FromI2 WINELIB_NAME(VarUI2FromI2)
572 HRESULT VarUI2FromI432(LONG lIn, USHORT*puiOut);
573 #define VarUI2FromI4 WINELIB_NAME(VarUI2FromI4)
574 HRESULT VarUI2FromR432(FLOAT fltIn, USHORT*puiOut);
575 #define VarUI2FromR4 WINELIB_NAME(VarUI2FromR4)
576 HRESULT VarUI2FromR832(double dblIn, USHORT*puiOut);
577 #define VarUI2FromR8 WINELIB_NAME(VarUI2FromR8)
578 HRESULT VarUI2FromDate32(DATE dateIn, USHORT*puiOut);
579 #define VarUI2FromDate WINELIB_NAME(VarUI2FromDate)
580 HRESULT VarUI2FromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, USHORT*puiOut);
581 #define VarUI2FromStr WINELIB_NAME(VarUI2FromStr)
582 HRESULT VarUI2FromBool32(VARIANT_BOOL boolIn, USHORT*puiOut);
583 #define VarUI2FromBool WINELIB_NAME(VarUI2FromBool)
584 HRESULT VarUI2FromI132(CHAR cIn, USHORT*puiOut);
585 #define VarUI2FromI1 WINELIB_NAME(VarUI2FromI1)
586 HRESULT VarUI2FromUI432(ULONG ulIn, USHORT*puiOut);
587 #define VarUI2FromUI4 WINELIB_NAME(VarUI2FromUI4)
588 /*
589 HRESULT VarUI2FromDec32(DECIMAL*pdecIn, USHORT*puiOut);
590 #define VarUI2FromDec WINELIB_NAME(VarUI2FromDec)
591 HRESULT VarUI2FromCy32(CY cyIn, USHORT*puiOut);
592 #define VarUI2FromCy WINELIB_NAME(VarUI2FromCy)
593 HRESULT VarUI2FromDisp32(IDispatch*pdispIn, LCID lcid, USHORT*puiOut);
594 #define VarUI2FromDisp WINELIB_NAME(VarUI2FromDisp)
595 */
596
597 HRESULT VarUI4FromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, ULONG*pulOut);
598 #define VarUI4FromStr WINELIB_NAME(VarUI4FromStr)
599 HRESULT VarUI4FromUI132(BYTE bIn, ULONG*pulOut);
600 #define VarUI4FromUI1 WINELIB_NAME(VarUI4FromUI1)
601 HRESULT VarUI4FromI232(short uiIn, ULONG*pulOut);
602 #define VarUI4FromI2 WINELIB_NAME(VarUI4FromI2)
603 HRESULT VarUI4FromI432(LONG lIn, ULONG*pulOut);
604 #define VarUI4FromI4 WINELIB_NAME(VarUI4FromI4)
605 HRESULT VarUI4FromR432(FLOAT fltIn, ULONG*pulOut);
606 #define VarUI4FromR4 WINELIB_NAME(VarUI4FromR4)
607 HRESULT VarUI4FromR832(double dblIn, ULONG*pulOut);
608 #define VarUI4FromR8 WINELIB_NAME(VarUI4FromR8)
609 HRESULT VarUI4FromDate32(DATE dateIn, ULONG*pulOut);
610 #define VarUI4FromDate WINELIB_NAME(VarUI4FromDate)
611 HRESULT VarUI4FromBool32(VARIANT_BOOL boolIn, ULONG*pulOut);
612 #define VarUI4FromBool WINELIB_NAME(VarUI4FromBool)
613 HRESULT VarUI4FromI132(CHAR cIn, ULONG*pulOut);
614 #define VarUI4FromI1 WINELIB_NAME(VarUI4FromI1)
615 HRESULT VarUI4FromUI232(USHORT uiIn, ULONG*pulOut);
616 #define VarUI4FromUI2 WINELIB_NAME(VarUI4FromUI2)
617 /*
618 HRESULT VarUI4FromDec32(DECIMAL*pdecIn, ULONG*pulOut);
619 #define VarUI4FromDec WINELIB_NAME(VarUI4FromDec)
620 HRESULT VarUI4FromDisp32(IDispatch*pdispIn, LCID lcid, ULONG*pulOut);
621 #define VarUI4FromDisp WINELIB_NAME(VarUI4FromDisp)
622 HRESULT VarUI4FromCy32(CY cyIn, ULONG*pulOut);
623 #define VarUI4FromCy WINELIB_NAME(VarUI4FromCy)
624
625 HRESULT VarDecFromUI132(BYTE bIn, DECIMAL*pdecOut);
626 #define VarDecFromUI1 WINELIB_NAME(VarDecFromUI1)
627 HRESULT VarDecFromI232(short uiIn, DECIMAL*pdecOut);
628 #define VarDecFromI2 WINELIB_NAME(VarDecFromI2)
629 HRESULT VarDecFromI432(LONG lIn, DECIMAL*pdecOut);
630 #define VarDecFromI4 WINELIB_NAME(VarDecFromI4)
631 HRESULT VarDecFromR432(FLOAT fltIn, DECIMAL*pdecOut);
632 #define VarDecFromR4 WINELIB_NAME(VarDecFromR4)
633 HRESULT VarDecFromR832(double dblIn, DECIMAL*pdecOut);
634 #define VarDecFromR8 WINELIB_NAME(VarDecFromR8)
635 HRESULT VarDecFromDate32(DATE dateIn, DECIMAL*pdecOut);
636 #define VarDecFromDate WINELIB_NAME(VarDecFromDate)
637 HRESULT VarDecFromStr32(OLECHAR32*strIn, LCID lcid, ULONG dwFlags, DECIMAL*pdecOut);
638 #define VarDecFromStr WINELIB_NAME(VarDecFromStr)
639 HRESULT VarDecFromBool32(VARIANT_BOOL boolIn, DECIMAL*pdecOut);
640 #define VarDecFromBool WINELIB_NAME(VarDecFromBool)
641 HRESULT VarDecFromI132(CHAR cIn, DECIMAL*pdecOut);
642 #define VarDecFromI1 WINELIB_NAME(VarDecFromI1)
643 HRESULT VarDecFromUI232(USHORT uiIn, DECIMAL*pdecOut);
644 #define VarDecFromUI2 WINELIB_NAME(VarDecFromUI2)
645 HRESULT VarDecFromUI432(ULONG ulIn, DECIMAL*pdecOut);
646 #define VarDecFromUI4 WINELIB_NAME(VarDecFromUI4)
647 HRESULT VarDecFromCy32(CY cyIn, DECIMAL*pdecOut);
648 #define VarDecFromCy WINELIB_NAME(VarDecFromCy)
649 HRESULT VarDecFromDisp32(IDispatch*pdispIn, LCID lcid, DECIMAL*pdecOut);
650 #define VarDecFromDisp WINELIB_NAME(VarDecFromDisp)
651 */
652
653
654
655 #define VarUI4FromUI4( in, pOut ) ( *(pOut) =  (in) )
656 #define VarI4FromI4( in, pOut )   ( *(pOut) =  (in) )
657
658 #define VarUI1FromInt32         VarUI1FromI432
659 #define VarUI1FromUint32        VarUI1FromUI432
660 #define VarI2FromInt32          VarI2FromI432
661 #define VarI2FromUint32         VarI2FromUI432
662 #define VarI4FromInt32          VarI4FromI432
663 #define VarI4FromUint32         VarI4FromUI432
664 #define VarR4FromInt32          VarR4FromI432
665 #define VarR4FromUint32         VarR4FromUI432
666 #define VarR8FromInt32          VarR8FromI432
667 #define VarR8FromUint32         VarR8FromUI432
668 #define VarDateFromInt32        VarDateFromI432
669 #define VarDateFromUint32       VarDateFromUI432
670 #define VarCyFromInt32          VarCyFromI432
671 #define VarCyFromUint32         VarCyFromUI432
672 #define VarBstrFromInt32        VarBstrFromI432
673 #define VarBstrFromUint32       VarBstrFromUI432
674 #define VarBoolFromInt32        VarBoolFromI432
675 #define VarBoolFromUint32       VarBoolFromUI432
676 #define VarI1FromInt32          VarI1FromI432
677 #define VarI1FromUint32         VarI1FromUI432
678 #define VarUI2FromInt32         VarUI2FromI432
679 #define VarUI2FromUint32        VarUI2FromUI432
680 #define VarUI4FromInt32         VarUI4FromI432
681 #define VarUI4FromUint32        VarUI4FromUI432
682 #define VarDecFromInt32         VarDecFromI432
683 #define VarDecFromUint32        VarDecFromUI432
684 #define VarIntFromUI132         VarI4FromUI132
685 #define VarIntFromI232          VarI4FromI232
686 #define VarIntFromI432          VarI4FromI432
687 #define VarIntFromR432          VarI4FromR432
688 #define VarIntFromR832          VarI4FromR832
689 #define VarIntFromDate32        VarI4FromDate32
690 #define VarIntFromCy32          VarI4FromCy32
691 #define VarIntFromStr32         VarI4FromStr32
692 #define VarIntFromDisp32        VarI4FromDisp32
693 #define VarIntFromBool32        VarI4FromBool32
694 #define VarIntFromI132          VarI4FromI132
695 #define VarIntFromUI232         VarI4FromUI232
696 #define VarIntFromUI432         VarI4FromUI432
697 #define VarIntFromDec32         VarI4FromDec32
698 #define VarIntFromUint32        VarI4FromUI432
699 #define VarUintFromUI132        VarUI4FromUI132
700 #define VarUintFromI232         VarUI4FromI232
701 #define VarUintFromI432         VarUI4FromI432
702 #define VarUintFromR432         VarUI4FromR432
703 #define VarUintFromR832         VarUI4FromR832
704 #define VarUintFromDate32       VarUI4FromDate32
705 #define VarUintFromCy32         VarUI4FromCy32
706 #define VarUintFromStr32        VarUI4FromStr32
707 #define VarUintFromDisp32       VarUI4FromDisp32
708 #define VarUintFromBool32       VarUI4FromBool32
709 #define VarUintFromI132         VarUI4FromI132
710 #define VarUintFromUI232        VarUI4FromUI232
711 #define VarUintFromUI432        VarUI4FromUI432
712 #define VarUintFromDec32        VarUI4FromDec32
713 #define VarUintFromInt32        VarUI4FromI432
714
715 #endif /*__WINE_OLEAUTO_H*/