506 DISPPARAMS
params = { 0 };
549 TRACE(
"(%p)\n", pVarg);
551 memset(pVarg, 0,
sizeof(*pVarg));
591 IRecordInfo_RecordClear(rec_info,
V_RECORD(pVarg));
592 IRecordInfo_Release(rec_info);
651 IRecordInfo_RecordClear(rec_info,
V_RECORD(pVarg));
652 IRecordInfo_Release(rec_info);
682 hr = IRecordInfo_GetSize(src_info, &
size);
734 if (pvargSrc != pvargDest &&
737 *pvargDest = *pvargSrc;
741 switch (
V_VT(pvargSrc))
787 case VT_BSTR:
return sizeof(
void*);
846 if (pvargSrc == pvargDest)
860 TRACE(
"VariantClear() of destination failed\n");
896 goto VariantCopyInd_Return;
909 V_VT(pvargDest) =
V_VT(pSrc) & ~VT_BYREF;
911VariantCopyInd_Return:
913 if (pSrc != pvargSrc)
1025#define IsLeapYear(y) (((y % 4) == 0) && (((y % 100) != 0) || ((y % 400) == 0)))
1030 int julianDays = dateIn;
1033 julianDays += 1757585;
1040 int julianDays = dateIn;
1042 julianDays -= 1757585;
1054 l -= (
n * 146097 + 3) / 4;
1055 i = (4000 * (
l + 1)) / 1461001;
1056 l += 31 - (
i * 1461) / 4;
1057 j = (
l * 80) / 2447;
1058 *
day =
l - (
j * 2447) / 80;
1061 *year = 100 * (
n - 49) +
i +
l;
1069 return ((1461 * (year + 4800 +
m12)) / 4 + (367 * (
month - 2 - 12 *
m12)) / 12 -
1070 (3 * ((year + 4900 +
m12) / 100)) / 4 +
day - 32075);
1074#define DOS_YEAR(x) (1980 + (x >> 9))
1075#define DOS_MONTH(x) ((x >> 5) & 0xf)
1076#define DOS_DAY(x) (x & 0x1f)
1077#define DOS_HOUR(x) (x >> 11)
1078#define DOS_MINUTE(x) ((x >> 5) & 0x3f)
1079#define DOS_SECOND(x) ((x & 0x1f) << 1)
1081#define DOS_DATE(d,m,y) (d | (m << 5) | ((y-1980) << 9))
1082#define DOS_TIME(h,m,s) ((s >> 1) | (m << 5) | (h << 11))
1087 static const BYTE days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
1088 short iYear, iMonth, iDay, iHour, iMinute, iSecond;
1098 TRACE(
"Raw date: %d/%d/%d %d:%d:%d\n", iDay, iMonth,
1099 iYear, iHour, iMinute, iSecond);
1101 if (iYear > 9999 || iYear < -9999)
1104 if (0 <= iYear && iYear <= 49)
1107 else if (50 <= iYear && iYear <= 99)
1110 iMinute += iSecond / 60;
1111 iSecond = iSecond % 60;
1112 iHour += iMinute / 60;
1113 iMinute = iMinute % 60;
1116 iYear += iMonth / 12;
1117 iMonth = iMonth % 12;
1118 if (iMonth<=0) {iMonth+=12; iYear--;}
1119 while (iDay > days[iMonth])
1124 iDay -= days[iMonth];
1126 iYear += iMonth / 12;
1127 iMonth = iMonth % 12;
1132 if (iMonth<=0) {iMonth+=12; iYear--;}
1136 iDay += days[iMonth];
1139 if (iSecond<0){iSecond+=60; iMinute--;}
1140 if (iMinute<0){iMinute+=60; iHour--;}
1141 if (iHour<0) {iHour+=24; iDay--;}
1142 if (iYear<=0) iYear+=2000;
1193 TRACE(
"(0x%x(%d/%d/%d),0x%x(%d:%d:%d),%p)\n",
1233 TRACE(
"(%g,%p,%p)\n", dateIn, pwDosDate, pwDosTime);
1244 TRACE(
"Returning 0x%x(%d/%d/%d), 0x%x(%d:%d:%d)\n",
1272 if (lpSt->
wDay > 31)
1274 if ((
short)lpSt->
wYear < 0)
1298 TRACE(
"(%g,%p)\n", dateIn, lpSt);
1327 TRACE(
"%p, %d/%d/%d, %d:%d:%d:%d, %#x, %d, %#lx, %#lx, %p.\n", pUdateIn,
1334 FIXME(
"lcid possibly not handled, treating as en-us\n");
1341 WARN(
"Ignoring VAR_VALIDDATE\n");
1352 double dateSign = (dateVal < 0.0) ? -1.0 : 1.0;
1355 dateVal += ud.
st.
wHour / 24.0 * dateSign;
1356 dateVal += ud.
st.
wMinute / 1440.0 * dateSign;
1357 dateVal += ud.
st.
wSecond / 86400.0 * dateSign;
1360 TRACE(
"Returning %g\n", dateVal);
1361 *pDateOut = dateVal;
1407 static const USHORT cumulativeDays[] =
1409 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
1411 double datePart, timePart;
1419 datePart = dateIn < 0.0 ?
ceil(dateIn) :
floor(dateIn);
1421 timePart =
fabs(dateIn - datePart) + 0.00000000001;
1422 if (timePart >= 1.0)
1423 timePart -= 0.00000000001;
1430 datePart = (datePart + 1.5) / 7.0;
1450 timePart -= lpUdate->
st.
wHour;
1477 if (++lpUdate->
st.
wDay > 28)
1499#define GET_NUMBER_TEXT(fld,name) \
1501 if (!GetLocaleInfoW(lcid, lctype|fld, buff, ARRAY_SIZE(buff))) \
1502 WARN("buffer too small for " #fld "\n"); \
1504 if (buff[0]) lpChars->name = buff[0]; \
1505 TRACE("lcid 0x%lx, " #name "=%s\n", lcid, wine_dbgstr_wn(&lpChars->name, 1))
1514 memcpy(lpChars, &defaultChars,
sizeof(defaultChars));
1525 WARN(
"buffer too small for LOCALE_SCURRENCY\n");
1535#define B_PROCESSING_EXPONENT 0x1
1536#define B_NEGATIVE_EXPONENT 0x2
1537#define B_EXPONENT_START 0x4
1538#define B_INEXACT_ZEROS 0x8
1539#define B_LEADING_ZERO 0x10
1540#define B_PROCESSING_HEX 0x20
1541#define B_PROCESSING_OCT 0x40
1545 return '0' <=
c &&
c <=
'9';
1590 if (!pNumprs || !rgbDig)
1593 if (pNumprs->
cDig < iMaxDigits)
1594 iMaxDigits = pNumprs->
cDig;
1631 while (*lpszStr ==
'0')
1652 (cDigitSeparator2 && *lpszStr == cDigitSeparator2)))
1698 if ((*lpszStr ==
'&' && (*(lpszStr+1) ==
'H' || *(lpszStr+1) ==
'h')) &&
1706 else if ((*lpszStr ==
'&' && (*(lpszStr+1) ==
'O' || *(lpszStr+1) ==
'o')) &&
1717 while (*lpszStr ==
'0')
1730 int exponentSize = 0;
1735 while (*lpszStr ==
'0')
1746 exponentSize += *lpszStr -
'0';
1751 exponentSize = -exponentSize;
1753 pNumprs->
nPwr10 += exponentSize;
1764 if (*lpszStr !=
'0')
1765 dwState &= ~B_INEXACT_ZEROS;
1775 if ((dwState &
B_PROCESSING_OCT) && ((*lpszStr ==
'8') || (*lpszStr ==
'9')))
1781 rgbTmp[pNumprs->
cDig] = *lpszStr -
'0';
1790 (cDigitSeparator2 && *lpszStr == cDigitSeparator2)))
1816 while (lpszStr[1] ==
'0')
1825 else if (((*lpszStr >=
'a' && *lpszStr <=
'f') ||
1826 (*lpszStr >=
'A' && *lpszStr <=
'F')) &&
1829 if (pNumprs->
cDig >= iMaxDigits)
1835 if (*lpszStr >=
'a')
1836 rgbTmp[pNumprs->
cDig] = *lpszStr -
'a' + 10;
1838 rgbTmp[pNumprs->
cDig] = *lpszStr -
'A' + 10;
1843 else if ((*lpszStr ==
'e' || *lpszStr ==
'E') &&
1876 WARN(
"didn't completely parse exponent\n");
1901 while (pNumprs->
cDig > 1 && !rgbTmp[pNumprs->
cDig - 1])
1911 while (pNumprs->
cDig > 1 && !rgbTmp[pNumprs->
cDig - 1])
1918 if (pNumprs->
cDig <= iMaxDigits)
1921 pNumprs->
cDig = iMaxDigits;
1930 (cDigitSeparator2 && *lpszStr == cDigitSeparator2))
2021#define INTEGER_VTBITS (VTBIT_I1|VTBIT_UI1|VTBIT_I2|VTBIT_UI2|VTBIT_I4|VTBIT_UI4|VTBIT_I8|VTBIT_UI8)
2023#define REAL_VTBITS (VTBIT_R4|VTBIT_R8|VTBIT_CY)
2026#define FITS_AS_I1(x) ((x) >> 8 == 0)
2027#define FITS_AS_I2(x) ((x) >> 16 == 0)
2028#define FITS_AS_I4(x) ((x) >> 32 == 0)
2064 static const double dblMultipliers[11] = {
2065 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0,
2066 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0
2068 static const double dblMinimums[11] = {
2073 static const double dblMaximums[11] = {
2079 int wholeNumberDigits, fractionalDigits, divisor10 = 0, multiplier10 = 0;
2081 TRACE(
"%p, %p, %lx, %p.\n", pNumprs, rgbDig, dwVtBits, pVarDst);
2091 for (
i = 0;
i < pNumprs->
cDig;
i++)
2095 TRACE(
"Overflow multiplying digits\n");
2108 V_I1(pVarDst) = ul64;
2114 V_UI1(pVarDst) = ul64;
2120 V_I2(pVarDst) = ul64;
2126 V_UI2(pVarDst) = ul64;
2132 V_I4(pVarDst) = ul64;
2138 V_UI4(pVarDst) = ul64;
2144 V_I8(pVarDst) = ul64;
2150 V_UI8(pVarDst) = ul64;
2166 V_R4(pVarDst) = ul64;
2168 V_R4(pVarDst) = l64;
2175 V_R8(pVarDst) = ul64;
2177 V_R8(pVarDst) = l64;
2193 wholeNumberDigits = 0;
2194 fractionalDigits = pNumprs->
cDig;
2195 divisor10 = -pNumprs->
nPwr10;
2200 wholeNumberDigits = pNumprs->
cDig + pNumprs->
nPwr10;
2201 fractionalDigits = pNumprs->
cDig - wholeNumberDigits;
2202 divisor10 = pNumprs->
cDig - wholeNumberDigits;
2205 else if (pNumprs->
nPwr10 == 0)
2208 wholeNumberDigits = pNumprs->
cDig;
2209 fractionalDigits = 0;
2214 wholeNumberDigits = pNumprs->
cDig;
2215 fractionalDigits = 0;
2216 multiplier10 = pNumprs->
nPwr10;
2219 TRACE(
"cDig %d; nPwr10 %d, whole %d, frac %d mult %d; div %d\n",
2220 pNumprs->
cDig, pNumprs->
nPwr10, wholeNumberDigits, fractionalDigits,
2221 multiplier10, divisor10);
2239 for (
i = 0;
i < wholeNumberDigits;
i++)
2243 TRACE(
"Overflow multiplying digits\n");
2247 ul64 = ul64 * 10 + rgbDig[
i];
2251 if (!bOverflow && multiplier10)
2253 for (
i = 0;
i < multiplier10;
i++)
2257 TRACE(
"Overflow scaling number\n");
2269 if (!bOverflow && fractionalDigits && divisor10 > 0)
2271 const BYTE* fracDig = rgbDig + wholeNumberDigits;
2274 TRACE(
"first decimal value is %d\n", *fracDig);
2278 else if (*fracDig == 5)
2280 for (
i = 1;
i < fractionalDigits;
i++)
2289 if (
i == fractionalDigits && (ul64 & 1))
2297 TRACE(
"Overflow after rounding\n");
2310 if (!bOverflow && bNegative)
2317 V_I1(pVarDst) = -ul64;
2323 V_I2(pVarDst) = -ul64;
2329 V_I4(pVarDst) = -ul64;
2335 V_I8(pVarDst) = -ul64;
2350 else if (!bOverflow)
2356 V_I1(pVarDst) = ul64;
2362 V_UI1(pVarDst) = ul64;
2368 V_I2(pVarDst) = ul64;
2374 V_UI2(pVarDst) = ul64;
2380 V_I4(pVarDst) = ul64;
2386 V_UI4(pVarDst) = ul64;
2392 V_I8(pVarDst) = ul64;
2398 V_UI8(pVarDst) = ul64;
2422 for (
i = 0;
i < pNumprs->
cDig;
i++)
2423 whole = whole * 10.0 + rgbDig[
i];
2425 TRACE(
"Whole double value is %16.16g\n", whole);
2428 while (multiplier10 > 10)
2430 if (whole > dblMaximums[10])
2436 whole = whole * dblMultipliers[10];
2439 if (multiplier10 && !bOverflow)
2441 if (whole > dblMaximums[multiplier10])
2447 whole = whole * dblMultipliers[multiplier10];
2451 TRACE(
"Scaled double value is %16.16g\n", whole);
2453 while (divisor10 > 10 && !bOverflow)
2455 if (whole < dblMinimums[10] && whole != 0)
2461 whole = whole / dblMultipliers[10];
2464 if (divisor10 && !bOverflow)
2466 if (whole < dblMinimums[divisor10] && whole != 0)
2472 whole = whole / dblMultipliers[divisor10];
2475 TRACE(
"Final double value is %16.16g\n", whole);
2478 ((whole <= R4_MAX && whole >=
R4_MIN) || whole == 0.0))
2480 TRACE(
"Set R4 to final value\n");
2488 TRACE(
"Set R8 to final value\n");
2499 TRACE(
"Set CY to final value\n");
2502 TRACE(
"Value Overflows CY\n");
2513 DECIMAL_SETZERO(*pDec);
2517 pDec->
sign = DECIMAL_NEG;
2522 for (
i = 0;
i < pNumprs->
cDig;
i++)
2525 carry = (
ULONG)(tmp >> 32);
2528 carry = (
ULONG)(tmp >> 32);
2535VarNumFromParseNum_DecOverflow:
2536 TRACE(
"Overflow\n");
2543 while (multiplier10 > 0)
2546 carry = (
ULONG)(tmp >> 32);
2549 carry = (
ULONG)(tmp >> 32);
2555 goto VarNumFromParseNum_DecOverflow;
2558 pDec->
scale = divisor10;
2602 else if ((leftvt ==
VT_I2 || leftvt ==
VT_I4 ||
2675 left_str =
V_BSTR(&converted);
2701 right_str =
V_BSTR(&converted);
2729 V_VT(&vtmpsrc) &= ~VT_RESERVED;
2788 xmask = (1 << lvt) | (1 << rvt);
2846 if (!breserv && !nreserv)
2849 else if (breserv && !nreserv) {
2862 else if (breserv && nreserv)
2923#define _VARCMP(a,b) \
2924 (((a) == (b)) ? VARCMP_EQ : (((a) < (b)) ? VARCMP_LT : VARCMP_GT))
2990 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
2991 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
2993 if (leftExtraFlags != rightExtraFlags)
3012 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
3014 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
3156 FIXME(
"Couldn't bitwise AND variant types %d,%d\n",
3204 enum coerceprio { vt_EMPTY, vt_UI1, vt_I2, vt_I4, vt_I8, vt_BSTR,vt_R4,
3205 vt_R8, vt_CY, vt_DATE, vt_DECIMAL, vt_DISPATCH, vt_NULL,
3213 static const VARTYPE coerce[] = {
3215 vt_EMPTY, vt_NULL, vt_I2, vt_I4, vt_R4,
3217 vt_R8, vt_CY, vt_DATE, vt_BSTR, vt_DISPATCH,
3219 vt_ERROR, vt_I2, vt_ERROR, vt_ERROR, vt_DECIMAL,
3221 vt_ERROR, vt_ERROR, vt_UI1, vt_ERROR, vt_ERROR, vt_I8
3261 if (coerce[lvt] > coerce[rvt]) {
3262 resvt = prio2vt[coerce[lvt]];
3263 tvt = prio2vt[coerce[rvt]];
3265 resvt = prio2vt[coerce[rvt]];
3266 tvt = prio2vt[coerce[lvt]];
3291 FIXME(
"cannot handle variant type VT_DISPATCH\n");
3352 ERR(
"We shouldn't get here! tvt = %d!\n", tvt);
3362 resvt = prio2vt[coerce[resvt] + 1];
3417 enum coerceprio { vt_UI1 = 0, vt_I2, vt_I4, vt_I8, vt_CY, vt_R4, vt_R8,
3418 vt_DECIMAL, vt_NULL, vt_ERROR };
3424 static const VARTYPE coerce[] = {
3426 vt_UI1, vt_NULL, vt_I2, vt_I4, vt_R4,
3428 vt_R8, vt_CY, vt_R8, vt_R8, vt_ERROR,
3430 vt_ERROR, vt_I2, vt_ERROR, vt_ERROR, vt_DECIMAL,
3432 vt_ERROR, vt_ERROR, vt_UI1, vt_ERROR, vt_ERROR, vt_I8
3469 if (coerce[lvt] > coerce[rvt]) {
3470 resvt = prio2vt[coerce[lvt]];
3471 tvt = prio2vt[coerce[rvt]];
3473 resvt = prio2vt[coerce[rvt]];
3474 tvt = prio2vt[coerce[lvt]];
3542 ERR(
"We shouldn't get here! tvt = %d!\n", tvt);
3552 resvt = prio2vt[coerce[resvt] + 1];
3617 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
3618 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
3620 if (leftExtraFlags != rightExtraFlags)
3645 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8 ||
3665 else if (leftvt ==
VT_R4 || rightvt ==
VT_R4)
3692 if (
V_R4(&lv) == 0.0 &&
V_R4(&rv) == 0.0)
3697 else if (
V_R4(&rv) == 0.0)
3706 if (
V_R8(&lv) == 0.0 &&
V_R8(&rv) == 0.0)
3711 else if (
V_R8(&rv) == 0.0)
3819 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
3820 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
3822 if (leftExtraFlags != rightExtraFlags)
3877 (leftvt < VT_VOID || leftvt >
VT_LPWSTR)))
3885 (rightvt < VT_VOID || rightvt >
VT_LPWSTR)))
3910 else if (leftvt ==
VT_CY || rightvt ==
VT_CY)
3912 else if (leftvt ==
VT_R8 || rightvt ==
VT_R8)
3916 else if (leftvt ==
VT_R4 || rightvt ==
VT_R4)
3924 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
3926 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4)
3928 else if (leftvt ==
VT_I2 || rightvt ==
VT_I2 ||
4018 VARIANT varLeft, varRight, varStr;
4034 if (
FAILED(hRet))
goto VarOr_Exit;
4035 pVarLeft = &tempLeft;
4040 if (
FAILED(hRet))
goto VarOr_Exit;
4041 pVarRight = &tempRight;
4059 pVarLeft = pVarRight;
4064 switch (
V_VT(pVarLeft))
4073 *pVarOut = *pVarLeft;
4087 if (
V_UI1(pVarLeft))
4088 *pVarOut = *pVarLeft;
4147 pVarLeft = pVarRight;
4154 switch (
V_VT(pVarLeft))
4189 pVarLeft = &varLeft;
4340 if (
FAILED(hRet))
goto VarAbs_Exit;
4353#define ABS_CASE(typ,min) \
4354 case VT_##typ: if (V_##typ(pVarIn) == min) hRet = DISP_E_OVERFLOW; \
4355 else if (V_##typ(pVarIn) < 0) V_##typ(pVarOut) = -V_##typ(pVarIn); \
4358 switch (
V_VT(pVarIn))
4369 if (
V_R4(pVarOut) < 0.0)
V_R4(pVarOut) = -
V_R4(pVarOut);
4379 if (
V_R8(pVarOut) < 0.0)
V_R8(pVarOut) = -
V_R8(pVarOut);
4385 V_DECIMAL(pVarOut).sign &= ~DECIMAL_NEG;
4446 if (
FAILED(hRet))
goto VarFix_Exit;
4451 switch (
V_VT(pVarIn))
4469 if (
V_R4(pVarIn) < 0.0f)
4481 if (
V_R8(pVarIn) < 0.0)
4552 if (
FAILED(hRet))
goto VarInt_Exit;
4557 switch (
V_VT(pVarIn))
4578 hRet =
VarFix(pVarIn, pVarOut);
4645 if (
FAILED(hRet))
goto VarXor_Exit;
4646 pVarLeft = &tempLeft;
4651 if (
FAILED(hRet))
goto VarXor_Exit;
4652 pVarRight = &tempRight;
4695 switch ((
V_VT(&varLeft) << 16) |
V_VT(&varRight))
4735 if (
V_VT(&varLeft) !=
vt)
4740 if (
V_VT(&varRight) !=
vt)
4798 hRet =
VarXor(pVarLeft, pVarRight, pVarOut);
4802 V_I8(pVarOut) = ~V_I8(pVarOut);
4804 V_UI4(pVarOut) = ~V_UI4(pVarOut);
4859 if (
FAILED(hRet))
goto VarNeg_Exit;
4864 switch (
V_VT(pVarIn))
4896 V_R8(pVarOut) *= -1.0;
4988 if (
FAILED(hRet))
goto VarNot_Exit;
5001 if (
FAILED(hRet))
goto VarNot_Exit;
5007 switch (
V_VT(pVarIn))
5010 V_I4(pVarOut) = ~V_I1(pVarIn);
5013 case VT_UI1:
V_UI1(pVarOut) = ~V_UI1(pVarIn);
break;
5015 case VT_I2:
V_I2(pVarOut) = ~V_I2(pVarIn);
break;
5017 V_I4(pVarOut) = ~V_UI2(pVarIn);
5029 case VT_I4:
V_I4(pVarOut) = ~V_I4(pVarIn);
break;
5032 V_I4(pVarOut) = ~V_UI4(pVarIn);
5035 case VT_I8:
V_I8(pVarOut) = ~V_I8(pVarIn);
break;
5037 V_I4(pVarOut) = ~V_UI8(pVarIn);
5042 V_I4(pVarOut) = ~V_I4(pVarOut);
5048 V_I4(pVarOut) = ~V_I4(pVarOut);
5053 V_I4(pVarOut) = ~V_I4(pVarOut);
5112 if (
FAILED(hRet))
goto VarRound_Exit;
5116 switch (
V_VT(pVarIn))
5163 if (
V_R8(pVarIn)>0) {
5171 if (
V_R4(pVarIn)>0) {
5210 dbl =
ceil(dbl*
pow(10,deci)-0.5);
5218 FIXME(
"unimplemented part, V_VT(pVarIn) == 0x%X, deci == %d\n",
5266 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5267 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5269 if (leftExtraFlags != rightExtraFlags)
5295 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
5297 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
5311 else if (leftvt ==
VT_I2 || rightvt ==
VT_I2 ||
5334 if (
V_UI1(&rv) == 0)
5370 FIXME(
"Couldn't integer divide variant types %d,%d\n",
5605 TRACE(
"V_I8(left) == %s, V_I8(right) == %s, V_I8(result) == %s\n",
5671 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5672 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5674 if (leftExtraFlags != rightExtraFlags)
5715 ERR(
"Could not change passed left argument to VT_R8, handle it differently.\n");
5722 ERR(
"Could not change passed right argument to VT_R8, handle it differently.\n");
5786 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5787 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5789 if (leftExtraFlags != rightExtraFlags)
5814 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
5816 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
5922 else if (
b == VARIANT_TRUE)
5937 memset( &rv, 0,
sizeof(rv) );
5980 FIXME(
"Couldn't perform bitwise implication on variant types %d,%d\n",
#define DECLSPEC_HOTPATCH
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define ERROR_INSUFFICIENT_BUFFER
void *WINAPI CoTaskMemAlloc(SIZE_T size)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
static DOUBLE day(DOUBLE time)
INT WINAPI GetLocaleInfoW(LCID lcid, LCTYPE lctype, LPWSTR buffer, INT len)
static REFPROPVARIANT PROPVAR_CHANGE_FLAGS VARTYPE vt
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
_ACRTIMP double __cdecl fabs(double)
_ACRTIMP double __cdecl ceil(double)
_ACRTIMP double __cdecl floor(double)
HRESULT WINAPI SafeArrayCopy(SAFEARRAY *psa, SAFEARRAY **ppsaOut)
HRESULT WINAPI VectorFromBstr(BSTR bstr, SAFEARRAY **ppsa)
HRESULT WINAPI BstrFromVector(SAFEARRAY *psa, BSTR *pbstr)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
HRESULT WINAPI VarUI1FromI4(LONG iIn, BYTE *pbOut)
HRESULT WINAPI VarUI8FromUI2(USHORT usIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI4FromUI8(ULONG64 ullIn, LONG *piOut)
HRESULT WINAPI VarBstrFromUI1(BYTE bIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI2FromCy(CY cyIn, USHORT *pusOut)
HRESULT WINAPI VarCyMul(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarUI8FromCy(CY cyIn, ULONG64 *pui64Out)
HRESULT WINAPI VarCyFromR8(double dblIn, CY *pCyOut)
HRESULT WINAPI VarCyInt(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarI2FromUI1(BYTE bIn, SHORT *psOut)
HRESULT WINAPI VarR4FromI1(signed char cIn, float *pFltOut)
HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarCyFromUI1(BYTE bIn, CY *pCyOut)
HRESULT WINAPI VarR4FromUI8(ULONG64 ullIn, float *pFltOut)
HRESULT WINAPI VarI2FromBool(VARIANT_BOOL boolIn, SHORT *psOut)
HRESULT WINAPI VarDateFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut)
HRESULT WINAPI VarDecCmp(const DECIMAL *pDecLeft, const DECIMAL *pDecRight)
HRESULT WINAPI VarUI2FromDisp(IDispatch *pdispIn, LCID lcid, USHORT *pusOut)
HRESULT WINAPI VarBoolFromUI1(BYTE bIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromUI4(ULONG ulIn, BYTE *pbOut)
HRESULT WINAPI VarI1FromR8(double dblIn, signed char *pcOut)
HRESULT WINAPI VarI1FromR4(FLOAT fltIn, signed char *pcOut)
HRESULT WINAPI VarUI4FromDisp(IDispatch *pdispIn, LCID lcid, ULONG *pulOut)
HRESULT WINAPI VarCyFromUI2(USHORT usIn, CY *pCyOut)
HRESULT WINAPI VarI1FromDisp(IDispatch *pdispIn, LCID lcid, signed char *pcOut)
HRESULT WINAPI VarDecFromCy(CY cyIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR8FromI2(SHORT sIn, double *pDblOut)
HRESULT WINAPI VarUI4FromUI2(USHORT usIn, ULONG *pulOut)
HRESULT WINAPI VarI1FromUI2(USHORT usIn, signed char *pcOut)
HRESULT WINAPI VarCyFix(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarR8FromCy(CY cyIn, double *pDblOut)
HRESULT WINAPI VarI1FromUI4(ULONG ulIn, signed char *pcOut)
HRESULT WINAPI VarBstrFromR8(double dblIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI4FromI1(signed char cIn, ULONG *pulOut)
HRESULT WINAPI VarI4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG *piOut)
HRESULT WINAPI VarI2FromUI8(ULONG64 ullIn, SHORT *psOut)
HRESULT WINAPI VarI8FromUI1(BYTE bIn, LONG64 *pi64Out)
HRESULT WINAPI VarDecAdd(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarBstrFromI2(short sIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarCyAbs(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarI4FromBool(VARIANT_BOOL boolIn, LONG *piOut)
HRESULT WINAPI VarUI8FromUI4(ULONG ulIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI8FromDisp(IDispatch *pdispIn, LCID lcid, LONG64 *pi64Out)
HRESULT WINAPI VarUI1FromR8(double dblIn, BYTE *pbOut)
HRESULT WINAPI VarI1FromI2(SHORT sIn, signed char *pcOut)
HRESULT WINAPI VarDateFromDisp(IDispatch *pdispIn, LCID lcid, DATE *pdateOut)
HRESULT WINAPI VarBstrFromI4(LONG lIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarDecFromI2(SHORT sIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromR8(double dblIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromI8(LONG64 llIn, double *pDblOut)
HRESULT WINAPI VarR4FromDisp(IDispatch *pdispIn, LCID lcid, float *pFltOut)
HRESULT WINAPI VarDateFromI1(signed char cIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromI1(signed char cIn, USHORT *pusOut)
HRESULT WINAPI VarR8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, double *pDblOut)
HRESULT WINAPI VarDecFromUI1(BYTE bIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI2FromI4(LONG iIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromR4(FLOAT fltIn, BYTE *pbOut)
HRESULT WINAPI VarDecFromR8(double dblIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI4FromI2(SHORT sIn, LONG *piOut)
HRESULT WINAPI VarDateFromUI8(ULONG64 ullIn, DATE *pdateOut)
HRESULT WINAPI VarDateFromR4(FLOAT fltIn, DATE *pdateOut)
HRESULT WINAPI VarBoolFromI8(LONG64 llIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI1FromI4(LONG iIn, signed char *pcOut)
HRESULT WINAPI VarI4FromUI2(USHORT usIn, LONG *piOut)
HRESULT WINAPI VarI8FromDate(DATE dateIn, LONG64 *pi64Out)
HRESULT WINAPI VarI4FromDate(DATE dateIn, LONG *piOut)
HRESULT WINAPI VarDecFix(const DECIMAL *pDecIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromCy(CY cyIn, LONG64 *pi64Out)
HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL boolIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI1FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, signed char *pcOut)
HRESULT WINAPI VarI8FromI2(SHORT sIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromUI2(USHORT usIn, double *pDblOut)
HRESULT WINAPI VarUI8FromR4(FLOAT fltIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI1FromCy(CY cyIn, BYTE *pbOut)
HRESULT WINAPI VarBoolFromI2(SHORT sIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI2FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, SHORT *psOut)
HRESULT WINAPI VarDateFromUI1(BYTE bIn, DATE *pdateOut)
HRESULT WINAPI VarR8FromDate(DATE dateIn, double *pDblOut)
HRESULT WINAPI VarDecFromDisp(IDispatch *pdispIn, LCID lcid, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromUI4(ULONG ulIn, float *pFltOut)
HRESULT WINAPI VarCyFromBool(VARIANT_BOOL boolIn, CY *pCyOut)
HRESULT WINAPI VarI4FromDisp(IDispatch *pdispIn, LCID lcid, LONG *piOut)
HRESULT WINAPI VarI2FromI1(signed char cIn, SHORT *psOut)
HRESULT WINAPI VarUI4FromDec(const DECIMAL *pdecIn, ULONG *pulOut)
HRESULT WINAPI VarCyFromDate(DATE dateIn, CY *pCyOut)
HRESULT WINAPI VarI4FromR8(double dblIn, LONG *piOut)
HRESULT WINAPI VarI8FromR4(FLOAT fltIn, LONG64 *pi64Out)
HRESULT WINAPI VarBoolFromI4(LONG lIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarR4FromUI1(BYTE bIn, float *pFltOut)
HRESULT WINAPI VarI4FromI1(signed char cIn, LONG *piOut)
HRESULT WINAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarR4FromDec(const DECIMAL *pDecIn, float *pFltOut)
HRESULT WINAPI VarI2FromDate(DATE dateIn, SHORT *psOut)
HRESULT WINAPI VarUI1FromUI8(ULONG64 ullIn, BYTE *pbOut)
HRESULT WINAPI VarDecFromR4(FLOAT fltIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI4FromR8(double dblIn, ULONG *pulOut)
HRESULT WINAPI VarBstrFromDate(DATE dateIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI2FromI8(LONG64 llIn, SHORT *psOut)
HRESULT WINAPI VarBoolFromR4(FLOAT fltIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarDecSub(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarUI2FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, USHORT *pusOut)
HRESULT WINAPI VarR8FromUI8(ULONG64 ullIn, double *pDblOut)
HRESULT WINAPI VarUI4FromI2(SHORT sIn, ULONG *pulOut)
HRESULT WINAPI VarR4FromCy(CY cyIn, float *pFltOut)
HRESULT WINAPI VarCyFromDec(const DECIMAL *pdecIn, CY *pCyOut)
HRESULT WINAPI VarUI1FromI2(SHORT sIn, BYTE *pbOut)
HRESULT WINAPI VarI2FromDec(const DECIMAL *pdecIn, SHORT *psOut)
HRESULT WINAPI VarI4FromI8(LONG64 llIn, LONG *piOut)
HRESULT WINAPI VarUI8FromR8(double dblIn, ULONG64 *pui64Out)
HRESULT WINAPI VarUI8FromDate(DATE dateIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI8FromI1(signed char cIn, LONG64 *pi64Out)
HRESULT WINAPI VarDecNeg(const DECIMAL *pDecIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromI2(SHORT sIn, float *pFltOut)
HRESULT WINAPI VarI1FromUI8(ULONG64 ullIn, signed char *pcOut)
HRESULT WINAPI VarUI8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG64 *pui64Out)
HRESULT WINAPI VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFlags)
HRESULT WINAPI VarUI8FromDisp(IDispatch *pdispIn, LCID lcid, ULONG64 *pui64Out)
HRESULT WINAPI VarUI4FromI8(LONG64 llIn, ULONG *pulOut)
HRESULT WINAPI VarR8FromUI4(ULONG ulIn, double *pDblOut)
HRESULT WINAPI VarUI1FromDec(const DECIMAL *pdecIn, BYTE *pbOut)
HRESULT WINAPI VarUI2FromDec(const DECIMAL *pdecIn, USHORT *pusOut)
HRESULT WINAPI VarI4FromDec(const DECIMAL *pdecIn, LONG *piOut)
HRESULT WINAPI VarUI2FromDate(DATE dateIn, USHORT *pusOut)
HRESULT WINAPI VarDecFromUI8(ULONG64 ullIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI2FromDisp(IDispatch *pdispIn, LCID lcid, SHORT *psOut)
HRESULT WINAPI VarDateFromCy(CY cyIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromUI1(BYTE bIn, USHORT *pusOut)
HRESULT WINAPI VarBoolFromDate(DATE dateIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarDateFromUI4(ULONG ulIn, DATE *pdateOut)
HRESULT WINAPI VarR8FromI4(LONG lIn, double *pDblOut)
HRESULT WINAPI VarDecFromUI2(USHORT usIn, DECIMAL *pDecOut)
HRESULT WINAPI VarCyFromI8(LONG64 llIn, CY *pCyOut)
HRESULT WINAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE *pdateOut)
HRESULT WINAPI VarI1FromDec(const DECIMAL *pdecIn, signed char *pcOut)
HRESULT WINAPI VarI2FromR8(double dblIn, SHORT *psOut)
HRESULT WINAPI VarCyCmp(CY cyLeft, CY cyRight)
HRESULT WINAPI VarI1FromBool(VARIANT_BOOL boolIn, signed char *pcOut)
HRESULT WINAPI VarR4FromUI2(USHORT usIn, float *pFltOut)
HRESULT WINAPI VarUI4FromUI8(ULONG64 ullIn, ULONG *pulOut)
HRESULT WINAPI VarBstrFromI8(LONG64 llIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut)
HRESULT WINAPI VarUI2FromBool(VARIANT_BOOL boolIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromUI2(USHORT usIn, BYTE *pbOut)
HRESULT WINAPI VarDecFromUI4(ULONG ulIn, DECIMAL *pDecOut)
HRESULT WINAPI VarUI1FromI8(LONG64 llIn, BYTE *pbOut)
HRESULT WINAPI VarI2FromR4(FLOAT fltIn, SHORT *psOut)
HRESULT WINAPI VarDecFromI4(LONG lIn, DECIMAL *pDecOut)
HRESULT WINAPI VarBstrFromUI8(ULONG64 ullIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI4FromCy(CY cyIn, LONG *piOut)
HRESULT WINAPI VarBoolFromUI8(ULONG64 ullIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI4FromR4(FLOAT fltIn, ULONG *pulOut)
HRESULT WINAPI VarR8FromDisp(IDispatch *pdispIn, LCID lcid, double *pDblOut)
HRESULT WINAPI VarUI2FromUI4(ULONG ulIn, USHORT *pusOut)
HRESULT WINAPI VarBoolFromDec(const DECIMAL *pDecIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromDisp(IDispatch *pdispIn, LCID lcid, BYTE *pbOut)
HRESULT WINAPI VarUI1FromBool(VARIANT_BOOL boolIn, BYTE *pbOut)
HRESULT WINAPI VarBoolFromDisp(IDispatch *pdispIn, LCID lcid, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarDecInt(const DECIMAL *pDecIn, DECIMAL *pDecOut)
HRESULT WINAPI VarCyFromR4(FLOAT fltIn, CY *pCyOut)
HRESULT WINAPI VarR4FromDate(DATE dateIn, float *pFltOut)
HRESULT WINAPI VarI4FromUI1(BYTE bIn, LONG *piOut)
HRESULT WINAPI VarCyNeg(CY cyIn, CY *pCyOut)
HRESULT WINAPI VarR4FromI4(LONG lIn, float *pFltOut)
HRESULT WINAPI VarCyFromI4(LONG lIn, CY *pCyOut)
HRESULT WINAPI VarBoolFromUI2(USHORT usIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarCySub(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarCyFromDisp(IDispatch *pdispIn, LCID lcid, CY *pCyOut)
HRESULT WINAPI VarI2FromUI4(ULONG ulIn, SHORT *psOut)
HRESULT WINAPI VarUI4FromBool(VARIANT_BOOL boolIn, ULONG *pulOut)
HRESULT WINAPI VarDecMul(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG64 *pi64Out)
HRESULT WINAPI VarCyFromUI8(ULONG64 ullIn, CY *pCyOut)
HRESULT WINAPI VarI8FromUI4(ULONG ulIn, LONG64 *pi64Out)
HRESULT WINAPI VarUI4FromCy(CY cyIn, ULONG *pulOut)
HRESULT WINAPI VarUI8FromUI1(BYTE bIn, ULONG64 *pui64Out)
HRESULT WINAPI VarR8FromI1(signed char cIn, double *pDblOut)
HRESULT WINAPI VarR4FromBool(VARIANT_BOOL boolIn, float *pFltOut)
HRESULT WINAPI VarI8FromDec(const DECIMAL *pdecIn, LONG64 *pi64Out)
HRESULT WINAPI VarR8FromDec(const DECIMAL *pDecIn, double *pDblOut)
HRESULT WINAPI VarUI8FromI2(SHORT sIn, ULONG64 *pui64Out)
HRESULT WINAPI VarBstrFromR4(FLOAT fltIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarBoolFromR8(double dblIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI1FromDate(DATE dateIn, BYTE *pbOut)
HRESULT WINAPI VarBoolFromUI4(ULONG ulIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarR8FromUI1(BYTE bIn, double *pDblOut)
HRESULT WINAPI VarDecFromDate(DATE dateIn, DECIMAL *pDecOut)
HRESULT WINAPI VarBstrFromDisp(IDispatch *pdispIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarDecDiv(const DECIMAL *pDecLeft, const DECIMAL *pDecRight, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromI8(LONG64 llIn, float *pFltOut)
HRESULT WINAPI VarR8FromBool(VARIANT_BOOL boolIn, double *pDblOut)
HRESULT WINAPI VarUI8FromDec(const DECIMAL *pdecIn, ULONG64 *pui64Out)
HRESULT WINAPI VarI1FromI8(LONG64 llIn, signed char *pcOut)
HRESULT WINAPI VarCyFromUI4(ULONG ulIn, CY *pCyOut)
HRESULT WINAPI VarDateFromUI2(USHORT uiIn, DATE *pdateOut)
HRESULT WINAPI VarDateFromR8(double dblIn, DATE *pdateOut)
HRESULT WINAPI VarBstrFromDec(const DECIMAL *pDecIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI1FromDate(DATE dateIn, signed char *pcOut)
HRESULT WINAPI VarDateFromI2(short sIn, DATE *pdateOut)
HRESULT WINAPI VarI2FromCy(CY cyIn, SHORT *psOut)
HRESULT WINAPI VarI1FromCy(CY cyIn, signed char *pcOut)
HRESULT WINAPI VarUI4FromDate(DATE dateIn, ULONG *pulOut)
HRESULT WINAPI VarDateFromI4(LONG lIn, DATE *pdateOut)
HRESULT WINAPI VarUI4FromUI1(BYTE bIn, ULONG *pulOut)
HRESULT WINAPI VarBstrFromUI2(USHORT usIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarI8FromBool(VARIANT_BOOL boolIn, LONG64 *pi64Out)
HRESULT WINAPI VarBstrCat(BSTR pbstrLeft, BSTR pbstrRight, BSTR *pbstrOut)
HRESULT WINAPI VarDecFromI1(signed char cIn, DECIMAL *pDecOut)
HRESULT WINAPI VarBoolFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarI8FromUI2(USHORT usIn, LONG64 *pi64Out)
HRESULT WINAPI VarDateFromI8(LONG64 llIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromR4(FLOAT fltIn, USHORT *pusOut)
HRESULT WINAPI VarCyFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, CY *pCyOut)
HRESULT WINAPI VarUI2FromR8(double dblIn, USHORT *pusOut)
HRESULT WINAPI VarI2FromI4(LONG iIn, SHORT *psOut)
HRESULT WINAPI VarDecFromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, DECIMAL *pDecOut)
HRESULT WINAPI VarUI1FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, BYTE *pbOut)
HRESULT WINAPI VarBoolFromI1(signed char cIn, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarUI8FromI1(signed char cIn, ULONG64 *pui64Out)
HRESULT WINAPI VarBstrFromUI4(ULONG ulIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarR4FromR8(double dblIn, float *pFltOut)
HRESULT WINAPI VarCyFromI2(SHORT sIn, CY *pCyOut)
HRESULT WINAPI VarDecFromI8(LONG64 llIn, DECIMAL *pDecOut)
HRESULT WINAPI VarR4FromStr(const OLECHAR *strIn, LCID lcid, ULONG dwFlags, float *pFltOut)
HRESULT WINAPI VarR8FromR4(FLOAT fltIn, double *pDblOut)
HRESULT WINAPI VarCyAdd(CY cyLeft, CY cyRight, CY *pCyOut)
HRESULT WINAPI VarCyFromI1(signed char cIn, CY *pCyOut)
HRESULT WINAPI VarI4FromR4(FLOAT fltIn, LONG *piOut)
HRESULT WINAPI VarBstrFromI1(signed char cIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarDateFromDec(const DECIMAL *pdecIn, DATE *pdateOut)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static const WCHAR month[12][4]
static const char * debugstr_variant(const VARIANT *var)
double pow(double x, double y)
GLenum GLenum GLenum GLenum GLenum scale
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint factor
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define memcpy(s1, s2, n)
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static float(__cdecl *square_half_float)(float x
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define LOCALE_USER_DEFAULT
#define MAKELCID(lgid, srtid)
UINT WINAPI SysStringByteLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI DECLSPEC_HOTPATCH SysAllocStringByteLen(LPCSTR str, UINT len)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define VARIANT_CALENDAR_THAI
#define VARIANT_ALPHABOOL
#define VAR_CALENDAR_GREGORIAN
#define NUMPRS_LEADING_WHITE
#define VARIANT_CALENDAR_HIJRI
#define VAR_CALENDAR_THAI
#define VARIANT_NOVALUEPROP
#define VARIANT_NOUSEROVERRIDE
#define VAR_DATEVALUEONLY
#define NUMPRS_TRAILING_WHITE
#define NUMPRS_TRAILING_MINUS
#define NUMPRS_LEADING_PLUS
#define VAR_CALENDAR_HIJRI
#define NUMPRS_LEADING_MINUS
#define DISPATCH_PROPERTYGET
#define VARIANT_CALENDAR_GREGORIAN
#define VAR_TIMEVALUEONLY
#define VARIANT_LOCALBOOL
#define NUMPRS_TRAILING_PLUS
#define SUBLANG_ENGLISH_US
static const char *static const char const char DWORD void DWORD *static const char const char DWORD void DWORD *static const char DWORD DWORD void * buff
WCHAR cCurrencyDigitSeparator
WCHAR cCurrencyDecimalPoint
static void VARIANT_DMYFromJulian(int jd, USHORT *year, USHORT *month, USHORT *day)
static HRESULT VARIANT_CopyIRecordInfo(VARIANT *dest, const VARIANT *src)
static HRESULT VARIANT_Coerce(VARIANTARG *pd, LCID lcid, USHORT wFlags, VARIANTARG *ps, VARTYPE vt)
static HRESULT _VarChangeTypeExWrap(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc)
HRESULT WINAPI VarParseNumFromStr(const OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, NUMPARSE *pNumprs, BYTE *rgbDig)
static double VARIANT_JulianFromDMY(USHORT year, USHORT month, USHORT day)
HRESULT WINAPI VarUdateFromDate(DATE dateIn, ULONG dwFlags, UDATE *lpUdate)
HRESULT WINAPI VarNot(LPVARIANT pVarIn, LPVARIANT pVarOut)
HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result)
static HRESULT VARIANT_ValidateType(VARTYPE vt)
static int VARIANT_DateFromJulian(int dateIn)
static int VARIANT_JulianFromDate(int dateIn)
INT WINAPI VariantTimeToSystemTime(double dateIn, LPSYSTEMTIME lpSt)
HRESULT WINAPI VarAnd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
#define DOS_DATE(d, m, y)
INT WINAPI VariantTimeToDosDateTime(double dateIn, USHORT *pwDosDate, USHORT *pwDosTime)
HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
#define B_NEGATIVE_EXPONENT
HRESULT WINAPI VarDiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
#define DOS_TIME(h, m, s)
HRESULT WINAPI VarSub(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out)
INT WINAPI DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, double *pDateOut)
HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI VarDateFromUdateEx(UDATE *pUdateIn, LCID lcid, ULONG dwFlags, DATE *pDateOut)
HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarRound(LPVARIANT pVarIn, int deci, LPVARIANT pVarOut)
#define GET_NUMBER_TEXT(fld, name)
HRESULT WINAPI VarImp(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
HRESULT WINAPI VariantChangeTypeEx(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI VarFix(LPVARIANT pVarIn, LPVARIANT pVarOut)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, const VARIANTARG *pvargSrc)
static void VARIANT_GetLocalisedNumberChars(VARIANT_NUMBER_CHARS *lpChars, LCID lcid, DWORD dwFlags)
HRESULT WINAPI VarIdiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarAbs(LPVARIANT pVarIn, LPVARIANT pVarOut)
struct tagVARIANT_NUMBER_CHARS VARIANT_NUMBER_CHARS
HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarEqv(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarCmp(LPVARIANT left, LPVARIANT right, LCID lcid, DWORD flags)
HRESULT WINAPI VarNumFromParseNum(NUMPARSE *pNumprs, BYTE *rgbDig, ULONG dwVtBits, VARIANT *pVarDst)
void WINAPI VariantInit(VARIANTARG *pVarg)
INT WINAPI SystemTimeToVariantTime(LPSYSTEMTIME lpSt, double *pDateOut)
#define B_PROCESSING_EXPONENT
static size_t VARIANT_DataSize(const VARIANT *pv)
HRESULT WINAPI VarNeg(LPVARIANT pVarIn, LPVARIANT pVarOut)
#define ABS_CASE(typ, min)
HRESULT WINAPI VarInt(LPVARIANT pVarIn, LPVARIANT pVarOut)
static HRESULT VARIANT_CoerceArray(VARIANTARG *pd, VARIANTARG *ps, VARTYPE vt)
HRESULT WINAPI VarDateFromUdate(UDATE *pUdateIn, ULONG dwFlags, DATE *pDateOut)
HRESULT WINAPI VarPow(LPVARIANT left, LPVARIANT right, LPVARIANT result)
static HRESULT VARIANT_RollUdate(UDATE *lpUd)
HRESULT VARIANT_ClearInd(VARIANTARG *pVarg)
static HRESULT VARIANT_FetchDispatchValue(LPVARIANT pvDispatch, LPVARIANT pValue)
static const VARTYPE ExtraFlags[16]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
DWORD WINAPI GetLastError(void)
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
#define DISP_E_BADVARTYPE
#define DISP_E_TYPEMISMATCH
#define LOCALE_SPOSITIVESIGN
#define LOCALE_SMONDECIMALSEP
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_NOUSEROVERRIDE
#define LOCALE_SNEGATIVESIGN