PATCH: Variant Time
Marcus Meissner
marcus at jet.franken.de
Thu Aug 9 15:16:51 CDT 2001
Hi,
This adds a first implementation for VarParseNumFromStr and VarNumFromParseNum
(mostly incomplete) and SystemTimeToVariantTime (mostly complete).
The first two are used by my VB testapp, the third one used by BearShare.
Ciao, Marcus
Changelog:
Implemented VarParseNumFromStr, VarNumFromParseNum,
SystemTimeToVariantTime.
Index: variant.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/variant.c,v
retrieving revision 1.17
diff -u -r1.17 variant.c
--- variant.c 2001/07/02 19:59:42 1.17
+++ variant.c 2001/08/09 20:22:18
@@ -4331,3 +4331,76 @@
return TmToDATE( &t, pvtime );
}
+
+HRESULT WINAPI VarParseNumFromStr(OLECHAR * strIn, LCID lcid, ULONG dwFlags,
+ NUMPARSE * pnumprs, BYTE * rgbDig) {
+ int i,lastent=0;
+ int cDig;
+ FIXME("(%s,flags=%lx,....), partial stub!\n",debugstr_w(strIn),dwFlags);
+ FIXME("numparse: cDig=%d, InFlags=%lx\n",pnumprs->cDig,pnumprs->dwInFlags);
+
+ /* The other struct components are to be set by us */
+
+ memset(rgbDig,0,pnumprs->cDig);
+
+ cDig = 0;
+ for (i=0; strIn[i] ;i++) {
+ if ((strIn[i]>='0') && (strIn[i]<='9')) {
+ if (pnumprs->cDig > cDig) {
+ *(rgbDig++)=strIn[i]-'0';
+ cDig++;
+ lastent = i;
+ }
+ }
+ }
+ pnumprs->cDig = cDig;
+
+ /* FIXME: Just patching some values in */
+ pnumprs->nPwr10 = 0;
+ pnumprs->nBaseShift = 0;
+ pnumprs->cchUsed = lastent;
+ pnumprs->dwOutFlags = NUMPRS_DECIMAL;
+ return S_OK;
+}
+HRESULT WINAPI VarNumFromParseNum(NUMPARSE * pnumprs, BYTE * rgbDig,
+ ULONG dwVtBits, VARIANT * pvar) {
+ DWORD xint;
+ int i;
+ FIXME("(,dwVtBits=%lx,....), partial stub!\n",dwVtBits);
+
+ xint = 0;
+ for (i=0;i<pnumprs->cDig;i++)
+ xint = xint*10 + rgbDig[i];
+
+ VariantInit(pvar);
+ if (dwVtBits & VTBIT_I4) {
+ pvar->vt = VT_I4;
+ pvar->u.intVal = xint;
+ return S_OK;
+ }
+ if (dwVtBits & VTBIT_R8) {
+ pvar->vt = VT_R8;
+ pvar->u.dblVal = xint;
+ return S_OK;
+ } else {
+ FIXME("vtbitmask is unsupported %lx\n",dwVtBits);
+ return E_FAIL;
+ }
+}
+
+HRESULT WINAPI
+SystemTimeToVariantTime(LPSYSTEMTIME lpSystemTime, DOUBLE *pvtime) {
+ struct tm xtm;
+
+ xtm.tm_year = lpSystemTime->wYear + 1900;
+ xtm.tm_min = lpSystemTime->wMinute;
+ xtm.tm_hour = lpSystemTime->wHour;
+ xtm.tm_sec = lpSystemTime->wSecond;
+ xtm.tm_mday = lpSystemTime->wDay;
+ xtm.tm_mon = lpSystemTime->wMonth;
+ xtm.tm_wday = lpSystemTime->wDayOfWeek;
+ xtm.tm_wday = lpSystemTime->wDayOfWeek;
+
+ TmToDATE(&xtm,pvtime);
+ return S_OK;
+}
Index: oleaut32.spec
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/oleaut32.spec,v
retrieving revision 1.27
diff -u -r1.27 oleaut32.spec
--- oleaut32.spec 2001/07/24 00:59:28 1.27
+++ oleaut32.spec 2001/08/09 20:22:18
@@ -52,8 +52,8 @@
39 stdcall SafeArrayDestroyData(ptr) SafeArrayDestroyData
40 stdcall SafeArrayRedim(ptr ptr) SafeArrayRedim
41 stub OACreateTypeLib2
-46 stub VarParseNumFromStr
-47 stub VarNumFromParseNum
+46 stdcall VarParseNumFromStr(wstr long long ptr ptr) VarParseNumFromStr
+47 stdcall VarNumFromParseNum(ptr ptr long ptr) VarNumFromParseNum
48 stdcall VarI2FromUI1(long ptr) VarI2FromUI1
49 stdcall VarI2FromI4(long ptr) VarI2FromI4
50 stdcall VarI2FromR4(long ptr) VarI2FromR4
@@ -152,7 +152,7 @@
171 stub ClearCustData
180 stub CreateTypeLib2
183 stdcall LoadTypeLibEx (ptr long ptr) LoadTypeLibEx
-184 stub SystemTimeToVariantTime
+184 stdcall SystemTimeToVariantTime(ptr ptr) SystemTimeToVariantTime
185 stub VariantTimeToSystemTime
186 stdcall UnRegisterTypeLib (ptr long long long long) UnRegisterTypeLib
190 stub VarDecFromUI1
More information about the wine-patches
mailing list