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