msvcp90: Add time_get<char>::_Getint implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
5a4112c73a
commit
e547d87afa
|
@ -448,7 +448,7 @@
|
|||
@ cdecl -arch=arm ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAA@XZ(ptr) num_put_wchar_dtor
|
||||
@ thiscall -arch=i386 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ(ptr) num_put_wchar_dtor
|
||||
@ cdecl -arch=win64 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ(ptr) num_put_wchar_dtor
|
||||
@ stub -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ
|
||||
@ cdecl -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ(ptr) time_get_char_dtor
|
||||
@ thiscall -arch=win32 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ(ptr) time_get_char_dtor
|
||||
@ cdecl -arch=win64 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ(ptr) time_get_char_dtor
|
||||
@ stub -arch=arm ??1?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAA@XZ
|
||||
|
@ -1032,7 +1032,7 @@
|
|||
@ cdecl -arch=arm ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAAXXZ(ptr) num_put_wchar_ctor
|
||||
@ thiscall -arch=i386 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ(ptr) num_put_wchar_ctor
|
||||
@ cdecl -arch=win64 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ(ptr) num_put_wchar_ctor
|
||||
@ stub -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ
|
||||
@ cdecl -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ(ptr) time_get_char_ctor
|
||||
@ thiscall -arch=win32 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ(ptr) time_get_char_ctor
|
||||
@ cdecl -arch=win64 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ(ptr) time_get_char_ctor
|
||||
@ stub -arch=arm ??_F?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAAXXZ
|
||||
|
|
|
@ -448,7 +448,7 @@
|
|||
@ cdecl -arch=arm ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAA@XZ(ptr) num_put_wchar_dtor
|
||||
@ thiscall -arch=i386 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ(ptr) num_put_wchar_dtor
|
||||
@ cdecl -arch=win64 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ(ptr) num_put_wchar_dtor
|
||||
@ stub -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ
|
||||
@ cdecl -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ(ptr) time_get_char_dtor
|
||||
@ thiscall -arch=win32 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ(ptr) time_get_char_dtor
|
||||
@ cdecl -arch=win64 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ(ptr) time_get_char_dtor
|
||||
@ stub -arch=arm ??1?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAA@XZ
|
||||
|
@ -1032,7 +1032,7 @@
|
|||
@ cdecl -arch=arm ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAAXXZ(ptr) num_put_wchar_ctor
|
||||
@ thiscall -arch=i386 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ(ptr) num_put_wchar_ctor
|
||||
@ cdecl -arch=win64 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ(ptr) num_put_wchar_ctor
|
||||
@ stub -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ
|
||||
@ cdecl -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ(ptr) time_get_char_ctor
|
||||
@ thiscall -arch=win32 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ(ptr) time_get_char_ctor
|
||||
@ cdecl -arch=win64 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ(ptr) time_get_char_ctor
|
||||
@ stub -arch=arm ??_F?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAAXXZ
|
||||
|
|
|
@ -448,7 +448,7 @@
|
|||
@ cdecl -arch=arm ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAA@XZ(ptr) msvcp120.??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAA@XZ
|
||||
@ thiscall -arch=i386 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ(ptr) msvcp120.??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MAE@XZ
|
||||
@ cdecl -arch=win64 ??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ(ptr) msvcp120.??1?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@MEAA@XZ
|
||||
@ stub -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ
|
||||
@ cdecl -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ(ptr) msvcp120.??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ
|
||||
@ thiscall -arch=win32 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ(ptr) msvcp120.??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ
|
||||
@ cdecl -arch=win64 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ(ptr) msvcp120.??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ
|
||||
@ stub -arch=arm ??1?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAA@XZ
|
||||
|
@ -1032,7 +1032,7 @@
|
|||
@ cdecl -arch=arm ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAAXXZ(ptr) msvcp120.??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAAXXZ
|
||||
@ thiscall -arch=i386 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ(ptr) msvcp120.??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QAEXXZ
|
||||
@ cdecl -arch=win64 ??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ(ptr) msvcp120.??_F?$num_put@_WV?$ostreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@QEAAXXZ
|
||||
@ stub -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ
|
||||
@ cdecl -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ(ptr) msvcp120.??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ
|
||||
@ thiscall -arch=win32 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ(ptr) msvcp120.??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ
|
||||
@ cdecl -arch=win64 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ(ptr) msvcp120.??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ
|
||||
@ stub -arch=arm ??_F?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAAXXZ
|
||||
|
|
|
@ -9946,10 +9946,55 @@ static time_get_char* time_get_char_use_facet(const locale *loc)
|
|||
/* ?_Getint@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBAHAEAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@0HHAEAH@Z */
|
||||
int __cdecl time_get_char__Getint(const time_get_char *this,
|
||||
istreambuf_iterator_char *b, istreambuf_iterator_char *e,
|
||||
int unk1, int unk2, int *val)
|
||||
int min_val, int max_val, int *val)
|
||||
{
|
||||
FIXME("(%p %p %p %d %d %p) stub\n", this, b, e, unk1, unk2, val);
|
||||
return 0;
|
||||
BOOL got_digit = FALSE;
|
||||
int len = 0, ret = 0;
|
||||
char buf[16];
|
||||
|
||||
TRACE("(%p %p %p %d %d %p)\n", this, b, e, min_val, max_val, val);
|
||||
|
||||
istreambuf_iterator_char_val(b);
|
||||
if(b->strbuf && (b->val == '-' || b->val == '+'))
|
||||
{
|
||||
buf[len++] = b->val;
|
||||
istreambuf_iterator_char_inc(b);
|
||||
}
|
||||
|
||||
if (b->strbuf && b->val == '0')
|
||||
{
|
||||
got_digit = TRUE;
|
||||
buf[len++] = '0';
|
||||
istreambuf_iterator_char_inc(b);
|
||||
}
|
||||
while (b->strbuf && b->val == '0')
|
||||
istreambuf_iterator_char_inc(b);
|
||||
|
||||
for (; b->strbuf && b->val >= '0' && b->val <= '9';
|
||||
istreambuf_iterator_char_inc(b))
|
||||
{
|
||||
if(len < ARRAY_SIZE(buf)-1)
|
||||
buf[len] = b->val;
|
||||
got_digit = TRUE;
|
||||
len++;
|
||||
}
|
||||
|
||||
if (!b->strbuf)
|
||||
ret |= IOSTATE_eofbit;
|
||||
if (got_digit && len < ARRAY_SIZE(buf)-1)
|
||||
{
|
||||
int v, err;
|
||||
|
||||
buf[len] = 0;
|
||||
v = _Stolx(buf, NULL, 10, &err);
|
||||
if(err || v < min_val || v > max_val)
|
||||
ret |= IOSTATE_failbit;
|
||||
else
|
||||
*val = v;
|
||||
}
|
||||
else
|
||||
ret |= IOSTATE_failbit;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ?do_date_order@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MBE?AW4dateorder@time_base@2@XZ */
|
||||
|
@ -9994,8 +10039,8 @@ istreambuf_iterator_char* __thiscall time_get_char_do_get(const time_get_char *t
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/* ?get@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@@Z */
|
||||
/* ?get@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@@Z */
|
||||
/* ?get@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QBE?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AAVios_base@2@AAHPAUtm@@DD@Z */
|
||||
/* ?get@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEBA?AV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@V32@0AEAVios_base@2@AEAHPEAUtm@@DD@Z */
|
||||
DEFINE_THISCALL_WRAPPER(time_get_char_get, 44)
|
||||
istreambuf_iterator_char* __thiscall time_get_char_get(const time_get_char *this,
|
||||
istreambuf_iterator_char *ret, istreambuf_iterator_char s, istreambuf_iterator_char e,
|
||||
|
@ -10614,7 +10659,7 @@ void __cdecl locale__Locimp__Makewloc(const _Locinfo *locinfo, category cat, loc
|
|||
/* ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z */
|
||||
/* ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z */
|
||||
/* List of missing facets:
|
||||
* messages, money_get, money_put, moneypunct, moneypunct, time_get
|
||||
* messages, money_get, money_put, moneypunct, moneypunct
|
||||
*/
|
||||
void __cdecl locale__Locimp__Makexloc(const _Locinfo *locinfo, category cat, locale__Locimp *locimp, const locale *loc)
|
||||
{
|
||||
|
|
|
@ -672,7 +672,8 @@
|
|||
@ cdecl -arch=arm ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAA@W4_Uninitialized@1@@Z(ptr long long) basic_istream_wchar_ctor_uninitialized
|
||||
@ thiscall -arch=i386 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z(ptr long long) basic_istream_wchar_ctor_uninitialized
|
||||
@ cdecl -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z(ptr long long) basic_istream_wchar_ctor_uninitialized
|
||||
@ thiscall -arch=win32 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z(ptr ptr long long) basic_istringstream_char_ctor_str
|
||||
@ cdecl -arch=arm ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAA@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z(ptr ptr long long) basic_istringstream_char_ctor_str
|
||||
@ thiscall -arch=i386 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z(ptr ptr long long) basic_istringstream_char_ctor_str
|
||||
@ cdecl -arch=win64 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z(ptr ptr long long) basic_istringstream_char_ctor_str
|
||||
@ thiscall -arch=win32 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z(ptr long long) basic_istringstream_char_ctor_mode
|
||||
@ cdecl -arch=win64 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@H@Z(ptr long long) basic_istringstream_char_ctor_mode
|
||||
|
@ -1268,7 +1269,8 @@
|
|||
@ cdecl -arch=arm ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAA@XZ(ptr) basic_istream_wchar_dtor
|
||||
@ thiscall -arch=i386 ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ(ptr) basic_istream_wchar_dtor
|
||||
@ cdecl -arch=win64 ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ(ptr) basic_istream_wchar_dtor
|
||||
@ thiscall -arch=win32 ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ(ptr) basic_istringstream_char_dtor
|
||||
@ cdecl -arch=arm ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAA@XZ(ptr) basic_istringstream_char_dtor
|
||||
@ thiscall -arch=i386 ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ(ptr) basic_istringstream_char_dtor
|
||||
@ cdecl -arch=win64 ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ(ptr) basic_istringstream_char_dtor
|
||||
@ thiscall -arch=win32 ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ(ptr) basic_istringstream_wchar_dtor
|
||||
@ cdecl -arch=win64 ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UEAA@XZ(ptr) basic_istringstream_wchar_dtor
|
||||
|
@ -1400,7 +1402,8 @@
|
|||
@ cdecl -arch=win64 ??1?$numpunct@G@std@@MEAA@XZ(ptr) numpunct_wchar_dtor
|
||||
@ thiscall -arch=win32 ??1?$numpunct@_W@std@@MAE@XZ(ptr) numpunct_wchar_dtor
|
||||
@ cdecl -arch=win64 ??1?$numpunct@_W@std@@MEAA@XZ(ptr) numpunct_wchar_dtor
|
||||
@ thiscall -arch=win32 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ(ptr) time_get_char_dtor
|
||||
@ cdecl -arch=arm ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ(ptr) time_get_char_dtor
|
||||
@ thiscall -arch=i386 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ(ptr) time_get_char_dtor
|
||||
@ cdecl -arch=win64 ??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ(ptr) time_get_char_dtor
|
||||
@ stub -arch=win32 ??1?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MAE@XZ
|
||||
@ stub -arch=win64 ??1?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@MEAA@XZ
|
||||
|
@ -2307,7 +2310,8 @@
|
|||
@ cdecl -arch=win64 ??_F?$numpunct@G@std@@QEAAXXZ(ptr) numpunct_short_ctor
|
||||
@ thiscall -arch=win32 ??_F?$numpunct@_W@std@@QAEXXZ(ptr) numpunct_wchar_ctor
|
||||
@ cdecl -arch=win64 ??_F?$numpunct@_W@std@@QEAAXXZ(ptr) numpunct_wchar_ctor
|
||||
@ thiscall -arch=win32 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ(ptr) time_get_char_ctor
|
||||
@ cdecl -arch=arm ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ(ptr) time_get_char_ctor
|
||||
@ thiscall -arch=i386 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ(ptr) time_get_char_ctor
|
||||
@ cdecl -arch=win64 ??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ(ptr) time_get_char_ctor
|
||||
@ stub -arch=win32 ??_F?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QAEXXZ
|
||||
@ stub -arch=win64 ??_F?$time_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@QEAAXXZ
|
||||
|
|
|
@ -186,6 +186,13 @@ typedef struct {
|
|||
locale *loc;
|
||||
} basic_streambuf_char;
|
||||
|
||||
/* class istreambuf_iterator<char> */
|
||||
typedef struct {
|
||||
basic_streambuf_char *strbuf;
|
||||
MSVCP_bool got;
|
||||
char val;
|
||||
} istreambuf_iterator_char;
|
||||
|
||||
/* class basic_streambuf<wchar> */
|
||||
typedef struct {
|
||||
const vtable_ptr *vtable;
|
||||
|
@ -435,6 +442,23 @@ typedef struct {
|
|||
double imag;
|
||||
} complex_double;
|
||||
|
||||
typedef enum {
|
||||
DATEORDER_no_order,
|
||||
DATEORDER_dmy,
|
||||
DATEORDER_mdy,
|
||||
DATEORDER_ymd,
|
||||
DATEORDER_ydm
|
||||
} dateorder;
|
||||
|
||||
/* class time_get<char> */
|
||||
typedef struct {
|
||||
locale_facet facet;
|
||||
const char *days;
|
||||
const char *months;
|
||||
dateorder dateorder;
|
||||
_Cvtvec cvt;
|
||||
} time_get_char;
|
||||
|
||||
/* stringstream */
|
||||
static basic_stringstream_char* (*__thiscall p_basic_stringstream_char_ctor)(basic_stringstream_char*);
|
||||
static basic_stringstream_char* (*__thiscall p_basic_stringstream_char_ctor_str)(basic_stringstream_char*, const basic_string_char*, int, MSVCP_bool);
|
||||
|
@ -522,6 +546,17 @@ static basic_string_wchar* (__thiscall *p_basic_string_wchar_ctor_cstr)(basic_st
|
|||
static const wchar_t* (__thiscall *p_basic_string_wchar_cstr)(basic_string_wchar*);
|
||||
static void (__thiscall *p_basic_string_wchar_dtor)(basic_string_wchar*);
|
||||
|
||||
/* basic_istringstream */
|
||||
static basic_istringstream_char* (__thiscall *p_basic_istringstream_char_ctor_str)(
|
||||
basic_istringstream_char*, const basic_string_char*, int, MSVCP_bool);
|
||||
static void (__thiscall *p_basic_istringstream_char_dtor)(basic_ios_char*);
|
||||
|
||||
/* time_get */
|
||||
static time_get_char* (__thiscall *p_time_get_char_ctor)(time_get_char*);
|
||||
static void (__thiscall *p_time_get_char_dtor)(time_get_char*);
|
||||
static int (__cdecl *p_time_get_char__Getint)(const time_get_char*,
|
||||
istreambuf_iterator_char*, istreambuf_iterator_char*, int, int, int*);
|
||||
|
||||
static int invalid_parameter = 0;
|
||||
static void __cdecl test_invalid_parameter_handler(const wchar_t *expression,
|
||||
const wchar_t *function, const wchar_t *file,
|
||||
|
@ -769,6 +804,19 @@ static BOOL init(void)
|
|||
"?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBAPEB_WXZ");
|
||||
SET(p_basic_string_wchar_dtor,
|
||||
"??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAA@XZ");
|
||||
|
||||
SET(p_basic_istringstream_char_ctor_str,
|
||||
"??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV?"
|
||||
"$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z");
|
||||
SET(p_basic_istringstream_char_dtor,
|
||||
"??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ");
|
||||
SET(p_time_get_char_ctor,
|
||||
"??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QEAAXXZ");
|
||||
SET(p_time_get_char_dtor,
|
||||
"??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEAA@XZ");
|
||||
SET(p_time_get_char__Getint,
|
||||
"?_Getint@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std"
|
||||
"@@AEBAHAEAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@0HHAEAH@Z");
|
||||
} else {
|
||||
#ifdef __arm__
|
||||
SET(p_basic_stringstream_char_ctor,
|
||||
|
@ -909,6 +957,16 @@ static BOOL init(void)
|
|||
"?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ");
|
||||
SET(p_basic_string_wchar_dtor,
|
||||
"??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ");
|
||||
|
||||
SET(p_basic_istringstream_char_ctor_str,
|
||||
"??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@"
|
||||
"QAA@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z");
|
||||
SET(p_basic_istringstream_char_dtor,
|
||||
"??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAA@XZ");
|
||||
SET(p_time_get_char_ctor,
|
||||
"??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAAXXZ");
|
||||
SET(p_time_get_char_dtor,
|
||||
"??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAA@XZ");
|
||||
#else
|
||||
SET(p_basic_stringstream_char_ctor,
|
||||
"??_F?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ");
|
||||
|
@ -1048,7 +1106,20 @@ static BOOL init(void)
|
|||
"?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ");
|
||||
SET(p_basic_string_wchar_dtor,
|
||||
"??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ");
|
||||
|
||||
SET(p_basic_istringstream_char_ctor_str,
|
||||
"??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@"
|
||||
"QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z");
|
||||
SET(p_basic_istringstream_char_dtor,
|
||||
"??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ");
|
||||
SET(p_time_get_char_ctor,
|
||||
"??_F?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@QAEXXZ");
|
||||
SET(p_time_get_char_dtor,
|
||||
"??1?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MAE@XZ");
|
||||
#endif
|
||||
SET(p_time_get_char__Getint,
|
||||
"?_Getint@?$time_get@DV?$istreambuf_iterator@DU?$char_traits@D@std@@@std@@@std"
|
||||
"@@ABAHAAV?$istreambuf_iterator@DU?$char_traits@D@std@@@2@0HHAAH@Z");
|
||||
}
|
||||
|
||||
init_thiscall_thunk();
|
||||
|
@ -2382,6 +2453,57 @@ static void test_basic_ios(void)
|
|||
call_func1(p_basic_ios_char_dtor, &bi);
|
||||
}
|
||||
|
||||
static void test_time_get__Getint(void)
|
||||
{
|
||||
const struct {
|
||||
const char *str;
|
||||
int min;
|
||||
int max;
|
||||
int ret;
|
||||
int val;
|
||||
} tests[] = {
|
||||
{ "0", 0, 0, IOSTATE_eofbit, 0 },
|
||||
{ "0000", 0, 0, IOSTATE_eofbit, 0 },
|
||||
{ "1234", 0, 2000, IOSTATE_eofbit, 1234 },
|
||||
{ "+016", 0, 20, IOSTATE_eofbit, 16 },
|
||||
{ "0x12", 0, 20, IOSTATE_goodbit, 0 },
|
||||
{ " 0", 0, 0, IOSTATE_failbit, -1 },
|
||||
{ "0 ", 0, 0, IOSTATE_goodbit, 0 },
|
||||
{ "-13", -50, -12, IOSTATE_eofbit, -13 }
|
||||
};
|
||||
|
||||
struct {
|
||||
basic_istringstream_char basic_istringstream;
|
||||
basic_ios_char basic_ios;
|
||||
} ss;
|
||||
istreambuf_iterator_char beg, end;
|
||||
basic_string_char str;
|
||||
time_get_char time_get;
|
||||
int i, ret, v;
|
||||
|
||||
call_func1(p_time_get_char_ctor, &time_get);
|
||||
for(i=0; i<ARRAY_SIZE(tests); i++)
|
||||
{
|
||||
memset(&beg, 0, sizeof(beg));
|
||||
memset(&end, 0, sizeof(end));
|
||||
v = -1;
|
||||
|
||||
call_func2(p_basic_string_char_ctor_cstr, &str, tests[i].str);
|
||||
call_func4(p_basic_istringstream_char_ctor_str, &ss.basic_istringstream, &str, 0, TRUE);
|
||||
call_func1(p_basic_string_char_dtor, &str);
|
||||
beg.strbuf = &ss.basic_istringstream.strbuf.base;
|
||||
|
||||
ret = p_time_get_char__Getint(&time_get, &beg, &end,
|
||||
tests[i].min, tests[i].max, &v);
|
||||
ok(ret == tests[i].ret, "%d) ret = %d, expected %d\n", i, ret, tests[i].ret);
|
||||
ok(v == tests[i].val, "%d) v = %d, expected %d\n", i, v, tests[i].val);
|
||||
|
||||
call_func1(p_basic_istringstream_char_dtor, &ss.basic_ios);
|
||||
call_func1(p_basic_ios_char_dtor, &ss.basic_ios);
|
||||
}
|
||||
call_func1(p_time_get_char_dtor, &time_get);
|
||||
}
|
||||
|
||||
START_TEST(ios)
|
||||
{
|
||||
if(!init())
|
||||
|
@ -2408,6 +2530,7 @@ START_TEST(ios)
|
|||
test_ostream_print_complex_ldouble();
|
||||
test_istream_read_complex_double();
|
||||
test_basic_ios();
|
||||
test_time_get__Getint();
|
||||
|
||||
ok(!invalid_parameter, "invalid_parameter_handler was invoked too many times\n");
|
||||
|
||||
|
|
Loading…
Reference in New Issue