33#define NONAMELESSUNION
34#define NONAMELESSSTRUCT
50 0, 0, { (
DWORD_PTR)(__FILE__
": cache_cs") }
518 static DISPPARAMS emptyParams = {
NULL,
NULL, 0, 0 };
570 TRACE(
"(%p)\n", pVarg);
613 IRecordInfo_RecordClear(pBr->pRecInfo, pBr->pvRecord);
614 IRecordInfo_Release(pBr->pRecInfo);
673 IRecordInfo_RecordClear(pBr->pRecInfo, pBr->pvRecord);
674 IRecordInfo_Release(pBr->pRecInfo);
699 if (!src_rec->pRecInfo)
705 hr = IRecordInfo_GetSize(src_rec->pRecInfo, &
size);
714 dest_rec->pRecInfo = src_rec->pRecInfo;
715 IRecordInfo_AddRef(src_rec->pRecInfo);
717 return IRecordInfo_RecordCopy(src_rec->pRecInfo, src_rec->pvRecord, dest_rec->pvRecord);
758 if (pvargSrc != pvargDest &&
761 *pvargDest = *pvargSrc;
765 switch (
V_VT(pvargSrc))
811 case VT_BSTR:
return sizeof(
void*);
869 if (pvargSrc == pvargDest)
883 TRACE(
"VariantClear() of destination failed\n");
919 goto VariantCopyInd_Return;
932 V_VT(pvargDest) =
V_VT(pSrc) & ~VT_BYREF;
934VariantCopyInd_Return:
936 if (pSrc != pvargSrc)
1048#define IsLeapYear(y) (((y % 4) == 0) && (((y % 100) != 0) || ((y % 400) == 0)))
1053 int julianDays = dateIn;
1056 julianDays += 1757585;
1063 int julianDays = dateIn;
1065 julianDays -= 1757585;
1077 l -= (
n * 146097 + 3) / 4;
1078 i = (4000 * (
l + 1)) / 1461001;
1079 l += 31 - (
i * 1461) / 4;
1080 j = (
l * 80) / 2447;
1081 *
day =
l - (
j * 2447) / 80;
1084 *year = 100 * (
n - 49) +
i +
l;
1092 return ((1461 * (year + 4800 +
m12)) / 4 + (367 * (
month - 2 - 12 *
m12)) / 12 -
1093 (3 * ((year + 4900 +
m12) / 100)) / 4 +
day - 32075);
1097#define DOS_YEAR(x) (1980 + (x >> 9))
1098#define DOS_MONTH(x) ((x >> 5) & 0xf)
1099#define DOS_DAY(x) (x & 0x1f)
1100#define DOS_HOUR(x) (x >> 11)
1101#define DOS_MINUTE(x) ((x >> 5) & 0x3f)
1102#define DOS_SECOND(x) ((x & 0x1f) << 1)
1104#define DOS_DATE(d,m,y) (d | (m << 5) | ((y-1980) << 9))
1105#define DOS_TIME(h,m,s) ((s >> 1) | (m << 5) | (h << 11))
1110 static const BYTE days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
1111 short iYear, iMonth, iDay, iHour, iMinute, iSecond;
1121 TRACE(
"Raw date: %d/%d/%d %d:%d:%d\n", iDay, iMonth,
1122 iYear, iHour, iMinute, iSecond);
1124 if (iYear > 9999 || iYear < -9999)
1127 if (iYear >= 0 && iYear < 30)
1130 else if (iYear >= 30 && iYear < 100)
1133 iMinute += iSecond / 60;
1134 iSecond = iSecond % 60;
1135 iHour += iMinute / 60;
1136 iMinute = iMinute % 60;
1139 iYear += iMonth / 12;
1140 iMonth = iMonth % 12;
1141 if (iMonth<=0) {iMonth+=12; iYear--;}
1142 while (iDay > days[iMonth])
1147 iDay -= days[iMonth];
1149 iYear += iMonth / 12;
1150 iMonth = iMonth % 12;
1155 if (iMonth<=0) {iMonth+=12; iYear--;}
1159 iDay += days[iMonth];
1162 if (iSecond<0){iSecond+=60; iMinute--;}
1163 if (iMinute<0){iMinute+=60; iHour--;}
1164 if (iHour<0) {iHour+=24; iDay--;}
1165 if (iYear<=0) iYear+=2000;
1216 TRACE(
"(0x%x(%d/%d/%d),0x%x(%d:%d:%d),%p)\n",
1256 TRACE(
"(%g,%p,%p)\n", dateIn, pwDosDate, pwDosTime);
1267 TRACE(
"Returning 0x%x(%d/%d/%d), 0x%x(%d:%d:%d)\n",
1295 if (lpSt->
wDay > 31)
1297 if ((
short)lpSt->
wYear < 0)
1321 TRACE(
"(%g,%p)\n", dateIn, lpSt);
1350 TRACE(
"(%p->%d/%d/%d %d:%d:%d:%d %d %d,0x%08x,0x%08x,%p)\n", pUdateIn,
1357 FIXME(
"lcid possibly not handled, treating as en-us\n");
1364 WARN(
"Ignoring VAR_VALIDDATE\n");
1375 double dateSign = (dateVal < 0.0) ? -1.0 : 1.0;
1378 dateVal += ud.
st.
wHour / 24.0 * dateSign;
1379 dateVal += ud.
st.
wMinute / 1440.0 * dateSign;
1380 dateVal += ud.
st.
wSecond / 86400.0 * dateSign;
1383 TRACE(
"Returning %g\n", dateVal);
1384 *pDateOut = dateVal;
1430 static const USHORT cumulativeDays[] =
1432 0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
1434 double datePart, timePart;
1442 datePart = dateIn < 0.0 ?
ceil(dateIn) :
floor(dateIn);
1444 timePart =
fabs(dateIn - datePart) + 0.00000000001;
1445 if (timePart >= 1.0)
1446 timePart -= 0.00000000001;
1453 datePart = (datePart + 1.5) / 7.0;
1473 timePart -= lpUdate->
st.
wHour;
1500 if (++lpUdate->
st.
wDay > 28)
1509#define GET_NUMBER_TEXT(fld,name) \
1511 if (!GetLocaleInfoW(lcid, lctype|fld, buff, 2)) \
1512 WARN("buffer too small for " #fld "\n"); \
1514 if (buff[0]) lpChars->name = buff[0]; \
1515 TRACE("lcid 0x%x, " #name "=%d '%c'\n", lcid, lpChars->name, lpChars->name)
1522 static LCID lastLcid = -1;
1523 static DWORD lastFlags = 0;
1532 if(lcid == lastLcid &&
dwFlags == lastFlags)
1534 memcpy(lpChars, &lastChars,
sizeof(defaultChars));
1539 memcpy(lpChars, &defaultChars,
sizeof(defaultChars));
1554 default:
WARN(
"buffer too small for LOCALE_SCURRENCY\n");
1559 memcpy(&lastChars, lpChars,
sizeof(defaultChars));
1566#define B_PROCESSING_EXPONENT 0x1
1567#define B_NEGATIVE_EXPONENT 0x2
1568#define B_EXPONENT_START 0x4
1569#define B_INEXACT_ZEROS 0x8
1570#define B_LEADING_ZERO 0x10
1571#define B_PROCESSING_HEX 0x20
1572#define B_PROCESSING_OCT 0x40
1615 if (!pNumprs || !rgbDig)
1618 if (pNumprs->
cDig < iMaxDigits)
1619 iMaxDigits = pNumprs->
cDig;
1690 if ((*lpszStr ==
'&' && (*(lpszStr+1) ==
'H' || *(lpszStr+1) ==
'h')) &&
1698 else if ((*lpszStr ==
'&' && (*(lpszStr+1) ==
'O' || *(lpszStr+1) ==
'o')) &&
1708 while (*lpszStr ==
'0')
1721 int exponentSize = 0;
1726 while (*lpszStr ==
'0')
1737 exponentSize += *lpszStr -
'0';
1742 exponentSize = -exponentSize;
1744 pNumprs->
nPwr10 += exponentSize;
1755 if (*lpszStr !=
'0')
1756 dwState &= ~B_INEXACT_ZEROS;
1766 if ((dwState &
B_PROCESSING_OCT) && ((*lpszStr ==
'8') || (*lpszStr ==
'9')))
1772 rgbTmp[pNumprs->
cDig] = *lpszStr -
'0';
1793 while (lpszStr[1] ==
'0')
1802 else if (((*lpszStr >=
'a' && *lpszStr <=
'f') ||
1803 (*lpszStr >=
'A' && *lpszStr <=
'F')) &&
1806 if (pNumprs->
cDig >= iMaxDigits)
1812 if (*lpszStr >=
'a')
1813 rgbTmp[pNumprs->
cDig] = *lpszStr -
'a' + 10;
1815 rgbTmp[pNumprs->
cDig] = *lpszStr -
'A' + 10;
1820 else if ((*lpszStr ==
'e' || *lpszStr ==
'E') &&
1853 WARN(
"didn't completely parse exponent\n");
1878 while (pNumprs->
cDig > 1 && !rgbTmp[pNumprs->
cDig - 1])
1888 while (pNumprs->
cDig > 1 && !rgbTmp[pNumprs->
cDig - 1])
1895 if (pNumprs->
cDig <= iMaxDigits)
1898 pNumprs->
cDig = iMaxDigits;
1959#define INTEGER_VTBITS (VTBIT_I1|VTBIT_UI1|VTBIT_I2|VTBIT_UI2|VTBIT_I4|VTBIT_UI4|VTBIT_I8|VTBIT_UI8)
1961#define REAL_VTBITS (VTBIT_R4|VTBIT_R8|VTBIT_CY)
1964#define FITS_AS_I1(x) ((x) >> 8 == 0)
1965#define FITS_AS_I2(x) ((x) >> 16 == 0)
1966#define FITS_AS_I4(x) ((x) >> 32 == 0)
2002 static const double dblMultipliers[11] = {
2003 1.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0,
2004 1000000.0, 10000000.0, 100000000.0, 1000000000.0, 10000000000.0
2006 static const double dblMinimums[11] = {
2011 static const double dblMaximums[11] = {
2017 int wholeNumberDigits, fractionalDigits, divisor10 = 0, multiplier10 = 0;
2019 TRACE(
"(%p,%p,0x%x,%p)\n", pNumprs, rgbDig, dwVtBits, pVarDst);
2029 for (
i = 0;
i < pNumprs->
cDig;
i++)
2033 TRACE(
"Overflow multiplying digits\n");
2046 V_I1(pVarDst) = ul64;
2052 V_UI1(pVarDst) = ul64;
2058 V_I2(pVarDst) = ul64;
2064 V_UI2(pVarDst) = ul64;
2070 V_I4(pVarDst) = ul64;
2076 V_UI4(pVarDst) = ul64;
2082 V_I8(pVarDst) = ul64;
2088 V_UI8(pVarDst) = ul64;
2103 V_R4(pVarDst) = ul64;
2105 V_R4(pVarDst) = l64;
2112 V_R8(pVarDst) = ul64;
2114 V_R8(pVarDst) = l64;
2130 wholeNumberDigits = 0;
2131 fractionalDigits = pNumprs->
cDig;
2132 divisor10 = -pNumprs->
nPwr10;
2137 wholeNumberDigits = pNumprs->
cDig + pNumprs->
nPwr10;
2138 fractionalDigits = pNumprs->
cDig - wholeNumberDigits;
2139 divisor10 = pNumprs->
cDig - wholeNumberDigits;
2142 else if (pNumprs->
nPwr10 == 0)
2145 wholeNumberDigits = pNumprs->
cDig;
2146 fractionalDigits = 0;
2151 wholeNumberDigits = pNumprs->
cDig;
2152 fractionalDigits = 0;
2153 multiplier10 = pNumprs->
nPwr10;
2156 TRACE(
"cDig %d; nPwr10 %d, whole %d, frac %d mult %d; div %d\n",
2157 pNumprs->
cDig, pNumprs->
nPwr10, wholeNumberDigits, fractionalDigits,
2158 multiplier10, divisor10);
2176 for (
i = 0;
i < wholeNumberDigits;
i++)
2180 TRACE(
"Overflow multiplying digits\n");
2184 ul64 = ul64 * 10 + rgbDig[
i];
2188 if (!bOverflow && multiplier10)
2190 for (
i = 0;
i < multiplier10;
i++)
2194 TRACE(
"Overflow scaling number\n");
2206 if (!bOverflow && fractionalDigits && divisor10 > 0)
2208 const BYTE* fracDig = rgbDig + wholeNumberDigits;
2211 TRACE(
"first decimal value is %d\n", *fracDig);
2215 else if (*fracDig == 5)
2217 for (
i = 1;
i < fractionalDigits;
i++)
2226 if (
i == fractionalDigits && (ul64 & 1))
2234 TRACE(
"Overflow after rounding\n");
2247 if (!bOverflow && bNegative)
2254 V_I1(pVarDst) = -ul64;
2260 V_I2(pVarDst) = -ul64;
2266 V_I4(pVarDst) = -ul64;
2272 V_I8(pVarDst) = -ul64;
2286 else if (!bOverflow)
2292 V_I1(pVarDst) = ul64;
2298 V_UI1(pVarDst) = ul64;
2304 V_I2(pVarDst) = ul64;
2310 V_UI2(pVarDst) = ul64;
2316 V_I4(pVarDst) = ul64;
2322 V_UI4(pVarDst) = ul64;
2328 V_I8(pVarDst) = ul64;
2334 V_UI8(pVarDst) = ul64;
2357 for (
i = 0;
i < pNumprs->
cDig;
i++)
2358 whole = whole * 10.0 + rgbDig[
i];
2360 TRACE(
"Whole double value is %16.16g\n", whole);
2363 while (multiplier10 > 10)
2365 if (whole > dblMaximums[10])
2371 whole = whole * dblMultipliers[10];
2374 if (multiplier10 && !bOverflow)
2376 if (whole > dblMaximums[multiplier10])
2382 whole = whole * dblMultipliers[multiplier10];
2386 TRACE(
"Scaled double value is %16.16g\n", whole);
2388 while (divisor10 > 10 && !bOverflow)
2390 if (whole < dblMinimums[10] && whole != 0)
2396 whole = whole / dblMultipliers[10];
2399 if (divisor10 && !bOverflow)
2401 if (whole < dblMinimums[divisor10] && whole != 0)
2407 whole = whole / dblMultipliers[divisor10];
2410 TRACE(
"Final double value is %16.16g\n", whole);
2413 ((whole <= R4_MAX && whole >=
R4_MIN) || whole == 0.0))
2415 TRACE(
"Set R4 to final value\n");
2423 TRACE(
"Set R8 to final value\n");
2434 TRACE(
"Set CY to final value\n");
2437 TRACE(
"Value Overflows CY\n");
2448 DECIMAL_SETZERO(*pDec);
2457 for (
i = 0;
i < pNumprs->
cDig;
i++)
2460 carry = (
ULONG)(tmp >> 32);
2463 carry = (
ULONG)(tmp >> 32);
2470VarNumFromParseNum_DecOverflow:
2471 TRACE(
"Overflow\n");
2478 while (multiplier10 > 0)
2481 carry = (
ULONG)(tmp >> 32);
2484 carry = (
ULONG)(tmp >> 32);
2490 goto VarNumFromParseNum_DecOverflow;
2537 else if ((leftvt ==
VT_I2 || leftvt ==
VT_I4 ||
2610 left_str =
V_BSTR(&converted);
2636 right_str =
V_BSTR(&converted);
2664 V_VT(&vtmpsrc) &= ~VT_RESERVED;
2723 xmask = (1 << lvt) | (1 << rvt);
2781 if (!breserv && !nreserv)
2784 else if (breserv && !nreserv) {
2797 else if (breserv && nreserv)
2858#define _VARCMP(a,b) \
2859 (((a) == (b)) ? VARCMP_EQ : (((a) < (b)) ? VARCMP_LT : VARCMP_GT))
2925 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
2926 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
2928 if (leftExtraFlags != rightExtraFlags)
2947 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
2949 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
3092 FIXME(
"Couldn't bitwise AND variant types %d,%d\n",
3140 enum coerceprio { vt_EMPTY, vt_UI1, vt_I2, vt_I4, vt_I8, vt_BSTR,vt_R4,
3141 vt_R8, vt_CY, vt_DATE, vt_DECIMAL, vt_DISPATCH, vt_NULL,
3149 static const VARTYPE coerce[] = {
3151 vt_EMPTY, vt_NULL, vt_I2, vt_I4, vt_R4,
3153 vt_R8, vt_CY, vt_DATE, vt_BSTR, vt_DISPATCH,
3155 vt_ERROR, vt_I2, vt_ERROR, vt_ERROR, vt_DECIMAL,
3157 vt_ERROR, vt_ERROR, vt_UI1, vt_ERROR, vt_ERROR, vt_I8
3197 if (coerce[lvt] > coerce[rvt]) {
3198 resvt = prio2vt[coerce[lvt]];
3199 tvt = prio2vt[coerce[rvt]];
3201 resvt = prio2vt[coerce[rvt]];
3202 tvt = prio2vt[coerce[lvt]];
3227 FIXME(
"cannot handle variant type VT_DISPATCH\n");
3288 ERR(
"We shouldn't get here! tvt = %d!\n", tvt);
3298 resvt = prio2vt[coerce[resvt] + 1];
3353 enum coerceprio { vt_UI1 = 0, vt_I2, vt_I4, vt_I8, vt_CY, vt_R4, vt_R8,
3354 vt_DECIMAL, vt_NULL, vt_ERROR };
3360 static const VARTYPE coerce[] = {
3362 vt_UI1, vt_NULL, vt_I2, vt_I4, vt_R4,
3364 vt_R8, vt_CY, vt_R8, vt_R8, vt_ERROR,
3366 vt_ERROR, vt_I2, vt_ERROR, vt_ERROR, vt_DECIMAL,
3368 vt_ERROR, vt_ERROR, vt_UI1, vt_ERROR, vt_ERROR, vt_I8
3405 if (coerce[lvt] > coerce[rvt]) {
3406 resvt = prio2vt[coerce[lvt]];
3407 tvt = prio2vt[coerce[rvt]];
3409 resvt = prio2vt[coerce[rvt]];
3410 tvt = prio2vt[coerce[lvt]];
3478 ERR(
"We shouldn't get here! tvt = %d!\n", tvt);
3488 resvt = prio2vt[coerce[resvt] + 1];
3553 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
3554 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
3556 if (leftExtraFlags != rightExtraFlags)
3581 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8 ||
3601 else if (leftvt ==
VT_R4 || rightvt ==
VT_R4)
3628 if (
V_R4(&lv) == 0.0 &&
V_R4(&rv) == 0.0)
3633 else if (
V_R4(&rv) == 0.0)
3642 if (
V_R8(&lv) == 0.0 &&
V_R8(&rv) == 0.0)
3647 else if (
V_R8(&rv) == 0.0)
3755 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
3756 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
3758 if (leftExtraFlags != rightExtraFlags)
3813 (leftvt < VT_VOID || leftvt >
VT_LPWSTR)))
3821 (rightvt < VT_VOID || rightvt >
VT_LPWSTR)))
3846 else if (leftvt ==
VT_CY || rightvt ==
VT_CY)
3848 else if (leftvt ==
VT_R8 || rightvt ==
VT_R8)
3852 else if (leftvt ==
VT_R4 || rightvt ==
VT_R4)
3860 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
3862 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4)
3864 else if (leftvt ==
VT_I2 || rightvt ==
VT_I2 ||
3954 VARIANT varLeft, varRight, varStr;
3970 if (
FAILED(hRet))
goto VarOr_Exit;
3971 pVarLeft = &tempLeft;
3976 if (
FAILED(hRet))
goto VarOr_Exit;
3977 pVarRight = &tempRight;
3995 pVarLeft = pVarRight;
4000 switch (
V_VT(pVarLeft))
4009 *pVarOut = *pVarLeft;
4023 if (
V_UI1(pVarLeft))
4024 *pVarOut = *pVarLeft;
4083 pVarLeft = pVarRight;
4090 switch (
V_VT(pVarLeft))
4125 pVarLeft = &varLeft;
4277 if (
FAILED(hRet))
goto VarAbs_Exit;
4290#define ABS_CASE(typ,min) \
4291 case VT_##typ: if (V_##typ(pVarIn) == min) hRet = DISP_E_OVERFLOW; \
4292 else if (V_##typ(pVarIn) < 0) V_##typ(pVarOut) = -V_##typ(pVarIn); \
4295 switch (
V_VT(pVarIn))
4380 if (
FAILED(hRet))
goto VarFix_Exit;
4385 switch (
V_VT(pVarIn))
4403 if (
V_R4(pVarIn) < 0.0f)
4415 if (
V_R8(pVarIn) < 0.0)
4486 if (
FAILED(hRet))
goto VarInt_Exit;
4491 switch (
V_VT(pVarIn))
4512 hRet =
VarFix(pVarIn, pVarOut);
4578 if (
FAILED(hRet))
goto VarXor_Exit;
4579 pVarLeft = &tempLeft;
4584 if (
FAILED(hRet))
goto VarXor_Exit;
4585 pVarRight = &tempRight;
4630 switch ((
V_VT(&varLeft) << 16) |
V_VT(&varRight))
4670 if (
V_VT(&varLeft) !=
vt)
4675 if (
V_VT(&varRight) !=
vt)
4733 hRet =
VarXor(pVarLeft, pVarRight, pVarOut);
4737 V_I8(pVarOut) = ~V_I8(pVarOut);
4739 V_UI4(pVarOut) = ~V_UI4(pVarOut);
4794 if (
FAILED(hRet))
goto VarNeg_Exit;
4799 switch (
V_VT(pVarIn))
4831 V_R8(pVarOut) *= -1.0;
4923 if (
FAILED(hRet))
goto VarNot_Exit;
4936 if (
FAILED(hRet))
goto VarNot_Exit;
4942 switch (
V_VT(pVarIn))
4945 V_I4(pVarOut) = ~V_I1(pVarIn);
4948 case VT_UI1:
V_UI1(pVarOut) = ~V_UI1(pVarIn);
break;
4950 case VT_I2:
V_I2(pVarOut) = ~V_I2(pVarIn);
break;
4952 V_I4(pVarOut) = ~V_UI2(pVarIn);
4964 case VT_I4:
V_I4(pVarOut) = ~V_I4(pVarIn);
break;
4967 V_I4(pVarOut) = ~V_UI4(pVarIn);
4970 case VT_I8:
V_I8(pVarOut) = ~V_I8(pVarIn);
break;
4972 V_I4(pVarOut) = ~V_UI8(pVarIn);
4977 V_I4(pVarOut) = ~V_I4(pVarOut);
4983 V_I4(pVarOut) = ~V_I4(pVarOut);
4988 V_I4(pVarOut) = ~V_I4(pVarOut);
5047 if (
FAILED(hRet))
goto VarRound_Exit;
5051 switch (
V_VT(pVarIn))
5098 if (
V_R8(pVarIn)>0) {
5106 if (
V_R4(pVarIn)>0) {
5145 dbl =
ceil(dbl*
pow(10,deci)-0.5);
5153 FIXME(
"unimplemented part, V_VT(pVarIn) == 0x%X, deci == %d\n",
5201 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5202 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5204 if (leftExtraFlags != rightExtraFlags)
5230 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
5232 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
5246 else if (leftvt ==
VT_I2 || rightvt ==
VT_I2 ||
5269 if (
V_UI1(&rv) == 0)
5305 FIXME(
"Couldn't integer divide variant types %d,%d\n",
5545 TRACE(
"V_I8(left) == %s, V_I8(right) == %s, V_I8(result) == %s\n",
5611 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5612 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5614 if (leftExtraFlags != rightExtraFlags)
5655 ERR(
"Could not change passed left argument to VT_R8, handle it differently.\n");
5662 ERR(
"Could not change passed right argument to VT_R8, handle it differently.\n");
5726 leftExtraFlags =
V_VT(
left)&(~VT_TYPEMASK);
5727 rightExtraFlags =
V_VT(
right)&(~VT_TYPEMASK);
5729 if (leftExtraFlags != rightExtraFlags)
5754 else if (leftvt ==
VT_I8 || rightvt ==
VT_I8)
5756 else if (leftvt ==
VT_I4 || rightvt ==
VT_I4 ||
5862 else if (
b == VARIANT_TRUE)
5877 memset( &rv, 0,
sizeof(rv) );
5920 FIXME(
"Couldn't perform bitwise implication on variant types %d,%d\n",
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
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
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 VarCyFromDec(DECIMAL *pdecIn, CY *pCyOut)
HRESULT WINAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarCyFromUI1(BYTE bIn, CY *pCyOut)
HRESULT WINAPI VarI2FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, SHORT *psOut)
HRESULT WINAPI VarI1FromDec(DECIMAL *pdecIn, signed char *pcOut)
HRESULT WINAPI VarR4FromUI8(ULONG64 ullIn, float *pFltOut)
HRESULT WINAPI VarI2FromBool(VARIANT_BOOL boolIn, SHORT *psOut)
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 VarCyFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, CY *pCyOut)
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 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 VarBoolFromDec(DECIMAL *pDecIn, VARIANT_BOOL *pBoolOut)
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 VarUI2FromDec(DECIMAL *pdecIn, USHORT *pusOut)
HRESULT WINAPI VarDecFromI2(SHORT sIn, DECIMAL *pDecOut)
HRESULT WINAPI VarI8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG64 *pi64Out)
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 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 VarBoolFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, VARIANT_BOOL *pBoolOut)
HRESULT WINAPI VarBstrFromCy(CY cyIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
HRESULT WINAPI VarUI8FromBool(VARIANT_BOOL boolIn, ULONG64 *pui64Out)
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 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 VarUI1FromDec(DECIMAL *pdecIn, BYTE *pbOut)
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 VarDateFromDec(DECIMAL *pdecIn, DATE *pdateOut)
HRESULT WINAPI VarI4FromI1(signed char cIn, LONG *piOut)
HRESULT WINAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL *pBoolOut)
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 VarR8FromUI8(ULONG64 ullIn, double *pDblOut)
HRESULT WINAPI VarUI4FromI2(SHORT sIn, ULONG *pulOut)
HRESULT WINAPI VarR4FromCy(CY cyIn, float *pFltOut)
HRESULT WINAPI VarR4FromDec(DECIMAL *pDecIn, float *pFltOut)
HRESULT WINAPI VarUI1FromI2(SHORT sIn, BYTE *pbOut)
HRESULT WINAPI VarUI4FromDec(DECIMAL *pdecIn, ULONG *pulOut)
HRESULT WINAPI VarUI2FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, USHORT *pusOut)
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 VarBstrCmp(BSTR pbstrLeft, BSTR pbstrRight, LCID lcid, DWORD dwFlags)
HRESULT WINAPI VarUI4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG *pulOut)
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 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 VarI8FromDec(DECIMAL *pdecIn, LONG64 *pi64Out)
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 VarUI8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, ULONG64 *pui64Out)
HRESULT WINAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE *pdateOut)
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 VarUI2FromBool(VARIANT_BOOL boolIn, USHORT *pusOut)
HRESULT WINAPI VarUI1FromUI2(USHORT usIn, BYTE *pbOut)
HRESULT WINAPI VarUI1FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, 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 VarBstrFromDec(DECIMAL *pDecIn, 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 VarUI1FromDisp(IDispatch *pdispIn, LCID lcid, BYTE *pbOut)
HRESULT WINAPI VarUI8FromDec(DECIMAL *pdecIn, ULONG64 *pui64Out)
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 VarDecFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DECIMAL *pDecOut)
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 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 VarI4FromDec(DECIMAL *pdecIn, LONG *piOut)
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 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 VarR8FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, double *pDblOut)
HRESULT WINAPI VarI1FromDate(DATE dateIn, signed char *pcOut)
HRESULT WINAPI VarI1FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, 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 VarI8FromUI2(USHORT usIn, LONG64 *pi64Out)
HRESULT WINAPI VarDateFromI8(LONG64 llIn, DATE *pdateOut)
HRESULT WINAPI VarUI2FromR4(FLOAT fltIn, USHORT *pusOut)
HRESULT WINAPI VarUI2FromR8(double dblIn, USHORT *pusOut)
HRESULT WINAPI VarI4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, LONG *piOut)
HRESULT WINAPI VarI2FromI4(LONG iIn, SHORT *psOut)
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 VarR8FromR4(FLOAT fltIn, double *pDblOut)
HRESULT WINAPI VarR4FromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, float *pFltOut)
HRESULT WINAPI VarDateFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut)
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 VarI2FromDec(DECIMAL *pdecIn, SHORT *psOut)
HRESULT WINAPI VarBstrFromI1(signed char cIn, LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
static const WCHAR month[12][4]
static unsigned char buff[32768]
double pow(double x, double y)
GLboolean GLboolean GLboolean b
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
_Check_return_ _CRT_JIT_INTRINSIC double __cdecl fabs(_In_ double x)
_Check_return_ _CRTIMP double __cdecl floor(_In_ double x)
_Check_return_ _CRTIMP double __cdecl ceil(_In_ double x)
#define memcpy(s1, s2, n)
static const char * debugstr_variant(const VARIANT *var)
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
#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
#define DECLSPEC_HOTPATCH
#define R4(v, w, x, y, z, i)
LIST_ENTRY ProcessLocksList
WCHAR cCurrencyDigitSeparator
WCHAR cCurrencyDecimalPoint
static void VARIANT_DMYFromJulian(int jd, USHORT *year, USHORT *month, USHORT *day)
static HRESULT VARIANT_CopyIRecordInfo(VARIANT *dest, 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)
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)
static CRITICAL_SECTION cache_cs
HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
#define B_NEGATIVE_EXPONENT
HRESULT WINAPI VarDiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VariantChangeTypeEx(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
#define DOS_TIME(h, m, s)
HRESULT WINAPI VarSub(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out)
static CRITICAL_SECTION_DEBUG critsect_debug
INT WINAPI DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, double *pDateOut)
HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarDateFromUdateEx(UDATE *pUdateIn, LCID lcid, ULONG dwFlags, DATE *pDateOut)
HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
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 VarFix(LPVARIANT pVarIn, LPVARIANT pVarOut)
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)
HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarEqv(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarParseNumFromStr(OLECHAR *lpszStr, LCID lcid, ULONG dwFlags, NUMPARSE *pNumprs, BYTE *rgbDig)
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 VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
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)
#define SIGNSCALE(sign, scale)
static const VARTYPE ExtraFlags[16]
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
_In_ DWORD _Out_ _In_ WORD wFlags
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define DISP_E_BADVARTYPE
#define DISP_E_TYPEMISMATCH
#define LOCALE_SPOSITIVESIGN
#define LOCALE_SMONDECIMALSEP
#define LOCALE_SMONTHOUSANDSEP
#define LOCALE_NOUSEROVERRIDE
#define LOCALE_SNEGATIVESIGN