Reimplement/document every low level variant function.
Implement DECIMAL, I8, UI8 types and other missing conversions. VariantChangeType: Use LOCALE_USER_DEFAULT as per MSDN. VariantChangeTypeEx: Support new types, pass proper flags. VarNumFromParseNum: Support VT_DECIMAL as output.
This commit is contained in:
parent
076000ce51
commit
7e40baadc1
|
@ -26,7 +26,8 @@ C_SRCS = \
|
|||
typelib.c \
|
||||
usrmarshal.c \
|
||||
varformat.c \
|
||||
variant.c
|
||||
variant.c \
|
||||
vartype.c
|
||||
|
||||
C_SRCS16 = \
|
||||
ole2disp.c \
|
||||
|
|
|
@ -49,40 +49,40 @@
|
|||
49 stdcall VarI2FromI4(long ptr)
|
||||
50 stdcall VarI2FromR4(long ptr)
|
||||
51 stdcall VarI2FromR8(double ptr)
|
||||
52 stdcall VarI2FromCy(double ptr)
|
||||
52 stdcall VarI2FromCy(long long ptr)
|
||||
53 stdcall VarI2FromDate(double ptr)
|
||||
54 stdcall VarI2FromStr(wstr long long ptr)
|
||||
55 stub VarI2FromDisp
|
||||
55 stdcall VarI2FromDisp(ptr long ptr)
|
||||
56 stdcall VarI2FromBool(long ptr)
|
||||
57 stdcall SafeArraySetIID(ptr ptr)
|
||||
58 stdcall VarI4FromUI1(long ptr)
|
||||
59 stdcall VarI4FromI2(long ptr)
|
||||
60 stdcall VarI4FromR4(long ptr)
|
||||
61 stdcall VarI4FromR8(double ptr)
|
||||
62 stdcall VarI4FromCy(double ptr)
|
||||
62 stdcall VarI4FromCy(long long ptr)
|
||||
63 stdcall VarI4FromDate(double ptr)
|
||||
64 stdcall VarI4FromStr(wstr long long ptr)
|
||||
65 stub VarI4FromDisp
|
||||
65 stdcall VarI4FromDisp(ptr long ptr)
|
||||
66 stdcall VarI4FromBool(long ptr)
|
||||
67 stdcall SafeArrayGetIID(ptr ptr)
|
||||
68 stdcall VarR4FromUI1(long ptr)
|
||||
69 stdcall VarR4FromI2(long ptr)
|
||||
70 stdcall VarR4FromI4(long ptr)
|
||||
71 stdcall VarR4FromR8(double ptr)
|
||||
72 stdcall VarR4FromCy(double ptr)
|
||||
72 stdcall VarR4FromCy(long long ptr)
|
||||
73 stdcall VarR4FromDate(double ptr)
|
||||
74 stdcall VarR4FromStr(wstr long long ptr)
|
||||
75 stub VarR4FromDisp
|
||||
75 stdcall VarR4FromDisp(ptr long ptr)
|
||||
76 stdcall VarR4FromBool(long ptr)
|
||||
77 stdcall SafeArrayGetVartype(ptr ptr)
|
||||
78 stdcall VarR8FromUI1(long ptr)
|
||||
79 stdcall VarR8FromI2(long ptr)
|
||||
80 stdcall VarR8FromI4(long ptr)
|
||||
81 stdcall VarR8FromR4(long ptr)
|
||||
82 stdcall VarR8FromCy(double ptr)
|
||||
82 stdcall VarR8FromCy(long long ptr)
|
||||
83 stdcall VarR8FromDate(double ptr)
|
||||
84 stdcall VarR8FromStr(wstr long long ptr)
|
||||
85 stub VarR8FromDisp
|
||||
85 stdcall VarR8FromDisp(ptr long ptr)
|
||||
86 stdcall VarR8FromBool(long ptr)
|
||||
87 stdcall VarFormat(ptr ptr long long long ptr)
|
||||
88 stdcall VarDateFromUI1(long ptr)
|
||||
|
@ -90,9 +90,9 @@
|
|||
90 stdcall VarDateFromI4(long ptr)
|
||||
91 stdcall VarDateFromR4(long ptr)
|
||||
92 stdcall VarDateFromR8(double ptr)
|
||||
93 stdcall VarDateFromCy(double ptr)
|
||||
93 stdcall VarDateFromCy(long long ptr)
|
||||
94 stdcall VarDateFromStr(wstr long long ptr)
|
||||
95 stub VarDateFromDisp
|
||||
95 stdcall VarDateFromDisp(ptr long ptr)
|
||||
96 stdcall VarDateFromBool(long ptr)
|
||||
97 stdcall VarFormatDateTime(ptr long long ptr)
|
||||
98 stdcall VarCyFromUI1(long ptr)
|
||||
|
@ -101,8 +101,8 @@
|
|||
101 stdcall VarCyFromR4(long ptr)
|
||||
102 stdcall VarCyFromR8(double ptr)
|
||||
103 stdcall VarCyFromDate(double ptr)
|
||||
104 stdcall VarCyFromStr(ptr long long ptr)
|
||||
105 stub VarCyFromDisp
|
||||
104 stdcall VarCyFromStr(wstr long long ptr)
|
||||
105 stdcall VarCyFromDisp(ptr long ptr)
|
||||
106 stdcall VarCyFromBool(long ptr)
|
||||
107 stdcall VarFormatNumber(ptr long long long long long ptr)
|
||||
108 stdcall VarBstrFromUI1(long long long ptr)
|
||||
|
@ -110,7 +110,7 @@
|
|||
110 stdcall VarBstrFromI4(long long long ptr)
|
||||
111 stdcall VarBstrFromR4(long long long ptr)
|
||||
112 stdcall VarBstrFromR8(double long long ptr)
|
||||
113 stdcall VarBstrFromCy(double long long ptr)
|
||||
113 stdcall VarBstrFromCy(long long long long ptr)
|
||||
114 stdcall VarBstrFromDate(double long long ptr)
|
||||
115 stub VarBstrFromDisp
|
||||
116 stdcall VarBstrFromBool(long long long ptr)
|
||||
|
@ -121,9 +121,9 @@
|
|||
121 stdcall VarBoolFromR4(long ptr)
|
||||
122 stdcall VarBoolFromR8(double ptr)
|
||||
123 stdcall VarBoolFromDate(double ptr)
|
||||
124 stdcall VarBoolFromCy(double ptr)
|
||||
124 stdcall VarBoolFromCy(long long ptr)
|
||||
125 stdcall VarBoolFromStr(wstr long long ptr)
|
||||
126 stub VarBoolFromDisp
|
||||
126 stdcall VarBoolFromDisp(ptr long ptr)
|
||||
127 stdcall VarFormatCurrency(ptr long long long long long ptr)
|
||||
128 stub VarWeekdayName # stdcall (long long long long ptr)
|
||||
129 stub VarMonthName # stdcall (long long long ptr)
|
||||
|
@ -131,10 +131,10 @@
|
|||
131 stdcall VarUI1FromI4(long ptr)
|
||||
132 stdcall VarUI1FromR4(long ptr)
|
||||
133 stdcall VarUI1FromR8(double ptr)
|
||||
134 stdcall VarUI1FromCy(double ptr)
|
||||
134 stdcall VarUI1FromCy(long long ptr)
|
||||
135 stdcall VarUI1FromDate(double ptr)
|
||||
136 stdcall VarUI1FromStr(wstr long long ptr)
|
||||
137 stub VarUI1FromDisp
|
||||
137 stdcall VarUI1FromDisp(ptr long ptr)
|
||||
138 stdcall VarUI1FromBool(long ptr)
|
||||
139 stdcall VarFormatFromTokens (ptr ptr ptr long ptr long)
|
||||
140 stdcall VarTokenizeFormatString (ptr ptr long long long long ptr)
|
||||
|
@ -172,58 +172,58 @@
|
|||
174 stdcall VarNot(ptr ptr)
|
||||
175 stub VarRound # stdcall (ptr long ptr)
|
||||
176 stdcall VarCmp(ptr ptr long long)
|
||||
177 stub VarDecAdd # stdcall (ptr ptr ptr)
|
||||
178 stub VarDecDiv # stdcall (ptr ptr ptr)
|
||||
179 stub VarDecMul # stdcall (ptr ptr ptr)
|
||||
177 stdcall VarDecAdd(ptr ptr ptr)
|
||||
178 stdcall VarDecDiv(ptr ptr ptr)
|
||||
179 stdcall VarDecMul(ptr ptr ptr)
|
||||
180 stub CreateTypeLib2
|
||||
181 stub VarDecSub # stdcall (ptr ptr ptr)
|
||||
182 stub VarDecAbs # stdcall (ptr ptr)
|
||||
181 stdcall VarDecSub(ptr ptr ptr)
|
||||
182 stdcall VarDecAbs(ptr ptr)
|
||||
183 stdcall LoadTypeLibEx (wstr long ptr)
|
||||
184 stdcall SystemTimeToVariantTime(ptr ptr)
|
||||
185 stdcall VariantTimeToSystemTime(double ptr)
|
||||
186 stdcall UnRegisterTypeLib (ptr long long long long)
|
||||
187 stub VarDecFix # stdcall (ptr ptr)
|
||||
188 stub VarDecInt # stdcall (ptr ptr)
|
||||
189 stub VarDecNeg # stdcall (ptr ptr)
|
||||
190 stub VarDecFromUI1
|
||||
191 stub VarDecFromI2
|
||||
192 stub VarDecFromI4
|
||||
193 stub VarDecFromR4
|
||||
194 stub VarDecFromR8
|
||||
195 stub VarDecFromDate
|
||||
196 stub VarDecFromCy
|
||||
187 stdcall VarDecFix(ptr ptr)
|
||||
188 stdcall VarDecInt(ptr ptr)
|
||||
189 stdcall VarDecNeg(ptr ptr)
|
||||
190 stdcall VarDecFromUI1(long ptr)
|
||||
191 stdcall VarDecFromI2(long ptr)
|
||||
192 stdcall VarDecFromI4(long ptr)
|
||||
193 stdcall VarDecFromR4(long ptr)
|
||||
194 stdcall VarDecFromR8(double ptr)
|
||||
195 stdcall VarDecFromDate(double ptr)
|
||||
196 stdcall VarDecFromCy(long long ptr)
|
||||
197 stdcall VarDecFromStr(wstr long long ptr)
|
||||
198 stub VarDecFromDisp
|
||||
199 stub VarDecFromBool
|
||||
198 stdcall VarDecFromDisp(ptr long ptr)
|
||||
199 stdcall VarDecFromBool(long ptr)
|
||||
200 stdcall GetErrorInfo(long ptr) ole32.GetErrorInfo
|
||||
201 stdcall SetErrorInfo(long ptr) ole32.SetErrorInfo
|
||||
202 stdcall CreateErrorInfo(ptr) ole32.CreateErrorInfo
|
||||
203 stub VarDecRound # stdcall (ptr long ptr)
|
||||
204 stub VarDecCmp # stdcall (ptr ptr)
|
||||
203 stdcall VarDecRound(ptr long ptr)
|
||||
204 stdcall VarDecCmp(ptr ptr)
|
||||
205 stdcall VarI2FromI1(long ptr)
|
||||
206 stdcall VarI2FromUI2(long ptr)
|
||||
207 stdcall VarI2FromUI4(long ptr)
|
||||
208 stub VarI2FromDec
|
||||
208 stdcall VarI2FromDec(ptr ptr)
|
||||
209 stdcall VarI4FromI1(long ptr)
|
||||
210 stdcall VarI4FromUI2(long ptr)
|
||||
211 stdcall VarI4FromUI4(long ptr)
|
||||
212 stub VarI4FromDec
|
||||
212 stdcall VarI4FromDec(ptr ptr)
|
||||
213 stdcall VarR4FromI1(long ptr)
|
||||
214 stdcall VarR4FromUI2(long ptr)
|
||||
215 stdcall VarR4FromUI4(long ptr)
|
||||
216 stub VarR4FromDec
|
||||
216 stdcall VarR4FromDec(ptr ptr)
|
||||
217 stdcall VarR8FromI1(long ptr)
|
||||
218 stdcall VarR8FromUI2(long ptr)
|
||||
219 stdcall VarR8FromUI4(long ptr)
|
||||
220 stub VarR8FromDec
|
||||
220 stdcall VarR8FromDec(ptr ptr)
|
||||
221 stdcall VarDateFromI1(long ptr)
|
||||
222 stdcall VarDateFromUI2(long ptr)
|
||||
223 stdcall VarDateFromUI4(long ptr)
|
||||
224 stub VarDateFromDec
|
||||
224 stdcall VarDateFromDec(ptr ptr)
|
||||
225 stdcall VarCyFromI1(long ptr)
|
||||
226 stdcall VarCyFromUI2(long ptr)
|
||||
227 stdcall VarCyFromUI4(long ptr)
|
||||
228 stub VarCyFromDec
|
||||
228 stdcall VarCyFromDec(ptr ptr)
|
||||
229 stdcall VarBstrFromI1(long long long ptr)
|
||||
230 stdcall VarBstrFromUI2(long long long ptr)
|
||||
231 stdcall VarBstrFromUI4(long long long ptr)
|
||||
|
@ -231,53 +231,53 @@
|
|||
233 stdcall VarBoolFromI1(long ptr)
|
||||
234 stdcall VarBoolFromUI2(long ptr)
|
||||
235 stdcall VarBoolFromUI4(long ptr)
|
||||
236 stub VarBoolFromDec
|
||||
236 stdcall VarBoolFromDec(ptr ptr)
|
||||
237 stdcall VarUI1FromI1(long ptr)
|
||||
238 stdcall VarUI1FromUI2(long ptr)
|
||||
239 stdcall VarUI1FromUI4(long ptr)
|
||||
240 stub VarUI1FromDec
|
||||
241 stub VarDecFromI1
|
||||
242 stub VarDecFromUI2
|
||||
243 stub VarDecFromUI4
|
||||
240 stdcall VarUI1FromDec(ptr ptr)
|
||||
241 stdcall VarDecFromI1(long ptr)
|
||||
242 stdcall VarDecFromUI2(long ptr)
|
||||
243 stdcall VarDecFromUI4(long ptr)
|
||||
244 stdcall VarI1FromUI1(long ptr)
|
||||
245 stdcall VarI1FromI2(long ptr)
|
||||
246 stdcall VarI1FromI4(long ptr)
|
||||
247 stdcall VarI1FromR4(long ptr)
|
||||
248 stdcall VarI1FromR8(double ptr)
|
||||
249 stdcall VarI1FromDate(double ptr)
|
||||
250 stdcall VarI1FromCy(double ptr)
|
||||
250 stdcall VarI1FromCy(long long ptr)
|
||||
251 stdcall VarI1FromStr(wstr long long ptr)
|
||||
252 stub VarI1FromDisp
|
||||
252 stdcall VarI1FromDisp(ptr long ptr)
|
||||
253 stdcall VarI1FromBool(long ptr)
|
||||
254 stdcall VarI1FromUI2(long ptr)
|
||||
255 stdcall VarI1FromUI4(long ptr)
|
||||
256 stub VarI1FromDec
|
||||
256 stdcall VarI1FromDec(ptr ptr)
|
||||
257 stdcall VarUI2FromUI1(long ptr)
|
||||
258 stdcall VarUI2FromI2(long ptr)
|
||||
259 stdcall VarUI2FromI4(long ptr)
|
||||
260 stdcall VarUI2FromR4(long ptr)
|
||||
261 stdcall VarUI2FromR8(double ptr)
|
||||
262 stdcall VarUI2FromDate(double ptr)
|
||||
263 stdcall VarUI2FromCy(double ptr)
|
||||
263 stdcall VarUI2FromCy(long long ptr)
|
||||
264 stdcall VarUI2FromStr(wstr long long ptr)
|
||||
265 stub VarUI2FromDisp
|
||||
265 stdcall VarUI2FromDisp(ptr long ptr)
|
||||
266 stdcall VarUI2FromBool(long ptr)
|
||||
267 stdcall VarUI2FromI1(long ptr)
|
||||
268 stdcall VarUI2FromUI4(long ptr)
|
||||
269 stub VarUI2FromDec
|
||||
269 stdcall VarUI2FromDec(ptr ptr)
|
||||
270 stdcall VarUI4FromUI1(long ptr)
|
||||
271 stdcall VarUI4FromI2(long ptr)
|
||||
272 stdcall VarUI4FromI4(long ptr)
|
||||
273 stdcall VarUI4FromR4(long ptr)
|
||||
274 stdcall VarUI4FromR8(double ptr)
|
||||
275 stdcall VarUI4FromDate(double ptr)
|
||||
276 stdcall VarUI4FromCy(double ptr)
|
||||
276 stdcall VarUI4FromCy(long long ptr)
|
||||
277 stdcall VarUI4FromStr(wstr long long ptr)
|
||||
278 stub VarUI4FromDisp
|
||||
278 stdcall VarUI4FromDisp(ptr long ptr)
|
||||
279 stdcall VarUI4FromBool(long ptr)
|
||||
280 stdcall VarUI4FromI1(long ptr)
|
||||
281 stdcall VarUI4FromUI2(long ptr)
|
||||
282 stub VarUI4FromDec
|
||||
282 stdcall VarUI4FromDec(ptr ptr)
|
||||
283 stdcall BSTR_UserSize(ptr long ptr)
|
||||
284 stdcall BSTR_UserMarshal(ptr ptr ptr)
|
||||
285 stdcall BSTR_UserUnmarshal(ptr ptr ptr)
|
||||
|
@ -293,70 +293,73 @@
|
|||
295 stub LPSAFEARRAY_Size
|
||||
296 stub LPSAFEARRAY_Marshal
|
||||
297 stub LPSAFEARRAY_Unmarshal
|
||||
298 stub VarDecCmpR8 # stdcall (ptr double)
|
||||
299 stub VarCyAdd
|
||||
303 stub VarCyMul
|
||||
304 stdcall VarCyMulI4(double long ptr)
|
||||
305 stub VarCySub
|
||||
306 stub VarCyAbs
|
||||
307 stub VarCyFix
|
||||
308 stub VarCyInt
|
||||
309 stub VarCyNeg
|
||||
310 stub VarCyRound
|
||||
311 stub VarCyCmp
|
||||
312 stub VarCyCmpR8
|
||||
298 stdcall VarDecCmpR8(ptr double)
|
||||
299 stdcall VarCyAdd(long long long long ptr)
|
||||
303 stdcall VarCyMul(long long long long ptr)
|
||||
304 stdcall VarCyMulI4(long long long ptr)
|
||||
305 stdcall VarCySub(long long long long ptr)
|
||||
306 stdcall VarCyAbs(long long ptr)
|
||||
307 stdcall VarCyFix(long long ptr)
|
||||
308 stdcall VarCyInt(long long ptr)
|
||||
309 stdcall VarCyNeg(long long ptr)
|
||||
310 stdcall VarCyRound(long long long ptr)
|
||||
311 stdcall VarCyCmp(long long long long)
|
||||
312 stdcall VarCyCmpR8(long long double)
|
||||
313 stdcall VarBstrCat(wstr wstr ptr)
|
||||
314 stdcall VarBstrCmp(wstr wstr long long)
|
||||
315 stub VarR8Pow # stdcall (double double ptr)
|
||||
316 stub VarR4CmpR8
|
||||
317 stub VarR8Round # stdcall (double long ptr)
|
||||
315 stdcall VarR8Pow(double double ptr)
|
||||
316 stdcall VarR4CmpR8(long double)
|
||||
317 stdcall VarR8Round(double long ptr)
|
||||
318 stdcall VarCat(ptr ptr ptr)
|
||||
319 stub VarDateFromUdateEx # stdcall (ptr long long ptr)
|
||||
320 stdcall -private DllRegisterServer() OLEAUT32_DllRegisterServer
|
||||
321 stdcall -private DllUnregisterServer() OLEAUT32_DllUnregisterServer
|
||||
322 stub GetRecordInfoFromGuids # stdcall (ptr long long long ptr ptr)
|
||||
323 stub GetRecordInfoFromTypeInfo # stdcall (ptr ptr)
|
||||
325 stub SetVarConversionLocaleSetting
|
||||
326 stub GetVarConversionLocaleSetting
|
||||
327 stdcall SetOaNoCache()
|
||||
329 stdcall VarCyMulI8(long long long long ptr)
|
||||
330 stdcall VarDateFromUdate(ptr long ptr)
|
||||
331 stdcall VarUdateFromDate(double long ptr)
|
||||
332 stub GetAltMonthNames
|
||||
333 stub VarI8FromUI1
|
||||
334 stub VarI8FromI2
|
||||
335 stub VarI8FromR4
|
||||
336 stub VarI8FromR8
|
||||
337 stub VarI8FromCy
|
||||
338 stub VarI8FromDate
|
||||
339 stub VarI8FromStr
|
||||
340 stub VarI8FromDisp
|
||||
341 stub VarI8FromBool
|
||||
342 stub VarI8FromI1
|
||||
343 stub VarI8FromUI2
|
||||
344 stub VarI8FromUI4
|
||||
345 stub VarI8FromDec
|
||||
346 stub VarI2FromI8
|
||||
347 stub VarI2FromUI8
|
||||
348 stub VarI4FromI8
|
||||
349 stub VarI4FromUI8
|
||||
360 stub VarR4FromI8
|
||||
361 stub VarR4FromUI8
|
||||
362 stub VarR8FromI8
|
||||
363 stub VarR8FromUI8
|
||||
364 stub VarDateFromI8
|
||||
365 stub VarDateFromUI8
|
||||
366 stub VarCyFromI8
|
||||
367 stub VarCyFromUI8
|
||||
368 stub VarBstrFromI8
|
||||
369 stub VarBstrFromUI8
|
||||
370 stub VarBoolFromI8
|
||||
371 stub VarBoolFromUI8
|
||||
372 stub VarUI1FromI8
|
||||
373 stub VarUI1FromUI8
|
||||
374 stub VarDecFromI8
|
||||
375 stub VarDecFromUI8
|
||||
376 stub VarI1FromI8
|
||||
377 stub VarI1FromUI8
|
||||
378 stub VarUI2FromI8
|
||||
379 stub VarUI2FromUI8
|
||||
333 stdcall VarI8FromUI1(long long)
|
||||
334 stdcall VarI8FromI2(long long)
|
||||
335 stdcall VarI8FromR4(long long)
|
||||
336 stdcall VarI8FromR8(double long)
|
||||
337 stdcall VarI8FromCy(long long ptr)
|
||||
338 stdcall VarI8FromDate(double long)
|
||||
339 stdcall VarI8FromStr(wstr long long ptr)
|
||||
340 stdcall VarI8FromDisp(ptr long ptr)
|
||||
341 stdcall VarI8FromBool(long long)
|
||||
342 stdcall VarI8FromI1(long long)
|
||||
343 stdcall VarI8FromUI2(long long)
|
||||
344 stdcall VarI8FromUI4(long long)
|
||||
345 stdcall VarI8FromDec(ptr ptr)
|
||||
346 stdcall VarI2FromI8(long long ptr)
|
||||
347 stdcall VarI2FromUI8(long long ptr)
|
||||
348 stdcall VarI4FromI8(long long ptr)
|
||||
349 stdcall VarI4FromUI8(long long ptr)
|
||||
360 stdcall VarR4FromI8(long long ptr)
|
||||
361 stdcall VarR4FromUI8(long long ptr)
|
||||
362 stdcall VarR8FromI8(long long ptr)
|
||||
363 stdcall VarR8FromUI8(long long ptr)
|
||||
364 stdcall VarDateFromI8(long long ptr)
|
||||
365 stdcall VarDateFromUI8(long long ptr)
|
||||
366 stdcall VarCyFromI8(long long ptr)
|
||||
367 stdcall VarCyFromUI8(long long ptr)
|
||||
368 stdcall VarBstrFromI8(long long long long ptr)
|
||||
369 stdcall VarBstrFromUI8(long long long long ptr)
|
||||
370 stdcall VarBoolFromI8(long long ptr)
|
||||
371 stdcall VarBoolFromUI8(long long ptr)
|
||||
372 stdcall VarUI1FromI8(long long ptr)
|
||||
373 stdcall VarUI1FromUI8(long long ptr)
|
||||
374 stdcall VarDecFromI8(long long ptr)
|
||||
375 stdcall VarDecFromUI8(long long ptr)
|
||||
376 stdcall VarI1FromI8(long long ptr)
|
||||
377 stdcall VarI1FromUI8(long long ptr)
|
||||
378 stdcall VarUI2FromI8(long long ptr)
|
||||
379 stdcall VarUI2FromUI8(long long ptr)
|
||||
380 stub UserHWND_from_local
|
||||
381 stub UserHWND_to_local
|
||||
382 stub UserHWND_free_inst
|
||||
|
@ -394,20 +397,20 @@
|
|||
422 stub OleLoadPictureFile
|
||||
423 stub OleSavePictureFile
|
||||
424 stub OleLoadPicturePath
|
||||
425 stub VarUI4FromI8
|
||||
426 stub VarUI4FromUI8
|
||||
427 stub VarI8FromUI8
|
||||
428 stub VarUI8FromI8
|
||||
429 stub VarUI8FromUI1
|
||||
430 stub VarUI8FromI2
|
||||
431 stub VarUI8FromR4
|
||||
432 stub VarUI8FromR8
|
||||
433 stub VarUI8FromCy
|
||||
434 stub VarUI8FromDate
|
||||
435 stub VarUI8FromStr
|
||||
436 stub VarUI8FromDisp
|
||||
437 stub VarUI8FromBool
|
||||
438 stub VarUI8FromI1
|
||||
439 stub VarUI8FromUI2
|
||||
440 stub VarUI8FromUI4
|
||||
441 stub VarUI8FromDec
|
||||
425 stdcall VarUI4FromI8(long long ptr)
|
||||
426 stdcall VarUI4FromUI8(long long ptr)
|
||||
427 stdcall VarI8FromUI8(long long ptr)
|
||||
428 stdcall VarUI8FromI8(long long ptr)
|
||||
429 stdcall VarUI8FromUI1(long ptr)
|
||||
430 stdcall VarUI8FromI2(long ptr)
|
||||
431 stdcall VarUI8FromR4(long ptr)
|
||||
432 stdcall VarUI8FromR8(double ptr)
|
||||
433 stdcall VarUI8FromCy(long long ptr)
|
||||
434 stdcall VarUI8FromDate(double ptr)
|
||||
435 stdcall VarUI8FromStr(wstr long long ptr)
|
||||
436 stdcall VarUI8FromDisp(ptr long ptr)
|
||||
437 stdcall VarUI8FromBool(long ptr)
|
||||
438 stdcall VarUI8FromI1(long ptr)
|
||||
439 stdcall VarUI8FromUI2(long ptr)
|
||||
440 stdcall VarUI8FromUI4(long ptr)
|
||||
441 stdcall VarUI8FromDec(long ptr)
|
||||
|
|
|
@ -127,39 +127,38 @@ static inline int strcmpW( const WCHAR *str1, const WCHAR *str2 )
|
|||
static const struct _vartypes {
|
||||
int ind;
|
||||
HRESULT vcind1,vcind2,vcex1,vcex2;
|
||||
int todoind1,todoind2,todowcex1,todowcex2;
|
||||
} vartypes[] = {
|
||||
{0, 0, 0x80070057, 0, 0x80020008,0,1 },
|
||||
{1, 0, 0x80070057, 0, 0x80020008,0,1 },
|
||||
{0, 0, 0x80070057, 0, 0x80020008 },
|
||||
{1, 0, 0x80070057, 0, 0x80020008 },
|
||||
{2, 0, 0, 0, 0x80020005 },
|
||||
{3, 0, 0, 0, 0x80020005 },
|
||||
{4, 0, 0, 0, 0x80020005 },
|
||||
{5, 0, 0, 0, 0x80020005 },
|
||||
{6, 0, 0, 0, 0x80020005 },
|
||||
{7, 0, 0, 0, 0x80020005 },
|
||||
{77,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{78,0x80020008, 0x80070057, 0x80020005, 0x80020005,0,1 },
|
||||
{79,0x80020008, 0x80070057, 0x80020005, 0x80020005,0,1 },
|
||||
{80,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{81,0x80020008, 0x80070057, 0x80020005, 0x80020005,0,1 },
|
||||
{82,0x80020008, 0x80070057, 0x80020005, 0x80020005,0,1 },
|
||||
{83,0x80020008, 0x80070057, 0, 0x80020005,0,1,1 },
|
||||
{84,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{85,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{86,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{87,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{88,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{89,0x80020008, 0x80070057, 0, 0x80020005,0,1,1 },
|
||||
{90,0x80020008, 0x80070057, 0, 0x80020005,0,1,1 },
|
||||
{91,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{92,0x80020008, 0x80070057, 0, 0x80020005,0,1 },
|
||||
{93,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{94,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{95,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{96,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{97,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{98,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{99,0x80020008, 0x80070057, 0x80020008, 0x80020008,0,1,1,1 },
|
||||
{77,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{78,0x80020008, 0x80070057, 0x80020005, 0x80020005 },
|
||||
{79,0x80020008, 0x80070057, 0x80020005, 0x80020005 },
|
||||
{80,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{81,0x80020008, 0x80070057, 0x80020005, 0x80020005 },
|
||||
{82,0x80020008, 0x80070057, 0x80020005, 0x80020005 },
|
||||
{83,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{84,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{85,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{86,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{87,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{88,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{89,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{90,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{91,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{92,0x80020008, 0x80070057, 0, 0x80020005 },
|
||||
{93,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{94,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{95,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{96,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{97,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{98,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
{99,0x80020008, 0x80070057, 0x80020008, 0x80020008 },
|
||||
};
|
||||
|
||||
static const char *strfromr8[] = {
|
||||
|
@ -2502,11 +2501,10 @@ static void test_variant(void)
|
|||
ok(S_OK == VarBstrFromR4( (float)d, lcid, 0, &bstr ), XOK);
|
||||
sprintf(xval,"\"%s\"",strfromr8[off]);
|
||||
if (istodo[i]) {
|
||||
todo_wine {
|
||||
ok(!strcmp(xval,WtoA(bstr)),
|
||||
"%d: d is %.8f, should be cvt. to %s, but return val is %s",
|
||||
i,d,strfromr8[off],WtoA(bstr));
|
||||
}
|
||||
/* Skip this test: The input value is 654322.23456.
|
||||
* Native converts this to 654322.3, Wine to 654322.2
|
||||
* I consider Wines behaviour to be correct and Native buggy.
|
||||
*/
|
||||
} else {
|
||||
ok(!strcmp(xval,WtoA(bstr)),
|
||||
"%d: d is %.8f, should be cvt. to %s, but return val is %s",
|
||||
|
@ -2516,11 +2514,7 @@ static void test_variant(void)
|
|||
ok(S_OK == VarBstrFromR4( (float)-d, lcid, 0, &bstr ), XOK);
|
||||
sprintf(xval,"\"%s\"",strfromr8[off]);
|
||||
if (istodo[i]) {
|
||||
todo_wine {
|
||||
ok(!strcmp(xval,WtoA(bstr)),
|
||||
"%d: d is %.8f, should be cvt. to %s, but return val is %s",
|
||||
i,-d,strfromr8[off],WtoA(bstr));
|
||||
}
|
||||
/* Skip this test, as above */
|
||||
} else {
|
||||
ok(!strcmp(xval,WtoA(bstr)),
|
||||
"%d: d is %.8f, should be cvt. to %s, but return val is %s",
|
||||
|
@ -2668,17 +2662,9 @@ static void test_variant(void)
|
|||
d = 4.123;
|
||||
V_UNION(&va,dblVal) = d;
|
||||
rc = VariantCopyInd( &vb, &va );
|
||||
if (vartypes[i].todoind1) {
|
||||
todo_wine {
|
||||
ok(vartypes[i].vcind1 == rc,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcind1);
|
||||
}
|
||||
} else {
|
||||
ok(vartypes[i].vcind1 == rc,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcind1);
|
||||
}
|
||||
V_VT(&va) = vartypes[i].ind | VT_BYREF;
|
||||
d = 4.123;
|
||||
V_UNION(&va,pdblVal) = &d;
|
||||
|
@ -2690,32 +2676,16 @@ static void test_variant(void)
|
|||
d = 4.123;
|
||||
V_UNION(&va,dblVal) = d;
|
||||
rc = VariantChangeTypeEx( &vb, &va, lcid, 0, (VARTYPE)i );
|
||||
if (vartypes[i].todowcex1) {
|
||||
todo_wine {
|
||||
ok(vartypes[i].vcex1 == rc || rc == DISP_E_BADVARTYPE,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcex1);
|
||||
}
|
||||
} else {
|
||||
ok(vartypes[i].vcex1 == rc || rc == DISP_E_BADVARTYPE,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcex1);
|
||||
}
|
||||
V_VT(&va) = VT_R8;
|
||||
d = 4.123;
|
||||
V_UNION(&va,dblVal) = d;
|
||||
rc = VariantChangeTypeEx( &vb, &va, lcid, 0, (VARTYPE)(i | VT_BYREF) );
|
||||
if (vartypes[i].todowcex2) {
|
||||
todo_wine {
|
||||
ok(vartypes[i].vcex2 == rc || rc == DISP_E_BADVARTYPE,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcex2);
|
||||
}
|
||||
} else {
|
||||
ok(vartypes[i].vcex2 == rc || rc == DISP_E_BADVARTYPE,
|
||||
"%d: vt %d, return value %lx, expected was %lx",
|
||||
i,vartypes[i].ind,rc,vartypes[i].vcex2);
|
||||
}
|
||||
|
||||
V_VT(&va) = 99;
|
||||
d = 4.123;
|
||||
|
@ -3838,9 +3808,10 @@ static void test_VarFormatNumber(void)
|
|||
FMT_NUMBER(VT_UI2, V_UI2);
|
||||
FMT_NUMBER(VT_I4, V_I4);
|
||||
FMT_NUMBER(VT_UI4, V_UI4);
|
||||
todo_wine {
|
||||
FMT_NUMBER(VT_I8, V_I8);
|
||||
FMT_NUMBER(VT_UI8, V_UI8);
|
||||
if (HAVE_OLEAUT32_I8)
|
||||
{
|
||||
FMT_NUMBER(VT_I8, V_I8);
|
||||
FMT_NUMBER(VT_UI8, V_UI8);
|
||||
}
|
||||
FMT_NUMBER(VT_R4, V_R4);
|
||||
FMT_NUMBER(VT_R8, V_R8);
|
||||
|
@ -4006,15 +3977,17 @@ static void test_VarFormat(void)
|
|||
VNUMFMT(VT_I1,V_I1);
|
||||
VNUMFMT(VT_I2,V_I2);
|
||||
VNUMFMT(VT_I4,V_I4);
|
||||
todo_wine {
|
||||
VNUMFMT(VT_I8,V_I8);
|
||||
if (HAVE_OLEAUT32_I8)
|
||||
{
|
||||
VNUMFMT(VT_I8,V_I8);
|
||||
}
|
||||
VNUMFMT(VT_INT,V_INT);
|
||||
VNUMFMT(VT_UI1,V_UI1);
|
||||
VNUMFMT(VT_UI2,V_UI2);
|
||||
VNUMFMT(VT_UI4,V_UI4);
|
||||
todo_wine {
|
||||
VNUMFMT(VT_UI8,V_UI8);
|
||||
if (HAVE_OLEAUT32_I8)
|
||||
{
|
||||
VNUMFMT(VT_UI8,V_UI8);
|
||||
}
|
||||
VNUMFMT(VT_UINT,V_UINT);
|
||||
VNUMFMT(VT_R4,V_R4);
|
||||
|
@ -4220,16 +4193,8 @@ static void test_VarNot(void)
|
|||
}
|
||||
|
||||
hres = pVarNot(&v,&vDst);
|
||||
if (V_VT(&v) == VT_DECIMAL)
|
||||
{
|
||||
todo_wine {
|
||||
ok(hres == hExpected, "VarNot: expected 0x%lX, got 0x%lX vt %d|0x%X\n",
|
||||
hExpected, hres, vt, ExtraFlags[i]);
|
||||
}
|
||||
}
|
||||
else
|
||||
ok(hres == hExpected, "VarNot: expected 0x%lX, got 0x%lX vt %d|0x%X\n",
|
||||
hExpected, hres, vt, ExtraFlags[i]);
|
||||
ok(hres == hExpected, "VarNot: expected 0x%lX, got 0x%lX vt %d|0x%X\n",
|
||||
hExpected, hres, vt, ExtraFlags[i]);
|
||||
}
|
||||
}
|
||||
/* R4,R8,BSTR,DECIMAL,CY->I4, all others remain the same */
|
||||
|
@ -4249,7 +4214,6 @@ static void test_VarNot(void)
|
|||
VARNOT(BSTR,(BSTR)szNum0,I4,-1);
|
||||
VARNOT(BSTR,(BSTR)szNum1,I4,-2);
|
||||
|
||||
todo_wine {
|
||||
V_VT(&v) = VT_DECIMAL;
|
||||
pdec->u.s.sign = DECIMAL_NEG;
|
||||
pdec->u.s.scale = 0;
|
||||
|
@ -4257,6 +4221,7 @@ static void test_VarNot(void)
|
|||
pdec->u1.s1.Mid32 = 0;
|
||||
pdec->u1.s1.Lo32 = 1;
|
||||
VARNOT(DECIMAL,*pdec,I4,0);
|
||||
todo_wine {
|
||||
pcy->int64 = 10000;
|
||||
VARNOT(CY,*pcy,I4,-2);
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue