From 143f8e87926d81eb8e6f9d15540c2d1f3182f33f Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Wed, 28 Mar 2012 11:20:56 +0200 Subject: [PATCH] msvcp90: Added basic_streambuf implementation. --- dlls/msvcp90/ios.c | 1858 +++++++++++++++++++++++++----------------------- dlls/msvcp90/msvcp90.h | 1 + 2 files changed, 987 insertions(+), 872 deletions(-) diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c index 25c0e399dff..582ae615ec4 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -126,10 +126,6 @@ typedef struct { locale *loc; } basic_streambuf_char; -void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char*); -void __thiscall basic_streambuf_char_setp(basic_streambuf_char*, char*, char*); -void __thiscall basic_streambuf_char_setg(basic_streambuf_char*, char*, char*, char*); - typedef struct { ios_base child; basic_streambuf_char *strbuf; @@ -203,47 +199,108 @@ void __asm_dummy_vtables(void) { } #endif -/* ??0ios_base@std@@IAE@XZ */ -/* ??0ios_base@std@@IEAA@XZ */ -DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4) -ios_base* __thiscall ios_base_ctor(ios_base *this) +/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */ +/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16) +void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last) { - FIXME("(%p) stub\n", this); + TRACE("(%p %p %p %p)\n", this, first, next, last); - this->vtable = &MSVCP_ios_base_vtable; - return NULL; + this->wbuf = first; + this->wpos = next; + this->wsize = last-next; } -/* ??0ios_base@std@@QAE@ABV01@@Z */ -/* ??0ios_base@std@@QEAA@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8) -ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy) +/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */ +/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12) +void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last) { - FIXME("(%p %p) stub\n", this, copy); - return NULL; + basic_streambuf_char_setp_next(this, first, first, last); } -/* ??1ios_base@std@@UAE@XZ */ -/* ??1ios_base@std@@UEAA@XZ */ -DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4) -void __thiscall ios_base_dtor(ios_base *this) +/* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */ +/* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16) +void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last) { - FIXME("(%p) stub\n", this); + TRACE("(%p %p %p %p)\n", this, first, next, last); + + this->rbuf = first; + this->rpos = next; + this->rsize = last-next; } -DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8) -ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags) +/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */ +/* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4) +void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this) { - TRACE("(%p %x) stub\n", this, flags); + TRACE("(%p)\n", this); + + this->prbuf = &this->rbuf; + this->pwbuf = &this->wbuf; + this->prpos = &this->rpos; + this->pwpos = &this->wpos; + this->prsize = &this->rsize; + this->pwsize = &this->wsize; + + basic_streambuf_char_setp(this, NULL, NULL); + basic_streambuf_char_setg(this, NULL, NULL, NULL); +} + +/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */ +/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8) +basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized) +{ + TRACE("(%p %d)\n", this, uninitialized); + this->vtable = &MSVCP_basic_streambuf_char_vtable; + mutex_ctor(&this->lock); + return this; +} + +/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */ +/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4) +basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this) +{ + TRACE("(%p)\n", this); + + this->vtable = &MSVCP_basic_streambuf_char_vtable; + mutex_ctor(&this->lock); + this->loc = MSVCRT_operator_new(sizeof(locale)); + locale_ctor(this->loc); + basic_streambuf_char__Init_empty(this); + + return this; +} + +/* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */ +/* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4) +void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this) +{ + TRACE("(%p)\n", this); + + mutex_dtor(&this->lock); + locale_dtor(this->loc); + MSVCRT_operator_delete(this->loc); +} + +DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8) +basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *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--) - ios_base_dtor(this+i); + basic_streambuf_char_dtor(this+i); MSVCRT_operator_delete(ptr); } else { - ios_base_dtor(this); + basic_streambuf_char_dtor(this); if(flags & 1) MSVCRT_operator_delete(this); } @@ -251,393 +308,609 @@ ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int fla return this; } -DEFINE_THISCALL_WRAPPER(MSVCP_iosb_vector_dtor, 8) -ios_base* __thiscall MSVCP_iosb_vector_dtor(ios_base *this, unsigned int flags) +/* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ +/* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4) +streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this) { - return MSVCP_ios_base_vector_dtor(this, flags); + TRACE("(%p)\n", this); + return *this->prpos ? *this->prsize : 0; } -/* ??4ios_base@std@@QAEAAV01@ABV01@@Z */ -/* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_assign, 8) -ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right) +/* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ +/* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4) +char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this) { - FIXME("(%p %p) stub\n", this, right); - return NULL; + TRACE("(%p)\n", this); + (*this->prsize)++; + (*this->prpos)--; + return *this->prpos; } -/* ??7ios_base@std@@QBE_NXZ */ -/* ??7ios_base@std@@QEBA_NXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4) -MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this) +/* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ +/* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4) +char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); - return FALSE; + TRACE("(%p)\n", this); + (*this->prsize)--; + return (*this->prpos)++; } -/* ??Bios_base@std@@QBEPAXXZ */ -/* ??Bios_base@std@@QEBAPEAXXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4) -void* __thiscall ios_base_op_fail(const ios_base *this) +/* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ +/* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4) +char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); - return NULL; + TRACE("(%p)\n", this); + (*this->prsize)--; + (*this->prpos)++; + return *this->prpos; } -/* ?_Addstd@ios_base@std@@SAXPAV12@@Z */ -/* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */ -void CDECL ios_base_Addstd(ios_base *add) +/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */ +/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28) +void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc) { - FIXME("(%p) stub\n", add); + TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc); + + this->prbuf = gf; + this->pwbuf = pf; + this->prpos = gn; + this->pwpos = pn; + this->prsize = gc; + this->pwsize = pc; } -/* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */ -/* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8) -void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event) +/* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ +/* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4) +void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this) { - FIXME("(%p %x) stub\n", this, event); + TRACE("(%p)\n", this); + mutex_lock(&this->lock); } -/* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */ -/* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8) -IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index) +/* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ +/* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4) +streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this) { - FIXME("(%p %d) stub\n", this, index); - return NULL; + TRACE("(%p)\n", this); + return *this->pwpos ? *this->pwsize : 0; } -/* ?_Index_func@ios_base@std@@CAAAHXZ */ -/* ?_Index_func@ios_base@std@@CAAEAHXZ */ -int* CDECL ios_base_Index_func(void) +/* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ +/* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4) +char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this) { - TRACE("\n"); - return &ios_base_Index; + TRACE("(%p)\n", this); + (*this->pwsize)--; + return (*this->pwpos)++; } -/* ?_Init@ios_base@std@@IAEXXZ */ -/* ?_Init@ios_base@std@@IEAAXXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_Init, 4) -void __thiscall ios_base_Init(ios_base *this) +/* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ +/* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4) +#define call_basic_streambuf_char_underflow(this) CALL_VTBL_FUNC(this, 16, \ + int, (basic_streambuf_char*), (this)) +int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); + TRACE("(%p)\n", this); + return EOF; } -/* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */ -/* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */ -void CDECL ios_base_Ios_base_dtor(ios_base *obj) +/* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ +/* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4) +#define call_basic_streambuf_char_uflow(this) CALL_VTBL_FUNC(this, 20, \ + int, (basic_streambuf_char*), (this)) +int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this) { - FIXME("(%p) stub\n", obj); + int ret; + + TRACE("(%p)\n", this); + + if(call_basic_streambuf_char_underflow(this)==EOF) + return EOF; + + ret = **this->prpos; + (*this->prsize)--; + (*this->prpos)++; + return ret; } -/* ?_Sync_func@ios_base@std@@CAAA_NXZ */ -/* ?_Sync_func@ios_base@std@@CAAEA_NXZ */ -MSVCP_bool* CDECL ios_base_Sync_func(void) +/* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */ +/* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16) +#define call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count) CALL_VTBL_FUNC(this, 28, \ + streamsize, (basic_streambuf_char*, char*, MSVCP_size_t, streamsize), (this, ptr, size, count)) +streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count) { - TRACE("\n"); - return &ios_base_Sync; + streamsize copied, chunk; + + TRACE("(%p %p %lu %lu)\n", this, ptr, size, count); + + for(copied=0; copied count-copied) + chunk = count-copied; + + if(chunk) { + memcpy_s(ptr+copied, size, *this->prpos, chunk); + *this->prpos += chunk; + *this->prsize -= chunk; + copied += chunk; + size -= chunk; + }else if((ptr[copied] = call_basic_streambuf_char_uflow(this)) != EOF) { + copied++; + size--; + }else { + break; + } + } + + return copied; } -/* ?_Tidy@ios_base@std@@AAAXXZ */ -/* ?_Tidy@ios_base@std@@AEAAXXZ */ -void CDECL ios_base_Tidy(void) +/* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */ +/* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16) +streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count) { - FIXME("stub\n"); + TRACE("(%p %p %lu %lu)\n", this, ptr, size, count); + return call_basic_streambuf_char__Xsgetn_s(this, ptr, size, count); } -/* ?bad@ios_base@std@@QBE_NXZ */ -/* ?bad@ios_base@std@@QEBA_NXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_bad, 4) -MSVCP_bool __thiscall ios_base_bad(const ios_base *this) +/* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ +/* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4) +void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); - return FALSE; + TRACE("(%p)\n", this); + mutex_unlock(&this->lock); } -/* ?clear@ios_base@std@@QAEXH_N@Z */ -/* ?clear@ios_base@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12) -void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise) +/* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4) +char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this) { - FIXME("(%p %x %x) stub\n", this, state, reraise); + TRACE("(%p)\n", this); + return *this->prbuf; } -/* ?clear@ios_base@std@@QAEXH@Z */ -/* ?clear@ios_base@std@@QEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_clear, 8) -void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state) +/* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4) +char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this) { - ios_base_clear_reraise(this, state, FALSE); + TRACE("(%p)\n", this); + return *this->prpos; } -/* ?clear@ios_base@std@@QAEXI@Z */ -/* ?clear@ios_base@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8) -void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state) +/* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4) +char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this) { - ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE); + TRACE("(%p)\n", this); + return *this->prpos+*this->prsize; } -/* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */ -/* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8) -ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *obj) +/* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4) +char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this) { - FIXME("(%p %p) stub\n", this, obj); - return NULL; + TRACE("(%p)\n", this); + return *this->pwpos+*this->pwsize; } -/* ?eof@ios_base@std@@QBE_NXZ */ -/* ?eof@ios_base@std@@QEBA_NXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_eof, 4) -MSVCP_bool __thiscall ios_base_eof(const ios_base *this) +/* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */ +/* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8) +void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off) { - FIXME("(%p) stub\n", this); - return FALSE; + TRACE("(%p %d)\n", this, off); + *this->prpos += off; + *this->prsize -= off; } -/* ?exceptions@ios_base@std@@QAEXH@Z */ -/* ?exceptions@ios_base@std@@QEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_exception_set, 8) -void __thiscall ios_base_exception_set(ios_base *this, IOSB_iostate state) +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8) +locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret) { - FIXME("(%p %x) stub\n", this, state); + TRACE("(%p)\n", this); + return locale_copy_ctor(ret, this->loc); } -/* ?exceptions@ios_base@std@@QAEXI@Z */ -/* ?exceptions@ios_base@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_exception_set_unsigned, 8) -void __thiscall ios_base_exception_set_unsigned(ios_base *this, unsigned int state) +/* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */ +/* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8) +#define call_basic_streambuf_char_imbue(this, loc) CALL_VTBL_FUNC(this, 52, \ + void, (basic_streambuf_char*, const locale*), (this, loc)) +void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc) { - FIXME("(%p %x) stub\n", this, state); + TRACE("(%p %p)\n", this, loc); } -/* ?exceptions@ios_base@std@@QBEHXZ */ -/* ?exceptions@ios_base@std@@QEBAHXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_exception_get, 4) -IOSB_iostate __thiscall ios_base_exception_get(ios_base *this) +/* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */ +/* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8) +#define call_basic_streambuf_char_overflow(this, ch) CALL_VTBL_FUNC(this, 4, \ + int, (basic_streambuf_char*, int), (this, ch)) +int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p %d)\n", this, ch); + return EOF; } -/* ?fail@ios_base@std@@QBE_NXZ */ -/* ?fail@ios_base@std@@QEBA_NXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_fail, 4) -MSVCP_bool __thiscall ios_base_fail(ios_base *this) +/* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */ +/* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8) +#define call_basic_streambuf_char_pbackfail(this, ch) CALL_VTBL_FUNC(this, 8, \ + int, (basic_streambuf_char*, int), (this, ch)) +int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p %d)\n", this, ch); + return EOF; } -/* ?flags@ios_base@std@@QAEHH@Z */ -/* ?flags@ios_base@std@@QEAAHH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8) -IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags) +/* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4) +char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this) { - FIXME("(%p %x) stub\n", this, flags); - return 0; + TRACE("(%p)\n", this); + return *this->pwbuf; } -/* ?flags@ios_base@std@@QBEHXZ */ -/* ?flags@ios_base@std@@QEBAHXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4) -IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this) +/* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */ +/* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8) +void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p %d)\n", this, off); + *this->pwpos += off; + *this->pwsize -= off; } -/* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */ -/* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */ -DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8) -locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret) +/* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ +/* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4) +char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); - return ret; + TRACE("(%p)\n", this); + return *this->pwpos; } -/* ?good@ios_base@std@@QBE_NXZ */ -/* ?good@ios_base@std@@QEBA_NXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_good, 4) -MSVCP_bool __thiscall ios_base_good(const ios_base *this) +/* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ +/* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12) +locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc) { - FIXME("(%p) stub\n", this); - return FALSE; + TRACE("(%p %p)\n", this, loc); + memcpy(ret, this->loc, sizeof(locale)); + call_basic_streambuf_char_imbue(this, loc); + locale_copy_ctor(this->loc, loc); + return ret; } -/* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */ -/* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12) -locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc) +/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */ +/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20) +#define call_basic_streambuf_char_seekoff(this, ret, off, way, mode) CALL_VTBL_FUNC(this, 36, \ + fpos_int*, (basic_streambuf_char*, fpos_int*, streamoff, int, int), (this, ret, off, way, mode)) +fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this, + fpos_int *ret, streamoff off, int way, int mode) { - FIXME("(%p %p) stub\n", this, loc); + TRACE("(%p %lu %d %d)\n", this, off, way, mode); + ret->off = 0; + ret->pos = -1; + ret->state = 0; return ret; } -/* ?iword@ios_base@std@@QAEAAJH@Z */ -/* ?iword@ios_base@std@@QEAAAEAJH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_iword, 8) -LONG* __thiscall ios_base_iword(ios_base *this, int index) +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */ +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20) +fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this, + fpos_int *ret, streamoff off, int way, int mode) { - FIXME("(%p %d) stub\n", this, index); - return NULL; + TRACE("(%p %lu %d %d)\n", this, off, way, mode); + return call_basic_streambuf_char_seekoff(this, ret, off, way, mode); } -/* ?precision@ios_base@std@@QAEHH@Z */ -/* ?precision@ios_base@std@@QEAA_J_J@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8) -MSVCP_size_t __thiscall ios_base_precision_set(ios_base *this, MSVCP_size_t precision) +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */ +/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20) +fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this, + fpos_int *ret, streamoff off, unsigned int way, unsigned int mode) { - FIXME("(%p %lu) stub\n", this, precision); - return 0; + TRACE("(%p %lu %d %d)\n", this, off, way, mode); + return basic_streambuf_char_pubseekoff(this, ret, off, way, mode); } -/* ?precision@ios_base@std@@QBEHXZ */ -/* ?precision@ios_base@std@@QEBA_JXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4) -MSVCP_size_t __thiscall ios_base_precision_get(const ios_base *this) +/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */ +/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36) +#define call_basic_streambuf_char_seekpos(this, ret, pos, mode) CALL_VTBL_FUNC(this, 40, \ + fpos_int*, (basic_streambuf_char*, fpos_int*, fpos_int, int), (this, ret, pos, mode)) +fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this, + fpos_int *ret, fpos_int pos, int mode) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode); + ret->off = 0; + ret->pos = -1; + ret->state = 0; + return ret; } -/* ?pword@ios_base@std@@QAEAAPAXH@Z */ -/* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_pword, 8) -void** __thiscall ios_base_pword(ios_base *this, int index) +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */ +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36) +fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this, + fpos_int *ret, fpos_int pos, int mode) { - FIXME("(%p %d) stub\n", this, index); - return NULL; + TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode); + return call_basic_streambuf_char_seekpos(this, ret, pos, mode); } -/* ?rdstate@ios_base@std@@QBEHXZ */ -/* ?rdstate@ios_base@std@@QEBAHXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4) -IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this) +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */ +/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36) +fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this, + fpos_int *ret, fpos_int pos, unsigned int mode) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p %s %d)\n", this, debugstr_fpos_int(&pos), mode); + return basic_streambuf_char_pubseekpos(this, ret, pos, mode); } -/* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */ -/* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12) -void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index) +/* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */ +/* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12) +#define call_basic_streambuf_char_setbuf(this, buf, count) CALL_VTBL_FUNC(this, 44, \ + basic_streambuf_char*, (basic_streambuf_char*, char*, streamsize), (this, buf, count)) +basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count) { - FIXME("(%p %p %d) stub\n", this, callback, index); + TRACE("(%p %p %lu)\n", this, buf, count); + return this; } -/* ?setf@ios_base@std@@QAEHHH@Z */ -/* ?setf@ios_base@std@@QEAAHHH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12) -IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask) +/* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */ +/* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12) +basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count) { - FIXME("(%p %x %x) stub\n", this, flags, mask); + TRACE("(%p %p %lu)\n", this, buf, count); + return call_basic_streambuf_char_setbuf(this, buf, count); +} + +/* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ +/* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4) +#define call_basic_streambuf_char_sync(this) CALL_VTBL_FUNC(this, 48, \ + int, (basic_streambuf_char*), (this)) +int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this) +{ + TRACE("(%p)\n", this); return 0; } -/* ?setf@ios_base@std@@QAEHH@Z */ -/* ?setf@ios_base@std@@QEAAHH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_setf, 8) -IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags) +/* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4) +int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this) { - return ios_base_setf_mask(this, flags, ~0); + TRACE("(%p)\n", this); + return call_basic_streambuf_char_sync(this); } -/* ?setstate@ios_base@std@@QAEXH_N@Z */ -/* ?setstate@ios_base@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12) -void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise) +/* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */ +/* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12) +streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count) { - FIXME("(%p %x %x) stub\n", this, state, reraise); + TRACE("(%p %p %lu)\n", this, ptr, count); + return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count); } -/* ?setstate@ios_base@std@@QAEXH@Z */ -/* ?setstate@ios_base@std@@QEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8) -void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state) +/* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ +/* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4) +#define call_basic_streambuf_char_showmanyc(this) CALL_VTBL_FUNC(this, 12, \ + streamsize, (basic_streambuf_char*), (this)) +streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this) { - ios_base_setstate_reraise(this, state, FALSE); + TRACE("(%p)\n", this); + return 0; } -/* ?setstate@ios_base@std@@QAEXI@Z */ -/* ?setstate@ios_base@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8) -void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state) +/* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4) +streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this) { - ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE); + streamsize ret; + + TRACE("(%p)\n", this); + + ret = basic_streambuf_char__Gnavail(this); + return ret ? ret : call_basic_streambuf_char_showmanyc(this); } -/* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */ -MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync) +/* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */ +/* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8) +int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch) { - FIXME("(%x) stub\n", sync); - return FALSE; + TRACE("(%p %d)\n", this, ch); + if(*this->prpos && *this->prpos>*this->prbuf && (*this->prpos)[-1]==ch) { + (*this->prsize)++; + (*this->prpos)--; + return ch; + } + + return call_basic_streambuf_char_pbackfail(this, ch); } -/* ?unsetf@ios_base@std@@QAEXH@Z */ -/* ?unsetf@ios_base@std@@QEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8) -void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags) +/* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */ +/* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8) +int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch) { - FIXME("(%p %x) stub\n", this, flags); + TRACE("(%p %d)\n", this, ch); + return basic_streambuf_char__Pnavail(this) ? + (*basic_streambuf_char__Pninc(this) = ch) : + call_basic_streambuf_char_overflow(this, ch); } -/* ?width@ios_base@std@@QAEHH@Z */ -/* ?width@ios_base@std@@QEAA_J_J@Z */ -DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8) -MSVCP_size_t __thiscall ios_base_width_set(ios_base *this, MSVCP_size_t width) +/* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4) +int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this) { - FIXME("(%p %lu) stub\n", this, width); - return 0; + TRACE("(%p)\n", this); + if(*this->prpos && *this->prpos>*this->prbuf) { + (*this->prsize)++; + (*this->prpos)--; + return **this->prpos; + } + + return call_basic_streambuf_char_pbackfail(this, EOF); } -/* ?width@ios_base@std@@QBEHXZ */ -/* ?width@ios_base@std@@QEBA_JXZ */ -DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4) -MSVCP_size_t __thiscall ios_base_width_get(ios_base *this) +/* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ +/* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4) +void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this) { - FIXME("(%p) stub\n", this); - return 0; + TRACE("(%p)\n", this); + if(basic_streambuf_char__Gnavail(this)) + basic_streambuf_char__Gninc(this); + else + call_basic_streambuf_char_uflow(this); } -/* ?xalloc@ios_base@std@@SAHXZ */ -int CDECL ios_base_xalloc(void) +/* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4) +int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this) { - FIXME("stub\n"); - return 0; + TRACE("(%p)\n", this); + return basic_streambuf_char__Gnavail(this) ? + *basic_streambuf_char__Gninc(this) : call_basic_streambuf_char_uflow(this); } -/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */ -/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4) -basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this) +/* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4) +int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this) +{ + TRACE("(%p)\n", this); + return basic_streambuf_char__Gnavail(this) ? + *basic_streambuf_char_gptr(this) : call_basic_streambuf_char_underflow(this); +} + +/* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ +/* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4) +int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this) +{ + TRACE("(%p)\n", this); + + if(basic_streambuf_char__Gnavail(this) > 1) + return *basic_streambuf_char__Gnpreinc(this); + return basic_streambuf_char_sbumpc(this)==EOF ? + EOF : basic_streambuf_char_sgetc(this); +} + +/* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */ +/* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12) +#define call_basic_streambuf_char_xsgetn(this, ptr, count) CALL_VTBL_FUNC(this, 24, \ + streamsize, (basic_streambuf_char*, char*, streamsize), (this, ptr, count)) +streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count) +{ + TRACE("(%p %p %lu)\n", this, ptr, count); + return call_basic_streambuf_char__Xsgetn_s(this, ptr, -1, count); +} + +/* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */ +/* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12) +#define call_basic_streambuf_char_xsputn(this, ptr, count) CALL_VTBL_FUNC(this, 32, \ + streamsize, (basic_streambuf_char*, const char*, streamsize), (this, ptr, count)) +streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count) +{ + streamsize copied, chunk; + + TRACE("(%p %p %lu)\n", this, ptr, count); + + for(copied=0; copied count-copied) + chunk = count-copied; + + if(chunk) { + memcpy(*this->pwpos, ptr+copied, chunk); + *this->pwpos += chunk; + *this->pwsize -= chunk; + copied += chunk; + }else if(call_basic_streambuf_char_overflow(this, ptr[copied]) != EOF) { + copied++; + }else { + break; + } + } + + return copied; +} + +/* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */ +/* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */ +DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12) +streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count) +{ + TRACE("(%p %p %lu)\n", this, ptr, count); + return call_basic_streambuf_char_xsputn(this, ptr, count); +} + +/* ??0ios_base@std@@IAE@XZ */ +/* ??0ios_base@std@@IEAA@XZ */ +DEFINE_THISCALL_WRAPPER(ios_base_ctor, 4) +ios_base* __thiscall ios_base_ctor(ios_base *this) { FIXME("(%p) stub\n", this); + + this->vtable = &MSVCP_ios_base_vtable; return NULL; } -/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ -/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_copy_ctor, 8) -basic_ios_char* __thiscall basic_ios_char_copy_ctor(basic_ios_char *this, const basic_ios_char *copy) +/* ??0ios_base@std@@QAE@ABV01@@Z */ +/* ??0ios_base@std@@QEAA@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_copy_ctor, 8) +ios_base* __thiscall ios_base_copy_ctor(ios_base *this, const ios_base *copy) { FIXME("(%p %p) stub\n", this, copy); return NULL; } -/* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */ -/* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4) -void __thiscall basic_ios_char_dtor(basic_ios_char *this) +/* ??1ios_base@std@@UAE@XZ */ +/* ??1ios_base@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(ios_base_dtor, 4) +void __thiscall ios_base_dtor(ios_base *this) { FIXME("(%p) stub\n", this); } -DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8) -basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags) +DEFINE_THISCALL_WRAPPER(MSVCP_ios_base_vector_dtor, 8) +ios_base* __thiscall MSVCP_ios_base_vector_dtor(ios_base *this, unsigned int flags) { TRACE("(%p %x) stub\n", this, flags); if(flags & 2) { @@ -645,10 +918,10 @@ basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this int i, *ptr = (int *)this-1; for(i=*ptr-1; i>=0; i--) - basic_ios_char_dtor(this+i); + ios_base_dtor(this+i); MSVCRT_operator_delete(ptr); } else { - basic_ios_char_dtor(this); + ios_base_dtor(this); if(flags & 1) MSVCRT_operator_delete(this); } @@ -656,874 +929,715 @@ basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this return this; } -/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */ -/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12) -void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise) -{ - FIXME("(%p %x %x) stub\n", this, state, reraise); -} - -/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */ -/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8) -void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state) +DEFINE_THISCALL_WRAPPER(MSVCP_iosb_vector_dtor, 8) +ios_base* __thiscall MSVCP_iosb_vector_dtor(ios_base *this, unsigned int flags) { - basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE); + return MSVCP_ios_base_vector_dtor(this, flags); } -/* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */ -/* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8) -basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy) +/* ??4ios_base@std@@QAEAAV01@ABV01@@Z */ +/* ??4ios_base@std@@QEAAAEAV01@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_assign, 8) +ios_base* __thiscall ios_base_assign(ios_base *this, const ios_base *right) { - FIXME("(%p %p) stub\n", this, copy); + FIXME("(%p %p) stub\n", this, right); return NULL; } -/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */ -/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8) -char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill) +/* ??7ios_base@std@@QBE_NXZ */ +/* ??7ios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_op_succ, 4) +MSVCP_bool __thiscall ios_base_op_succ(const ios_base *this) { - FIXME("(%p %c) stub\n", this, fill); - return 0; + FIXME("(%p) stub\n", this); + return FALSE; } -/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */ -/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4) -char __thiscall basic_ios_char_fill_get(basic_ios_char *this) +/* ??Bios_base@std@@QBEPAXXZ */ +/* ??Bios_base@std@@QEBAPEAXXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_op_fail, 4) +void* __thiscall ios_base_op_fail(const ios_base *this) { FIXME("(%p) stub\n", this); - return 0; + return NULL; } -/* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ -/* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12) -locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc) +/* ?_Addstd@ios_base@std@@SAXPAV12@@Z */ +/* ?_Addstd@ios_base@std@@SAXPEAV12@@Z */ +void CDECL ios_base_Addstd(ios_base *add) { - FIXME("(%p %p %p) stub\n", this, ret, loc); - return ret; + FIXME("(%p) stub\n", add); } -/* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */ -/* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12) -void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd) +/* ?_Callfns@ios_base@std@@AAEXW4event@12@@Z */ +/* ?_Callfns@ios_base@std@@AEAAXW4event@12@@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_Callfns, 8) +void __thiscall ios_base_Callfns(ios_base *this, IOS_BASE_event event) { - FIXME("(%p %p %x) stub\n", this, streambuf, isstd); + FIXME("(%p %x) stub\n", this, event); } -/* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */ -/* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12) -char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def) +/* ?_Findarr@ios_base@std@@AAEAAU_Iosarray@12@H@Z */ +/* ?_Findarr@ios_base@std@@AEAAAEAU_Iosarray@12@H@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_Findarr, 8) +IOS_BASE_iosarray* __thiscall ios_base_Findarr(ios_base *this, int index) { - FIXME("(%p %c %c) stub\n", this, ch, def); - return def; + FIXME("(%p %d) stub\n", this, index); + return NULL; } -/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */ -/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8) -basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf) +/* ?_Index_func@ios_base@std@@CAAAHXZ */ +/* ?_Index_func@ios_base@std@@CAAEAHXZ */ +int* CDECL ios_base_Index_func(void) { - FIXME("(%p %p) stub\n", this, streambuf); - return NULL; + TRACE("\n"); + return &ios_base_Index; } -/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */ -/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4) -basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this) +/* ?_Init@ios_base@std@@IAEXXZ */ +/* ?_Init@ios_base@std@@IEAAXXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_Init, 4) +void __thiscall ios_base_Init(ios_base *this) { FIXME("(%p) stub\n", this); - return NULL; } -/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */ -/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12) -void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise) +/* ?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z */ +/* ?_Ios_base_dtor@ios_base@std@@CAXPEAV12@@Z */ +void CDECL ios_base_Ios_base_dtor(ios_base *obj) { - FIXME("(%p %x %x) stub\n", this, state, reraise); + FIXME("(%p) stub\n", obj); } -/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */ -/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8) -void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state) +/* ?_Sync_func@ios_base@std@@CAAA_NXZ */ +/* ?_Sync_func@ios_base@std@@CAAEA_NXZ */ +MSVCP_bool* CDECL ios_base_Sync_func(void) { - basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE); + TRACE("\n"); + return &ios_base_Sync; } -/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */ -/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8) -basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream) +/* ?_Tidy@ios_base@std@@AAAXXZ */ +/* ?_Tidy@ios_base@std@@AEAAXXZ */ +void CDECL ios_base_Tidy(void) { - FIXME("(%p %p) stub\n", this, ostream); - return NULL; + FIXME("stub\n"); } -/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */ -/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4) -basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this) +/* ?bad@ios_base@std@@QBE_NXZ */ +/* ?bad@ios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_bad, 4) +MSVCP_bool __thiscall ios_base_bad(const ios_base *this) { - FIXME("(%p)\n", this); - return NULL; + FIXME("(%p) stub\n", this); + return FALSE; } -/* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */ -/* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8) -char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch) +/* ?clear@ios_base@std@@QAEXH_N@Z */ +/* ?clear@ios_base@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_clear_reraise, 12) +void __thiscall ios_base_clear_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise) { - FIXME("(%p %c)\n", this, ch); - return 0; + FIXME("(%p %x %x) stub\n", this, state, reraise); } +/* ?clear@ios_base@std@@QAEXH@Z */ +/* ?clear@ios_base@std@@QEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_clear, 8) +void __thiscall ios_base_clear(ios_base *this, IOSB_iostate state) +{ + ios_base_clear_reraise(this, state, FALSE); +} -/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */ -/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4) -basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this) +/* ?clear@ios_base@std@@QAEXI@Z */ +/* ?clear@ios_base@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_clear_unsigned, 8) +void __thiscall ios_base_clear_unsigned(ios_base *this, unsigned int state) { - FIXME("(%p) stub\n", this); - return NULL; + ios_base_clear_reraise(this, (IOSB_iostate)state, FALSE); } -/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */ -/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copy_ctor, 8) -basic_ios_wchar* __thiscall basic_ios_wchar_copy_ctor(basic_ios_wchar *this, const basic_ios_wchar *copy) +/* ?copyfmt@ios_base@std@@QAEAAV12@ABV12@@Z */ +/* ?copyfmt@ios_base@std@@QEAAAEAV12@AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_copyfmt, 8) +ios_base* __thiscall ios_base_copyfmt(ios_base *this, const ios_base *obj) { - FIXME("(%p %p) stub\n", this, copy); + FIXME("(%p %p) stub\n", this, obj); return NULL; } -/* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */ -/* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4) -void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this) +/* ?eof@ios_base@std@@QBE_NXZ */ +/* ?eof@ios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_eof, 4) +MSVCP_bool __thiscall ios_base_eof(const ios_base *this) { FIXME("(%p) stub\n", this); + return FALSE; } -DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8) -basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags) +/* ?exceptions@ios_base@std@@QAEXH@Z */ +/* ?exceptions@ios_base@std@@QEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_exception_set, 8) +void __thiscall ios_base_exception_set(ios_base *this, IOSB_iostate state) { - TRACE("(%p %x) stub\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_ios_wchar_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - basic_ios_wchar_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; + FIXME("(%p %x) stub\n", this, state); } -/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */ -/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12) -void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise) +/* ?exceptions@ios_base@std@@QAEXI@Z */ +/* ?exceptions@ios_base@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_exception_set_unsigned, 8) +void __thiscall ios_base_exception_set_unsigned(ios_base *this, unsigned int state) { - FIXME("(%p %x %x) stub\n", this, state, reraise); + FIXME("(%p %x) stub\n", this, state); } -/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */ -/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8) -void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state) +/* ?exceptions@ios_base@std@@QBEHXZ */ +/* ?exceptions@ios_base@std@@QEBAHXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_exception_get, 4) +IOSB_iostate __thiscall ios_base_exception_get(ios_base *this) { - basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE); + FIXME("(%p) stub\n", this); + return 0; } -/* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */ -/* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8) -basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy) +/* ?fail@ios_base@std@@QBE_NXZ */ +/* ?fail@ios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_fail, 4) +MSVCP_bool __thiscall ios_base_fail(ios_base *this) { - FIXME("(%p %p) stub\n", this, copy); - return NULL; + FIXME("(%p) stub\n", this); + return 0; } -/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */ -/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8) -wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill) +/* ?flags@ios_base@std@@QAEHH@Z */ +/* ?flags@ios_base@std@@QEAAHH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_flags_set, 8) +IOSB_fmtflags __thiscall ios_base_flags_set(ios_base *this, IOSB_fmtflags flags) { - FIXME("(%p %c) stub\n", this, fill); + FIXME("(%p %x) stub\n", this, flags); return 0; } -/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */ -/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4) -wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this) +/* ?flags@ios_base@std@@QBEHXZ */ +/* ?flags@ios_base@std@@QEBAHXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_flags_get, 4) +IOSB_fmtflags __thiscall ios_base_flags_get(const ios_base *this) { FIXME("(%p) stub\n", this); return 0; } -/* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ -/* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12) -locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc) +/* ?getloc@ios_base@std@@QBE?AVlocale@2@XZ */ +/* ?getloc@ios_base@std@@QEBA?AVlocale@2@XZ */ +DEFINE_THISCALL_WRAPPER(ios_base_getloc, 8) +locale* __thiscall ios_base_getloc(const ios_base *this, locale *ret) { - FIXME("(%p %p %p) stub\n", this, ret, loc); + FIXME("(%p) stub\n", this); return ret; } -/* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */ -/* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12) -void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf, MSVCP_bool isstd) -{ - FIXME("(%p %p %x) stub\n", this, streambuf, isstd); -} - -/* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */ -/* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12) -char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def) -{ - FIXME("(%p %c %c) stub\n", this, ch, def); - return def; -} - -/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */ -/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8) -/*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf) -{ - FIXME("(%p %p) stub\n", this, streambuf); - return NULL; -} - -/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */ -/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4) -/*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this) +/* ?good@ios_base@std@@QBE_NXZ */ +/* ?good@ios_base@std@@QEBA_NXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_good, 4) +MSVCP_bool __thiscall ios_base_good(const ios_base *this) { FIXME("(%p) stub\n", this); - return NULL; -} - -/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */ -/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12) -void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise) -{ - FIXME("(%p %x %x) stub\n", this, state, reraise); -} - -/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */ -/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8) -void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state) -{ - basic_ios_wchar_setstate_reraise(this, state, FALSE); + return FALSE; } -/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */ -/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8) -/*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, /*basic_ostream_wchar*/void *ostream) +/* ?imbue@ios_base@std@@QAE?AVlocale@2@ABV32@@Z */ +/* ?imbue@ios_base@std@@QEAA?AVlocale@2@AEBV32@@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_imbue, 12) +locale* __thiscall ios_base_imbue(ios_base *this, locale *ret, const locale *loc) { - FIXME("(%p %p) stub\n", this, ostream); - return NULL; + FIXME("(%p %p) stub\n", this, loc); + return ret; } -/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */ -/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4) -/*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this) +/* ?iword@ios_base@std@@QAEAAJH@Z */ +/* ?iword@ios_base@std@@QEAAAEAJH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_iword, 8) +LONG* __thiscall ios_base_iword(ios_base *this, int index) { - FIXME("(%p)\n", this); + FIXME("(%p %d) stub\n", this, index); return NULL; } -/* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */ -/* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */ -DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8) -wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch) +/* ?precision@ios_base@std@@QAEHH@Z */ +/* ?precision@ios_base@std@@QEAA_J_J@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_precision_set, 8) +MSVCP_size_t __thiscall ios_base_precision_set(ios_base *this, MSVCP_size_t precision) { - FIXME("(%p %c)\n", this, ch); + FIXME("(%p %lu) stub\n", this, precision); return 0; } -/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@W4_Uninitialized@1@@Z */ -/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@W4_Uninitialized@1@@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor_uninitialized, 8) -basic_streambuf_char* __thiscall basic_streambuf_char_ctor_uninitialized(basic_streambuf_char *this, int uninitialized) -{ - TRACE("(%p %d)\n", this, uninitialized); - this->vtable = &MSVCP_basic_streambuf_char_vtable; - mutex_ctor(&this->lock); - return this; -} - -/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAE@XZ */ -/* ??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_ctor, 4) -basic_streambuf_char* __thiscall basic_streambuf_char_ctor(basic_streambuf_char *this) -{ - TRACE("(%p)\n", this); - - this->vtable = &MSVCP_basic_streambuf_char_vtable; - mutex_ctor(&this->lock); - this->loc = MSVCRT_operator_new(sizeof(locale)); - locale_ctor(this->loc); - basic_streambuf_char__Init_empty(this); - - return this; -} - -/* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UAE@XZ */ -/* ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_dtor, 4) -void __thiscall basic_streambuf_char_dtor(basic_streambuf_char *this) -{ - TRACE("(%p)\n", this); - - mutex_dtor(&this->lock); - locale_dtor(this->loc); - MSVCRT_operator_delete(this->loc); -} - -DEFINE_THISCALL_WRAPPER(MSVCP_basic_streambuf_char_vector_dtor, 8) -basic_streambuf_char* __thiscall MSVCP_basic_streambuf_char_vector_dtor(basic_streambuf_char *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--) - basic_streambuf_char_dtor(this+i); - MSVCRT_operator_delete(ptr); - } else { - basic_streambuf_char_dtor(this); - if(flags & 1) - MSVCRT_operator_delete(this); - } - - return this; -} - -/* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ -/* ?_Gnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnavail, 4) -streamsize __thiscall basic_streambuf_char__Gnavail(const basic_streambuf_char *this) +/* ?precision@ios_base@std@@QBEHXZ */ +/* ?precision@ios_base@std@@QEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_precision_get, 4) +MSVCP_size_t __thiscall ios_base_precision_get(const ios_base *this) { - TRACE("(%p)\n", this); - return *this->prpos ? *this->prsize : 0; + FIXME("(%p) stub\n", this); + return 0; } -/* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ -/* ?_Gndec@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gndec, 4) -char* __thiscall basic_streambuf_char__Gndec(basic_streambuf_char *this) +/* ?pword@ios_base@std@@QAEAAPAXH@Z */ +/* ?pword@ios_base@std@@QEAAAEAPEAXH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_pword, 8) +void** __thiscall ios_base_pword(ios_base *this, int index) { - TRACE("(%p)\n", this); - (*this->prsize)++; - (*this->prpos)--; - return *this->prpos; + FIXME("(%p %d) stub\n", this, index); + return NULL; } -/* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ -/* ?_Gninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gninc, 4) -char* __thiscall basic_streambuf_char__Gninc(basic_streambuf_char *this) +/* ?rdstate@ios_base@std@@QBEHXZ */ +/* ?rdstate@ios_base@std@@QEBAHXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_rdstate, 4) +IOSB_iostate __thiscall ios_base_rdstate(const ios_base *this) { - TRACE("(%p)\n", this); - (*this->prsize)--; - return (*this->prpos)++; + FIXME("(%p) stub\n", this); + return 0; } -/* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ -/* ?_Gnpreinc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Gnpreinc, 4) -char* __thiscall basic_streambuf_char__Gnpreinc(basic_streambuf_char *this) +/* ?register_callback@ios_base@std@@QAEXP6AXW4event@12@AAV12@H@ZH@Z */ +/* ?register_callback@ios_base@std@@QEAAXP6AXW4event@12@AEAV12@H@ZH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_register_callback, 12) +void __thiscall ios_base_register_callback(ios_base *this, IOS_BASE_event_callback callback, int index) { - TRACE("(%p)\n", this); - (*this->prsize)--; - (*this->prpos)++; - return *this->prpos; + FIXME("(%p %p %d) stub\n", this, callback, index); } -/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAPAD0PAH001@Z */ -/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAPEAD0PEAH001@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init, 28) -void __thiscall basic_streambuf_char__Init(basic_streambuf_char *this, char **gf, char **gn, int *gc, char **pf, char **pn, int *pc) +/* ?setf@ios_base@std@@QAEHHH@Z */ +/* ?setf@ios_base@std@@QEAAHHH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_setf_mask, 12) +IOSB_fmtflags __thiscall ios_base_setf_mask(ios_base *this, IOSB_fmtflags flags, IOSB_fmtflags mask) { - TRACE("(%p %p %p %p %p %p %p)\n", this, gf, gn, gc, pf, pn, pc); - - this->prbuf = gf; - this->pwbuf = pf; - this->prpos = gn; - this->pwpos = pn; - this->prsize = gc; - this->pwsize = pc; + FIXME("(%p %x %x) stub\n", this, flags, mask); + return 0; } -/* ?_Init@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXXZ */ -/* ?_Init@?$basic_streambuf@GU?$char_traits@G@std@@@std@@IEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Init_empty, 4) -void __thiscall basic_streambuf_char__Init_empty(basic_streambuf_char *this) +/* ?setf@ios_base@std@@QAEHH@Z */ +/* ?setf@ios_base@std@@QEAAHH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_setf, 8) +IOSB_fmtflags __thiscall ios_base_setf(ios_base *this, IOSB_fmtflags flags) { - TRACE("(%p)\n", this); - - this->prbuf = &this->rbuf; - this->pwbuf = &this->wbuf; - this->prpos = &this->rpos; - this->pwpos = &this->wpos; - this->prsize = &this->rsize; - this->pwsize = &this->wsize; - - basic_streambuf_char_setp(this, NULL, NULL); - basic_streambuf_char_setg(this, NULL, NULL, NULL); + return ios_base_setf_mask(this, flags, ~0); } -/* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ -/* ?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Lock, 4) -void __thiscall basic_streambuf_char__Lock(basic_streambuf_char *this) +/* ?setstate@ios_base@std@@QAEXH_N@Z */ +/* ?setstate@ios_base@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_setstate_reraise, 12) +void __thiscall ios_base_setstate_reraise(ios_base *this, IOSB_iostate state, MSVCP_bool reraise) { - TRACE("(%p)\n", this); - mutex_lock(&this->lock); + FIXME("(%p %x %x) stub\n", this, state, reraise); } -/* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEHXZ */ -/* ?_Pnavail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBA_JXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pnavail, 4) -streamsize __thiscall basic_streambuf_char__Pnavail(const basic_streambuf_char *this) +/* ?setstate@ios_base@std@@QAEXH@Z */ +/* ?setstate@ios_base@std@@QEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_setstate, 8) +void __thiscall ios_base_setstate(ios_base *this, IOSB_iostate state) { - TRACE("(%p)\n", this); - return *this->pwpos ? *this->pwsize : 0; + ios_base_setstate_reraise(this, state, FALSE); } -/* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEPADXZ */ -/* ?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Pninc, 4) -char* __thiscall basic_streambuf_char__Pninc(basic_streambuf_char *this) +/* ?setstate@ios_base@std@@QAEXI@Z */ +/* ?setstate@ios_base@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_setstate_unsigned, 8) +void __thiscall ios_base_setstate_unsigned(ios_base *this, unsigned int state) { - TRACE("(%p)\n", this); - (*this->pwsize)--; - return (*this->pwpos)++; + ios_base_setstate_reraise(this, (IOSB_iostate)state, FALSE); } -/* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADIH@Z */ -/* ?_Sgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_K_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Sgetn_s, 16) -streamsize __thiscall basic_streambuf_char__Sgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count) +/* ?sync_with_stdio@ios_base@std@@SA_N_N@Z */ +MSVCP_bool CDECL ios_base_sync_with_stdio(MSVCP_bool sync) { - FIXME("(%p %p %lu %lu) stub\n", this, ptr, size, count); - return 0; + FIXME("(%x) stub\n", sync); + return FALSE; } -/* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ -/* ?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Unlock, 4) -void __thiscall basic_streambuf_char__Unlock(basic_streambuf_char *this) +/* ?unsetf@ios_base@std@@QAEXH@Z */ +/* ?unsetf@ios_base@std@@QEAAXH@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_unsetf, 8) +void __thiscall ios_base_unsetf(ios_base *this, IOSB_fmtflags flags) { - TRACE("(%p)\n", this); - mutex_unlock(&this->lock); + FIXME("(%p %x) stub\n", this, flags); } -/* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADIH@Z */ -/* ?_Xsgetn_s@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_K_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char__Xsgetn_s, 16) -streamsize __thiscall basic_streambuf_char__Xsgetn_s(basic_streambuf_char *this, char *ptr, MSVCP_size_t size, streamsize count) +/* ?width@ios_base@std@@QAEHH@Z */ +/* ?width@ios_base@std@@QEAA_J_J@Z */ +DEFINE_THISCALL_WRAPPER(ios_base_width_set, 8) +MSVCP_size_t __thiscall ios_base_width_set(ios_base *this, MSVCP_size_t width) { - FIXME("(%p %p %lu %lu) stub\n", this, ptr, size, count); + FIXME("(%p %lu) stub\n", this, width); return 0; } -/* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?eback@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_eback, 4) -char* __thiscall basic_streambuf_char_eback(const basic_streambuf_char *this) +/* ?width@ios_base@std@@QBEHXZ */ +/* ?width@ios_base@std@@QEBA_JXZ */ +DEFINE_THISCALL_WRAPPER(ios_base_width_get, 4) +MSVCP_size_t __thiscall ios_base_width_get(ios_base *this) { FIXME("(%p) stub\n", this); - return NULL; + return 0; } -/* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?egptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_egptr, 4) -char* __thiscall basic_streambuf_char_egptr(const basic_streambuf_char *this) +/* ?xalloc@ios_base@std@@SAHXZ */ +int CDECL ios_base_xalloc(void) { - FIXME("(%p) stub\n", this); - return NULL; + FIXME("stub\n"); + return 0; } -/* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?epptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_epptr, 4) -char* __thiscall basic_streambuf_char_epptr(const basic_streambuf_char *this) +/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IAE@XZ */ +/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_ctor, 4) +basic_ios_char* __thiscall basic_ios_char_ctor(basic_ios_char *this) { FIXME("(%p) stub\n", this); return NULL; } -/* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */ -/* ?gbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gbump, 8) -void __thiscall basic_streambuf_char_gbump(basic_streambuf_char *this, int off) +/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ +/* ??0?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_copy_ctor, 8) +basic_ios_char* __thiscall basic_ios_char_copy_ctor(basic_ios_char *this, const basic_ios_char *copy) { - FIXME("(%p %d) stub\n", this, off); + FIXME("(%p %p) stub\n", this, copy); + return NULL; } -/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QBE?AVlocale@2@XZ */ -/* ?getloc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEBA?AVlocale@2@XZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_getloc, 8) -locale* __thiscall basic_streambuf_char_getloc(const basic_streambuf_char *this, locale *ret) +/* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UAE@XZ */ +/* ??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_dtor, 4) +void __thiscall basic_ios_char_dtor(basic_ios_char *this) { FIXME("(%p) stub\n", this); - return ret; } -/* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?gptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_gptr, 4) -char* __thiscall basic_streambuf_char_gptr(const basic_streambuf_char *this) +DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_char_vector_dtor, 8) +basic_ios_char* __thiscall MSVCP_basic_ios_char_vector_dtor(basic_ios_char *this, unsigned int flags) { - FIXME("(%p) stub\n", this); - return NULL; + TRACE("(%p %x) stub\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_ios_char_dtor(this+i); + MSVCRT_operator_delete(ptr); + } else { + basic_ios_char_dtor(this); + if(flags & 1) + MSVCRT_operator_delete(this); + } + + return this; } -/* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEXABVlocale@2@@Z */ -/* ?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_imbue, 8) -void __thiscall basic_streambuf_char_imbue(basic_streambuf_char *this, const locale *loc) +/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */ +/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_clear_reraise, 12) +void __thiscall basic_ios_char_clear_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise) { - FIXME("(%p %p) stub\n", this, loc); + FIXME("(%p %x %x) stub\n", this, state, reraise); } -/* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?in_avail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_in_avail, 4) -streamsize __thiscall basic_streambuf_char_in_avail(basic_streambuf_char *this) +/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */ +/* ?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_clear, 8) +void __thiscall basic_ios_char_clear(basic_ios_char *this, unsigned int state) { - FIXME("(%p) stub\n", this); - return 0; + basic_ios_char_clear_reraise(this, (IOSB_iostate)state, FALSE); } -/* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */ -/* ?overflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_overflow, 8) -int __thiscall basic_streambuf_char_overflow(basic_streambuf_char *this, int ch) +/* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEAAV12@ABV12@@Z */ +/* ?copyfmt@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAAEAV12@AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_copyfmt, 8) +basic_ios_char* __thiscall basic_ios_char_copyfmt(basic_ios_char *this, basic_ios_char *copy) { - FIXME("(%p %d) stub\n", this, ch); - return 0; + FIXME("(%p %p) stub\n", this, copy); + return NULL; } -/* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHH@Z */ -/* ?pbackfail@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbackfail, 8) -int __thiscall basic_streambuf_char_pbackfail(basic_streambuf_char *this, int ch) +/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEDD@Z */ +/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAADD@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_set, 8) +char __thiscall basic_ios_char_fill_set(basic_ios_char *this, char fill) { - FIXME("(%p %d) stub\n", this, ch); + FIXME("(%p %c) stub\n", this, fill); return 0; } -/* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?pbase@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbase, 4) -char* __thiscall basic_streambuf_char_pbase(const basic_streambuf_char *this) +/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDXZ */ +/* ?fill@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADXZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_fill_get, 4) +char __thiscall basic_ios_char_fill_get(basic_ios_char *this) { FIXME("(%p) stub\n", this); - return NULL; + return 0; } -/* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXH@Z */ -/* ?pbump@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pbump, 8) -void __thiscall basic_streambuf_char_pbump(basic_streambuf_char *this, int off) +/* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ +/* ?imbue@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_imbue, 12) +locale *__thiscall basic_ios_char_imbue(basic_ios_char *this, locale *ret, const locale *loc) { - FIXME("(%p %d) stub\n", this, off); + FIXME("(%p %p %p) stub\n", this, ret, loc); + return ret; } -/* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IBEPADXZ */ -/* ?pptr@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEBAPEADXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pptr, 4) -char* __thiscall basic_streambuf_char_pptr(const basic_streambuf_char *this) +/* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IAEXPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */ +/* ?init@?$basic_ios@DU?$char_traits@D@std@@@std@@IEAAXPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_init, 12) +void __thiscall basic_ios_char_init(basic_ios_char *this, basic_streambuf_char *streambuf, MSVCP_bool isstd) { - FIXME("(%p) stub\n", this); - return NULL; + FIXME("(%p %p %x) stub\n", this, streambuf, isstd); } -/* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ -/* ?pubimbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubimbue, 12) -locale* __thiscall basic_streambuf_char_pubimbue(basic_streambuf_char *this, locale *ret, const locale *loc) +/* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDDD@Z */ +/* ?narrow@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADDD@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_narrow, 12) +char __thiscall basic_ios_char_narrow(basic_ios_char *this, char ch, char def) { - FIXME("(%p %p) stub\n", this, loc); - return ret; + FIXME("(%p %c %c) stub\n", this, ch, def); + return def; } -/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JHH@Z */ -/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JHH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff, 20) -fpos_int* __thiscall basic_streambuf_char_pubseekoff(basic_streambuf_char *this, - fpos_int *ret, streamoff off, int way, int mode) +/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PAV32@@Z */ +/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@PEAV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_set, 8) +basic_streambuf_char* __thiscall basic_ios_char_rdbuf_set(basic_ios_char *this, basic_streambuf_char *streambuf) { - FIXME("(%p %lu %d %d) stub\n", this, off, way, mode); - return ret; + FIXME("(%p %p) stub\n", this, streambuf); + return NULL; } -/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@JII@Z */ -/* ?pubseekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@_JII@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekoff_old, 20) -fpos_int* __thiscall basic_streambuf_char_pubseekoff_old(basic_streambuf_char *this, - fpos_int *ret, streamoff off, unsigned int way, unsigned int mode) +/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */ +/* ?rdbuf@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_streambuf@DU?$char_traits@D@std@@@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_rdbuf_get, 4) +basic_streambuf_char* __thiscall basic_ios_char_rdbuf_get(const basic_ios_char *this) { - FIXME("(%p %lu %d %d) stub\n", this, off, way, mode); - return ret; + FIXME("(%p) stub\n", this); + return NULL; } -/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@H@Z */ -/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@H@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos, 36) -fpos_int* __thiscall basic_streambuf_char_pubseekpos(basic_streambuf_char *this, - fpos_int *ret, fpos_int pos, int mode) +/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXH_N@Z */ +/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate_reraise, 12) +void __thiscall basic_ios_char_setstate_reraise(basic_ios_char *this, IOSB_iostate state, MSVCP_bool reraise) { - FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode); - return ret; + FIXME("(%p %x %x) stub\n", this, state, reraise); } -/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAE?AV?$fpos@H@2@V32@I@Z */ -/* ?pubseekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA?AV?$fpos@H@2@V32@I@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubseekpos_old, 36) -fpos_int* __thiscall basic_streambuf_char_pubseekpos_old(basic_streambuf_char *this, - fpos_int *ret, fpos_int pos, unsigned int mode) +/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEXI@Z */ +/* ?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_setstate, 8) +void __thiscall basic_ios_char_setstate(basic_ios_char *this, unsigned int state) { - FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode); - return ret; + basic_ios_char_setstate_reraise(this, (IOSB_iostate)state, FALSE); } -/* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEPAV12@PADH@Z */ -/* ?pubsetbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAPEAV12@PEAD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsetbuf, 12) -basic_streambuf_char* __thiscall basic_streambuf_char_pubsetbuf(basic_streambuf_char *this, char *buf, streamsize count) +/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QAEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@PAV32@@Z */ +/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@PEAV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_set, 8) +basic_ostream_char* __thiscall basic_ios_char_tie_set(basic_ios_char *this, basic_ostream_char *ostream) { - FIXME("(%p %p %lu) stub\n", this, buf, count); + FIXME("(%p %p) stub\n", this, ostream); return NULL; } -/* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?pubsync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_pubsync, 4) -int __thiscall basic_streambuf_char_pubsync(basic_streambuf_char *this) +/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEPAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */ +/* ?tie@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBAPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_tie_get, 4) +basic_ostream_char* __thiscall basic_ios_char_tie_get(const basic_ios_char *this) { - FIXME("(%p) stub\n", this); - return 0; + FIXME("(%p)\n", this); + return NULL; } -/* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?sbumpc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sbumpc, 4) -int __thiscall basic_streambuf_char_sbumpc(basic_streambuf_char *this) +/* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QBEDD@Z */ +/* ?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_char_widen, 8) +char __thiscall basic_ios_char_widen(basic_ios_char *this, char ch) { - FIXME("(%p) stub\n", this); + FIXME("(%p %c)\n", this, ch); return 0; } -/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@JHH@Z */ -/* ?seekoff@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@_JHH@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekoff, 20) -fpos_int* __thiscall basic_streambuf_char_seekoff(basic_streambuf_char *this, - fpos_int *ret, streamoff off, int way, int mode) -{ - FIXME("(%p %lu %d %d) stub\n", this, off, way, mode); - return ret; -} -/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAE?AV?$fpos@H@2@V32@H@Z */ -/* ?seekpos@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA?AV?$fpos@H@2@V32@H@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_seekpos, 36) -fpos_int* __thiscall basic_streambuf_char_seekpos(basic_streambuf_char *this, - fpos_int *ret, fpos_int pos, int mode) +/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAE@XZ */ +/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_ctor, 4) +basic_ios_wchar* __thiscall basic_ios_wchar_ctor(basic_ios_wchar *this) { - FIXME("(%p %s %d) stub\n", this, debugstr_fpos_int(&pos), mode); - return ret; + FIXME("(%p) stub\n", this); + return NULL; } -/* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEPAV12@PADH@Z */ -/* ?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setbuf, 12) -basic_streambuf_char* __thiscall basic_streambuf_char_setbuf(basic_streambuf_char *this, char *buf, streamsize count) +/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */ +/* ??0?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copy_ctor, 8) +basic_ios_wchar* __thiscall basic_ios_wchar_copy_ctor(basic_ios_wchar *this, const basic_ios_wchar *copy) { - FIXME("(%p %p %lu) stub\n", this, buf, count); + FIXME("(%p %p) stub\n", this, copy); return NULL; } -/* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */ -/* ?setg@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setg, 16) -void __thiscall basic_streambuf_char_setg(basic_streambuf_char *this, char *first, char *next, char *last) +/* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UAE@XZ */ +/* ??1?$basic_ios@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_dtor, 4) +void __thiscall basic_ios_wchar_dtor(basic_ios_wchar *this) { - TRACE("(%p %p %p %p)\n", this, first, next, last); - - this->rbuf = first; - this->rpos = next; - this->rsize = last-next; + FIXME("(%p) stub\n", this); } -/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD00@Z */ -/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD00@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp_next, 16) -void __thiscall basic_streambuf_char_setp_next(basic_streambuf_char *this, char *first, char *next, char *last) +DEFINE_THISCALL_WRAPPER(MSVCP_basic_ios_wchar_vector_dtor, 8) +basic_ios_wchar* __thiscall MSVCP_basic_ios_wchar_vector_dtor(basic_ios_wchar *this, unsigned int flags) { - TRACE("(%p %p %p %p)\n", this, first, next, last); + TRACE("(%p %x) stub\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; - this->wbuf = first; - this->wpos = next; - this->wsize = last-next; + for(i=*ptr-1; i>=0; i--) + basic_ios_wchar_dtor(this+i); + MSVCRT_operator_delete(ptr); + } else { + basic_ios_wchar_dtor(this); + if(flags & 1) + MSVCRT_operator_delete(this); + } + + return this; } -/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IAEXPAD0@Z */ -/* ?setp@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAXPEAD0@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_setp, 12) -void __thiscall basic_streambuf_char_setp(basic_streambuf_char *this, char *first, char *last) +/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */ +/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear_reraise, 12) +void __thiscall basic_ios_wchar_clear_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise) { - basic_streambuf_char_setp_next(this, first, first, last); + FIXME("(%p %x %x) stub\n", this, state, reraise); } -/* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?sgetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetc, 4) -int __thiscall basic_streambuf_char_sgetc(basic_streambuf_char *this) +/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */ +/* ?clear@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_clear, 8) +void __thiscall basic_ios_wchar_clear(basic_ios_wchar *this, unsigned int state) { - FIXME("(%p) stub\n", this); - return 0; + basic_ios_wchar_clear_reraise(this, (IOSB_iostate)state, FALSE); } -/* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPADH@Z */ -/* ?sgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEAD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sgetn, 12) -streamsize __thiscall basic_streambuf_char_sgetn(basic_streambuf_char *this, char *ptr, streamsize count) +/* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEAAV12@ABV12@@Z */ +/* ?copyfmt@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAAEAV12@AEBV12@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_copyfmt, 8) +basic_ios_wchar* __thiscall basic_ios_wchar_copyfmt(basic_ios_wchar *this, basic_ios_wchar *copy) { - FIXME("(%p %p %lu) stub\n", this, ptr, count); - return 0; + FIXME("(%p %p) stub\n", this, copy); + return NULL; } -/* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ -/* ?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_showmanyc, 4) -streamsize __thiscall basic_streambuf_char_showmanyc(basic_streambuf_char *this) +/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE_W_W@Z */ +/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA_W_W@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_set, 8) +wchar_t __thiscall basic_ios_wchar_fill_set(basic_ios_wchar *this, wchar_t fill) { - FIXME("(%p) stub\n", this); + FIXME("(%p %c) stub\n", this, fill); return 0; } -/* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?snextc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_snextc, 4) -int __thiscall basic_streambuf_char_snextc(basic_streambuf_char *this) +/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WXZ */ +/* ?fill@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WXZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_fill_get, 4) +wchar_t __thiscall basic_ios_wchar_fill_get(basic_ios_wchar *this) { FIXME("(%p) stub\n", this); return 0; } -/* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */ -/* ?sputbackc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputbackc, 8) -int __thiscall basic_streambuf_char_sputbackc(basic_streambuf_char *this, char ch) +/* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAE?AVlocale@2@ABV32@@Z */ +/* ?imbue@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAA?AVlocale@2@AEBV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_imbue, 12) +locale *__thiscall basic_ios_wchar_imbue(basic_ios_wchar *this, locale *ret, const locale *loc) { - FIXME("(%p %d) stub\n", this, ch); - return 0; + FIXME("(%p %p %p) stub\n", this, ret, loc); + return ret; } -/* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHD@Z */ -/* ?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputc, 8) -int __thiscall basic_streambuf_char_sputc(basic_streambuf_char *this, char ch) +/* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IAEXPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */ +/* ?init@?$basic_ios@_WU?$char_traits@_W@std@@@std@@IEAAXPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_init, 12) +void __thiscall basic_ios_wchar_init(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf, MSVCP_bool isstd) { - FIXME("(%p %d) stub\n", this, ch); - return 0; + FIXME("(%p %p %x) stub\n", this, streambuf, isstd); } -/* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHPBDH@Z */ -/* ?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sputn, 12) -streamsize __thiscall basic_streambuf_char_sputn(basic_streambuf_char *this, const char *ptr, streamsize count) +/* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBED_WD@Z */ +/* ?narrow@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAD_WD@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_narrow, 12) +char __thiscall basic_ios_wchar_narrow(basic_ios_wchar *this, wchar_t ch, char def) { - FIXME("(%p %p %lu) stub\n", this, ptr, count); - return 0; + FIXME("(%p %c %c) stub\n", this, ch, def); + return def; } -/* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEXXZ */ -/* ?stossc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAXXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_stossc, 4) -void __thiscall basic_streambuf_char_stossc(basic_streambuf_char *this) +/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PAV32@@Z */ +/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_set, 8) +/*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_set(basic_ios_wchar *this, /*basic_streambuf_wchar*/void *streambuf) { - FIXME("(%p) stub\n", this); + FIXME("(%p %p) stub\n", this, streambuf); + return NULL; } -/* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QAEHXZ */ -/* ?sungetc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sungetc, 4) -int __thiscall basic_streambuf_char_sungetc(basic_streambuf_char *this) +/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */ +/* ?rdbuf@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_rdbuf_get, 4) +/*basic_streambuf_wchar*/void* __thiscall basic_ios_wchar_rdbuf_get(const basic_ios_wchar *this) { FIXME("(%p) stub\n", this); - return 0; + return NULL; } -/* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ -/* ?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_sync, 4) -int __thiscall basic_streambuf_char_sync(basic_streambuf_char *this) +/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXH_N@Z */ +/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXH_N@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate_reraise, 12) +void __thiscall basic_ios_wchar_setstate_reraise(basic_ios_wchar *this, IOSB_iostate state, MSVCP_bool reraise) { - FIXME("(%p) stub\n", this); - return 0; + FIXME("(%p %x %x) stub\n", this, state, reraise); } -/* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ -/* ?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_uflow, 4) -int __thiscall basic_streambuf_char_uflow(basic_streambuf_char *this) +/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEXI@Z */ +/* ?setstate@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAXI@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_setstate, 8) +void __thiscall basic_ios_wchar_setstate(basic_ios_wchar *this, IOSB_iostate state) { - FIXME("(%p) stub\n", this); - return 0; + basic_ios_wchar_setstate_reraise(this, state, FALSE); } -/* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHXZ */ -/* ?underflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_underflow, 4) -int __thiscall basic_streambuf_char_underflow(basic_streambuf_char *this) +/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QAEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PAV32@@Z */ +/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEAAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@PEAV32@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_set, 8) +/*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_set(basic_ios_wchar *this, /*basic_ostream_wchar*/void *ostream) { - FIXME("(%p) stub\n", this); - return 0; + FIXME("(%p %p) stub\n", this, ostream); + return NULL; } -/* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPADH@Z */ -/* ?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsgetn, 12) -streamsize __thiscall basic_streambuf_char_xsgetn(basic_streambuf_char *this, char *ptr, streamsize count) +/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBEPAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */ +/* ?tie@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBAPEAV?$basic_ostream@_WU?$char_traits@_W@std@@@2@XZ */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_tie_get, 4) +/*basic_ostream_wchar*/void* __thiscall basic_ios_wchar_tie_get(const basic_ios_wchar *this) { - FIXME("(%p %p %lu) stub\n", this, ptr, count); - return 0; + FIXME("(%p)\n", this); + return NULL; } -/* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MAEHPBDH@Z */ -/* ?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z */ -DEFINE_THISCALL_WRAPPER(basic_streambuf_char_xsputn, 12) -streamsize __thiscall basic_streambuf_char_xsputn(basic_streambuf_char *this, const char *ptr, streamsize count) +/* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QBE_WD@Z */ +/* ?widen@?$basic_ios@_WU?$char_traits@_W@std@@@std@@QEBA_WD@Z */ +DEFINE_THISCALL_WRAPPER(basic_ios_wchar_widen, 8) +wchar_t __thiscall basic_ios_wchar_widen(basic_ios_wchar *this, char ch) { - FIXME("(%p %p %lu) stub\n", this, ptr, count); + FIXME("(%p %c)\n", this, ch); return 0; } diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h index 9dc42ab0d68..860c5b7ba9b 100644 --- a/dlls/msvcp90/msvcp90.h +++ b/dlls/msvcp90/msvcp90.h @@ -259,6 +259,7 @@ typedef struct } locale; locale* __thiscall locale_ctor(locale*); +locale* __thiscall locale_copy_ctor(locale*, const locale*); void __thiscall locale_dtor(locale*); /* class _Lockit */ -- 2.11.4.GIT