msvcirt: Implement remainder of fstream class.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Gijs Vermeulen <gijsvrm@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
(cherry picked from commit 4981785f0f)
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
This commit is contained in:
Gijs Vermeulen 2021-02-21 18:05:02 +01:00 committed by Michael Stefaniuc
parent f40379a9d1
commit c3674b30f2
5 changed files with 625 additions and 85 deletions

View File

@ -4811,6 +4811,66 @@ stdiobuf* __thiscall stdiostream_rdbuf(const iostream *this)
return (stdiobuf*) istream_get_ios(&this->base1)->sb;
}
/* ??0fstream@@QAE@ABV0@@Z */
/* ??0fstream@@QEAA@AEBV0@@Z */
DEFINE_THISCALL_WRAPPER(fstream_copy_ctor, 12)
iostream* __thiscall fstream_copy_ctor(iostream *this, const iostream *copy, BOOL virt_init)
{
TRACE("(%p %p %d)\n", this, copy, virt_init);
iostream_internal_copy_ctor(this, copy, &MSVCP_fstream_vtable, virt_init);
return this;
}
/* ??0fstream@@QAE@HPADH@Z */
/* ??0fstream@@QEAA@HPEADH@Z */
DEFINE_THISCALL_WRAPPER(fstream_buffer_ctor, 20)
iostream* __thiscall fstream_buffer_ctor(iostream *this, filedesc fd, char *buffer, int length, BOOL virt_init)
{
ios *base;
filebuf *fb = MSVCRT_operator_new(sizeof(filebuf));
TRACE("(%p %d %p %d %d)\n", this, fd, buffer, length, virt_init);
if (!fb) {
FIXME("out of memory\n");
return NULL;
}
filebuf_fd_reserve_ctor(fb, fd, buffer, length);
iostream_internal_sb_ctor(this, &fb->base, &MSVCP_fstream_vtable, virt_init);
base = istream_get_ios(&this->base1);
base->delbuf = 1;
return this;
}
/* ??0fstream@@QAE@H@Z */
/* ??0fstream@@QEAA@H@Z */
DEFINE_THISCALL_WRAPPER(fstream_fd_ctor, 12)
iostream* __thiscall fstream_fd_ctor(iostream *this, filedesc fd, BOOL virt_init)
{
ios *base;
filebuf *fb = MSVCRT_operator_new(sizeof(filebuf));
TRACE("(%p %d %d)\n", this, fd, virt_init);
if (!fb) {
FIXME("out of memory\n");
return NULL;
}
filebuf_fd_ctor(fb, fd);
iostream_internal_sb_ctor(this, &fb->base, &MSVCP_fstream_vtable, virt_init);
base = istream_get_ios(&this->base1);
base->delbuf = 1;
return this;
}
/* ??0fstream@@QAE@PBDHH@Z */
/* ??0fstream@@QEAA@PEBDHH@Z */
DEFINE_THISCALL_WRAPPER(fstream_open_ctor, 20)
@ -4838,6 +4898,103 @@ iostream* __thiscall fstream_open_ctor(iostream *this, const char *name, ios_ope
return this;
}
/* ??0fstream@@QAE@XZ */
/* ??0fstream@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(fstream_ctor, 8)
iostream* __thiscall fstream_ctor(iostream *this, BOOL virt_init)
{
return fstream_fd_ctor(this, -1, virt_init);
}
/* ?rdbuf@fstream@@QBEPAVfilebuf@@XZ */
/* ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ */
DEFINE_THISCALL_WRAPPER(fstream_rdbuf, 4)
filebuf* __thiscall fstream_rdbuf(const iostream *this)
{
TRACE("(%p)\n", this);
return (filebuf*) istream_get_ios(&this->base1)->sb;
}
/* ?fd@fstream@@QBEHXZ */
/* ?fd@fstream@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER(fstream_fd, 4)
filedesc __thiscall fstream_fd(iostream *this)
{
TRACE("(%p)\n", this);
return filebuf_fd(fstream_rdbuf(this));
}
/* ?attach@fstream@@QAEXH@Z */
/* ?attach@fstream@@QEAAXH@Z */
DEFINE_THISCALL_WRAPPER(fstream_attach, 8)
void __thiscall fstream_attach(iostream *this, filedesc fd)
{
ios *base = istream_get_ios(&this->base1);
TRACE("(%p %d)\n", this, fd);
if (filebuf_attach(fstream_rdbuf(this), fd) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
}
/* ?close@fstream@@QAEXXZ */
/* ?close@fstream@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(fstream_close, 4)
void __thiscall fstream_close(iostream *this)
{
ios *base = istream_get_ios(&this->base1);
TRACE("(%p)\n", this);
if (filebuf_close(fstream_rdbuf(this)) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
else
ios_clear(base, IOSTATE_goodbit);
}
/* ?is_open@fstream@@QBEHXZ */
/* ?is_open@fstream@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER(fstream_is_open, 4)
int __thiscall fstream_is_open(const iostream *this)
{
TRACE("(%p)\n", this);
return filebuf_is_open(fstream_rdbuf(this));
}
/* ?open@fstream@@QAEXPBDHH@Z */
/* ?open@fstream@@QEAAXPEBDHH@Z */
DEFINE_THISCALL_WRAPPER(fstream_open, 16)
void __thiscall fstream_open(iostream *this, const char *name, ios_open_mode mode, int protection)
{
ios *base = istream_get_ios(&this->base1);
TRACE("(%p %s %d %d)\n", this, name, mode, protection);
if (filebuf_open(fstream_rdbuf(this), name, mode|OPENMODE_out, protection) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
}
/* ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z */
/* ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z */
DEFINE_THISCALL_WRAPPER(fstream_setbuf, 12)
streambuf* __thiscall fstream_setbuf(iostream *this, char *buffer, int length)
{
ios *base = istream_get_ios(&this->base1);
filebuf* fb = fstream_rdbuf(this);
TRACE("(%p %p %d)\n", this, buffer, length);
if (filebuf_is_open(fb)) {
ios_clear(base, base->state | IOSTATE_failbit);
return NULL;
}
return filebuf_setbuf(fb, buffer, length);
}
/* ?setmode@fstream@@QAEHH@Z */
/* ?setmode@fstream@@QEAAHH@Z */
DEFINE_THISCALL_WRAPPER(fstream_setmode, 8)
int __thiscall fstream_setmode(iostream *this, int mode)
{
TRACE("(%p %d)\n", this, mode);
return filebuf_setmode(fstream_rdbuf(this), mode);
}
/* ??0Iostream_init@@QAE@AAVios@@H@Z */
/* ??0Iostream_init@@QEAA@AEAVios@@H@Z */
DEFINE_THISCALL_WRAPPER(Iostream_init_ios_ctor, 12)

View File

@ -16,16 +16,16 @@
@ cdecl -arch=win64 ??0filebuf@@QEAA@HPEADH@Z(ptr long ptr long) filebuf_fd_reserve_ctor
@ thiscall -arch=win32 ??0filebuf@@QAE@XZ(ptr) filebuf_ctor
@ cdecl -arch=win64 ??0filebuf@@QEAA@XZ(ptr) filebuf_ctor
@ stub -arch=win32 ??0fstream@@QAE@ABV0@@Z # __thiscall fstream::fstream(class fstream const &)
@ stub -arch=win64 ??0fstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0fstream@@QAE@H@Z # __thiscall fstream::fstream(int)
@ stub -arch=win64 ??0fstream@@QEAA@H@Z
@ stub -arch=win32 ??0fstream@@QAE@HPADH@Z # __thiscall fstream::fstream(int,char *,int)
@ stub -arch=win64 ??0fstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0fstream@@QAE@ABV0@@Z(ptr ptr long) fstream_copy_ctor
@ cdecl -arch=win64 ??0fstream@@QEAA@AEBV0@@Z(ptr ptr long) fstream_copy_ctor
@ thiscall -arch=win32 ??0fstream@@QAE@H@Z(ptr long long) fstream_fd_ctor
@ cdecl -arch=win64 ??0fstream@@QEAA@H@Z(ptr long long) fstream_fd_ctor
@ thiscall -arch=win32 ??0fstream@@QAE@HPADH@Z(ptr long ptr long long) fstream_buffer_ctor
@ cdecl -arch=win64 ??0fstream@@QEAA@HPEADH@Z(ptr long ptr long long) fstream_buffer_ctor
@ thiscall -arch=win32 ??0fstream@@QAE@PBDHH@Z(ptr str long long long) fstream_open_ctor
@ cdecl -arch=win64 ??0fstream@@QEAA@PEBDHH@Z(ptr str long long long) fstream_open_ctor
@ stub -arch=win32 ??0fstream@@QAE@XZ # __thiscall fstream::fstream(void)
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ thiscall -arch=win32 ??0fstream@@QAE@XZ(ptr long) fstream_ctor
@ cdecl -arch=win64 ??0fstream@@QEAA@XZ(ptr long) fstream_ctor
@ thiscall -arch=win32 ??0ifstream@@QAE@ABV0@@Z(ptr ptr long) ifstream_copy_ctor
@ cdecl -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z(ptr ptr long) ifstream_copy_ctor
@ thiscall -arch=win32 ??0ifstream@@QAE@H@Z(ptr long long) ifstream_fd_ctor
@ -176,8 +176,8 @@
@ cdecl -arch=win64 ??4exception@@QEAAAEAV0@AEBV0@@Z(ptr ptr) MSVCP_exception_assign
@ thiscall -arch=win32 ??4filebuf@@QAEAAV0@ABV0@@Z(ptr ptr) filebuf_assign
@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0@AEBV0@@Z(ptr ptr) filebuf_assign
@ stub -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z # class fstream & __thiscall fstream::operator=(class fstream &)
@ stub -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z
@ thiscall -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z(ptr ptr) iostream_assign
@ cdecl -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z(ptr ptr) iostream_assign
@ thiscall -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z(ptr ptr) istream_assign
@ cdecl -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@Z(ptr ptr) istream_assign
@ thiscall -arch=win32 ??4ios@@IAEAAV0@ABV0@@Z(ptr ptr) ios_assign
@ -404,8 +404,8 @@
@ cdecl -arch=win64 ?allocate@streambuf@@IEAAHXZ(ptr) streambuf_allocate
@ thiscall -arch=win32 ?attach@filebuf@@QAEPAV1@H@Z(ptr long) filebuf_attach
@ cdecl -arch=win64 ?attach@filebuf@@QEAAPEAV1@H@Z(ptr long) filebuf_attach
@ stub -arch=win32 ?attach@fstream@@QAEXH@Z # void __thiscall fstream::attach(int)
@ stub -arch=win64 ?attach@fstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@fstream@@QAEXH@Z(ptr long) fstream_attach
@ cdecl -arch=win64 ?attach@fstream@@QEAAXH@Z(ptr long) fstream_attach
@ thiscall -arch=win32 ?attach@ifstream@@QAEXH@Z(ptr long) ifstream_attach
@ cdecl -arch=win64 ?attach@ifstream@@QEAAXH@Z(ptr long) ifstream_attach
@ thiscall -arch=win32 ?attach@ofstream@@QAEXH@Z(ptr long) ofstream_attach
@ -426,8 +426,8 @@
@ extern ?clog@@3Vostream_withassign@@A MSVCP_clog
@ thiscall -arch=win32 ?close@filebuf@@QAEPAV1@XZ(ptr) filebuf_close
@ cdecl -arch=win64 ?close@filebuf@@QEAAPEAV1@XZ(ptr) filebuf_close
@ stub -arch=win32 ?close@fstream@@QAEXXZ # void __thiscall fstream::close(void)
@ stub -arch=win64 ?close@fstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@fstream@@QAEXXZ(ptr) fstream_close
@ cdecl -arch=win64 ?close@fstream@@QEAAXXZ(ptr) fstream_close
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) ifstream_close
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) ifstream_close
@ thiscall -arch=win32 ?close@ofstream@@QAEXXZ(ptr) ofstream_close
@ -470,8 +470,8 @@
@ cdecl -arch=win64 ?fail@ios@@QEBAHXZ(ptr) ios_fail
@ thiscall -arch=win32 ?fd@filebuf@@QBEHXZ(ptr) filebuf_fd
@ cdecl -arch=win64 ?fd@filebuf@@QEBAHXZ(ptr) filebuf_fd
@ stub -arch=win32 ?fd@fstream@@QBEHXZ # int __thiscall fstream::fd(void)const
@ stub -arch=win64 ?fd@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@fstream@@QBEHXZ(ptr) fstream_fd
@ cdecl -arch=win64 ?fd@fstream@@QEBAHXZ(ptr) fstream_fd
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) ifstream_fd
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) ifstream_fd
@ thiscall -arch=win32 ?fd@ofstream@@QBEHXZ(ptr) ofstream_fd
@ -539,8 +539,8 @@
@ cdecl -arch=win64 ?ipfx@istream@@QEAAHH@Z(ptr long) istream_ipfx
@ thiscall -arch=win32 ?is_open@filebuf@@QBEHXZ(ptr) filebuf_is_open
@ cdecl -arch=win64 ?is_open@filebuf@@QEBAHXZ(ptr) filebuf_is_open
@ stub -arch=win32 ?is_open@fstream@@QBEHXZ # int __thiscall fstream::is_open(void)const
@ stub -arch=win64 ?is_open@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@fstream@@QBEHXZ(ptr) fstream_is_open
@ cdecl -arch=win64 ?is_open@fstream@@QEBAHXZ(ptr) fstream_is_open
@ thiscall -arch=win32 ?is_open@ifstream@@QBEHXZ(ptr) ifstream_is_open
@ cdecl -arch=win64 ?is_open@ifstream@@QEBAHXZ(ptr) ifstream_is_open
@ thiscall -arch=win32 ?is_open@ofstream@@QBEHXZ(ptr) ofstream_is_open
@ -564,8 +564,8 @@
@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) ios_oct
@ thiscall -arch=win32 ?open@filebuf@@QAEPAV1@PBDHH@Z(ptr str long long) filebuf_open
@ cdecl -arch=win64 ?open@filebuf@@QEAAPEAV1@PEBDHH@Z(ptr str long long) filebuf_open
@ stub -arch=win32 ?open@fstream@@QAEXPBDHH@Z # void __thiscall fstream::open(char const *,int,int)
@ stub -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@fstream@@QAEXPBDHH@Z(ptr str long long) fstream_open
@ cdecl -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z(ptr str long long) fstream_open
@ thiscall -arch=win32 ?open@ifstream@@QAEXPBDHH@Z(ptr str long long) ifstream_open
@ cdecl -arch=win64 ?open@ifstream@@QEAAXPEBDHH@Z(ptr str long long) ifstream_open
@ thiscall -arch=win32 ?open@ofstream@@QAEXPBDHH@Z(ptr str long long) ofstream_open
@ -613,8 +613,8 @@
@ cdecl -arch=win64 ?putback@istream@@QEAAAEAV1@D@Z(ptr long) istream_putback
@ thiscall -arch=win32 ?pword@ios@@QBEAAPAXH@Z(ptr long) ios_pword
@ cdecl -arch=win64 ?pword@ios@@QEBAAEAPEAXH@Z(ptr long) ios_pword
@ stub -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ # class filebuf * __thiscall fstream::rdbuf(void)const
@ stub -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ(ptr) fstream_rdbuf
@ cdecl -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ(ptr) fstream_rdbuf
@ thiscall -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ(ptr) ifstream_rdbuf
@ cdecl -arch=win64 ?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ(ptr) ifstream_rdbuf
@ thiscall -arch=win32 ?rdbuf@ios@@QBEPAVstreambuf@@XZ(ptr) ios_rdbuf
@ -661,8 +661,8 @@
@ cdecl -arch=win64 ?setb@streambuf@@IEAAXPEAD0H@Z(ptr ptr ptr long) streambuf_setb
@ thiscall -arch=win32 ?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z(ptr ptr long) filebuf_setbuf
@ cdecl -arch=win64 ?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) filebuf_setbuf
@ stub -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z # class streambuf * __thiscall fstream::setbuf(char *,int)
@ stub -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) fstream_setbuf
@ cdecl -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) fstream_setbuf
@ thiscall -arch=win32 ?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) ifstream_setbuf
@ cdecl -arch=win64 ?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) ifstream_setbuf
@ thiscall -arch=win32 ?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) ofstream_setbuf
@ -683,8 +683,8 @@
@ cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) streambuf_setlock
@ thiscall -arch=win32 ?setmode@filebuf@@QAEHH@Z(ptr long) filebuf_setmode
@ cdecl -arch=win64 ?setmode@filebuf@@QEAAHH@Z(ptr long) filebuf_setmode
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z # int __thiscall fstream::setmode(int)
@ stub -arch=win64 ?setmode@fstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@fstream@@QAEHH@Z(ptr long) fstream_setmode
@ cdecl -arch=win64 ?setmode@fstream@@QEAAHH@Z(ptr long) fstream_setmode
@ thiscall -arch=win32 ?setmode@ifstream@@QAEHH@Z(ptr long) ifstream_setmode
@ cdecl -arch=win64 ?setmode@ifstream@@QEAAHH@Z(ptr long) ifstream_setmode
@ thiscall -arch=win32 ?setmode@ofstream@@QAEHH@Z(ptr long) ofstream_setmode

