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