From 07ccbb6351dd163e9d232cc32bea531b0b17d47e Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 26 Jun 2012 14:34:26 +0200 Subject: [PATCH] msvcp90: Added basic_istream implementation. --- dlls/msvcp90/ios.c | 1047 ++++++++++++++++++++++++++++++++++++- dlls/msvcp90/locale.c | 26 + dlls/msvcp90/msvcp90.h | 27 + dlls/msvcp90/msvcp90.spec | 184 +++---- 4 files changed, 1191 insertions(+), 93 deletions(-) diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index e140d846986..0002a4253fb 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -90,7 +90,7 @@ typedef struct _basic_ostream_char { typedef struct _basic_ostream_wchar { const int *vbtable; /* virtual inheritance - * basic_ios_char basic_ios; + * basic_ios_wchar basic_ios; */ } basic_ostream_wchar; @@ -102,6 +102,14 @@ typedef struct { */ } basic_istream_char; +typedef struct { + const int *vbtable; + streamsize count; + /* virtual inheritance + * basic_ios_wchar basic_ios; + */ +} basic_istream_wchar; + typedef struct { basic_istream_char base1; basic_ostream_char base2; @@ -175,6 +183,11 @@ const int basic_istream_char_vbtable[] = {0, sizeof(basic_istream_char)}; /* ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ */ extern const vtable_ptr MSVCP_basic_istream_char_vtable; +/* ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ */ +const int basic_istream_wchar_vbtable[] = {0, sizeof(basic_istream_wchar)}; +/* ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ */ +extern const vtable_ptr MSVCP_basic_istream_wchar_vtable; + /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ */ const int basic_iostream_char_vbtable1[] = {0, sizeof(basic_iostream_char)}; /* ??_8?$basic_iostream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ */ @@ -224,6 +237,9 @@ DEFINE_RTTI_DATA3(basic_ostream_wchar, sizeof(basic_ostream_wchar), &basic_ios_w DEFINE_RTTI_DATA3(basic_istream_char, sizeof(basic_istream_char), &basic_ios_char_rtti_base_descriptor, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor, ".?AV?$basic_istream@DU?$char_traits@D@std@@@std@@"); +DEFINE_RTTI_DATA3(basic_istream_wchar, sizeof(basic_istream_wchar), &basic_ios_wchar_rtti_base_descriptor, + &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor, + ".?AV?$basic_istream@_WU?$char_traits@_W@std@@@std@@"); DEFINE_RTTI_DATA8(basic_iostream_char, sizeof(basic_iostream_char), &basic_istream_char_rtti_base_descriptor, &basic_ios_char_rtti_base_descriptor, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor, @@ -312,6 +328,7 @@ void __asm_dummy_vtables(void) { __ASM_VTABLE(basic_ostream_char, ""); __ASM_VTABLE(basic_ostream_wchar, ""); __ASM_VTABLE(basic_istream_char, ""); + __ASM_VTABLE(basic_istream_wchar, ""); __ASM_VTABLE(basic_iostream_char, ""); __ASM_VTABLE(basic_ofstream_char, ""); __ASM_VTABLE(basic_ifstream_char, ""); @@ -5716,6 +5733,1034 @@ basic_istream_char* __cdecl basic_istream_char_get_bstr( return istream; } +/* Caution: basic_istream uses virtual inheritance. */ +static inline basic_ios_wchar* basic_istream_wchar_get_basic_ios(basic_istream_wchar *this) +{ + return (basic_ios_wchar*)((char*)this+this->vbtable[1]); +} + +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */ +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_init, 20) +basic_istream_wchar* __thiscall basic_istream_wchar_ctor_init(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool noinit, MSVCP_bool virt_init) +{ + basic_ios_wchar *base; + + TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, noinit, virt_init); + + if(virt_init) { + this->vbtable = basic_istream_wchar_vbtable; + base = basic_istream_wchar_get_basic_ios(this); + basic_ios_wchar_ctor(base); + }else { + base = basic_istream_wchar_get_basic_ios(this); + } + + base->base.vtable = &MSVCP_basic_istream_wchar_vtable; + this->count = 0; + if(!noinit) + basic_ios_wchar_init(base, strbuf, isstd); + return this; +} + +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */ +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor, 16) +basic_istream_wchar* __thiscall basic_istream_wchar_ctor(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init) +{ + return basic_istream_wchar_ctor_init(this, strbuf, isstd, FALSE, virt_init); +} + +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z */ +/* ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ctor_uninitialized, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_ctor_uninitialized(basic_istream_wchar *this, int uninitialized, MSVCP_bool virt_init) +{ + basic_ios_wchar *base; + + TRACE("(%p %d %d)\n", this, uninitialized, virt_init); + + if(virt_init) { + this->vbtable = basic_istream_wchar_vbtable; + base = basic_istream_wchar_get_basic_ios(this); + basic_ios_wchar_ctor(base); + }else { + base = basic_istream_wchar_get_basic_ios(this); + } + + base->base.vtable = &MSVCP_basic_istream_wchar_vtable; + ios_base_Addstd(&base->base); + return this; +} + +/* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */ +/* ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_dtor, 4) +void __thiscall basic_istream_wchar_dtor(basic_istream_wchar *this) +{ + /* don't destroy virtual base here */ + TRACE("(%p)\n", this); +} + +/* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */ +/* ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_vbase_dtor, 4) +void __thiscall basic_istream_wchar_vbase_dtor(basic_istream_wchar *this) +{ + TRACE("(%p)\n", this); + basic_istream_wchar_dtor(this); + basic_ios_wchar_dtor(basic_istream_wchar_get_basic_ios(this)); +} + +DEFINE_THISCALL_WRAPPER(MSVCP_basic_istream_wchar_vector_dtor, 8) +basic_istream_wchar* __thiscall MSVCP_basic_istream_wchar_vector_dtor(basic_ios_wchar *base, unsigned int flags) +{ + basic_istream_wchar *this = (basic_istream_wchar *)((char*)base - basic_istream_wchar_vbtable[1] + basic_istream_wchar_vbtable[0]); + + TRACE("(%p %x)\n", this, flags); + + if(flags & 2) { + /* we have an array, with the number of elements stored before the first object */ + int i, *ptr = (int *)this-1; + + for(i=*ptr-1; i>=0; i--) + basic_istream_wchar_vbase_dtor(this+i); + MSVCRT_operator_delete(ptr); + } else { + basic_istream_wchar_vbase_dtor(this); + if(flags & 1) + MSVCRT_operator_delete(this); + } + + return this; +} + +/* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */ +/* ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Ipfx, 8) +MSVCP_bool __thiscall basic_istream_wchar__Ipfx(basic_istream_wchar *this, MSVCP_bool noskip) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + + TRACE("(%p %d)\n", this, noskip); + + if(!ios_base_good(&base->base)) { + basic_ios_wchar_setstate(base, IOSTATE_failbit); + return FALSE; + } + + if(basic_ios_wchar_tie_get(base)) + basic_ostream_wchar_flush(basic_ios_wchar_tie_get(base)); + + if(!noskip && (ios_base_flags_get(&base->base) & FMTFLAG_skipws)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc); + int ch; + + for(ch = basic_streambuf_wchar_sgetc(strbuf); ; + ch = basic_streambuf_wchar_snextc(strbuf)) { + if(ch == WEOF) { + basic_ios_wchar_setstate(base, IOSTATE_eofbit); + return FALSE; + } + + if(!ctype_wchar_is_ch(ctype, _SPACE|_BLANK, ch)) + break; + } + } + + return TRUE; +} + +/* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z */ +/* ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ipfx, 8) +MSVCP_bool __thiscall basic_istream_wchar_ipfx(basic_istream_wchar *this, MSVCP_bool noskip) +{ + return basic_istream_wchar__Ipfx(this, noskip); +} + +/* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ */ +/* ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_isfx, 4) +void __thiscall basic_istream_wchar_isfx(basic_istream_wchar *this) +{ + TRACE("(%p)\n", this); +} + +static BOOL basic_istream_wchar_sentry_create(basic_istream_wchar *istr, MSVCP_bool noskip) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr); + + if(basic_ios_wchar_rdbuf_get(base)) + basic_streambuf_wchar__Lock(base->strbuf); + + return basic_istream_wchar_ipfx(istr, noskip); +} + +static void basic_istream_wchar_sentry_destroy(basic_istream_wchar *istr) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istr); + + if(basic_ios_wchar_rdbuf_get(base)) + basic_streambuf_wchar__Unlock(base->strbuf); +} + +/* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ */ +/* ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_gcount, 4) +int __thiscall basic_istream_wchar_gcount(const basic_istream_wchar *this) +{ + TRACE("(%p)\n", this); + return this->count; +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get, 4) +unsigned short __thiscall basic_istream_wchar_get(basic_istream_wchar *this) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int ret; + + TRACE("(%p)\n", this); + + this->count = 0; + + if(!basic_istream_wchar_sentry_create(this, TRUE)) { + basic_istream_wchar_sentry_destroy(this); + return WEOF; + } + + ret = basic_streambuf_wchar_sbumpc(basic_ios_wchar_rdbuf_get(base)); + basic_istream_wchar_sentry_destroy(this); + if(ret == WEOF) + basic_ios_wchar_setstate(base, IOSTATE_eofbit|IOSTATE_failbit); + else + this->count++; + + return ret; +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_ch, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_get_ch(basic_istream_wchar *this, wchar_t *ch) +{ + unsigned short ret; + + TRACE("(%p %p)\n", this, ch); + + ret = basic_istream_wchar_get(this); + if(ret != WEOF) + *ch = (wchar_t)ret; + return this; +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str_delim, 16) +basic_istream_wchar* __thiscall basic_istream_wchar_get_str_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + unsigned short ch = delim; + + TRACE("(%p %p %ld %c)\n", this, str, count, delim); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + for(ch = basic_streambuf_wchar_sgetc(strbuf); count>1; + ch = basic_streambuf_wchar_snextc(strbuf)) { + if(ch==WEOF || ch==delim) + break; + + *str++ = ch; + this->count++; + count--; + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) | + (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit)); + if(count > 0) + *str = 0; + return this; +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_str, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_get_str(basic_istream_wchar *this, wchar_t *str, streamsize count) +{ + return basic_istream_wchar_get_str_delim(this, str, count, '\n'); +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf_delim, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf_delim(basic_istream_wchar *this, basic_streambuf_wchar *strbuf, wchar_t delim) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + unsigned short ch = delim; + + TRACE("(%p %p %c)\n", this, strbuf, delim); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf_read = basic_ios_wchar_rdbuf_get(base); + + for(ch = basic_streambuf_wchar_sgetc(strbuf_read); ; + ch = basic_streambuf_wchar_snextc(strbuf_read)) { + if(ch==WEOF || ch==delim) + break; + + if(basic_streambuf_wchar_sputc(strbuf, ch) == WEOF) + break; + this->count++; + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, (!this->count ? IOSTATE_failbit : IOSTATE_goodbit) | + (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit)); + return this; +} + +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */ +/* ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_get_streambuf, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_get_streambuf(basic_istream_wchar *this, basic_streambuf_wchar *strbuf) +{ + return basic_istream_wchar_get_streambuf_delim(this, strbuf, '\n'); +} + +/* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z */ +/* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline_delim, 16) +basic_istream_wchar* __thiscall basic_istream_wchar_getline_delim(basic_istream_wchar *this, wchar_t *str, streamsize count, wchar_t delim) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + unsigned short ch = delim; + + TRACE("(%p %p %ld %c)\n", this, str, count, delim); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE) && count>0) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + while(count > 1) { + ch = basic_streambuf_wchar_sbumpc(strbuf); + + if(ch==WEOF || ch==delim) + break; + + *str++ = ch; + this->count++; + count--; + } + + if(ch == delim) + this->count++; + else if(ch != WEOF) { + ch = basic_streambuf_wchar_sgetc(strbuf); + + if(ch == delim) { + basic_streambuf_wchar__Gninc(strbuf); + this->count++; + } + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, (ch==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit) | + (!this->count || (ch!=delim && ch!=WEOF) ? IOSTATE_failbit : IOSTATE_goodbit)); + if(count > 0) + *str = 0; + return this; +} + +/* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */ +/* ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_getline, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_getline(basic_istream_wchar *this, wchar_t *str, streamsize count) +{ + return basic_istream_wchar_getline_delim(this, str, count, '\n'); +} + +/* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z */ +/* ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_ignore, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_ignore(basic_istream_wchar *this, streamsize count, unsigned short delim) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + unsigned short ch = delim; + + TRACE("(%p %ld %d)\n", this, count, delim); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + while(count > 0) { + ch = basic_streambuf_wchar_sbumpc(strbuf); + + if(ch==WEOF || ch==delim) + break; + + this->count++; + if(count != INT_MAX) + count--; + } + } + basic_istream_wchar_sentry_destroy(this); + + if(ch == WEOF) + basic_ios_wchar_setstate(base, IOSTATE_eofbit); + return this; +} + +/* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ */ +/* ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_peek, 4) +unsigned short __thiscall basic_istream_wchar_peek(basic_istream_wchar *this) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + unsigned short ret = WEOF; + + TRACE("(%p)\n", this); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) + ret = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); + basic_istream_wchar_sentry_destroy(this); + return ret; +} + +/* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z */ +/* ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Read_s, 16) +basic_istream_wchar* __thiscall basic_istream_wchar__Read_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + IOSB_iostate state = IOSTATE_goodbit; + + TRACE("(%p %p %lu %ld)\n", this, str, size, count); + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + this->count = basic_streambuf_wchar__Sgetn_s(strbuf, str, size, count); + if(this->count != count) + state |= IOSTATE_failbit | IOSTATE_eofbit; + }else { + this->count = 0; + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z */ +/* ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_read(basic_istream_wchar *this, wchar_t *str, streamsize count) +{ + return basic_istream_wchar__Read_s(this, str, count, count); +} + +/* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z */ +/* ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar__Readsome_s, 16) +streamsize __thiscall basic_istream_wchar__Readsome_s(basic_istream_wchar *this, wchar_t *str, MSVCP_size_t size, streamsize count) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + IOSB_iostate state = IOSTATE_goodbit; + + TRACE("(%p %p %lu %ld)\n", this, str, size, count); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + streamsize avail = basic_streambuf_wchar_in_avail(basic_ios_wchar_rdbuf_get(base)); + if(avail > count) + avail = count; + + if(avail == -1) + state |= IOSTATE_eofbit; + else if(avail > 0) + basic_istream_wchar__Read_s(this, str, size, avail); + }else { + state |= IOSTATE_failbit; + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this->count; +} + +/* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z */ +/* ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_readsome, 12) +streamsize __thiscall basic_istream_wchar_readsome(basic_istream_wchar *this, wchar_t *str, streamsize count) +{ + return basic_istream_wchar__Readsome_s(this, str, count, count); +} + +/* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z */ +/* ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_putback, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_putback(basic_istream_wchar *this, wchar_t ch) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + IOSB_iostate state = IOSTATE_goodbit; + + TRACE("(%p %c)\n", this, ch); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + if(!ios_base_good(&base->base)) + state |= IOSTATE_failbit; + else if(!strbuf || basic_streambuf_wchar_sputbackc(strbuf, ch)==WEOF) + state |= IOSTATE_badbit; + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ */ +/* ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_unget, 4) +basic_istream_wchar* __thiscall basic_istream_wchar_unget(basic_istream_wchar *this) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + IOSB_iostate state = IOSTATE_goodbit; + + TRACE("(%p)\n", this); + + this->count = 0; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + if(!ios_base_good(&base->base)) + state |= IOSTATE_failbit; + else if(!strbuf || basic_streambuf_wchar_sungetc(strbuf)==WEOF) + state |= IOSTATE_badbit; + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ */ +/* ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_sync, 4) +int __thiscall basic_istream_wchar_sync(basic_istream_wchar *this) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + + TRACE("(%p)\n", this); + + if(!strbuf) + return -1; + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + if(basic_streambuf_wchar_pubsync(strbuf) != -1) { + basic_istream_wchar_sentry_destroy(this); + return 0; + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, IOSTATE_badbit); + return -1; +} + +/* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ */ +/* ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_tellg, 8) +fpos_int* __thiscall basic_istream_wchar_tellg(basic_istream_wchar *this, fpos_int *ret) +{ + TRACE("(%p %p)\n", this, ret); + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + if(!ios_base_fail(&base->base)) { + basic_streambuf_wchar_pubseekoff(basic_ios_wchar_rdbuf_get(base), + ret, 0, SEEKDIR_cur, OPENMODE_in); + basic_istream_wchar_sentry_destroy(this); + + if(ret->off==0 && ret->pos==-1 && ret->state==0) + basic_ios_wchar_setstate(base, IOSTATE_failbit); + return ret; + } + } + basic_istream_wchar_sentry_destroy(this); + + ret->off = 0; + ret->pos = -1; + ret->state = 0; + return ret; +} + +/* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z */ +/* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg, 12) +basic_istream_wchar* __thiscall basic_istream_wchar_seekg(basic_istream_wchar *this, streamoff off, int dir) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + + TRACE("(%p %ld %d)\n", this, off, dir); + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + if(!ios_base_fail(&base->base)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + fpos_int ret; + + basic_streambuf_wchar_pubseekoff(strbuf, &ret, off, dir, OPENMODE_in); + basic_istream_wchar_sentry_destroy(this); + + if(ret.off==0 && ret.pos==-1 && ret.state==0) + basic_ios_wchar_setstate(base, IOSTATE_failbit); + else + basic_ios_wchar_clear(base, IOSTATE_goodbit); + return this; + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, IOSTATE_failbit); + return this; +} + +/* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z */ +/* ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_seekg_fpos, 28) +basic_istream_wchar* __thiscall basic_istream_wchar_seekg_fpos(basic_istream_wchar *this, fpos_int pos) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + + TRACE("(%p %s)\n", this, debugstr_fpos_int(&pos)); + + if(basic_istream_wchar_sentry_create(this, TRUE)) { + if(!ios_base_fail(&base->base)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + fpos_int ret; + + basic_streambuf_wchar_pubseekpos(strbuf, &ret, pos, OPENMODE_in); + basic_istream_wchar_sentry_destroy(this); + + if(ret.off==0 && ret.pos==-1 && ret.state==0) + basic_ios_wchar_setstate(base, IOSTATE_failbit); + else + basic_ios_wchar_clear(base, IOSTATE_goodbit); + return this; + } + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, IOSTATE_failbit); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_short, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_short(basic_istream_wchar *this, short *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + LONG tmp; + + first.strbuf = strbuf; + num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, &tmp); + + if(!(state&IOSTATE_failbit) && tmp==(LONG)((short)tmp)) + *v = tmp; + else + state |= IOSTATE_failbit; + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ushort, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ushort(basic_istream_wchar *this, unsigned short *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_ushort(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_int(basic_istream_wchar *this, int *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_uint(basic_istream_wchar *this, unsigned int *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_uint(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_long, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_long(basic_istream_wchar *this, LONG *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_long(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ulong, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ulong(basic_istream_wchar *this, ULONG *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_ulong(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_float, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_float(basic_istream_wchar *this, float *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_float(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_double, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_double(basic_istream_wchar *this, double *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_double(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ldouble, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ldouble(basic_istream_wchar *this, double *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_ldouble(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_ptr, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_ptr(basic_istream_wchar *this, void **v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_void(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_int64, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_int64(basic_istream_wchar *this, __int64 *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_int64(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_uint64, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_uint64(basic_istream_wchar *this, unsigned __int64 *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_uint64(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z */ +/* ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_istream_wchar_read_bool, 8) +basic_istream_wchar* __thiscall basic_istream_wchar_read_bool(basic_istream_wchar *this, MSVCP_bool *v) +{ + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(this); + int state = IOSTATE_goodbit; + + TRACE("(%p %p)\n", this, v); + + if(basic_istream_wchar_sentry_create(this, FALSE)) { + basic_streambuf_wchar *strbuf = basic_ios_wchar_rdbuf_get(base); + const num_get *numget = num_get_wchar_use_facet(strbuf->loc); + istreambuf_iterator_wchar first={0}, last={0}; + + first.strbuf = strbuf; + num_get_wchar_get_bool(numget, &last, first, last, &base->base, &state, v); + } + basic_istream_wchar_sentry_destroy(this); + + basic_ios_wchar_setstate(base, state); + return this; +} + +/* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */ +/* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z */ +basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr_delim( + basic_istream_wchar *istream, basic_string_wchar *str, wchar_t delim) +{ + IOSB_iostate state = IOSTATE_failbit; + int c = delim; + + TRACE("(%p %p %c)\n", istream, str, delim); + + if(basic_istream_wchar_sentry_create(istream, TRUE)) { + MSVCP_basic_string_wchar_clear(str); + + for(c = basic_istream_wchar_get(istream); c!=delim && c!=WEOF; + c = basic_istream_wchar_get(istream)) { + state = IOSTATE_goodbit; + MSVCP_basic_string_wchar_append_ch(str, c); + } + } + basic_istream_wchar_sentry_destroy(istream); + + basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), + state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit)); + return istream; +} + +/* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +/* ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +basic_istream_wchar* __cdecl basic_istream_wchar_getline_bstr( + basic_istream_wchar *istream, basic_string_wchar *str) +{ + return basic_istream_wchar_getline_bstr_delim(istream, str, '\n'); +} + +/* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +/* ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z */ +basic_istream_wchar* __cdecl basic_istream_wchar_get_bstr( + basic_istream_wchar *istream, basic_string_wchar *str) +{ + IOSB_iostate state = IOSTATE_failbit; + int c = '\n'; + + TRACE("(%p %p)\n", istream, str); + + if(basic_istream_wchar_sentry_create(istream, FALSE)) { + basic_ios_wchar *base = basic_istream_wchar_get_basic_ios(istream); + const ctype_wchar *ctype = ctype_wchar_use_facet(base->strbuf->loc); + + MSVCP_basic_string_wchar_clear(str); + + for(c = basic_streambuf_wchar_sgetc(basic_ios_wchar_rdbuf_get(base)); + c!=WEOF && !ctype_wchar_is_ch(ctype, _SPACE|_BLANK, c); + c = basic_streambuf_wchar_snextc(basic_ios_wchar_rdbuf_get(base))) { + state = IOSTATE_goodbit; + MSVCP_basic_string_wchar_append_ch(str, c); + } + } + basic_istream_wchar_sentry_destroy(istream); + + basic_ios_wchar_setstate(basic_istream_wchar_get_basic_ios(istream), + state | (c==WEOF ? IOSTATE_eofbit : IOSTATE_goodbit)); + return istream; +} + /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ /* ??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ DEFINE_THISCALL_WRAPPER(basic_iostream_char_ctor, 12) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 2c161472574..25cffa46666 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -4244,6 +4244,32 @@ MSVCP_size_t __cdecl num_get_wchar__Getcat(const locale_facet **facet, const loc return LC_NUMERIC; } +num_get* num_get_wchar_use_facet(const locale *loc) +{ + static num_get *obj = NULL; + + _Lockit lock; + const locale_facet *fac; + + _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); + fac = locale__Getfacet(loc, num_get_wchar_id.id); + if(fac) { + _Lockit_dtor(&lock); + return (num_get*)fac; + } + + if(obj) + return obj; + + num_get_wchar__Getcat(&fac, loc); + obj = (num_get*)fac; + locale_facet__Incref(&obj->facet); + locale_facet_register(&obj->facet); + _Lockit_dtor(&lock); + + return obj; +} + /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SAIPAPBVfacet@locale@2@PBV42@@Z */ /* ?_Getcat@?$num_get@GV?$istreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@SA_KPEAPEBVfacet@locale@2@PEBV42@@Z */ MSVCP_size_t __cdecl num_get_short__Getcat(const locale_facet **facet, const locale *loc) diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index 639fd645cd8..80d4acf5461 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -275,6 +275,8 @@ typedef struct _basic_string_wchar basic_string_wchar* __thiscall MSVCP_basic_string_wchar_ctor_cstr(basic_string_wchar*, const wchar_t*); void __thiscall MSVCP_basic_string_wchar_dtor(basic_string_wchar*); const wchar_t* __thiscall MSVCP_basic_string_wchar_c_str(const basic_string_wchar*); +void __thiscall MSVCP_basic_string_wchar_clear(basic_string_wchar*); +basic_string_wchar* __thiscall MSVCP_basic_string_wchar_append_ch(basic_string_wchar*, wchar_t); MSVCP_size_t __thiscall MSVCP_basic_string_wchar_length(const basic_string_wchar*); char* __stdcall MSVCP_allocator_char_allocate(void*, MSVCP_size_t); @@ -355,6 +357,7 @@ typedef struct { _Cvtvec cvt; } ctype_wchar; +MSVCP_bool __thiscall ctype_wchar_is_ch(const ctype_wchar*, short, wchar_t); char __thiscall ctype_wchar_narrow_ch(const ctype_wchar*, wchar_t, char); wchar_t __thiscall ctype_wchar_widen_ch(const ctype_wchar*, char); @@ -585,6 +588,30 @@ istreambuf_iterator_char *__thiscall num_get_char_get_uint64(const num_get*, ist istreambuf_iterator_char *__thiscall num_get_char_get_bool(const num_get*, istreambuf_iterator_char*, istreambuf_iterator_char, istreambuf_iterator_char, ios_base*, int*, MSVCP_bool*); +num_get* num_get_wchar_use_facet(const locale*); +istreambuf_iterator_wchar* __thiscall num_get_wchar_get_long(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, LONG*); +istreambuf_iterator_wchar* __thiscall num_get_wchar_get_ushort(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, unsigned short*); +istreambuf_iterator_wchar* __thiscall num_get_wchar_get_uint(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, unsigned int*); +istreambuf_iterator_wchar* __thiscall num_get_wchar_get_ulong(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, ULONG*); +istreambuf_iterator_wchar* __thiscall num_get_wchar_get_float(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, float*); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_double(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, double*); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_ldouble(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, double*); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_void(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, void**); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_int64(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, LONGLONG*); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_uint64(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, ULONGLONG*); +istreambuf_iterator_wchar *__thiscall num_get_wchar_get_bool(const num_get*, istreambuf_iterator_wchar*, + istreambuf_iterator_wchar, istreambuf_iterator_wchar, ios_base*, int*, MSVCP_bool*); + /* class num_put */ /* class num_put */ typedef struct { diff --git a/dlls/msvcp90/msvcp90.spec b/dlls/msvcp90/msvcp90.spec index 4f6facaef58..02361b223a3 100644 --- a/dlls/msvcp90/msvcp90.spec +++ b/dlls/msvcp90/msvcp90.spec @@ -40,8 +40,8 @@ @ stub -arch=win64 ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEA_W@Z @ stub -arch=win32 ??$?5_WU?$char_traits@_W@std@@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@PA_W@Z @ stub -arch=win64 ??$?5_WU?$char_traits@_W@std@@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@PEA_W@Z -@ stub -arch=win32 ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z +@ cdecl -arch=win32 ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(ptr ptr) basic_istream_wchar_get_bstr +@ cdecl -arch=win64 ??$?5_WU?$char_traits@_W@std@@V?$allocator@_W@1@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(ptr ptr) basic_istream_wchar_get_bstr @ cdecl -arch=win32 ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAAV?$basic_ostream@DU?$char_traits@D@std@@@0@AAV10@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(ptr ptr) basic_ostream_wchar_print_bstr @ cdecl -arch=win64 ??$?6DU?$char_traits@D@std@@V?$allocator@D@1@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z(ptr ptr) basic_ostream_wchar_print_bstr @ stub -arch=win32 ??$?6GU?$char_traits@G@std@@@std@@YAAAV?$basic_ostream@GU?$char_traits@G@std@@@0@AAV10@G@Z @@ -394,10 +394,10 @@ @ stub -arch=win64 ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@@Z @ stub -arch=win32 ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAAV?$basic_istream@GU?$char_traits@G@std@@@0@AAV10@AAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z @ stub -arch=win64 ??$getline@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@YAAEAV?$basic_istream@GU?$char_traits@G@std@@@0@AEAV10@AEAV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@0@G@Z -@ stub -arch=win32 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win64 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z -@ stub -arch=win32 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z -@ stub -arch=win64 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z +@ cdecl -arch=win32 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(ptr ptr) basic_istream_wchar_getline_bstr +@ cdecl -arch=win64 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@@Z(ptr ptr) basic_istream_wchar_getline_bstr +@ cdecl -arch=win32 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AAV10@AAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z(ptr ptr long) basic_istream_wchar_getline_bstr_delim +@ cdecl -arch=win64 ??$getline@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@YAAEAV?$basic_istream@_WU?$char_traits@_W@std@@@0@AEAV10@AEAV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@0@_W@Z(ptr ptr long) basic_istream_wchar_getline_bstr_delim @ stub -arch=win32 ??$imag@M@std@@YAMABV?$complex@M@0@@Z @ stub -arch=win64 ??$imag@M@std@@YAMAEBV?$complex@M@0@@Z @ stub -arch=win32 ??$imag@N@std@@YANABV?$complex@N@0@@Z @@ -648,12 +648,12 @@ @ stub -arch=win64 ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z @ stub -arch=win32 ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z @ stub -arch=win64 ??0?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z -@ stub -arch=win32 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z -@ stub -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z -@ stub -arch=win32 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z -@ stub -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z -@ stub -arch=win32 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@@Z -@ stub -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@@Z +@ thiscall -arch=win32 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z(ptr ptr long long long) basic_istream_wchar_ctor_init +@ cdecl -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N1@Z(ptr ptr long long long) basic_istream_wchar_ctor_init +@ thiscall -arch=win32 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z(ptr ptr long long) basic_istream_wchar_ctor +@ cdecl -arch=win64 ??0?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z(ptr ptr long long) basic_istream_wchar_ctor +@ thiscall -arch=win32 ??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 @ stub -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 @ stub -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 @ stub -arch=win32 ??0?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z @@ -1180,8 +1180,8 @@ @ cdecl -arch=win64 ??1?$basic_istream@DU?$char_traits@D@std@@@std@@UEAA@XZ(ptr) basic_istream_char_dtor @ stub -arch=win32 ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UAE@XZ @ stub -arch=win64 ??1?$basic_istream@GU?$char_traits@G@std@@@std@@UEAA@XZ -@ stub -arch=win32 ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UAE@XZ -@ stub -arch=win64 ??1?$basic_istream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ +@ thiscall -arch=win32 ??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 @ stub -arch=win32 ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UAE@XZ @ stub -arch=win64 ??1?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAA@XZ @ stub -arch=win32 ??1?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@UAE@XZ @@ -1540,32 +1540,32 @@ @ stub -arch=win64 ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@P6AAEAVios_base@1@AEAV21@@Z@Z @ stub -arch=win32 ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV01@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z @ stub -arch=win64 ??5?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV01@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z -@ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z -@ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAF@Z(ptr ptr) basic_istream_wchar_read_short +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAF@Z(ptr ptr) basic_istream_wchar_read_short +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAG@Z(ptr ptr) basic_istream_wchar_read_ushort +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAG@Z(ptr ptr) basic_istream_wchar_read_ushort +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAH@Z(ptr ptr) basic_istream_wchar_read_int +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAH@Z(ptr ptr) basic_istream_wchar_read_int +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAI@Z(ptr ptr) basic_istream_wchar_read_uint +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAI@Z(ptr ptr) basic_istream_wchar_read_uint +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAJ@Z(ptr ptr) basic_istream_wchar_read_long +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAJ@Z(ptr ptr) basic_istream_wchar_read_long +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAK@Z(ptr ptr) basic_istream_wchar_read_ulong +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAK@Z(ptr ptr) basic_istream_wchar_read_ulong +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAM@Z(ptr ptr) basic_istream_wchar_read_float +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAM@Z(ptr ptr) basic_istream_wchar_read_float +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAN@Z(ptr ptr) basic_istream_wchar_read_double +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAN@Z(ptr ptr) basic_istream_wchar_read_double +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAO@Z(ptr ptr) basic_istream_wchar_read_ldouble +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAO@Z(ptr ptr) basic_istream_wchar_read_ldouble +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AAPAX@Z(ptr ptr) basic_istream_wchar_read_ptr +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEAPEAX@Z(ptr ptr) basic_istream_wchar_read_ptr +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_J@Z(ptr ptr) basic_istream_wchar_read_int64 +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_J@Z(ptr ptr) basic_istream_wchar_read_int64 +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_K@Z(ptr ptr) basic_istream_wchar_read_uint64 +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_K@Z(ptr ptr) basic_istream_wchar_read_uint64 +@ thiscall -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@AA_N@Z(ptr ptr) basic_istream_wchar_read_bool +@ cdecl -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@AEA_N@Z(ptr ptr) basic_istream_wchar_read_bool @ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV01@AAV01@@Z@Z @ stub -arch=win64 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z @ stub -arch=win32 ??5?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV01@P6AAAV?$basic_ios@_WU?$char_traits@_W@std@@@1@AAV21@@Z@Z @@ -1796,7 +1796,7 @@ # extern ??_7?$basic_iostream@_WU?$char_traits@_W@std@@@std@@6B@ @ extern ??_7?$basic_istream@DU?$char_traits@D@std@@@std@@6B@ MSVCP_basic_istream_char_vtable # extern ??_7?$basic_istream@GU?$char_traits@G@std@@@std@@6B@ -# extern ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ +@ extern ??_7?$basic_istream@_WU?$char_traits@_W@std@@@std@@6B@ MSVCP_basic_istream_wchar_vtable # extern ??_7?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@6B@ # extern ??_7?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ # extern ??_7?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@6B@ @@ -1882,7 +1882,7 @@ # extern ??_8?$basic_iostream@_WU?$char_traits@_W@std@@@std@@7B?$basic_ostream@_WU?$char_traits@_W@std@@@1@@ @ extern ??_8?$basic_istream@DU?$char_traits@D@std@@@std@@7B@ basic_istream_char_vbtable # extern ??_8?$basic_istream@GU?$char_traits@G@std@@@std@@7B@ -# extern ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ +@ extern ??_8?$basic_istream@_WU?$char_traits@_W@std@@@std@@7B@ basic_istream_wchar_vbtable # extern ??_8?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@7B@ # extern ??_8?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@7B@ # extern ??_8?$basic_istringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@7B@ @@ -1923,8 +1923,8 @@ @ cdecl -arch=win64 ??_D?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ(ptr) basic_istream_char_vbase_dtor @ stub -arch=win32 ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ(ptr) basic_istream_wchar_vbase_dtor +@ cdecl -arch=win64 ??_D?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ(ptr) basic_istream_wchar_vbase_dtor @ stub -arch=win32 ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ @ stub -arch=win64 ??_D?$basic_istringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAAXXZ @ stub -arch=win32 ??_D?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAEXXZ @@ -2561,8 +2561,8 @@ @ cdecl -arch=win64 ?_Ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z(ptr long) basic_istream_char__Ipfx @ stub -arch=win32 ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z @ stub -arch=win64 ?_Ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z -@ stub -arch=win32 ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z -@ stub -arch=win64 ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z +@ thiscall -arch=win32 ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z(ptr long) basic_istream_wchar__Ipfx +@ cdecl -arch=win64 ?_Ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z(ptr long) basic_istream_wchar__Ipfx @ cdecl -arch=win32 ?_Iput@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AAVios_base@2@DPADI@Z(ptr ptr long ptr ptr long ptr long) num_put_char__Iput @ cdecl -arch=win64 ?_Iput@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@AEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@DPEAD_K@Z(ptr ptr ptr ptr long ptr long) num_put_char__Iput @ stub -arch=win32 ?_Iput@?$num_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@ABA?AV?$ostreambuf_iterator@GU?$char_traits@G@std@@@2@V32@AAVios_base@2@GPADI@Z @@ -2755,14 +2755,14 @@ @ cdecl -arch=win64 ?_Read_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_K_J@Z(ptr ptr long long) basic_istream_char__Read_s @ stub -arch=win32 ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGIH@Z @ stub -arch=win64 ?_Read_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_K_J@Z -@ stub -arch=win32 ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z -@ stub -arch=win64 ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z +@ thiscall -arch=win32 ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WIH@Z(ptr ptr long long) basic_istream_wchar__Read_s +@ cdecl -arch=win64 ?_Read_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_K_J@Z(ptr ptr long long) basic_istream_wchar__Read_s @ thiscall -arch=win32 ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z(ptr ptr long long) basic_istream_char__Readsome_s @ cdecl -arch=win64 ?_Readsome_s@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z(ptr ptr long long) basic_istream_char__Readsome_s @ stub -arch=win32 ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGIH@Z @ stub -arch=win64 ?_Readsome_s@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_K_J@Z -@ stub -arch=win32 ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z -@ stub -arch=win64 ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z +@ thiscall -arch=win32 ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WIH@Z(ptr ptr long long) basic_istream_wchar__Readsome_s +@ cdecl -arch=win64 ?_Readsome_s@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_K_J@Z(ptr ptr long long) basic_istream_wchar__Readsome_s @ stub -arch=win32 ?_Rep@?$money_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@CA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@DI@Z @ stub -arch=win64 ?_Rep@?$money_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@CA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@D_K@Z @ stub -arch=win32 ?_Rep@?$money_put@GV?$ostreambuf_iterator@GU?$char_traits@G@std@@@std@@@std@@CA?AV?$ostreambuf_iterator@GU?$char_traits@G@std@@@2@V32@GI@Z @@ -3977,8 +3977,8 @@ @ cdecl -arch=win64 ?gcount@?$basic_istream@DU?$char_traits@D@std@@@std@@QEBA_JXZ(ptr) basic_istream_char_gcount @ stub -arch=win32 ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QBEHXZ @ stub -arch=win64 ?gcount@?$basic_istream@GU?$char_traits@G@std@@@std@@QEBA_JXZ -@ stub -arch=win32 ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ -@ stub -arch=win64 ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ +@ thiscall -arch=win32 ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QBEHXZ(ptr) basic_istream_wchar_gcount +@ cdecl -arch=win64 ?gcount@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEBA_JXZ(ptr) basic_istream_wchar_gcount @ thiscall -arch=win32 ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAD@Z(ptr ptr) basic_istream_char_get_ch @ cdecl -arch=win64 ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEAD@Z(ptr ptr) basic_istream_char_get_ch @ thiscall -arch=win32 ?get@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@AAV?$basic_streambuf@DU?$char_traits@D@std@@@2@@Z(ptr ptr) basic_istream_char_get_streambuf @@ -4003,18 +4003,18 @@ @ stub -arch=win64 ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z @ stub -arch=win32 ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ @ stub -arch=win64 ?get@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z -@ stub -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ -@ stub -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z(ptr ptr) basic_istream_wchar_get_streambuf +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@@Z(ptr ptr) basic_istream_wchar_get_streambuf +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z(ptr ptr long) basic_istream_wchar_get_streambuf_delim +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_W@Z(ptr ptr long) basic_istream_wchar_get_streambuf_delim +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@AA_W@Z(ptr ptr) basic_istream_wchar_get_ch +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEA_W@Z(ptr ptr) basic_istream_wchar_get_ch +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z(ptr ptr long) basic_istream_wchar_get_str +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z(ptr ptr long) basic_istream_wchar_get_str +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z(ptr ptr long long) basic_istream_wchar_get_str_delim +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z(ptr ptr long long) basic_istream_wchar_get_str_delim +@ thiscall -arch=win32 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ(ptr) basic_istream_wchar_get +@ cdecl -arch=win64 ?get@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ(ptr) basic_istream_wchar_get @ stub -arch=win32 ?get@?$messages@D@std@@QBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@HHHABV32@@Z @ stub -arch=win64 ?get@?$messages@D@std@@QEBA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@HHHAEBV32@@Z @ stub -arch=win32 ?get@?$messages@G@std@@QBE?AV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@2@HHHABV32@@Z @@ -4143,10 +4143,10 @@ @ stub -arch=win64 ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z @ stub -arch=win32 ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGHG@Z @ stub -arch=win64 ?getline@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_JG@Z -@ stub -arch=win32 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z -@ stub -arch=win64 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z -@ stub -arch=win32 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z -@ stub -arch=win64 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z +@ thiscall -arch=win32 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z(ptr ptr long) basic_istream_wchar_getline +@ cdecl -arch=win64 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z(ptr ptr long) basic_istream_wchar_getline +@ thiscall -arch=win32 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH_W@Z(ptr ptr long long) basic_istream_wchar_getline_delim +@ cdecl -arch=win64 ?getline@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J_W@Z(ptr ptr long long) basic_istream_wchar_getline_delim @ thiscall -arch=win32 ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ(ptr ptr) basic_streambuf_char_getloc @ cdecl -arch=win64 ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ(ptr ptr) basic_streambuf_char_getloc @ thiscall -arch=win32 ?getloc@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QBE?AVlocale@2@XZ(ptr ptr) basic_streambuf_wchar_getloc @@ -4236,8 +4236,8 @@ @ cdecl -arch=win64 ?ignore@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@_JH@Z(ptr long long) basic_istream_char_ignore @ stub -arch=win32 ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@HG@Z @ stub -arch=win64 ?ignore@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JG@Z -@ stub -arch=win32 ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z -@ stub -arch=win64 ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z +@ thiscall -arch=win32 ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@HG@Z(ptr long long) basic_istream_wchar_ignore +@ cdecl -arch=win64 ?ignore@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JG@Z(ptr long long) basic_istream_wchar_ignore @ stub -arch=win32 ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z @ stub -arch=win64 ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z @ stub -arch=win32 ?imag@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ @@ -4374,8 +4374,8 @@ @ cdecl -arch=win64 ?ipfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_N_N@Z(ptr long) basic_istream_char_ipfx @ stub -arch=win32 ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE_N_N@Z @ stub -arch=win64 ?ipfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_N_N@Z -@ stub -arch=win32 ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z -@ stub -arch=win64 ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z +@ thiscall -arch=win32 ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE_N_N@Z(ptr long) basic_istream_wchar_ipfx +@ cdecl -arch=win64 ?ipfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_N_N@Z(ptr long) basic_istream_wchar_ipfx @ thiscall -arch=win32 ?is@?$ctype@D@std@@QBEPBDPBD0PAF@Z(ptr ptr ptr ptr) ctype_char_is @ cdecl -arch=win64 ?is@?$ctype@D@std@@QEBAPEBDPEBD0PEAF@Z(ptr ptr ptr ptr) ctype_char_is @ thiscall -arch=win32 ?is@?$ctype@D@std@@QBE_NFD@Z(ptr long long) ctype_char_is_ch @@ -4449,8 +4449,8 @@ @ cdecl -arch=win64 ?isfx@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAXXZ(ptr) basic_istream_char_isfx @ stub -arch=win32 ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEXXZ @ stub -arch=win64 ?isfx@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAXXZ -@ stub -arch=win32 ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ -@ stub -arch=win64 ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ +@ thiscall -arch=win32 ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEXXZ(ptr) basic_istream_wchar_isfx +@ cdecl -arch=win64 ?isfx@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAXXZ(ptr) basic_istream_wchar_isfx @ thiscall -arch=win32 ?iword@ios_base@std@@QAEAAJH@Z(ptr long) ios_base_iword @ cdecl -arch=win64 ?iword@ios_base@std@@QEAAAEAJH@Z(ptr long) ios_base_iword @ cdecl ?ldexp@?$_Ctraits@M@std@@SAMMH@Z(float long) std_Ctraits_float_ldexp @@ -4821,8 +4821,8 @@ @ cdecl -arch=win64 ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ(ptr) basic_istream_char_peek @ stub -arch=win32 ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ @ stub -arch=win64 ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAGXZ -@ stub -arch=win32 ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ -@ stub -arch=win64 ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ +@ thiscall -arch=win32 ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEGXZ(ptr) basic_istream_wchar_peek +@ cdecl -arch=win64 ?peek@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAGXZ(ptr) basic_istream_wchar_peek @ stub -arch=win32 ?pos_format@?$_Mpunct@D@std@@QBE?AUpattern@money_base@2@XZ @ stub -arch=win64 ?pos_format@?$_Mpunct@D@std@@QEBA?AUpattern@money_base@2@XZ @ stub -arch=win32 ?pos_format@?$_Mpunct@G@std@@QBE?AUpattern@money_base@2@XZ @@ -4978,8 +4978,8 @@ @ cdecl -arch=win64 ?putback@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z(ptr long) basic_istream_char_putback @ stub -arch=win32 ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@G@Z @ stub -arch=win64 ?putback@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@G@Z -@ stub -arch=win32 ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z -@ stub -arch=win64 ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z +@ thiscall -arch=win32 ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@_W@Z(ptr long) basic_istream_wchar_putback +@ cdecl -arch=win64 ?putback@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_W@Z(ptr long) basic_istream_wchar_putback @ thiscall -arch=win32 ?pword@ios_base@std@@QAEAAPAXH@Z(ptr long) ios_base_pword @ cdecl -arch=win64 ?pword@ios_base@std@@QEAAAEAPEAXH@Z(ptr long) ios_base_pword @ cdecl ?quiet_NaN@?$numeric_limits@C@std@@SACXZ() std_numeric_limits_signed_char_quiet_NaN @@ -5067,14 +5067,14 @@ @ cdecl -arch=win64 ?read@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@PEAD_J@Z(ptr ptr long) basic_istream_char_read @ stub -arch=win32 ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@PAGH@Z @ stub -arch=win64 ?read@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@PEAG_J@Z -@ stub -arch=win32 ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z -@ stub -arch=win64 ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z +@ thiscall -arch=win32 ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@PA_WH@Z(ptr ptr long) basic_istream_wchar_read +@ cdecl -arch=win64 ?read@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@PEA_W_J@Z(ptr ptr long) basic_istream_wchar_read @ thiscall -arch=win32 ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHPADH@Z(ptr ptr long) basic_istream_char_readsome @ cdecl -arch=win64 ?readsome@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z(ptr ptr long) basic_istream_char_readsome @ stub -arch=win32 ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHPAGH@Z @ stub -arch=win64 ?readsome@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA_JPEAG_J@Z -@ stub -arch=win32 ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z -@ stub -arch=win64 ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z +@ thiscall -arch=win32 ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHPA_WH@Z(ptr ptr long) basic_istream_wchar_readsome +@ cdecl -arch=win64 ?readsome@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA_JPEA_W_J@Z(ptr ptr long) basic_istream_wchar_readsome @ stub -arch=win32 ?real@?$_Complex_base@MU_C_float_complex@@@std@@QAEMABM@Z @ stub -arch=win64 ?real@?$_Complex_base@MU_C_float_complex@@@std@@QEAAMAEBM@Z @ stub -arch=win32 ?real@?$_Complex_base@MU_C_float_complex@@@std@@QBEMXZ @@ -5254,10 +5254,10 @@ @ stub -arch=win64 ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z @ stub -arch=win32 ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z @ stub -arch=win64 ?seekg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@_JH@Z -@ stub -arch=win32 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z -@ stub -arch=win64 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z -@ stub -arch=win32 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z -@ stub -arch=win64 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z +@ thiscall -arch=win32 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@JH@Z(ptr long long) basic_istream_wchar_seekg +@ cdecl -arch=win64 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z(ptr ptr) basic_istream_wchar_seekg_fpos +@ thiscall -arch=win32 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z(ptr long long int64 long long) basic_istream_wchar_seekg_fpos +@ cdecl -arch=win64 ?seekg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@_JH@Z(ptr long long) basic_istream_wchar_seekg @ thiscall -arch=win32 ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z(ptr ptr long long long) basic_filebuf_char_seekoff @ cdecl -arch=win64 ?seekoff@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z(ptr ptr long long long) basic_filebuf_char_seekoff @ stub -arch=win32 ?seekoff@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z @@ -5524,8 +5524,8 @@ @ cdecl -arch=win64 ?sync@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ(ptr) basic_istream_char_sync @ stub -arch=win32 ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEHXZ @ stub -arch=win64 ?sync@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAHXZ -@ stub -arch=win32 ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ -@ stub -arch=win64 ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ +@ thiscall -arch=win32 ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEHXZ(ptr) basic_istream_wchar_sync +@ cdecl -arch=win64 ?sync@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAHXZ(ptr) basic_istream_wchar_sync @ thiscall -arch=win32 ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ(ptr) basic_streambuf_char_sync @ cdecl -arch=win64 ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ(ptr) basic_streambuf_char_sync @ thiscall -arch=win32 ?sync@?$basic_streambuf@GU?$char_traits@G@std@@@std@@MAEHXZ(ptr) basic_streambuf_wchar_sync @@ -5544,8 +5544,8 @@ @ cdecl -arch=win64 ?tellg@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ(ptr ptr) basic_istream_char_tellg @ stub -arch=win32 ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ @ stub -arch=win64 ?tellg@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAA?AV?$fpos@H@2@XZ -@ stub -arch=win32 ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ -@ stub -arch=win64 ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ +@ thiscall -arch=win32 ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAE?AV?$fpos@H@2@XZ(ptr ptr) basic_istream_wchar_tellg +@ cdecl -arch=win64 ?tellg@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAA?AV?$fpos@H@2@XZ(ptr ptr) basic_istream_wchar_tellg @ thiscall -arch=win32 ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@XZ(ptr ptr) basic_ostream_char_tellp @ cdecl -arch=win64 ?tellp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@XZ(ptr ptr) basic_ostream_char_tellp @ stub -arch=win32 ?tellp@?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE?AV?$fpos@H@2@XZ @@ -5665,8 +5665,8 @@ @ cdecl -arch=win64 ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ(ptr) basic_istream_char_unget @ stub -arch=win32 ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ @ stub -arch=win64 ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QEAAAEAV12@XZ -@ stub -arch=win32 ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ -@ stub -arch=win64 ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ +@ thiscall -arch=win32 ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QAEAAV12@XZ(ptr) basic_istream_wchar_unget +@ cdecl -arch=win64 ?unget@?$basic_istream@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@XZ(ptr) basic_istream_wchar_unget @ thiscall -arch=win32 ?unsetf@ios_base@std@@QAEXH@Z(ptr long) ios_base_unsetf @ cdecl -arch=win64 ?unsetf@ios_base@std@@QEAAXH@Z(ptr long) ios_base_unsetf @ thiscall -arch=win32 ?unshift@?$codecvt@DDH@std@@QBEHAAHPAD1AAPAD@Z(ptr ptr ptr ptr ptr) codecvt_char_unshift