View File

@ -455,9 +455,21 @@ static void (*__thiscall p_stdiostream_vbase_dtor)(iostream*);
static iostream* (*__thiscall p_stdiostream_assign)(iostream*, const iostream*);
/* fstream */
static iostream* (*__thiscall p_fstream_open_ctor)(iostream*, const char*, ios_open_mode, int, BOOL);
static iostream* (*__thiscall p_fstream_copy_ctor)(iostream*, const iostream*, BOOL);
static iostream* (*__thiscall p_fstream_buffer_ctor)(iostream*, filedesc, char*, int, BOOL);
static iostream* (*__thiscall p_fstream_fd_ctor)(iostream*, filedesc fd, BOOL virt_init);
static iostream* (*__thiscall p_fstream_open_ctor)(iostream*, const char *name, ios_open_mode, int, BOOL);
static iostream* (*__thiscall p_fstream_ctor)(iostream*, BOOL);
static void (*__thiscall p_fstream_dtor)(ios*);
static void (*__thiscall p_fstream_vbase_dtor)(iostream*);
static void (*__thiscall p_fstream_attach)(iostream*, filedesc);
static void (*__thiscall p_fstream_close)(iostream*);
static filedesc (*__thiscall p_fstream_fd)(iostream*);
static int (*__thiscall p_fstream_is_open)(const iostream*);
static void (*__thiscall p_fstream_open)(iostream*, const char*, ios_open_mode, int);
static filebuf* (*__thiscall p_fstream_rdbuf)(const iostream*);
static streambuf* (*__thiscall p_fstream_setbuf)(iostream*, char*, int);
static int (*__thiscall p_fstream_setmode)(iostream*, int);
/* Iostream_init */
static void* (*__thiscall p_Iostream_init_ios_ctor)(void*, ios*, int);
@ -794,9 +806,21 @@ static BOOL init(void)
SET(p_stdiostream_vbase_dtor, "??_Dstdiostream@@QEAAXXZ");
SET(p_stdiostream_assign, "??4stdiostream@@QEAAAEAV0@AEAV0@@Z");
SET(p_fstream_copy_ctor, "??0fstream@@QEAA@AEBV0@@Z");
SET(p_fstream_buffer_ctor, "??0fstream@@QEAA@HPEADH@Z");
SET(p_fstream_fd_ctor, "??0fstream@@QEAA@H@Z");
SET(p_fstream_open_ctor, "??0fstream@@QEAA@PEBDHH@Z");
SET(p_fstream_ctor, "??0fstream@@QEAA@XZ");
SET(p_fstream_dtor, "??1fstream@@UEAA@XZ");
SET(p_fstream_vbase_dtor, "??_Dfstream@@QEAAXXZ");
SET(p_fstream_attach, "?attach@fstream@@QEAAXH@Z");
SET(p_fstream_close, "?close@fstream@@QEAAXXZ");
SET(p_fstream_fd, "?fd@fstream@@QEBAHXZ");
SET(p_fstream_is_open, "?is_open@fstream@@QEBAHXZ");
SET(p_fstream_open, "?open@fstream@@QEAAXPEBDHH@Z");
SET(p_fstream_rdbuf, "?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ");
SET(p_fstream_setbuf, "?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z");
SET(p_fstream_setmode, "?setmode@fstream@@QEAAHH@Z");
SET(p_Iostream_init_ios_ctor, "??0Iostream_init@@QEAA@AEAVios@@H@Z");
@ -1045,9 +1069,21 @@ static BOOL init(void)
SET(p_stdiostream_vbase_dtor, "??_Dstdiostream@@QAEXXZ");
SET(p_stdiostream_assign, "??4stdiostream@@QAEAAV0@AAV0@@Z");
SET(p_fstream_copy_ctor, "??0fstream@@QAE@ABV0@@Z");
SET(p_fstream_fd_ctor, "??0fstream@@QAE@H@Z");
SET(p_fstream_buffer_ctor, "??0fstream@@QAE@HPADH@Z");
SET(p_fstream_open_ctor, "??0fstream@@QAE@PBDHH@Z");
SET(p_fstream_ctor, "??0fstream@@QAE@XZ");
SET(p_fstream_dtor, "??1fstream@@UAE@XZ");
SET(p_fstream_vbase_dtor, "??_Dfstream@@QAEXXZ");
SET(p_fstream_attach, "?attach@fstream@@QAEXH@Z");
SET(p_fstream_close, "?close@fstream@@QAEXXZ");
SET(p_fstream_fd, "?fd@fstream@@QBEHXZ");
SET(p_fstream_is_open, "?is_open@fstream@@QBEHXZ");
SET(p_fstream_open, "?open@fstream@@QAEXPBDHH@Z");
SET(p_fstream_rdbuf, "?rdbuf@fstream@@QBEPAVfilebuf@@XZ");
SET(p_fstream_setbuf, "?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z");
SET(p_fstream_setmode, "?setmode@fstream@@QAEHH@Z");
SET(p_Iostream_init_ios_ctor, "??0Iostream_init@@QAE@AAVios@@H@Z");
@ -4651,7 +4687,7 @@ static void test_ofstream(void)
call_func5(p_ofstream_buffer_ctor, &ofs, -1, NULL, 0, TRUE);
ok(ofs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", ofs.base_ios.sb->base);
ok(ofs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", ofs.base_ios.sb->ebuf);
ok(ofs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", pfb->base.unbuffered);
ok(ofs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", ofs.base_ios.sb->unbuffered);
ok(ofs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", ofs.base_ios.sb->allocated);
psb = call_func3(p_ofstream_setbuf, &ofs, buffer, ARRAY_SIZE(buffer));
@ -8341,21 +8377,368 @@ static void test_std_streams(void)
static void test_fstream(void)
{
iostream fs, *pfs;
const char *filename = "fstream_test";
iostream fs, fs_copy, *pfs;
char buffer[64];
streambuf *psb;
filebuf *pfb;
ostream *pos;
istream *pis;
int i;
char st[8];
const char *filename = "fstream_test";
int i, ret, fd;
memset(&fs, 0xab, sizeof(iostream));
/* constructors/destructors */
pfs = call_func2(p_fstream_ctor, &fs, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(fs.base1.extract_delim == 0, "expected 0 got %d\n", fs.base1.extract_delim);
ok(fs.base1.count == 0, "expected 0 got %d\n", fs.base1.count);
ok(fs.base2.unknown == 0, "expected 0 got %d\n", fs.base2.unknown);
ok(fs.base_ios.sb != NULL, "expected not %p got %p\n", NULL, fs.base_ios.sb);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(fs.base_ios.tie == NULL, "expected %p got %p\n", NULL, fs.base_ios.tie);
ok(fs.base_ios.flags == FLAGS_skipws, "expected %x got %x\n", FLAGS_skipws, fs.base_ios.flags);
ok(fs.base_ios.precision == 6, "expected 6 got %d\n", fs.base_ios.precision);
ok(fs.base_ios.fill == ' ', "expected 32 got %d\n", fs.base_ios.fill);
ok(fs.base_ios.width == 0, "expected 0 got %d\n", fs.base_ios.width);
ok(fs.base_ios.do_lock == -1, "expected -1 got %d\n", fs.base_ios.do_lock);
ok(pfb->fd == -1, "wrong fd, expected -1 got %d\n", pfb->fd);
ok(pfb->close == 0, "wrong value, expected 0 got %d\n", pfb->close);
ok(pfb->base.allocated == 0, "wrong allocate value, expected 0 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base == NULL, "wrong buffer, expected %p got %p\n", NULL, pfb->base.base);
ok(pfb->base.ebuf == NULL, "wrong ebuf, expected %p got %p\n", NULL, pfb->base.ebuf);
ok(pfb->fd == -1, "wrong fd, expected 0 got %d\n", pfb->fd);
call_func1(p_fstream_vbase_dtor, &fs);
pfs = call_func3(p_fstream_fd_ctor, &fs, 42, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(pfb->base.allocated == 0, "wrong allocate value, expected 0 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base == NULL, "wrong buffer, expected %p got %p\n", NULL, pfb->base.base);
ok(pfb->base.ebuf == NULL, "wrong ebuf, expected %p got %p\n", NULL, pfb->base.ebuf);
ok(pfb->fd == 42, "wrong fd, expected 42 got %d\n", pfb->fd);
ok(pfb->close == 0, "wrong value, expected 0 got %d\n", pfb->close);
pfs = call_func3(p_fstream_copy_ctor, &fs_copy, &fs, TRUE);
pfb = (filebuf*) fs_copy.base_ios.sb;
ok(pfs == &fs_copy, "wrong return, expected %p got %p\n", &fs_copy, pfs);
ok(fs_copy.base_ios.sb == fs.base_ios.sb, "expected shared streambuf\n");
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fs_copy.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs_copy.base_ios.state);
call_func1(p_fstream_vbase_dtor, &fs_copy);
call_func1(p_fstream_dtor, &fs.base_ios);
pfs = call_func5(p_fstream_buffer_ctor, &fs, 53, buffer, ARRAY_SIZE(buffer), TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(pfb->base.allocated == 0, "wrong allocate value, expected 0 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base == buffer, "wrong buffer, expected %p got %p\n", buffer, pfb->base.base);
ok(pfb->base.ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), pfb->base.ebuf);
ok(pfb->fd == 53, "wrong fd, expected 53 got %d\n", pfb->fd);
ok(pfb->close == 0, "wrong value, expected 0 got %d\n", pfb->close);
call_func1(p_fstream_dtor, &fs.base_ios);
pfs = call_func5(p_fstream_buffer_ctor, &fs, 64, NULL, 0, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(pfb->base.allocated == 0, "wrong allocate value, expected 0 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base == NULL, "wrong buffer, expected %p got %p\n", NULL, pfb->base.base);
ok(pfb->base.ebuf == NULL, "wrong ebuf, expected %p got %p\n", NULL, pfb->base.ebuf);
ok(pfb->fd == 64, "wrong fd, expected 64 got %d\n", pfb->fd);
ok(pfb->close == 0, "wrong value, expected 0 got %d\n", pfb->close);
call_func1(p_fstream_vbase_dtor, &fs);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_out, filebuf_openprot, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(pfb->base.allocated == 1, "wrong allocate value, expected 1 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base != NULL, "wrong buffer, expected not %p got %p\n", NULL, pfb->base.base);
ok(pfb->base.ebuf != NULL, "wrong ebuf, expected not %p got %p\n", NULL, pfb->base.ebuf);
ok(pfb->fd != -1, "wrong fd, expected not -1 got %d\n", pfb->fd);
fd = pfb->fd;
ok(pfb->close == 1, "wrong value, expected 1 got %d\n", pfb->close);
call_func1(p_fstream_vbase_dtor, &fs);
ok(_close(fd) == -1, "expected fstream to close opened file\n");
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_in, filebuf_openprot, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(fs.base_ios.delbuf == 1, "expected 1 got %d\n", fs.base_ios.delbuf);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
ok(pfb->base.allocated == 1, "wrong allocate value, expected 1 got %d\n", pfb->base.allocated);
ok(pfb->base.unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", pfb->base.unbuffered);
ok(pfb->base.base != NULL, "wrong buffer, expected not %p got %p\n", NULL, pfb->base.base);
ok(pfb->base.ebuf != NULL, "wrong ebuf, expected not %p got %p\n", NULL, pfb->base.ebuf);
ok(pfb->fd != -1, "wrong fd, expected not -1 got %d\n", pfb->fd);
fd = pfb->fd;
ok(pfb->close == 1, "wrong value, expected 1 got %d\n", pfb->close);
call_func1(p_fstream_vbase_dtor, &fs);
ok(_close(fd) == -1, "expected fstream to close opened file\n");
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
/* setbuf */
call_func5(p_fstream_buffer_ctor, &fs, -1, NULL, 0, TRUE);
ok(fs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
psb = call_func3(p_fstream_setbuf, &fs, buffer, ARRAY_SIZE(buffer));
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer, "wrong buffer, expected %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, NULL, 0);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer, "wrong buffer, expected %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
call_func1(p_fstream_vbase_dtor, &fs);
call_func2(p_fstream_ctor, &fs, TRUE);
ok(fs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, buffer, ARRAY_SIZE(buffer));
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer, "wrong buffer, expected %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, NULL, 0);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer, "wrong buffer, expected %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, buffer + 8, ARRAY_SIZE(buffer) - 8);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer + 8, "wrong buffer, expected %p got %p\n", buffer + 8, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, buffer + 8, 0);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer + 8, "wrong buffer, expected %p got %p\n", buffer + 8, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, buffer + 4, ARRAY_SIZE(buffer) - 4);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer + 4, "wrong buffer, expected %p got %p\n", buffer + 4, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
psb = call_func3(p_fstream_setbuf, &fs, NULL, 5);
ok(psb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, psb);
ok(fs.base_ios.sb->base == buffer + 4, "wrong buffer, expected %p got %p\n", buffer + 4, fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == buffer + ARRAY_SIZE(buffer), "wrong ebuf, expected %p got %p\n", buffer + ARRAY_SIZE(buffer), fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
call_func1(p_fstream_vbase_dtor, &fs);
/* setbuf - seems to be a nop and always return NULL in those other cases */
pfs = call_func5(p_fstream_buffer_ctor, &fs, 42, NULL, 0, TRUE);
ok(fs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, buffer, ARRAY_SIZE(buffer));
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, NULL, 0);
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base == NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf == NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 1, "wrong unbuffered value, expected 1 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 0, "wrong allocated value, expected 0 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
call_func1(p_fstream_vbase_dtor, &fs);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_out, filebuf_openprot, TRUE);
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, NULL, 0);
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base != NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf != NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 1, "wrong allocated value, expected 1 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, buffer, ARRAY_SIZE(buffer));
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base != NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->base != buffer, "wrong base value, expected not %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 1, "wrong allocated value, expected 1 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
call_func1(p_fstream_vbase_dtor, &fs);
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_in, filebuf_openprot, TRUE);
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, NULL, 0);
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base != NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->ebuf != NULL, "wrong ebuf value, expected NULL got %p\n", fs.base_ios.sb->ebuf);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 1, "wrong allocated value, expected 1 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
fs.base_ios.state = IOSTATE_eofbit;
psb = call_func3(p_fstream_setbuf, &fs, buffer, ARRAY_SIZE(buffer));
ok(psb == NULL, "wrong return, expected NULL got %p\n", psb);
ok(fs.base_ios.sb->base != NULL, "wrong base value, expected NULL got %p\n", fs.base_ios.sb->base);
ok(fs.base_ios.sb->base != buffer, "wrong base value, expected not %p got %p\n", buffer, fs.base_ios.sb->base);
ok(fs.base_ios.sb->unbuffered == 0, "wrong unbuffered value, expected 0 got %d\n", fs.base_ios.sb->unbuffered);
ok(fs.base_ios.sb->allocated == 1, "wrong allocated value, expected 1 got %d\n", fs.base_ios.sb->allocated);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
call_func1(p_fstream_vbase_dtor, &fs);
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
/* attach */
pfs = call_func2(p_fstream_ctor, &fs, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
call_func2(p_fstream_attach, &fs, 42);
ok(fs.base_ios.state == IOSTATE_goodbit, "attaching on vanilla stream set some state bits\n");
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fd == 42, "wrong fd, expected 42 got %d\n", fd);
ok(pfb->close == 0, "wrong close value, expected 0 got %d\n", pfb->close);
fs.base_ios.state = IOSTATE_eofbit;
call_func2(p_fstream_attach, &fs, 53);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "attaching on already setup stream did not set failbit\n");
ok(fd == 42, "wrong fd, expected 42 got %d\n", fd);
call_func1(p_fstream_vbase_dtor, &fs);
/* fd */
pfs = call_func2(p_fstream_ctor, &fs, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fd == -1, "wrong fd, expected -1 but got %d\n", fd);
call_func1(p_fstream_vbase_dtor, &fs);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_in, filebuf_openprot, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fd == pfb->fd, "wrong fd, expected %d but got %d\n", pfb->fd, fd);
call_func1(p_fstream_vbase_dtor, &fs);
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
pfs = call_func2(p_fstream_ctor, &fs, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fd == -1, "wrong fd, expected -1 but got %d\n", fd);
call_func1(p_fstream_vbase_dtor, &fs);
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_out, filebuf_openprot, TRUE);
pfb = (filebuf*) fs.base_ios.sb;
ok(pfs == &fs, "wrong return, expected %p got %p\n", &fs, pfs);
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ok(fd == pfb->fd, "wrong fd, expected %d but got %d\n", pfb->fd, fd);
/* rdbuf */
pfb = (filebuf*) call_func1(p_fstream_rdbuf, &fs);
ok((streambuf*) pfb == fs.base_ios.sb, "wrong return, expected %p got %p\n", fs.base_ios.sb, pfb);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
/* setmode */
ret = (int) call_func2(p_fstream_setmode, &fs, filebuf_binary);
ok(ret == filebuf_text, "wrong return, expected %d got %d\n", filebuf_text, ret);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ret = (int) call_func2(p_fstream_setmode, &fs, filebuf_binary);
ok(ret == filebuf_binary, "wrong return, expected %d got %d\n", filebuf_binary, ret);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ret = (int) call_func2(p_fstream_setmode, &fs, filebuf_text);
ok(ret == filebuf_binary, "wrong return, expected %d got %d\n", filebuf_binary, ret);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
ret = (int) call_func2(p_fstream_setmode, &fs, 0x9000);
ok(ret == -1, "wrong return, expected -1 got %d\n", ret);
ok(fs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
/* close && is_open */
ok((int) call_func1(p_fstream_is_open, &fs) == 1, "expected fstream to be open\n");
fs.base_ios.state = IOSTATE_eofbit | IOSTATE_failbit;
call_func1(p_fstream_close, &fs);
ok(fs.base_ios.state == IOSTATE_goodbit, "close did not clear state = %d\n", fs.base_ios.state);
fs.base_ios.state = IOSTATE_eofbit;
call_func1(p_fstream_close, &fs);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "close on a closed stream did not set failbit\n");
ok((int) call_func1(p_fstream_is_open, &fs) == 0, "expected fstream to not be open\n");
ok(_close(fd) == -1, "expected close to close the opened file\n");
/* open */
fs.base_ios.state = IOSTATE_eofbit;
call_func4(p_fstream_open, &fs, filename, OPENMODE_out, filebuf_openprot);
fd = (int) call_func1(p_fstream_fd, &fs);
ok(fd != -1, "wrong fd, expected not -1 got %d\n", fd);
ok(fs.base_ios.state == IOSTATE_eofbit, "open did not succeed\n");
call_func4(p_fstream_open, &fs, filename, OPENMODE_out, filebuf_openprot);
ok(fs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "second open did not set failbit\n");
call_func1(p_fstream_close, &fs);
call_func1(p_fstream_vbase_dtor, &fs);
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
/* constructors */
pfs = call_func5(p_fstream_open_ctor, &fs, filename, OPENMODE_out, filebuf_openprot, TRUE);
ok(pfs == &fs, "constructor returned wrong pointer, expected %p got %p\n", &fs, pfs);
ok(fs.base_ios.state == IOSTATE_goodbit, "wrong stream state, expected %d got %d\n", IOSTATE_goodbit, fs.base_ios.state);
pfb = (filebuf*) fs.base_ios.sb;
ok((int) call_func1(p_filebuf_is_open, pfb) == TRUE, "expected filebuf to be open\n");
ok(fs.base_ios.delbuf == 1, "internal filebuf not makred for deletion\n");
ok(fs.base_ios.delbuf == 1, "internal filebuf not marked for deletion\n");
/* integration with ostream */
pos = call_func2(p_ostream_print_str, (ostream*) &fs.base2, "ftest ");

View File

@ -10,16 +10,16 @@
@ cdecl -arch=win64 ??0filebuf@@QEAA@HPEADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0filebuf@@QAE@XZ(ptr) msvcirt.??0filebuf@@QAE@XZ
@ cdecl -arch=win64 ??0filebuf@@QEAA@XZ(ptr) msvcirt.??0filebuf@@QEAA@XZ
@ stub -arch=win32 ??0fstream@@QAE@ABV0@@Z
@ stub -arch=win64 ??0fstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0fstream@@QAE@H@Z
@ stub -arch=win64 ??0fstream@@QEAA@H@Z
@ stub -arch=win32 ??0fstream@@QAE@HPADH@Z
@ stub -arch=win64 ??0fstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0fstream@@QAE@ABV0@@Z(ptr ptr long) msvcirt.??0fstream@@QAE@ABV0@@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@AEBV0@@Z(ptr ptr long) msvcirt.??0fstream@@QEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0fstream@@QAE@H@Z(ptr long long) msvcirt.??0fstream@@QAE@H@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@H@Z(ptr long long) msvcirt.??0fstream@@QEAA@H@Z
@ thiscall -arch=win32 ??0fstream@@QAE@HPADH@Z(ptr long ptr long long) msvcirt.??0fstream@@QAE@HPADH@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@HPEADH@Z(ptr long ptr long long) msvcirt.??0fstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0fstream@@QAE@PBDHH@Z(ptr str long long long) msvcirt.??0fstream@@QAE@PBDHH@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@PEBDHH@Z(ptr str long long long) msvcirt.??0fstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0fstream@@QAE@XZ
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ thiscall -arch=win32 ??0fstream@@QAE@XZ(ptr long) msvcirt.??0fstream@@QAE@XZ
@ cdecl -arch=win64 ??0fstream@@QEAA@XZ(ptr long) msvcirt.??0fstream@@QEAA@XZ
@ thiscall -arch=win32 ??0ifstream@@QAE@ABV0@@Z(ptr ptr long) msvcirt.??0ifstream@@QAE@ABV0@@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z(ptr ptr long) msvcirt.??0ifstream@@QEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@H@Z(ptr long long) msvcirt.??0ifstream@@QAE@H@Z
@ -162,8 +162,8 @@
@ cdecl -arch=win64 ??4Iostream_init@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4Iostream_init@@QEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4filebuf@@QAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4filebuf@@QAEAAV0@ABV0@@Z
@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4filebuf@@QEAAAEAV0@AEBV0@@Z
@ stub -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z
@ stub -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z
@ thiscall -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z(ptr ptr) msvcirt.??4fstream@@QAEAAV0@AAV0@@Z
@ cdecl -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z(ptr ptr) msvcirt.??4fstream@@QEAAAEAV0@AEAV0@@Z
@ thiscall -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4ifstream@@QAEAAV0@ABV0@@Z
@ cdecl -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4ifstream@@QEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4ios@@IAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0@ABV0@@Z
@ -392,8 +392,8 @@
@ cdecl -arch=win64 ?allocate@streambuf@@IEAAHXZ(ptr) msvcirt.?allocate@streambuf@@IEAAHXZ
@ thiscall -arch=win32 ?attach@filebuf@@QAEPAV1@H@Z(ptr long) msvcirt.?attach@filebuf@@QAEPAV1@H@Z
@ cdecl -arch=win64 ?attach@filebuf@@QEAAPEAV1@H@Z(ptr long) msvcirt.?attach@filebuf@@QEAAPEAV1@H@Z
@ stub -arch=win32 ?attach@fstream@@QAEXH@Z
@ stub -arch=win64 ?attach@fstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@fstream@@QAEXH@Z(ptr long) msvcirt.?attach@fstream@@QAEXH@Z
@ cdecl -arch=win64 ?attach@fstream@@QEAAXH@Z(ptr long) msvcirt.?attach@fstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@ifstream@@QAEXH@Z(ptr long) msvcirt.?attach@ifstream@@QAEXH@Z
@ cdecl -arch=win64 ?attach@ifstream@@QEAAXH@Z(ptr long) msvcirt.?attach@ifstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@ofstream@@QAEXH@Z(ptr long) msvcirt.?attach@ofstream@@QAEXH@Z
@ -414,8 +414,8 @@
@ extern ?clog@@3Vostream_withassign@@A msvcirt.?clog@@3Vostream_withassign@@A
@ thiscall -arch=win32 ?close@filebuf@@QAEPAV1@XZ(ptr) msvcirt.?close@filebuf@@QAEPAV1@XZ
@ cdecl -arch=win64 ?close@filebuf@@QEAAPEAV1@XZ(ptr) msvcirt.?close@filebuf@@QEAAPEAV1@XZ
@ stub -arch=win32 ?close@fstream@@QAEXXZ
@ stub -arch=win64 ?close@fstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@fstream@@QAEXXZ(ptr) msvcirt.?close@fstream@@QAEXXZ
@ cdecl -arch=win64 ?close@fstream@@QEAAXXZ(ptr) msvcirt.?close@fstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) msvcirt.?close@ifstream@@QAEXXZ
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) msvcirt.?close@ifstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ofstream@@QAEXXZ(ptr) msvcirt.?close@ofstream@@QAEXXZ
@ -458,8 +458,8 @@
@ cdecl -arch=win64 ?fail@ios@@QEBAHXZ(ptr) msvcirt.?fail@ios@@QEBAHXZ
@ thiscall -arch=win32 ?fd@filebuf@@QBEHXZ(ptr) msvcirt.?fd@filebuf@@QBEHXZ
@ cdecl -arch=win64 ?fd@filebuf@@QEBAHXZ(ptr) msvcirt.?fd@filebuf@@QEBAHXZ
@ stub -arch=win32 ?fd@fstream@@QBEHXZ
@ stub -arch=win64 ?fd@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@fstream@@QBEHXZ(ptr) msvcirt.?fd@fstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@fstream@@QEBAHXZ(ptr) msvcirt.?fd@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) msvcirt.?fd@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) msvcirt.?fd@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ofstream@@QBEHXZ(ptr) msvcirt.?fd@ofstream@@QBEHXZ
@ -525,8 +525,8 @@
@ cdecl -arch=win64 ?ipfx@istream@@QEAAHH@Z(ptr long) msvcirt.?ipfx@istream@@QEAAHH@Z
@ thiscall -arch=win32 ?is_open@filebuf@@QBEHXZ(ptr) msvcirt.?is_open@filebuf@@QBEHXZ
@ cdecl -arch=win64 ?is_open@filebuf@@QEBAHXZ(ptr) msvcirt.?is_open@filebuf@@QEBAHXZ
@ stub -arch=win32 ?is_open@fstream@@QBEHXZ
@ stub -arch=win64 ?is_open@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@fstream@@QBEHXZ(ptr) msvcirt.?is_open@fstream@@QBEHXZ
@ cdecl -arch=win64 ?is_open@fstream@@QEBAHXZ(ptr) msvcirt.?is_open@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@ifstream@@QBEHXZ(ptr) msvcirt.?is_open@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?is_open@ifstream@@QEBAHXZ(ptr) msvcirt.?is_open@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@ofstream@@QBEHXZ(ptr) msvcirt.?is_open@ofstream@@QBEHXZ
@ -550,8 +550,8 @@
@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
@ thiscall -arch=win32 ?open@filebuf@@QAEPAV1@PBDHH@Z(ptr str long long) msvcirt.?open@filebuf@@QAEPAV1@PBDHH@Z
@ cdecl -arch=win64 ?open@filebuf@@QEAAPEAV1@PEBDHH@Z(ptr str long long) msvcirt.?open@filebuf@@QEAAPEAV1@PEBDHH@Z
@ stub -arch=win32 ?open@fstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@fstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@fstream@@QAEXPBDHH@Z
@ cdecl -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z(ptr str long long) msvcirt.?open@fstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@ifstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@ifstream@@QAEXPBDHH@Z
@ cdecl -arch=win64 ?open@ifstream@@QEAAXPEBDHH@Z(ptr str long long) msvcirt.?open@ifstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@ofstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@ofstream@@QAEXPBDHH@Z
@ -599,8 +599,8 @@
@ cdecl -arch=win64 ?putback@istream@@QEAAAEAV1@D@Z(ptr long) msvcirt.?putback@istream@@QEAAAEAV1@D@Z
@ thiscall -arch=win32 ?pword@ios@@QBEAAPAXH@Z(ptr long) msvcirt.?pword@ios@@QBEAAPAXH@Z
@ cdecl -arch=win64 ?pword@ios@@QEBAAEAPEAXH@Z(ptr long) msvcirt.?pword@ios@@QEBAAEAPEAXH@Z
@ stub -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ
@ stub -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@fstream@@QBEPAVfilebuf@@XZ
@ cdecl -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@ifstream@@QBEPAVfilebuf@@XZ
@ cdecl -arch=win64 ?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf@ios@@QBEPAVstreambuf@@XZ
@ -649,8 +649,8 @@
@ cdecl -arch=win64 ?setb@streambuf@@IEAAXPEAD0H@Z(ptr ptr ptr long) msvcirt.?setb@streambuf@@IEAAXPEAD0H@Z
@ thiscall -arch=win32 ?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z
@ stub -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z
@ stub -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z
@ -671,8 +671,8 @@
@ cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) msvcirt.?setlock@streambuf@@QEAAXXZ
@ thiscall -arch=win32 ?setmode@filebuf@@QAEHH@Z(ptr long) msvcirt.?setmode@filebuf@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@filebuf@@QEAAHH@Z(ptr long) msvcirt.?setmode@filebuf@@QEAAHH@Z
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@fstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@fstream@@QAEHH@Z(ptr long) msvcirt.?setmode@fstream@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@fstream@@QEAAHH@Z(ptr long) msvcirt.?setmode@fstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@ifstream@@QAEHH@Z(ptr long) msvcirt.?setmode@ifstream@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@ifstream@@QEAAHH@Z(ptr long) msvcirt.?setmode@ifstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@ofstream@@QAEHH@Z(ptr long) msvcirt.?setmode@ofstream@@QAEHH@Z

