msvcp90: Added partial strstreambuf implementation.

This commit is contained in:
Piotr Caban 2012-08-15 10:26:58 +02:00 committed by Alexandre Julliard
parent 1202e8bf87
commit f143f3e6bc
2 changed files with 398 additions and 41 deletions

View file

@ -254,6 +254,23 @@ typedef struct {
*/
} basic_stringstream_wchar;
typedef enum {
STRSTATE_Allocated = 1,
STRSTATE_Constant = 2,
STRSTATE_Dynamic = 4,
STRSTATE_Frozen = 8
} strstreambuf__Strstate;
typedef struct {
basic_streambuf_char base;
streamsize minsize;
char *endsave;
char *seekhigh;
int strmode;
void* (__cdecl *palloc)(MSVCP_size_t);
void (__cdecl *pfree)(void*);
} strstreambuf;
extern const vtable_ptr MSVCP_iosb_vtable;
/* ??_7ios_base@std@@6B@ */
@ -442,6 +459,9 @@ const int basic_stringstream_short_vbtable2[] = {0, sizeof(basic_stringstream_wc
/* ??_7?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@6B@ */
extern const vtable_ptr MSVCP_basic_stringstream_short_vtable;
/* ??_7strstreambuf@std@@6B */
extern const vtable_ptr MSVCP_strstreambuf_vtable;
DEFINE_RTTI_DATA0(iosb, 0, ".?AV?$_Iosb@H@std@@");
DEFINE_RTTI_DATA1(ios_base, 0, &iosb_rtti_base_descriptor, ".?AV?$_Iosb@H@std@@");
DEFINE_RTTI_DATA2(basic_ios_char, 0, &ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
@ -588,6 +608,8 @@ DEFINE_RTTI_DATA8(basic_stringstream_short, sizeof(basic_stringstream_wchar),
&basic_ostream_short_rtti_base_descriptor, &basic_ios_short_rtti_base_descriptor,
&ios_base_rtti_base_descriptor, &iosb_rtti_base_descriptor,
".?AV?$basic_stringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@");
DEFINE_RTTI_DATA1(strstreambuf, sizeof(strstreambuf),
&basic_streambuf_char_rtti_base_descriptor, ".?AVstrstreambuf@std@@");
#ifndef __GNUC__
void __asm_dummy_vtables(void) {
@ -750,6 +772,20 @@ void __asm_dummy_vtables(void) {
__ASM_VTABLE(basic_stringstream_char, "");
__ASM_VTABLE(basic_stringstream_wchar, "");
__ASM_VTABLE(basic_stringstream_short, "");
__ASM_VTABLE(strstreambuf,
VTABLE_ADD_FUNC(strstreambuf_overflow)
VTABLE_ADD_FUNC(strstreambuf_pbackfail)
VTABLE_ADD_FUNC(basic_streambuf_char_showmanyc)
VTABLE_ADD_FUNC(strstreambuf_underflow)
VTABLE_ADD_FUNC(basic_streambuf_char_uflow)
VTABLE_ADD_FUNC(basic_streambuf_char_xsgetn)
VTABLE_ADD_FUNC(basic_streambuf_char__Xsgetn_s)
VTABLE_ADD_FUNC(basic_streambuf_char_xsputn)
VTABLE_ADD_FUNC(strstreambuf_seekoff)
VTABLE_ADD_FUNC(strstreambuf_seekpos)
VTABLE_ADD_FUNC(basic_streambuf_char_setbuf)
VTABLE_ADD_FUNC(basic_streambuf_char_sync)
VTABLE_ADD_FUNC(basic_streambuf_char_imbue));
#ifndef __GNUC__
}
#endif
@ -12402,6 +12438,327 @@ basic_string_wchar* __thiscall basic_stringstream_wchar_str_get(const basic_stri
return basic_stringbuf_wchar_str_get(&this->strbuf, ret);
}
/* ?_Init@strstreambuf@std@@IAEXHPAD0H@Z */
/* ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf__Init, 20)
void __thiscall strstreambuf__Init(strstreambuf *this, streamsize len, char *g, char *p, int mode)
{
TRACE("(%p %ld %p %p %d)\n", this, len, g, p, mode);
this->minsize = 32;
this->endsave = NULL;
this->strmode = mode;
this->palloc = NULL;
this->pfree = NULL;
if(!g) {
this->strmode |= STRSTATE_Dynamic;
if(len > this->minsize)
this->minsize = len;
this->seekhigh = NULL;
return;
}
if(len < 0)
len = INT_MAX;
else if(!len)
len = strlen(g);
this->seekhigh = g+len;
basic_streambuf_char_setg(&this->base, g, g, p ? p : this->seekhigh);
if(p)
basic_streambuf_char_setp(&this->base, p, this->seekhigh);
}
/* ??0strstreambuf@std@@QAE@PACH0@Z */
/* ??0strstreambuf@std@@QEAA@PEAC_J0@Z */
/* ??0strstreambuf@std@@QAE@PADH0@Z */
/* ??0strstreambuf@std@@QEAA@PEAD_J0@Z */
/* ??0strstreambuf@std@@QAE@PAEH0@Z */
/* ??0strstreambuf@std@@QEAA@PEAE_J0@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get_put, 16)
strstreambuf* __thiscall strstreambuf_ctor_get_put(strstreambuf *this, char *g, streamsize len, char *p)
{
TRACE("(%p %p %ld %p)\n", this, g, len, p);
basic_streambuf_char_ctor(&this->base);
this->base.vtable = &MSVCP_strstreambuf_vtable;
strstreambuf__Init(this, len, g, p, 0);
return this;
}
/* ??0strstreambuf@std@@QAE@H@Z */
/* ??0strstreambuf@std@@QEAA@_J@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_len, 8)
strstreambuf* __thiscall strstreambuf_ctor_len(strstreambuf *this, streamsize len)
{
return strstreambuf_ctor_get_put(this, NULL, len, NULL);
}
/* ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z */
/* ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_alloc, 12)
strstreambuf* __thiscall strstreambuf_ctor_alloc(strstreambuf *this, void* (__cdecl *palloc)(MSVCP_size_t), void (__cdecl *pfree)(void*))
{
TRACE("(%p %p %p)\n", this, palloc, pfree);
strstreambuf_ctor_get_put(this, NULL, 0, NULL);
this->palloc = palloc;
this->pfree = pfree;
return this;
}
/* ??0strstreambuf@std@@QAE@PBCH@Z */
/* ??0strstreambuf@std@@QEAA@PEBC_J@Z */
/* ??0strstreambuf@std@@QAE@PBDH@Z */
/* ??0strstreambuf@std@@QEAA@PEBD_J@Z */
/* ??0strstreambuf@std@@QAE@PBEH@Z */
/* ??0strstreambuf@std@@QEAA@PEBE_J@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_ctor_get, 12)
strstreambuf* __thiscall strstreambuf_ctor_get(strstreambuf *this, const char *g, streamsize len)
{
TRACE("(%p %p %ld)\n", this, g, len);
strstreambuf_ctor_get_put(this, NULL, 0, NULL);
this->strmode |= STRSTATE_Constant;
return this;
}
/* ??_Fstrstreambuf@std@@QAEXXZ */
/* ??_Fstrstreambuf@std@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(strstreambuf_ctor, 4)
strstreambuf* __thiscall strstreambuf_ctor(strstreambuf *this)
{
return strstreambuf_ctor_get_put(this, NULL, 0, NULL);
}
/* ?_Tidy@strstreambuf@std@@IAEXXZ */
/* ?_Tidy@strstreambuf@std@@IEAAXXZ */
DEFINE_THISCALL_WRAPPER(strstreambuf__Tidy, 4)
void __thiscall strstreambuf__Tidy(strstreambuf *this)
{
TRACE("(%p)\n", this);
if((this->strmode & STRSTATE_Allocated) && !(this->strmode & STRSTATE_Frozen)) {
if(this->pfree)
this->pfree(basic_streambuf_char_eback(&this->base));
else
MSVCRT_operator_delete(basic_streambuf_char_eback(&this->base));
}
this->endsave = NULL;
this->seekhigh = NULL;
this->strmode &= ~(STRSTATE_Allocated | STRSTATE_Frozen);
basic_streambuf_char_setg(&this->base, NULL, NULL, NULL);
basic_streambuf_char_setp(&this->base, NULL, NULL);
}
/* ??1strstreambuf@std@@UAE@XZ */
/* ??1strstreambuf@std@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER(strstreambuf_dtor, 4)
void __thiscall strstreambuf_dtor(strstreambuf *this)
{
TRACE("(%p)\n", this);
strstreambuf__Tidy(this);
basic_streambuf_char_dtor(&this->base);
}
DEFINE_THISCALL_WRAPPER(MSVCP_strstreambuf_vector_dtor, 8)
strstreambuf* __thiscall MSVCP_strstreambuf_vector_dtor(strstreambuf *this, unsigned int flags)
{
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--)
strstreambuf_dtor(this+i);
MSVCRT_operator_delete(ptr);
} else {
strstreambuf_dtor(this);
if(flags & 1)
MSVCRT_operator_delete(this);
}
return this;
}
/* ?freeze@strstreambuf@std@@QAEX_N@Z */
/* ?freeze@strstreambuf@std@@QEAAX_N@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_freeze, 8)
void __thiscall strstreambuf_freeze(strstreambuf *this, MSVCP_bool freeze)
{
TRACE("(%p %d)\n", this, freeze);
if(!freeze == !(this->strmode *STRSTATE_Frozen))
return;
if(freeze) {
this->strmode |= STRSTATE_Frozen;
this->endsave = basic_streambuf_char_epptr(&this->base);
basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
basic_streambuf_char_pptr(&this->base), basic_streambuf_char_eback(&this->base));
}else {
this->strmode &= ~STRSTATE_Frozen;
basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base),
basic_streambuf_char_pptr(&this->base), this->endsave);
}
}
/* ?str@strstreambuf@std@@QAEPADXZ */
/* ?str@strstreambuf@std@@QEAAPEADXZ */
DEFINE_THISCALL_WRAPPER(strstreambuf_str, 4)
char* __thiscall strstreambuf_str(strstreambuf *this)
{
TRACE("(%p)\n", this);
strstreambuf_freeze(this, TRUE);
return basic_streambuf_char_gptr(&this->base);
}
/* ?pcount@strstreambuf@std@@QBEHXZ */
/* ?pcount@strstreambuf@std@@QEBA_JXZ */
DEFINE_THISCALL_WRAPPER(strstreambuf_pcount, 4)
streamsize __thiscall strstreambuf_pcount(const strstreambuf *this)
{
char *ppos = basic_streambuf_char_pptr(&this->base);
TRACE("(%p)\n", this);
return ppos ? ppos-basic_streambuf_char_pbase(&this->base) : 0;
}
/* ?overflow@strstreambuf@std@@MAEHH@Z */
/* ?overflow@strstreambuf@std@@MEAAHH@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_overflow, 8)
int __thiscall strstreambuf_overflow(strstreambuf *this, int c)
{
MSVCP_size_t old_size, size;
char *ptr, *buf;
TRACE("(%p %d)\n", this, c);
if(c == EOF)
return !EOF;
if(this->strmode & STRSTATE_Frozen)
return EOF;
ptr = basic_streambuf_char_pptr(&this->base);
if(ptr && ptr<basic_streambuf_char_epptr(&this->base))
return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
if(!(this->strmode & STRSTATE_Dynamic) || (this->strmode & STRSTATE_Constant))
return EOF;
ptr = basic_streambuf_char_eback(&this->base);
old_size = ptr ? basic_streambuf_char_epptr(&this->base) - ptr : 0;
size = old_size + old_size/2;
if(size < this->minsize)
size = this->minsize;
if(this->palloc)
buf = this->palloc(size);
else
buf = MSVCRT_operator_new(size);
if(!buf)
return EOF;
memcpy(buf, ptr, old_size);
if(this->strmode & STRSTATE_Allocated) {
if(this->pfree)
this->pfree(ptr);
else
MSVCRT_operator_delete(ptr);
}
this->strmode |= STRSTATE_Allocated;
if(!old_size) {
this->seekhigh = buf;
basic_streambuf_char_setp(&this->base, buf, buf+size);
basic_streambuf_char_setg(&this->base, buf, buf, buf);
}else {
this->seekhigh = this->seekhigh-ptr+buf;
basic_streambuf_char_setp_next(&this->base, basic_streambuf_char_pbase(&this->base)-ptr+buf,
basic_streambuf_char_pptr(&this->base)-ptr+buf, buf+size);
basic_streambuf_char_setg(&this->base, buf, basic_streambuf_char_gptr(&this->base)-ptr+buf,
basic_streambuf_char_pptr(&this->base));
}
return (unsigned char)(*basic_streambuf_char__Pninc(&this->base) = c);
}
/* ?pbackfail@strstreambuf@std@@MAEHH@Z */
/* ?pbackfail@strstreambuf@std@@MEAAHH@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_pbackfail, 8)
int __thiscall strstreambuf_pbackfail(strstreambuf *this, int c)
{
char *ptr = basic_streambuf_char_gptr(&this->base);
TRACE("(%p %d)\n", this, c);
if(ptr<=basic_streambuf_char_eback(&this->base)
|| ((this->strmode & STRSTATE_Constant) && c!=ptr[-1]))
return EOF;
basic_streambuf_char_gbump(&this->base, -1);
if(c == EOF)
return !EOF;
if(this->strmode & STRSTATE_Constant)
return (unsigned char)c;
return (unsigned char)(ptr[0] = c);
}
/* ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z */
/* ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_seekoff, 20)
fpos_int* __thiscall strstreambuf_seekoff(strstreambuf *this, fpos_int *ret, streamoff off, int way, int mode)
{
FIXME("(%p %p %ld %d %d) stub\n", this, ret, off, way, mode);
return NULL;
}
/* ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z */
/* ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z */
DEFINE_THISCALL_WRAPPER(strstreambuf_seekpos, 36)
fpos_int* __thiscall strstreambuf_seekpos(strstreambuf *this, fpos_int *ret, fpos_int pos, int mode)
{
FIXME("(%p %p %s %d) stub\n", this, ret, debugstr_fpos_int(&pos), mode);
return NULL;
}
/* ?underflow@strstreambuf@std@@MAEHXZ */
/* ?underflow@strstreambuf@std@@MEAAHXZ */
DEFINE_THISCALL_WRAPPER(strstreambuf_underflow, 4)
int __thiscall strstreambuf_underflow(strstreambuf *this)
{
char *gptr = basic_streambuf_char_gptr(&this->base);
char *pptr;
TRACE("(%p)\n", this);
if(!gptr)
return EOF;
if(gptr < basic_streambuf_char_egptr(&this->base))
return (unsigned char)(*gptr);
pptr = basic_streambuf_char_gptr(&this->base);
if(pptr > this->seekhigh)
this->seekhigh = pptr;
if(this->seekhigh <= gptr)
return EOF;
basic_streambuf_char_setg(&this->base, basic_streambuf_char_eback(&this->base),
gptr, this->seekhigh);
return (unsigned char)(*gptr);
}
static void __cdecl setprecision_func(ios_base *base, streamsize prec)
{
ios_base_precision_set(base, prec);

View file

@ -1122,22 +1122,22 @@
@ stub -arch=win64 ??0messages_base@std@@QEAA@_K@Z
@ stub -arch=win32 ??0money_base@std@@QAE@I@Z
@ stub -arch=win64 ??0money_base@std@@QEAA@_K@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@H@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEAC_J0@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PACH0@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEAD_J0@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PADH0@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEAE_J0@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PAEH0@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEBC_J@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PBCH@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEBD_J@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PBDH@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@PEBE_J@Z
@ stub -arch=win32 ??0strstreambuf@std@@QAE@PBEH@Z
@ stub -arch=win64 ??0strstreambuf@std@@QEAA@_J@Z
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@H@Z(ptr long) strstreambuf_ctor_len
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@P6APEAX_K@ZP6AXPEAX@Z@Z(ptr ptr ptr) strstreambuf_ctor_alloc
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@P6APAXI@ZP6AXPAX@Z@Z(ptr ptr ptr) strstreambuf_ctor_alloc
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEAC_J0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PACH0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEAD_J0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PADH0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEAE_J0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PAEH0@Z(ptr ptr long ptr) strstreambuf_ctor_get_put
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEBC_J@Z(ptr ptr long) strstreambuf_ctor_get
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PBCH@Z(ptr ptr long) strstreambuf_ctor_get
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEBD_J@Z(ptr str long) strstreambuf_ctor_get
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PBDH@Z(ptr str long) strstreambuf_ctor_get
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@PEBE_J@Z(ptr ptr long) strstreambuf_ctor_get
@ thiscall -arch=win32 ??0strstreambuf@std@@QAE@PBEH@Z(ptr ptr long) strstreambuf_ctor_get
@ cdecl -arch=win64 ??0strstreambuf@std@@QEAA@_J@Z(ptr long) strstreambuf_ctor_len
@ stub -arch=win32 ??0time_base@std@@QAE@I@Z
@ stub -arch=win64 ??0time_base@std@@QEAA@_K@Z
@ stub -arch=win32 ??1?$_Mpunct@D@std@@MAE@XZ
@ -1340,8 +1340,8 @@
@ stub -arch=win64 ??1messages_base@std@@UEAA@XZ
@ stub -arch=win32 ??1money_base@std@@UAE@XZ
@ stub -arch=win64 ??1money_base@std@@UEAA@XZ
@ stub -arch=win32 ??1strstreambuf@std@@UAE@XZ
@ stub -arch=win64 ??1strstreambuf@std@@UEAA@XZ
@ thiscall -arch=win32 ??1strstreambuf@std@@UAE@XZ(ptr) strstreambuf_dtor
@ cdecl -arch=win64 ??1strstreambuf@std@@UEAA@XZ(ptr) strstreambuf_dtor
@ stub -arch=win32 ??1time_base@std@@UAE@XZ
@ stub -arch=win64 ??1time_base@std@@UEAA@XZ
@ stub -arch=win32 ??4?$_Allocator_base@D@std@@QAEAAU01@ABU01@@Z
@ -1863,7 +1863,7 @@
@ extern ??_7ios_base@std@@6B@ MSVCP_ios_base_vtable
# extern ??_7messages_base@std@@6B@
# extern ??_7money_base@std@@6B@
# extern ??_7strstreambuf@std@@6B@
@ extern ??_7strstreambuf@std@@6B@ MSVCP_strstreambuf_vtable
# extern ??_7time_base@std@@6B@
@ extern ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_istream@DU?$char_traits@D@std@@@1@@ basic_fstream_char_vbtable1
@ extern ??_8?$basic_fstream@DU?$char_traits@D@std@@@std@@7B?$basic_ostream@DU?$char_traits@D@std@@@1@@ basic_fstream_char_vbtable2
@ -2093,8 +2093,8 @@
@ stub -arch=win64 ??_Fmessages_base@std@@QEAAXXZ
@ stub -arch=win32 ??_Fmoney_base@std@@QAEXXZ
@ stub -arch=win64 ??_Fmoney_base@std@@QEAAXXZ
@ stub -arch=win32 ??_Fstrstreambuf@std@@QAEXXZ
@ stub -arch=win64 ??_Fstrstreambuf@std@@QEAAXXZ
@ thiscall -arch=win32 ??_Fstrstreambuf@std@@QAEXXZ(ptr) strstreambuf_ctor
@ cdecl -arch=win64 ??_Fstrstreambuf@std@@QEAAXXZ(ptr) strstreambuf_ctor
@ stub -arch=win32 ??_Ftime_base@std@@QAEXXZ
@ stub -arch=win64 ??_Ftime_base@std@@QEAAXXZ
@ thiscall -arch=win32 ?_Addcats@_Locinfo@std@@QAEAAV12@HPBD@Z(ptr long str) _Locinfo__Addcats
@ -2528,8 +2528,8 @@
@ cdecl -arch=win64 ?_Init@ios_base@std@@IEAAXXZ(ptr) ios_base_Init
@ cdecl -arch=win32 ?_Init@locale@std@@CAPAV_Locimp@12@XZ() locale__Init
@ cdecl -arch=win64 ?_Init@locale@std@@CAPEAV_Locimp@12@XZ() locale__Init
@ stub -arch=win32 ?_Init@strstreambuf@std@@IAEXHPAD0H@Z
@ stub -arch=win64 ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z
@ thiscall -arch=win32 ?_Init@strstreambuf@std@@IAEXHPAD0H@Z(ptr long ptr ptr long) strstreambuf__Init
@ cdecl -arch=win64 ?_Init@strstreambuf@std@@IEAAX_JPEAD1H@Z(ptr long ptr ptr long) strstreambuf__Init
# extern ?_Init_cnt@Init@ios_base@std@@0HA
# extern ?_Init_cnt@_UShinit@std@@0HA
# extern ?_Init_cnt@_Winit@std@@0HA
@ -2836,8 +2836,8 @@
@ stub -arch=win64 ?_Tidy@?$time_get@_WV?$istreambuf_iterator@_WU?$char_traits@_W@std@@@std@@@std@@AEAAXXZ
@ cdecl -arch=win32 ?_Tidy@ios_base@std@@AAAXXZ(ptr) ios_base_Tidy
@ cdecl -arch=win64 ?_Tidy@ios_base@std@@AEAAXXZ(ptr) ios_base_Tidy
@ stub -arch=win32 ?_Tidy@strstreambuf@std@@IAEXXZ
@ stub -arch=win64 ?_Tidy@strstreambuf@std@@IEAAXXZ
@ thiscall -arch=win32 ?_Tidy@strstreambuf@std@@IAEXXZ(ptr) strstreambuf__Tidy
@ cdecl -arch=win64 ?_Tidy@strstreambuf@std@@IEAAXXZ(ptr) strstreambuf__Tidy
@ thiscall -arch=win32 ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ(ptr) basic_streambuf_char__Unlock
@ cdecl -arch=win64 ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ(ptr) basic_streambuf_char__Unlock
@ thiscall -arch=win32 ?_Unlock@?$basic_streambuf@GU?$char_traits@G@std@@@std@@QAEXXZ(ptr) basic_streambuf_wchar__Unlock
@ -3965,8 +3965,8 @@
@ stub -arch=win64 ?frac_digits@?$_Mpunct@G@std@@QEBAHXZ
@ stub -arch=win32 ?frac_digits@?$_Mpunct@_W@std@@QBEHXZ
@ stub -arch=win64 ?frac_digits@?$_Mpunct@_W@std@@QEBAHXZ
@ stub -arch=win32 ?freeze@strstreambuf@std@@QAEX_N@Z
@ stub -arch=win64 ?freeze@strstreambuf@std@@QEAAX_N@Z
@ thiscall -arch=win32 ?freeze@strstreambuf@std@@QAEX_N@Z(ptr long) strstreambuf_freeze
@ cdecl -arch=win64 ?freeze@strstreambuf@std@@QEAAX_N@Z(ptr long) strstreambuf_freeze
@ thiscall -arch=win32 ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z(ptr long) basic_streambuf_char_gbump
@ cdecl -arch=win64 ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z(ptr long) basic_streambuf_char_gbump
@ thiscall -arch=win32 ?gbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IAEXH@Z(ptr long) basic_streambuf_wchar_gbump
@ -4781,8 +4781,8 @@
@ cdecl -arch=win64 ?overflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z(ptr long) basic_stringbuf_wchar_overflow
@ thiscall -arch=win32 ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z(ptr long) basic_stringbuf_wchar_overflow
@ cdecl -arch=win64 ?overflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z(ptr long) basic_stringbuf_wchar_overflow
@ stub -arch=win32 ?overflow@strstreambuf@std@@MAEHH@Z
@ stub -arch=win64 ?overflow@strstreambuf@std@@MEAAHH@Z
@ thiscall -arch=win32 ?overflow@strstreambuf@std@@MAEHH@Z(ptr long) strstreambuf_overflow
@ cdecl -arch=win64 ?overflow@strstreambuf@std@@MEAAHH@Z(ptr long) strstreambuf_overflow
@ thiscall -arch=win32 ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MAEHH@Z(ptr long) basic_filebuf_char_pbackfail
@ cdecl -arch=win64 ?pbackfail@?$basic_filebuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z(ptr long) basic_filebuf_char_pbackfail
@ thiscall -arch=win32 ?pbackfail@?$basic_filebuf@GU?$char_traits@G@std@@@std@@MAEGG@Z(ptr long) basic_filebuf_wchar_pbackfail
@ -4801,8 +4801,8 @@
@ cdecl -arch=win64 ?pbackfail@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGG@Z(ptr long) basic_stringbuf_wchar_pbackfail
@ thiscall -arch=win32 ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGG@Z(ptr long) basic_stringbuf_wchar_pbackfail
@ cdecl -arch=win64 ?pbackfail@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGG@Z(ptr long) basic_stringbuf_wchar_pbackfail
@ stub -arch=win32 ?pbackfail@strstreambuf@std@@MAEHH@Z
@ stub -arch=win64 ?pbackfail@strstreambuf@std@@MEAAHH@Z
@ thiscall -arch=win32 ?pbackfail@strstreambuf@std@@MAEHH@Z(ptr long) strstreambuf_pbackfail
@ cdecl -arch=win64 ?pbackfail@strstreambuf@std@@MEAAHH@Z(ptr long) strstreambuf_pbackfail
@ thiscall -arch=win32 ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ(ptr) basic_streambuf_char_pbase
@ cdecl -arch=win64 ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ(ptr) basic_streambuf_char_pbase
@ thiscall -arch=win32 ?pbase@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IBEPAGXZ(ptr) basic_streambuf_wchar_pbase
@ -4815,8 +4815,8 @@
@ cdecl -arch=win64 ?pbump@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXH@Z(ptr long) basic_streambuf_wchar_pbump
@ thiscall -arch=win32 ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IAEXH@Z(ptr long) basic_streambuf_wchar_pbump
@ cdecl -arch=win64 ?pbump@?$basic_streambuf@_WU?$char_traits@_W@std@@@std@@IEAAXH@Z(ptr long) basic_streambuf_wchar_pbump
@ stub -arch=win32 ?pcount@strstreambuf@std@@QBEHXZ
@ stub -arch=win64 ?pcount@strstreambuf@std@@QEBA_JXZ
@ thiscall -arch=win32 ?pcount@strstreambuf@std@@QBEHXZ(ptr) strstreambuf_pcount
@ cdecl -arch=win64 ?pcount@strstreambuf@std@@QEBA_JXZ(ptr) strstreambuf_pcount
@ thiscall -arch=win32 ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEHXZ(ptr) basic_istream_char_peek
@ cdecl -arch=win64 ?peek@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAHXZ(ptr) basic_istream_char_peek
@ thiscall -arch=win32 ?peek@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEGXZ(ptr) basic_istream_wchar_peek
@ -5276,8 +5276,8 @@
@ cdecl -arch=win64 ?seekoff@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z(ptr ptr long long long) basic_stringbuf_wchar_seekoff
@ thiscall -arch=win32 ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@JHH@Z(ptr ptr long long long) basic_stringbuf_wchar_seekoff
@ cdecl -arch=win64 ?seekoff@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@_JHH@Z(ptr ptr long long long) basic_stringbuf_wchar_seekoff
@ stub -arch=win32 ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z
@ stub -arch=win64 ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z
@ thiscall -arch=win32 ?seekoff@strstreambuf@std@@MAE?AV?$fpos@H@2@JHH@Z(ptr ptr long long long) strstreambuf_seekoff
@ cdecl -arch=win64 ?seekoff@strstreambuf@std@@MEAA?AV?$fpos@H@2@_JHH@Z(ptr ptr long long long) strstreambuf_seekoff
@ thiscall -arch=win32 ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@JH@Z(ptr long long) basic_ostream_char_seekp
@ cdecl -arch=win64 ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@V?$fpos@H@2@@Z(ptr ptr) basic_ostream_char_seekp_fpos
@ thiscall -arch=win32 ?seekp@?$basic_ostream@DU?$char_traits@D@std@@@std@@QAEAAV12@V?$fpos@H@2@@Z(ptr long long int64 long long) basic_ostream_char_seekp_fpos
@ -5308,8 +5308,8 @@
@ cdecl -arch=win64 ?seekpos@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z(ptr ptr ptr long) basic_stringbuf_wchar_seekpos
@ thiscall -arch=win32 ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAE?AV?$fpos@H@2@V32@H@Z(ptr ptr long long int64 long long long) basic_stringbuf_wchar_seekpos
@ cdecl -arch=win64 ?seekpos@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAA?AV?$fpos@H@2@V32@H@Z(ptr ptr ptr long) basic_stringbuf_wchar_seekpos
@ stub -arch=win32 ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z
@ stub -arch=win64 ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z
@ thiscall -arch=win32 ?seekpos@strstreambuf@std@@MAE?AV?$fpos@H@2@V32@H@Z(ptr ptr long long int64 long long long) strstreambuf_seekpos
@ cdecl -arch=win64 ?seekpos@strstreambuf@std@@MEAA?AV?$fpos@H@2@V32@H@Z(ptr ptr ptr long) strstreambuf_seekpos
@ cdecl ?set_new_handler@std@@YAP6AXXZH@Z(long) set_new_handler_reset
@ cdecl ?set_new_handler@std@@YAP6AXXZP6AXXZ@Z(ptr) set_new_handler
@ stub ?setbase@std@@YA?AU?$_Smanip@H@1@H@Z
@ -5494,8 +5494,8 @@
@ cdecl -arch=win64 ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEAAXAEBV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@@Z(ptr ptr) basic_stringstream_wchar_str_set
@ thiscall -arch=win32 ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ(ptr ptr) basic_stringstream_wchar_str_get
@ cdecl -arch=win64 ?str@?$basic_stringstream@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QEBA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@2@XZ(ptr ptr) basic_stringstream_wchar_str_get
@ stub -arch=win32 ?str@strstreambuf@std@@QAEPADXZ
@ stub -arch=win64 ?str@strstreambuf@std@@QEAAPEADXZ
@ thiscall -arch=win32 ?str@strstreambuf@std@@QAEPADXZ(ptr) strstreambuf_str
@ cdecl -arch=win64 ?str@strstreambuf@std@@QEAAPEADXZ(ptr) strstreambuf_str
@ thiscall -arch=win32 ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBE?AV12@II@Z(ptr ptr long long) MSVCP_basic_string_char_substr
@ cdecl -arch=win64 ?substr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEBA?AV12@_K0@Z(ptr ptr long long) MSVCP_basic_string_char_substr
@ thiscall -arch=win32 ?substr@?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QBE?AV12@II@Z(ptr ptr long long) MSVCP_basic_string_wchar_substr
@ -5659,8 +5659,8 @@
@ cdecl -arch=win64 ?underflow@?$basic_stringbuf@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@MEAAGXZ(ptr) basic_stringbuf_wchar_underflow
@ thiscall -arch=win32 ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MAEGXZ(ptr) basic_stringbuf_wchar_underflow
@ cdecl -arch=win64 ?underflow@?$basic_stringbuf@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@MEAAGXZ(ptr) basic_stringbuf_wchar_underflow
@ stub -arch=win32 ?underflow@strstreambuf@std@@MAEHXZ
@ stub -arch=win64 ?underflow@strstreambuf@std@@MEAAHXZ
@ thiscall -arch=win32 ?underflow@strstreambuf@std@@MAEHXZ(ptr) strstreambuf_underflow
@ cdecl -arch=win64 ?underflow@strstreambuf@std@@MEAAHXZ(ptr) strstreambuf_underflow
@ thiscall -arch=win32 ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QAEAAV12@XZ(ptr) basic_istream_char_unget
@ cdecl -arch=win64 ?unget@?$basic_istream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ(ptr) basic_istream_char_unget
@ thiscall -arch=win32 ?unget@?$basic_istream@GU?$char_traits@G@std@@@std@@QAEAAV12@XZ(ptr) basic_istream_wchar_unget