1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 //! Mappings for the contents of OleAuto.h
7 use ctypes::{c_double, c_float, c_int, c_uint, c_void};
8 use shared::basetsd::{LONG64, ULONG64};
9 use shared::minwindef::{BYTE, DWORD, FLOAT, UINT, ULONG, USHORT, WORD};
10 use shared::wtypes::{BSTR, DATE, DECIMAL, LPBSTR, LPDECIMAL, VARTYPE};
11 use shared::wtypesbase::{DOUBLE, LPCOLESTR, LPOLESTR, OLECHAR};
12 use um::minwinbase::LPSYSTEMTIME;
13 use um::oaidl::{DISPID_UNKNOWN, ITypeLib, SAFEARRAY, VARIANT, VARIANTARG};
14 use um::winnt::{CHAR, HRESULT, INT, LCID, LONG, LPCSTR, SHORT};
15 extern "system" {
SysAllocString( psz: *const OLECHAR, ) -> BSTR16     pub fn SysAllocString(
17         psz: *const OLECHAR,
18     ) -> BSTR;
SysReAllocString( pbstr: *mut BSTR, psz: *const OLECHAR, ) -> INT19     pub fn SysReAllocString(
20         pbstr: *mut BSTR,
21         psz: *const OLECHAR,
22     ) -> INT;
SysAllocStringLen( strIn: *const OLECHAR, ui: UINT, ) -> BSTR23     pub fn SysAllocStringLen(
24         strIn: *const OLECHAR,
25         ui: UINT,
26     ) -> BSTR;
SysReAllocStringLen( pbstr: *mut BSTR, psz: *const OLECHAR, len: c_uint, ) -> INT27     pub fn SysReAllocStringLen(
28         pbstr: *mut BSTR,
29         psz: *const OLECHAR,
30         len: c_uint,
31     ) -> INT;
SysFreeString( bstrString: BSTR, )32     pub fn SysFreeString(
33         bstrString: BSTR,
34     );
SysStringLen( pbstr: BSTR, ) -> UINT35     pub fn SysStringLen(
36         pbstr: BSTR,
37     ) -> UINT;
SysStringByteLen( bstr: BSTR, ) -> UINT38     pub fn SysStringByteLen(
39         bstr: BSTR,
40     ) -> UINT;
SysAllocStringByteLen( psz: LPCSTR, len: UINT, ) -> BSTR41     pub fn SysAllocStringByteLen(
42         psz: LPCSTR,
43         len: UINT,
44     ) -> BSTR;
DosDateTimeToVariantTime( wDosDate: USHORT, wDosTime: USHORT, pvtime: *mut DOUBLE, ) -> INT45     pub fn DosDateTimeToVariantTime(
46         wDosDate: USHORT,
47         wDosTime: USHORT,
48         pvtime: *mut DOUBLE,
49     ) -> INT;
VariantTimeToDosDateTime( vtime: DOUBLE, pwDosDate: *mut USHORT, pwDosTime: *mut USHORT, ) -> INT50     pub fn VariantTimeToDosDateTime(
51         vtime: DOUBLE,
52         pwDosDate: *mut USHORT,
53         pwDosTime: *mut USHORT,
54     ) -> INT;
SystemTimeToVariantTime( lpSystemTime: LPSYSTEMTIME, pvtime: *mut DOUBLE, ) -> INT55     pub fn SystemTimeToVariantTime(
56         lpSystemTime: LPSYSTEMTIME,
57         pvtime: *mut DOUBLE,
58     ) -> INT;
VariantTimeToSystemTime( vtime: DOUBLE, lpSystemTime: LPSYSTEMTIME, ) -> INT59     pub fn VariantTimeToSystemTime(
60         vtime: DOUBLE,
61         lpSystemTime: LPSYSTEMTIME,
62     ) -> INT;
SafeArrayAccessData( psa: *mut SAFEARRAY, ppvData: *mut *mut c_void, ) -> HRESULT63     pub fn SafeArrayAccessData(
64         psa: *mut SAFEARRAY,
65         ppvData: *mut *mut c_void,
66     ) -> HRESULT;
SafeArrayUnaccessData( psa: *mut SAFEARRAY, ) -> HRESULT67     pub fn SafeArrayUnaccessData(
68         psa: *mut SAFEARRAY,
69     ) -> HRESULT;
SafeArrayCreateVector( vt: VARTYPE, lLbound: LONG, cElements: ULONG, ) -> *mut SAFEARRAY70     pub fn SafeArrayCreateVector(
71         vt: VARTYPE,
72         lLbound: LONG,
73         cElements: ULONG,
74     ) -> *mut SAFEARRAY;
SafeArrayGetLBound( psa: *mut SAFEARRAY, nDim: UINT, plLbound: *mut LONG ) -> HRESULT75     pub fn SafeArrayGetLBound(
76         psa: *mut SAFEARRAY,
77         nDim: UINT,
78         plLbound: *mut LONG
79     ) -> HRESULT;
SafeArrayGetUBound( psa: *mut SAFEARRAY, nDim: UINT, plUbound: *mut LONG ) -> HRESULT80     pub fn SafeArrayGetUBound(
81         psa: *mut SAFEARRAY,
82         nDim: UINT,
83         plUbound: *mut LONG
84     ) -> HRESULT;
SafeArrayDestroy( psa: *mut SAFEARRAY ) -> HRESULT85     pub fn SafeArrayDestroy(
86         psa: *mut SAFEARRAY
87     ) -> HRESULT;
VariantInit( pvarg: *mut VARIANTARG, )88     pub fn VariantInit(
89         pvarg: *mut VARIANTARG,
90     );
VariantClear( pvarg: *mut VARIANTARG, ) -> HRESULT91     pub fn VariantClear(
92         pvarg: *mut VARIANTARG,
93     ) -> HRESULT;
VariantCopy( pvargDest: *mut VARIANTARG, pvargSrc: *const VARIANTARG, ) -> HRESULT94     pub fn VariantCopy(
95         pvargDest: *mut VARIANTARG,
96         pvargSrc: *const VARIANTARG,
97     ) -> HRESULT;
VariantCopyInd( pvarDest: *mut VARIANT, pvargSrc: *const VARIANTARG, ) -> HRESULT98     pub fn VariantCopyInd(
99         pvarDest: *mut VARIANT,
100         pvargSrc: *const VARIANTARG,
101     ) -> HRESULT;
VariantChangeType( pvargDest: *mut VARIANTARG, pvarSrc: *const VARIANTARG, wFlags: USHORT, vt: VARTYPE, ) -> HRESULT102     pub fn VariantChangeType(
103         pvargDest: *mut VARIANTARG,
104         pvarSrc: *const VARIANTARG,
105         wFlags: USHORT,
106         vt: VARTYPE,
107     ) -> HRESULT;
VariantChangeTypeEx( pvargDest: *mut VARIANTARG, pvarSrc: *const VARIANTARG, lcid: LCID, wFlags: USHORT, vt: VARTYPE, ) -> HRESULT108     pub fn VariantChangeTypeEx(
109         pvargDest: *mut VARIANTARG,
110         pvarSrc: *const VARIANTARG,
111         lcid: LCID,
112         wFlags: USHORT,
113         vt: VARTYPE,
114     ) -> HRESULT;
VarUI1FromI2( sIn: SHORT, pbOut: *mut BYTE, )115     pub fn VarUI1FromI2(
116         sIn: SHORT,
117         pbOut: *mut BYTE,
118     );
VarUI1FromI4( lIn: LONG, pbOut: *mut BYTE, )119     pub fn VarUI1FromI4(
120         lIn: LONG,
121         pbOut: *mut BYTE,
122     );
VarUI1FromI8( i64In: LONG64, pbOut: *mut BYTE, )123     pub fn VarUI1FromI8(
124         i64In: LONG64,
125         pbOut: *mut BYTE,
126     );
VarUI1FromR4( fltIn: FLOAT, pbOut: *mut BYTE, )127     pub fn VarUI1FromR4(
128         fltIn: FLOAT,
129         pbOut: *mut BYTE,
130     );
VarUI1FromR8( dblIn: DOUBLE, pbOut: *mut BYTE, )131     pub fn VarUI1FromR8(
132         dblIn: DOUBLE,
133         pbOut: *mut BYTE,
134     );
VarUI1FromDate( dateIn: DATE, pbOut: *mut BYTE, )135     pub fn VarUI1FromDate(
136         dateIn: DATE,
137         pbOut: *mut BYTE,
138     );
VarUI1FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pbOut: *mut BYTE, )139     pub fn VarUI1FromStr(
140         strIn: LPCOLESTR,
141         lcid: LCID,
142         dwFlags: ULONG,
143         pbOut: *mut BYTE,
144     );
VarUI1FromI1( cIn: CHAR, pbOut: *mut BYTE, )145     pub fn VarUI1FromI1(
146         cIn: CHAR,
147         pbOut: *mut BYTE,
148     );
VarUI1FromUI2( uiIn: USHORT, pbOut: *mut BYTE, )149     pub fn VarUI1FromUI2(
150         uiIn: USHORT,
151         pbOut: *mut BYTE,
152     );
VarUI1FromUI4( ulIn: ULONG, pbOut: *mut BYTE, )153     pub fn VarUI1FromUI4(
154         ulIn: ULONG,
155         pbOut: *mut BYTE,
156     );
VarUI1FromUI8( ui64In: ULONG64, pbOut: *mut BYTE, )157     pub fn VarUI1FromUI8(
158         ui64In: ULONG64,
159         pbOut: *mut BYTE,
160     );
VarUI1FromDec( pdecIn: *const DECIMAL, pbOut: *mut BYTE, )161     pub fn VarUI1FromDec(
162         pdecIn: *const DECIMAL,
163         pbOut: *mut BYTE,
164     );
VarI2FromUI1( bIn: BYTE, psOut: *mut SHORT, )165     pub fn VarI2FromUI1(
166         bIn: BYTE,
167         psOut: *mut SHORT,
168     );
VarI2FromI4( lIn: LONG, psOut: *mut SHORT, )169     pub fn VarI2FromI4(
170         lIn: LONG,
171         psOut: *mut SHORT,
172     );
VarI2FromI8( i64In: LONG64, psOut: *mut SHORT, )173     pub fn VarI2FromI8(
174         i64In: LONG64,
175         psOut: *mut SHORT,
176     );
VarI2FromR4( fltIn: FLOAT, psOut: *mut SHORT, )177     pub fn VarI2FromR4(
178         fltIn: FLOAT,
179         psOut: *mut SHORT,
180     );
VarI2FromR8( dblIn: DOUBLE, psOut: *mut SHORT, )181     pub fn VarI2FromR8(
182         dblIn: DOUBLE,
183         psOut: *mut SHORT,
184     );
VarI2FromDate( dateIn: DATE, psOut: *mut SHORT, )185     pub fn VarI2FromDate(
186         dateIn: DATE,
187         psOut: *mut SHORT,
188     );
VarI2FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, psOut: *mut SHORT, )189     pub fn VarI2FromStr(
190         strIn: LPCOLESTR,
191         lcid: LCID,
192         dwFlags: ULONG,
193         psOut: *mut SHORT,
194     );
VarI2FromI1( cIn: CHAR, psOut: *mut SHORT, )195     pub fn VarI2FromI1(
196         cIn: CHAR,
197         psOut: *mut SHORT,
198     );
VarI2FromUI2( uiIn: USHORT, psOut: *mut SHORT, )199     pub fn VarI2FromUI2(
200         uiIn: USHORT,
201         psOut: *mut SHORT,
202     );
VarI2FromUI4( ulIn: ULONG, psOut: *mut SHORT, )203     pub fn VarI2FromUI4(
204         ulIn: ULONG,
205         psOut: *mut SHORT,
206     );
VarI2FromUI8( ui64In: ULONG64, psOut: *mut SHORT, )207     pub fn VarI2FromUI8(
208         ui64In: ULONG64,
209         psOut: *mut SHORT,
210     );
VarI2FromDec( pdecIn: *const DECIMAL, psOut: *mut SHORT, )211     pub fn VarI2FromDec(
212         pdecIn: *const DECIMAL,
213         psOut: *mut SHORT,
214     );
VarI4FromUI1( bIn: BYTE, plOut: *mut LONG, )215     pub fn VarI4FromUI1(
216         bIn: BYTE,
217         plOut: *mut LONG,
218     );
VarI4FromI2( sIn: SHORT, plOut: *mut LONG, )219     pub fn VarI4FromI2(
220         sIn: SHORT,
221         plOut: *mut LONG,
222     );
VarI4FromI8( i64In: LONG64, plOut: *mut LONG, )223     pub fn VarI4FromI8(
224         i64In: LONG64,
225         plOut: *mut LONG,
226     );
VarI4FromR4( fltIn: FLOAT, plOut: *mut LONG, )227     pub fn VarI4FromR4(
228         fltIn: FLOAT,
229         plOut: *mut LONG,
230     );
VarI4FromR8( dblIn: DOUBLE, plOut: *mut LONG, )231     pub fn VarI4FromR8(
232         dblIn: DOUBLE,
233         plOut: *mut LONG,
234     );
VarI4FromDate( dateIn: DATE, plOut: *mut LONG, )235     pub fn VarI4FromDate(
236         dateIn: DATE,
237         plOut: *mut LONG,
238     );
VarI4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, plOut: *mut LONG, )239     pub fn VarI4FromStr(
240         strIn: LPCOLESTR,
241         lcid: LCID,
242         dwFlags: ULONG,
243         plOut: *mut LONG,
244     );
VarI4FromI1( cIn: CHAR, plOut: *mut LONG, )245     pub fn VarI4FromI1(
246         cIn: CHAR,
247         plOut: *mut LONG,
248     );
VarI4FromUI2( uiIn: USHORT, plOut: *mut LONG, )249     pub fn VarI4FromUI2(
250         uiIn: USHORT,
251         plOut: *mut LONG,
252     );
VarI4FromUI4( ulIn: ULONG, plOut: *mut LONG, )253     pub fn VarI4FromUI4(
254         ulIn: ULONG,
255         plOut: *mut LONG,
256     );
VarI4FromUI8( ui64In: ULONG64, plOut: *mut LONG, )257     pub fn VarI4FromUI8(
258         ui64In: ULONG64,
259         plOut: *mut LONG,
260     );
VarI4FromDec( pdecIn: *const DECIMAL, plOut: *mut LONG, )261     pub fn VarI4FromDec(
262         pdecIn: *const DECIMAL,
263         plOut: *mut LONG,
264     );
VarI8FromUI1( bIn: BYTE, pi64Out: *mut LONG64, )265     pub fn VarI8FromUI1(
266         bIn: BYTE,
267         pi64Out: *mut LONG64,
268     );
VarI8FromI2( sIn: SHORT, pi64Out: *mut LONG64, )269     pub fn VarI8FromI2(
270         sIn: SHORT,
271         pi64Out: *mut LONG64,
272     );
VarI8FromR4( fltIn: FLOAT, pi64Out: *mut LONG64, )273     pub fn VarI8FromR4(
274         fltIn: FLOAT,
275         pi64Out: *mut LONG64,
276     );
VarI8FromR8( dblIn: DOUBLE, pi64Out: *mut LONG64, )277     pub fn VarI8FromR8(
278         dblIn: DOUBLE,
279         pi64Out: *mut LONG64,
280     );
VarI8FromDate( dateIn: DATE, pi64Out: *mut LONG64, )281     pub fn VarI8FromDate(
282         dateIn: DATE,
283         pi64Out: *mut LONG64,
284     );
VarI8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pi64Out: *mut LONG64, )285     pub fn VarI8FromStr(
286         strIn: LPCOLESTR,
287         lcid: LCID,
288         dwFlags: ULONG,
289         pi64Out: *mut LONG64,
290     );
VarI8FromI1( cIn: CHAR, pi64Out: *mut LONG64, )291     pub fn VarI8FromI1(
292         cIn: CHAR,
293         pi64Out: *mut LONG64,
294     );
VarI8FromUI2( uiIn: USHORT, pi64Out: *mut LONG64, )295     pub fn VarI8FromUI2(
296         uiIn: USHORT,
297         pi64Out: *mut LONG64,
298     );
VarI8FromUI4( ulIn: ULONG, pi64Out: *mut LONG64, )299     pub fn VarI8FromUI4(
300         ulIn: ULONG,
301         pi64Out: *mut LONG64,
302     );
VarI8FromUI8( ui64In: ULONG64, pi64Out: *mut LONG64, )303     pub fn VarI8FromUI8(
304         ui64In: ULONG64,
305         pi64Out: *mut LONG64,
306     );
VarI8FromDec( pdecIn: *const DECIMAL, pi64Out: *mut LONG64, )307     pub fn VarI8FromDec(
308         pdecIn: *const DECIMAL,
309         pi64Out: *mut LONG64,
310     );
VarR4FromUI1( bIn: BYTE, pfltOut: *mut FLOAT, )311     pub fn VarR4FromUI1(
312         bIn: BYTE,
313         pfltOut: *mut FLOAT,
314     );
VarR4FromI2( sIn: SHORT, pfltOut: *mut FLOAT, )315     pub fn VarR4FromI2(
316         sIn: SHORT,
317         pfltOut: *mut FLOAT,
318     );
VarR4FromI4( lIn: LONG, pfltOut: *mut FLOAT, )319     pub fn VarR4FromI4(
320         lIn: LONG,
321         pfltOut: *mut FLOAT,
322     );
VarR4FromI8( i64In: LONG64, pfltOut: *mut FLOAT, )323     pub fn VarR4FromI8(
324         i64In: LONG64,
325         pfltOut: *mut FLOAT,
326     );
VarR4FromR8( dblIn: DOUBLE, pfltOut: *mut FLOAT, )327     pub fn VarR4FromR8(
328         dblIn: DOUBLE,
329         pfltOut: *mut FLOAT,
330     );
VarR4FromDate( dateIn: DATE, pfltOut: *mut FLOAT, )331     pub fn VarR4FromDate(
332         dateIn: DATE,
333         pfltOut: *mut FLOAT,
334     );
VarR4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pfltOut: *mut FLOAT, )335     pub fn VarR4FromStr(
336         strIn: LPCOLESTR,
337         lcid: LCID,
338         dwFlags: ULONG,
339         pfltOut: *mut FLOAT,
340     );
VarR4FromI1( cIn: CHAR, pfltOut: *mut FLOAT, )341     pub fn VarR4FromI1(
342         cIn: CHAR,
343         pfltOut: *mut FLOAT,
344     );
VarR4FromUI2( uiIn: USHORT, pfltOut: *mut FLOAT, )345     pub fn VarR4FromUI2(
346         uiIn: USHORT,
347         pfltOut: *mut FLOAT,
348     );
VarR4FromUI4( ulIn: ULONG, pfltOut: *mut FLOAT, )349     pub fn VarR4FromUI4(
350         ulIn: ULONG,
351         pfltOut: *mut FLOAT,
352     );
VarR4FromUI8( ui64In: ULONG64, pfltOut: *mut FLOAT, )353     pub fn VarR4FromUI8(
354         ui64In: ULONG64,
355         pfltOut: *mut FLOAT,
356     );
VarR4FromDec( pdecIn: *const DECIMAL, pfltOut: *mut FLOAT, )357     pub fn VarR4FromDec(
358         pdecIn: *const DECIMAL,
359         pfltOut: *mut FLOAT,
360     );
VarR8FromUI1( bIn: BYTE, pdblOut: *mut DOUBLE, )361     pub fn VarR8FromUI1(
362         bIn: BYTE,
363         pdblOut: *mut DOUBLE,
364     );
VarR8FromI2( sIn: SHORT, pdblOut: *mut DOUBLE, )365     pub fn VarR8FromI2(
366         sIn: SHORT,
367         pdblOut: *mut DOUBLE,
368     );
VarR8FromI4( lIn: LONG, pdblOut: *mut DOUBLE, )369     pub fn VarR8FromI4(
370         lIn: LONG,
371         pdblOut: *mut DOUBLE,
372     );
VarR8FromI8( i64In: LONG64, pdblOut: *mut DOUBLE, )373     pub fn VarR8FromI8(
374         i64In: LONG64,
375         pdblOut: *mut DOUBLE,
376     );
VarR8FromR4( fltIn: FLOAT, pdblOut: *mut DOUBLE, )377     pub fn VarR8FromR4(
378         fltIn: FLOAT,
379         pdblOut: *mut DOUBLE,
380     );
VarR8FromDate( dateIn: DATE, pdblOut: *mut DOUBLE, )381     pub fn VarR8FromDate(
382         dateIn: DATE,
383         pdblOut: *mut DOUBLE,
384     );
VarR8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdblOut: *mut DOUBLE, )385     pub fn VarR8FromStr(
386         strIn: LPCOLESTR,
387         lcid: LCID,
388         dwFlags: ULONG,
389         pdblOut: *mut DOUBLE,
390     );
VarR8FromI1( cIn: CHAR, pdblOut: *mut DOUBLE, )391     pub fn VarR8FromI1(
392         cIn: CHAR,
393         pdblOut: *mut DOUBLE,
394     );
VarR8FromUI2( uiIn: USHORT, pdblOut: *mut DOUBLE, )395     pub fn VarR8FromUI2(
396         uiIn: USHORT,
397         pdblOut: *mut DOUBLE,
398     );
VarR8FromUI4( ulIn: ULONG, pdblOut: *mut DOUBLE, )399     pub fn VarR8FromUI4(
400         ulIn: ULONG,
401         pdblOut: *mut DOUBLE,
402     );
VarR8FromUI8( ui64In: ULONG64, pdblOut: *mut DOUBLE, )403     pub fn VarR8FromUI8(
404         ui64In: ULONG64,
405         pdblOut: *mut DOUBLE,
406     );
VarR8FromDec( pdecIn: *const DECIMAL, pdblOut: *mut DOUBLE, )407     pub fn VarR8FromDec(
408         pdecIn: *const DECIMAL,
409         pdblOut: *mut DOUBLE,
410     );
VarDateFromUI1( bIn: BYTE, pdateOut: *mut DATE, )411     pub fn VarDateFromUI1(
412         bIn: BYTE,
413         pdateOut: *mut DATE,
414     );
VarDateFromI2( sIn: SHORT, pdateOut: *mut DATE, )415     pub fn VarDateFromI2(
416         sIn: SHORT,
417         pdateOut: *mut DATE,
418     );
VarDateFromI4( lIn: LONG, pdateOut: *mut DATE, )419     pub fn VarDateFromI4(
420         lIn: LONG,
421         pdateOut: *mut DATE,
422     );
VarDateFromI8( i64In: LONG64, pdateOut: *mut DATE, )423     pub fn VarDateFromI8(
424         i64In: LONG64,
425         pdateOut: *mut DATE,
426     );
VarDateFromR4( fltIn: FLOAT, pdateOut: *mut DATE, )427     pub fn VarDateFromR4(
428         fltIn: FLOAT,
429         pdateOut: *mut DATE,
430     );
VarDateFromR8( dblIn: DOUBLE, pdateOut: *mut DATE, )431     pub fn VarDateFromR8(
432         dblIn: DOUBLE,
433         pdateOut: *mut DATE,
434     );
VarDateFromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdateOut: *mut DATE, )435     pub fn VarDateFromStr(
436         strIn: LPCOLESTR,
437         lcid: LCID,
438         dwFlags: ULONG,
439         pdateOut: *mut DATE,
440     );
VarDateFromI1( cIn: CHAR, pdateOut: *mut DATE, )441     pub fn VarDateFromI1(
442         cIn: CHAR,
443         pdateOut: *mut DATE,
444     );
VarDateFromUI2( uiIn: USHORT, pdateOut: *mut DATE, )445     pub fn VarDateFromUI2(
446         uiIn: USHORT,
447         pdateOut: *mut DATE,
448     );
VarDateFromUI4( ulIn: ULONG, pdateOut: *mut DATE, )449     pub fn VarDateFromUI4(
450         ulIn: ULONG,
451         pdateOut: *mut DATE,
452     );
VarDateFromUI8( ui64In: ULONG64, pdateOut: *mut DATE, )453     pub fn VarDateFromUI8(
454         ui64In: ULONG64,
455         pdateOut: *mut DATE,
456     );
VarDateFromDec( pdecIn: *const DECIMAL, pdateOut: *mut DATE, )457     pub fn VarDateFromDec(
458         pdecIn: *const DECIMAL,
459         pdateOut: *mut DATE,
460     );
VarBstrFromUI1( bVal: BYTE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )461     pub fn VarBstrFromUI1(
462         bVal: BYTE,
463         lcid: LCID,
464         dwFlags: ULONG,
465         pbstrOut: *mut BSTR,
466     );
VarBstrFromI2( iVal: SHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )467     pub fn VarBstrFromI2(
468         iVal: SHORT,
469         lcid: LCID,
470         dwFlags: ULONG,
471         pbstrOut: *mut BSTR,
472     );
VarBstrFromI4( lIn: LONG, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )473     pub fn VarBstrFromI4(
474         lIn: LONG,
475         lcid: LCID,
476         dwFlags: ULONG,
477         pbstrOut: *mut BSTR,
478     );
VarBstrFromI8( i64In: LONG64, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )479     pub fn VarBstrFromI8(
480         i64In: LONG64,
481         lcid: LCID,
482         dwFlags: ULONG,
483         pbstrOut: *mut BSTR,
484     );
VarBstrFromR4( fltIn: FLOAT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )485     pub fn VarBstrFromR4(
486         fltIn: FLOAT,
487         lcid: LCID,
488         dwFlags: ULONG,
489         pbstrOut: *mut BSTR,
490     );
VarBstrFromR8( dblIn: DOUBLE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )491     pub fn VarBstrFromR8(
492         dblIn: DOUBLE,
493         lcid: LCID,
494         dwFlags: ULONG,
495         pbstrOut: *mut BSTR,
496     );
VarBstrFromDate( dateIn: DATE, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )497     pub fn VarBstrFromDate(
498         dateIn: DATE,
499         lcid: LCID,
500         dwFlags: ULONG,
501         pbstrOut: *mut BSTR,
502     );
VarBstrFromI1( cIn: CHAR, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )503     pub fn VarBstrFromI1(
504         cIn: CHAR,
505         lcid: LCID,
506         dwFlags: ULONG,
507         pbstrOut: *mut BSTR,
508     );
VarBstrFromUI2( uiIn: USHORT, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )509     pub fn VarBstrFromUI2(
510         uiIn: USHORT,
511         lcid: LCID,
512         dwFlags: ULONG,
513         pbstrOut: *mut BSTR,
514     );
VarBstrFromUI4( ulIn: ULONG, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )515     pub fn VarBstrFromUI4(
516         ulIn: ULONG,
517         lcid: LCID,
518         dwFlags: ULONG,
519         pbstrOut: *mut BSTR,
520     );
VarBstrFromUI8( ui64In: ULONG64, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )521     pub fn VarBstrFromUI8(
522         ui64In: ULONG64,
523         lcid: LCID,
524         dwFlags: ULONG,
525         pbstrOut: *mut BSTR,
526     );
VarBstrFromDec( pdecIn: *const DECIMAL, lcid: LCID, dwFlags: ULONG, pbstrOut: *mut BSTR, )527     pub fn VarBstrFromDec(
528         pdecIn: *const DECIMAL,
529         lcid: LCID,
530         dwFlags: ULONG,
531         pbstrOut: *mut BSTR,
532     );
VarUI2FromUI1( bIn: BYTE, puiOut: *mut USHORT, )533     pub fn VarUI2FromUI1(
534         bIn: BYTE,
535         puiOut: *mut USHORT,
536     );
VarUI2FromI2( uiIn: SHORT, puiOut: *mut USHORT, )537     pub fn VarUI2FromI2(
538         uiIn: SHORT,
539         puiOut: *mut USHORT,
540     );
VarUI2FromI4( lIn: LONG, puiOut: *mut USHORT, )541     pub fn VarUI2FromI4(
542         lIn: LONG,
543         puiOut: *mut USHORT,
544     );
VarUI2FromI8( i64In: LONG64, puiOut: *mut USHORT, )545     pub fn VarUI2FromI8(
546         i64In: LONG64,
547         puiOut: *mut USHORT,
548     );
VarUI2FromR4( fltIn: FLOAT, puiOut: *mut USHORT, )549     pub fn VarUI2FromR4(
550         fltIn: FLOAT,
551         puiOut: *mut USHORT,
552     );
VarUI2FromR8( dblIn: DOUBLE, puiOut: *mut USHORT, )553     pub fn VarUI2FromR8(
554         dblIn: DOUBLE,
555         puiOut: *mut USHORT,
556     );
VarUI2FromDate( dateIn: DATE, puiOut: *mut USHORT, )557     pub fn VarUI2FromDate(
558         dateIn: DATE,
559         puiOut: *mut USHORT,
560     );
VarUI2FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, puiOut: *mut USHORT, )561     pub fn VarUI2FromStr(
562         strIn: LPCOLESTR,
563         lcid: LCID,
564         dwFlags: ULONG,
565         puiOut: *mut USHORT,
566     );
VarUI2FromI1( cIn: CHAR, puiOut: *mut USHORT, )567     pub fn VarUI2FromI1(
568         cIn: CHAR,
569         puiOut: *mut USHORT,
570     );
VarUI2FromUI4( ulIn: ULONG, puiOut: *mut USHORT, )571     pub fn VarUI2FromUI4(
572         ulIn: ULONG,
573         puiOut: *mut USHORT,
574     );
VarUI2FromUI8( i64In: ULONG64, puiOut: *mut USHORT, )575     pub fn VarUI2FromUI8(
576         i64In: ULONG64,
577         puiOut: *mut USHORT,
578     );
VarUI2FromDec( pdecIn: *const DECIMAL, puiOut: *mut USHORT, )579     pub fn VarUI2FromDec(
580         pdecIn: *const DECIMAL,
581         puiOut: *mut USHORT,
582     );
VarUI4FromUI1( bIn: BYTE, pulOut: *mut ULONG, )583     pub fn VarUI4FromUI1(
584         bIn: BYTE,
585         pulOut: *mut ULONG,
586     );
VarUI4FromI2( uiIn: SHORT, pulOut: *mut ULONG, )587     pub fn VarUI4FromI2(
588         uiIn: SHORT,
589         pulOut: *mut ULONG,
590     );
VarUI4FromI4( lIn: LONG, pulOut: *mut ULONG, )591     pub fn VarUI4FromI4(
592         lIn: LONG,
593         pulOut: *mut ULONG,
594     );
VarUI4FromI8( i64In: LONG64, plOut: *mut ULONG, )595     pub fn VarUI4FromI8(
596         i64In: LONG64,
597         plOut: *mut ULONG,
598     );
VarUI4FromR4( fltIn: FLOAT, pulOut: *mut ULONG, )599     pub fn VarUI4FromR4(
600         fltIn: FLOAT,
601         pulOut: *mut ULONG,
602     );
VarUI4FromR8( dblIn: DOUBLE, pulOut: *mut ULONG, )603     pub fn VarUI4FromR8(
604         dblIn: DOUBLE,
605         pulOut: *mut ULONG,
606     );
VarUI4FromDate( dateIn: DATE, pulOut: *mut ULONG, )607     pub fn VarUI4FromDate(
608         dateIn: DATE,
609         pulOut: *mut ULONG,
610     );
VarUI4FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pulOut: *mut ULONG, )611     pub fn VarUI4FromStr(
612         strIn: LPCOLESTR,
613         lcid: LCID,
614         dwFlags: ULONG,
615         pulOut: *mut ULONG,
616     );
VarUI4FromI1( cIn: CHAR, pulOut: *mut ULONG, )617     pub fn VarUI4FromI1(
618         cIn: CHAR,
619         pulOut: *mut ULONG,
620     );
VarUI4FromUI2( uiIn: USHORT, pulOut: *mut ULONG, )621     pub fn VarUI4FromUI2(
622         uiIn: USHORT,
623         pulOut: *mut ULONG,
624     );
VarUI4FromUI8( ui64In: ULONG64, plOut: *mut ULONG, )625     pub fn VarUI4FromUI8(
626         ui64In: ULONG64,
627         plOut: *mut ULONG,
628     );
VarUI4FromDec( pdecIn: *const DECIMAL, pulOut: *mut ULONG, )629     pub fn VarUI4FromDec(
630         pdecIn: *const DECIMAL,
631         pulOut: *mut ULONG,
632     );
VarUI8FromUI1( bIn: BYTE, pi64Out: *mut ULONG64, )633     pub fn VarUI8FromUI1(
634         bIn: BYTE,
635         pi64Out: *mut ULONG64,
636     );
VarUI8FromI2( sIn: SHORT, pi64Out: *mut ULONG64, )637     pub fn VarUI8FromI2(
638         sIn: SHORT,
639         pi64Out: *mut ULONG64,
640     );
VarUI8FromI4( lIn: LONG, pi64Out: *mut ULONG64, )641     pub fn VarUI8FromI4(
642         lIn: LONG,
643         pi64Out: *mut ULONG64,
644     );
VarUI8FromI8( ui64In: LONG64, pi64Out: *mut ULONG64, )645     pub fn VarUI8FromI8(
646         ui64In: LONG64,
647         pi64Out: *mut ULONG64,
648     );
VarUI8FromR4( fltIn: FLOAT, pi64Out: *mut ULONG64, )649     pub fn VarUI8FromR4(
650         fltIn: FLOAT,
651         pi64Out: *mut ULONG64,
652     );
VarUI8FromR8( dblIn: DOUBLE, pi64Out: *mut ULONG64, )653     pub fn VarUI8FromR8(
654         dblIn: DOUBLE,
655         pi64Out: *mut ULONG64,
656     );
VarUI8FromDate( dateIn: DATE, pi64Out: *mut ULONG64, )657     pub fn VarUI8FromDate(
658         dateIn: DATE,
659         pi64Out: *mut ULONG64,
660     );
VarUI8FromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pi64Out: *mut ULONG64, )661     pub fn VarUI8FromStr(
662         strIn: LPCOLESTR,
663         lcid: LCID,
664         dwFlags: ULONG,
665         pi64Out: *mut ULONG64,
666     );
VarUI8FromI1( cIn: CHAR, pi64Out: *mut ULONG64, )667     pub fn VarUI8FromI1(
668         cIn: CHAR,
669         pi64Out: *mut ULONG64,
670     );
VarUI8FromUI2( uiIn: USHORT, pi64Out: *mut ULONG64, )671     pub fn VarUI8FromUI2(
672         uiIn: USHORT,
673         pi64Out: *mut ULONG64,
674     );
VarUI8FromUI4( ulIn: ULONG, pi64Out: *mut ULONG64, )675     pub fn VarUI8FromUI4(
676         ulIn: ULONG,
677         pi64Out: *mut ULONG64,
678     );
VarUI8FromDec( pdecIn: *const DECIMAL, pi64Out: *mut ULONG64, )679     pub fn VarUI8FromDec(
680         pdecIn: *const DECIMAL,
681         pi64Out: *mut ULONG64,
682     );
VarDecFromUI1( bIn: BYTE, pdecOut: *mut DECIMAL, )683     pub fn VarDecFromUI1(
684         bIn: BYTE,
685         pdecOut: *mut DECIMAL,
686     );
VarDecFromI2( uiIn: SHORT, pdecOut: *mut DECIMAL, )687     pub fn VarDecFromI2(
688         uiIn: SHORT,
689         pdecOut: *mut DECIMAL,
690     );
VarDecFromI4( lIn: LONG, pdecOut: *mut DECIMAL, )691     pub fn VarDecFromI4(
692         lIn: LONG,
693         pdecOut: *mut DECIMAL,
694     );
VarDecFromI8( i64In: LONG64, pdecOut: *mut DECIMAL, )695     pub fn VarDecFromI8(
696         i64In: LONG64,
697         pdecOut: *mut DECIMAL,
698     );
VarDecFromR4( fltIn: FLOAT, pdecOut: *mut DECIMAL, )699     pub fn VarDecFromR4(
700         fltIn: FLOAT,
701         pdecOut: *mut DECIMAL,
702     );
VarDecFromR8( dblIn: DOUBLE, pdecOut: *mut DECIMAL, )703     pub fn VarDecFromR8(
704         dblIn: DOUBLE,
705         pdecOut: *mut DECIMAL,
706     );
VarDecFromDate( dateIn: DATE, pdecOut: *mut DECIMAL, )707     pub fn VarDecFromDate(
708         dateIn: DATE,
709         pdecOut: *mut DECIMAL,
710     );
VarDecFromStr( strIn: LPCOLESTR, lcid: LCID, dwFlags: ULONG, pdecOut: *mut DECIMAL, )711     pub fn VarDecFromStr(
712         strIn: LPCOLESTR,
713         lcid: LCID,
714         dwFlags: ULONG,
715         pdecOut: *mut DECIMAL,
716     );
VarDecFromI1( cIn: CHAR, pdecOut: *mut DECIMAL, )717     pub fn VarDecFromI1(
718         cIn: CHAR,
719         pdecOut: *mut DECIMAL,
720     );
VarDecFromUI2( uiIn: USHORT, pdecOut: *mut DECIMAL, )721     pub fn VarDecFromUI2(
722         uiIn: USHORT,
723         pdecOut: *mut DECIMAL,
724     );
VarDecFromUI4( ulIn: ULONG, pdecOut: *mut DECIMAL, )725     pub fn VarDecFromUI4(
726         ulIn: ULONG,
727         pdecOut: *mut DECIMAL,
728     );
VarDecFromUI8( ui64In: ULONG64, pdecOut: *mut DECIMAL, )729     pub fn VarDecFromUI8(
730         ui64In: ULONG64,
731         pdecOut: *mut DECIMAL,
732     );
VarDecAdd( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )733     pub fn VarDecAdd(
734         pdecLeft: LPDECIMAL,
735         pdecRight: LPDECIMAL,
736         pdecResult: LPDECIMAL,
737     );
VarDecDiv( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )738     pub fn VarDecDiv(
739         pdecLeft: LPDECIMAL,
740         pdecRight: LPDECIMAL,
741         pdecResult: LPDECIMAL,
742     );
VarDecMul( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )743     pub fn VarDecMul(
744         pdecLeft: LPDECIMAL,
745         pdecRight: LPDECIMAL,
746         pdecResult: LPDECIMAL,
747     );
VarDecSub( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, pdecResult: LPDECIMAL, )748     pub fn VarDecSub(
749         pdecLeft: LPDECIMAL,
750         pdecRight: LPDECIMAL,
751         pdecResult: LPDECIMAL,
752     );
VarDecAbs( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )753     pub fn VarDecAbs(
754         pdecIn: LPDECIMAL,
755         pdecResult: LPDECIMAL,
756     );
VarDecFix( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )757     pub fn VarDecFix(
758         pdecIn: LPDECIMAL,
759         pdecResult: LPDECIMAL,
760     );
VarDecInt( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )761     pub fn VarDecInt(
762         pdecIn: LPDECIMAL,
763         pdecResult: LPDECIMAL,
764     );
VarDecNeg( pdecIn: LPDECIMAL, pdecResult: LPDECIMAL, )765     pub fn VarDecNeg(
766         pdecIn: LPDECIMAL,
767         pdecResult: LPDECIMAL,
768     );
VarDecRound( pdecIn: LPDECIMAL, cDecimals: c_int, pdecResult: LPDECIMAL, )769     pub fn VarDecRound(
770         pdecIn: LPDECIMAL,
771         cDecimals: c_int,
772         pdecResult: LPDECIMAL,
773     );
VarDecCmp( pdecLeft: LPDECIMAL, pdecRight: LPDECIMAL, )774     pub fn VarDecCmp(
775         pdecLeft: LPDECIMAL,
776         pdecRight: LPDECIMAL,
777     );
VarDecCmpR8( pdecLeft: LPDECIMAL, dblRight: c_double, )778     pub fn VarDecCmpR8(
779         pdecLeft: LPDECIMAL,
780         dblRight: c_double,
781     );
VarBstrCat( bstrLeft: BSTR, bstrRight: BSTR, pbstrResult: LPBSTR, )782     pub fn VarBstrCat(
783         bstrLeft: BSTR,
784         bstrRight: BSTR,
785         pbstrResult: LPBSTR,
786     );
VarBstrCmp( bstrLeft: BSTR, bstrRight: BSTR, lcid: LCID, dwFlags: ULONG, )787     pub fn VarBstrCmp(
788         bstrLeft: BSTR,
789         bstrRight: BSTR,
790         lcid: LCID,
791         dwFlags: ULONG,
792     );
VarR8Pow( dblLeft: c_double, dblRight: c_double, pdblResult: *mut c_double, )793     pub fn VarR8Pow(
794         dblLeft: c_double,
795         dblRight: c_double,
796         pdblResult: *mut c_double,
797     );
VarR4CmpR8( fltLeft: c_float, dblRight: c_double, )798     pub fn VarR4CmpR8(
799         fltLeft: c_float,
800         dblRight: c_double,
801     );
VarR8Round( dblIn: c_double, cDecimals: c_int, pdblResult: *mut c_double, )802     pub fn VarR8Round(
803         dblIn: c_double,
804         cDecimals: c_int,
805         pdblResult: *mut c_double,
806     );
GetAltMonthNames( lcid: LCID, prgp: *mut LPOLESTR, )807     pub fn GetAltMonthNames(
808         lcid: LCID,
809         prgp: *mut LPOLESTR,
810     );
811 }
812 pub type DISPID = LONG;
813 pub type MEMBERID = DISPID;
814 pub const MEMBERID_NIL: MEMBERID = DISPID_UNKNOWN;
815 pub const DISPATCH_METHOD: WORD = 0x1;
816 pub const DISPATCH_PROPERTYGET: WORD = 0x2;
817 pub const DISPATCH_PROPERTYPUT: WORD = 0x4;
818 pub const DISPATCH_PROPERTYPUTREF: WORD = 0x8;
819 ENUM!{enum REGKIND {
820     REGKIND_DEFAULT = 0,
821     REGKIND_REGISTER,
822     REGKIND_NONE,
823 }}
824 extern "system" {
LoadTypeLibEx( szFile: LPCOLESTR, regkind: REGKIND, pptlib: *mut *mut ITypeLib, ) -> HRESULT825     pub fn LoadTypeLibEx(
826         szFile: LPCOLESTR,
827         regkind: REGKIND,
828         pptlib: *mut *mut ITypeLib,
829     ) -> HRESULT;
RevokeActiveObject( dwRegister: DWORD, pvReserved: *mut c_void, )830     pub fn RevokeActiveObject(
831         dwRegister: DWORD,
832         pvReserved: *mut c_void,
833     );
OaBuildVersion() -> ULONG834     pub fn OaBuildVersion() -> ULONG;
OaEnablePerUserTLibRegistration()835     pub fn OaEnablePerUserTLibRegistration();
836 }
837