View File

@ -28,16 +28,16 @@
@ cdecl -arch=win64 ??0filebuf@@QEAA@HPEADH@Z(ptr long ptr long) msvcirt.??0filebuf@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0filebuf@@QAE@XZ(ptr) msvcirt.??0filebuf@@QAE@XZ
@ cdecl -arch=win64 ??0filebuf@@QEAA@XZ(ptr) msvcirt.??0filebuf@@QEAA@XZ
@ stub -arch=win32 ??0fstream@@QAE@ABV0@@Z
@ stub -arch=win64 ??0fstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0fstream@@QAE@H@Z
@ stub -arch=win64 ??0fstream@@QEAA@H@Z
@ stub -arch=win32 ??0fstream@@QAE@HPADH@Z
@ stub -arch=win64 ??0fstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0fstream@@QAE@ABV0@@Z(ptr ptr long) msvcirt.??0fstream@@QAE@ABV0@@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@AEBV0@@Z(ptr ptr long) msvcirt.??0fstream@@QEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0fstream@@QAE@H@Z(ptr long long) msvcirt.??0fstream@@QAE@H@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@H@Z(ptr long long) msvcirt.??0fstream@@QEAA@H@Z
@ thiscall -arch=win32 ??0fstream@@QAE@HPADH@Z(ptr long ptr long long) msvcirt.??0fstream@@QAE@HPADH@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@HPEADH@Z(ptr long ptr long long) msvcirt.??0fstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0fstream@@QAE@PBDHH@Z(ptr str long long long) msvcirt.??0fstream@@QAE@PBDHH@Z
@ cdecl -arch=win64 ??0fstream@@QEAA@PEBDHH@Z(ptr str long long long) msvcirt.??0fstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0fstream@@QAE@XZ
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ thiscall -arch=win32 ??0fstream@@QAE@XZ(ptr long) msvcirt.??0fstream@@QAE@XZ
@ cdecl -arch=win64 ??0fstream@@QEAA@XZ(ptr long) msvcirt.??0fstream@@QEAA@XZ
@ thiscall -arch=win32 ??0ifstream@@QAE@ABV0@@Z(ptr ptr long) msvcirt.??0ifstream@@QAE@ABV0@@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z(ptr ptr long) msvcirt.??0ifstream@@QEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@H@Z(ptr long long) msvcirt.??0ifstream@@QAE@H@Z
@ -204,8 +204,8 @@
@ cdecl -arch=win64 ??4exception@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcrt.??4exception@@QEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4filebuf@@QAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4filebuf@@QAEAAV0@ABV0@@Z
@ cdecl -arch=win64 ??4filebuf@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4filebuf@@QEAAAEAV0@AEBV0@@Z
@ stub -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z
@ stub -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z
@ thiscall -arch=win32 ??4fstream@@QAEAAV0@AAV0@@Z(ptr ptr) msvcirt.??4fstream@@QAEAAV0@AAV0@@Z
@ cdecl -arch=win64 ??4fstream@@QEAAAEAV0@AEAV0@@Z(ptr ptr) msvcirt.??4fstream@@QEAAAEAV0@AEAV0@@Z
@ thiscall -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4ifstream@@QAEAAV0@ABV0@@Z
@ cdecl -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4ifstream@@QEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4ios@@IAEAAV0@ABV0@@Z(ptr ptr) msvcirt.??4ios@@IAEAAV0@ABV0@@Z
@ -455,8 +455,8 @@
@ cdecl -arch=win64 ?allocate@streambuf@@IEAAHXZ(ptr) msvcirt.?allocate@streambuf@@IEAAHXZ
@ thiscall -arch=win32 ?attach@filebuf@@QAEPAV1@H@Z(ptr long) msvcirt.?attach@filebuf@@QAEPAV1@H@Z
@ cdecl -arch=win64 ?attach@filebuf@@QEAAPEAV1@H@Z(ptr long) msvcirt.?attach@filebuf@@QEAAPEAV1@H@Z
@ stub -arch=win32 ?attach@fstream@@QAEXH@Z
@ stub -arch=win64 ?attach@fstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@fstream@@QAEXH@Z(ptr long) msvcirt.?attach@fstream@@QAEXH@Z
@ cdecl -arch=win64 ?attach@fstream@@QEAAXH@Z(ptr long) msvcirt.?attach@fstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@ifstream@@QAEXH@Z(ptr long) msvcirt.?attach@ifstream@@QAEXH@Z
@ cdecl -arch=win64 ?attach@ifstream@@QEAAXH@Z(ptr long) msvcirt.?attach@ifstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@ofstream@@QAEXH@Z(ptr long) msvcirt.?attach@ofstream@@QAEXH@Z
@ -479,8 +479,8 @@
@ extern ?clog@@3Vostream_withassign@@A msvcirt.?clog@@3Vostream_withassign@@A
@ thiscall -arch=win32 ?close@filebuf@@QAEPAV1@XZ(ptr) msvcirt.?close@filebuf@@QAEPAV1@XZ
@ cdecl -arch=win64 ?close@filebuf@@QEAAPEAV1@XZ(ptr) msvcirt.?close@filebuf@@QEAAPEAV1@XZ
@ stub -arch=win32 ?close@fstream@@QAEXXZ
@ stub -arch=win64 ?close@fstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@fstream@@QAEXXZ(ptr) msvcirt.?close@fstream@@QAEXXZ
@ cdecl -arch=win64 ?close@fstream@@QEAAXXZ(ptr) msvcirt.?close@fstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) msvcirt.?close@ifstream@@QAEXXZ
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) msvcirt.?close@ifstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ofstream@@QAEXXZ(ptr) msvcirt.?close@ofstream@@QAEXXZ
@ -523,8 +523,8 @@
@ cdecl -arch=win64 ?fail@ios@@QEBAHXZ(ptr) msvcirt.?fail@ios@@QEBAHXZ
@ thiscall -arch=win32 ?fd@filebuf@@QBEHXZ(ptr) msvcirt.?fd@filebuf@@QBEHXZ
@ cdecl -arch=win64 ?fd@filebuf@@QEBAHXZ(ptr) msvcirt.?fd@filebuf@@QEBAHXZ
@ stub -arch=win32 ?fd@fstream@@QBEHXZ
@ stub -arch=win64 ?fd@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@fstream@@QBEHXZ(ptr) msvcirt.?fd@fstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@fstream@@QEBAHXZ(ptr) msvcirt.?fd@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) msvcirt.?fd@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) msvcirt.?fd@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ofstream@@QBEHXZ(ptr) msvcirt.?fd@ofstream@@QBEHXZ
@ -592,8 +592,8 @@
@ cdecl -arch=win64 ?ipfx@istream@@QEAAHH@Z(ptr long) msvcirt.?ipfx@istream@@QEAAHH@Z
@ thiscall -arch=win32 ?is_open@filebuf@@QBEHXZ(ptr) msvcirt.?is_open@filebuf@@QBEHXZ
@ cdecl -arch=win64 ?is_open@filebuf@@QEBAHXZ(ptr) msvcirt.?is_open@filebuf@@QEBAHXZ
@ stub -arch=win32 ?is_open@fstream@@QBEHXZ
@ stub -arch=win64 ?is_open@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@fstream@@QBEHXZ(ptr) msvcirt.?is_open@fstream@@QBEHXZ
@ cdecl -arch=win64 ?is_open@fstream@@QEBAHXZ(ptr) msvcirt.?is_open@fstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@ifstream@@QBEHXZ(ptr) msvcirt.?is_open@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?is_open@ifstream@@QEBAHXZ(ptr) msvcirt.?is_open@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@ofstream@@QBEHXZ(ptr) msvcirt.?is_open@ofstream@@QBEHXZ
@ -619,8 +619,8 @@
@ cdecl -arch=win64 ?oct@@YAAEAVios@@AEAV1@@Z(ptr) msvcirt.?oct@@YAAEAVios@@AEAV1@@Z
@ thiscall -arch=win32 ?open@filebuf@@QAEPAV1@PBDHH@Z(ptr str long long) msvcirt.?open@filebuf@@QAEPAV1@PBDHH@Z
@ cdecl -arch=win64 ?open@filebuf@@QEAAPEAV1@PEBDHH@Z(ptr str long long) msvcirt.?open@filebuf@@QEAAPEAV1@PEBDHH@Z
@ stub -arch=win32 ?open@fstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@fstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@fstream@@QAEXPBDHH@Z
@ cdecl -arch=win64 ?open@fstream@@QEAAXPEBDHH@Z(ptr str long long) msvcirt.?open@fstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@ifstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@ifstream@@QAEXPBDHH@Z
@ cdecl -arch=win64 ?open@ifstream@@QEAAXPEBDHH@Z(ptr str long long) msvcirt.?open@ifstream@@QEAAXPEBDHH@Z
@ thiscall -arch=win32 ?open@ofstream@@QAEXPBDHH@Z(ptr str long long) msvcirt.?open@ofstream@@QAEXPBDHH@Z
@ -670,8 +670,8 @@
@ cdecl -arch=win64 ?pword@ios@@QEBAAEAPEAXH@Z(ptr long) msvcirt.?pword@ios@@QEBAAEAPEAXH@Z
@ thiscall -arch=i386 ?raw_name@type_info@@QBEPBDXZ(ptr) msvcrt.?raw_name@type_info@@QBEPBDXZ
@ cdecl -arch=win64 ?raw_name@type_info@@QEBAPEBDXZ(ptr) msvcrt.?raw_name@type_info@@QEBAPEBDXZ
@ stub -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ
@ stub -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@fstream@@QBEPAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@fstream@@QBEPAVfilebuf@@XZ
@ cdecl -arch=win64 ?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@fstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@ifstream@@QBEPAVfilebuf@@XZ
@ cdecl -arch=win64 ?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ(ptr) msvcirt.?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ
@ thiscall -arch=win32 ?rdbuf@ios@@QBEPAVstreambuf@@XZ(ptr) msvcirt.?rdbuf@ios@@QBEPAVstreambuf@@XZ
@ -721,8 +721,8 @@
@ cdecl -arch=win64 ?setb@streambuf@@IEAAXPEAD0H@Z(ptr ptr ptr long) msvcirt.?setb@streambuf@@IEAAXPEAD0H@Z
@ thiscall -arch=win32 ?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@filebuf@@UAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@filebuf@@UEAAPEAVstreambuf@@PEADH@Z
@ stub -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z
@ stub -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@fstream@@QAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@fstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@ifstream@@QAEPAVstreambuf@@PADH@Z
@ cdecl -arch=win64 ?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z(ptr ptr long) msvcirt.?setbuf@ifstream@@QEAAPEAVstreambuf@@PEADH@Z
@ thiscall -arch=win32 ?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z(ptr ptr long) msvcirt.?setbuf@ofstream@@QAEPAVstreambuf@@PADH@Z
@ -743,8 +743,8 @@
@ cdecl -arch=win64 ?setlock@streambuf@@QEAAXXZ(ptr) msvcirt.?setlock@streambuf@@QEAAXXZ
@ thiscall -arch=win32 ?setmode@filebuf@@QAEHH@Z(ptr long) msvcirt.?setmode@filebuf@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@filebuf@@QEAAHH@Z(ptr long) msvcirt.?setmode@filebuf@@QEAAHH@Z
@ stub -arch=win32 ?setmode@fstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@fstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@fstream@@QAEHH@Z(ptr long) msvcirt.?setmode@fstream@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@fstream@@QEAAHH@Z(ptr long) msvcirt.?setmode@fstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@ifstream@@QAEHH@Z(ptr long) msvcirt.?setmode@ifstream@@QAEHH@Z
@ cdecl -arch=win64 ?setmode@ifstream@@QEAAHH@Z(ptr long) msvcirt.?setmode@ifstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@ofstream@@QAEHH@Z(ptr long) msvcirt.?setmode@ofstream@@QAEHH@Z