Commit a0faee89 authored by Arkadiusz Hiler's avatar Arkadiusz Hiler Committed by Alexandre Julliard

msvcirt: Implement most of ifstream.

parent 3255b4b8
......@@ -192,6 +192,8 @@ extern const vtable_ptr MSVCP_istream_vtable;
extern const vtable_ptr MSVCP_istream_withassign_vtable;
/* ??_7istrstream@@6B@ */
extern const vtable_ptr MSVCP_istrstream_vtable;
/* ??_7ifstream@@6B@ */
extern const vtable_ptr MSVCP_ifstream_vtable;
/* ??_7iostream@@6B@ */
extern const vtable_ptr MSVCP_iostream_vtable;
/* ??_7strstream@@6B@ */
......@@ -262,6 +264,8 @@ __ASM_BLOCK_BEGIN(vtables)
VTABLE_ADD_FUNC(istream_vector_dtor));
__ASM_VTABLE(istrstream,
VTABLE_ADD_FUNC(istream_vector_dtor));
__ASM_VTABLE(ifstream,
VTABLE_ADD_FUNC(istream_vector_dtor));
__ASM_VTABLE(iostream,
VTABLE_ADD_FUNC(iostream_vector_dtor));
__ASM_VTABLE(strstream,
......@@ -280,6 +284,7 @@ const int ostream_vbtable[] = {0, VBTABLE_ENTRY(ostream, FIELD_OFFSET(ostream, v
/* ??_8istream@@7B@ */
/* ??_8istream_withassign@@7B@ */
/* ??_8istrstream@@7B@ */
/* ??_8ifstream@@7B@ */
const int istream_vbtable[] = {0, VBTABLE_ENTRY(istream, FIELD_OFFSET(istream, vbtable), ios)};
/* ??_8iostream@@7Bistream@@@ */
/* ??_8stdiostream@@7Bistream@@@ */
......@@ -305,6 +310,8 @@ DEFINE_RTTI_DATA2(istream_withassign, sizeof(istream),
&istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVistream_withassign@@")
DEFINE_RTTI_DATA2(istrstream, sizeof(istream),
&istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVistrstream@@")
DEFINE_RTTI_DATA2(ifstream, sizeof(istream),
&istream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AVifstream@@")
DEFINE_RTTI_DATA4(iostream, sizeof(iostream),
&istream_rtti_base_descriptor, &ios_rtti_base_descriptor,
&ostream_rtti_base_descriptor, &ios_rtti_base_descriptor, ".?AViostream@@")
......@@ -3113,6 +3120,8 @@ istream* __thiscall istream_copy_ctor(istream *this, const istream *copy, BOOL v
/* ??1istream_withassign@@UEAA@XZ */
/* ??1istrstream@@UAE@XZ */
/* ??1istrstream@@UEAA@XZ */
/* ??1ifstream@@UAE@XZ */
/* ??1ifstream@@UEAA@XZ */
DEFINE_THISCALL_WRAPPER(istream_dtor, 4)
void __thiscall istream_dtor(ios *base)
{
......@@ -3152,6 +3161,8 @@ istream* __thiscall istream_assign_sb(istream *this, streambuf *sb)
/* ??4istream_withassign@@QEAAAEAVistream@@AEBV1@@Z */
/* ??4istrstream@@QAEAAV0@ABV0@@Z */
/* ??4istrstream@@QEAAAEAV0@AEBV0@@Z */
/* ??4ifstream@@QAEAAV0@ABV0@@Z */
/* ??4ifstream@@QEAAAEAV0@AEBV0@@Z */
DEFINE_THISCALL_WRAPPER(istream_assign, 8)
istream* __thiscall istream_assign(istream *this, const istream *rhs)
{
......@@ -3164,6 +3175,8 @@ istream* __thiscall istream_assign(istream *this, const istream *rhs)
/* ??_Distream_withassign@@QEAAXXZ */
/* ??_Distrstream@@QAEXXZ */
/* ??_Distrstream@@QEAAXXZ */
/* ??_Difstream@@QAEXXZ */
/* ??_Difstream@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(istream_vbase_dtor, 4)
void __thiscall istream_vbase_dtor(istream *this)
{
......@@ -3178,6 +3191,7 @@ void __thiscall istream_vbase_dtor(istream *this)
/* ??_Eistream@@UAEPAXI@Z */
/* ??_Eistream_withassign@@UAEPAXI@Z */
/* ??_Eistrstream@@UAEPAXI@Z */
/* ??_Eifstream@@UAEPAXI@Z */
DEFINE_THISCALL_WRAPPER(istream_vector_dtor, 8)
istream* __thiscall istream_vector_dtor(ios *base, unsigned int flags)
{
......@@ -3203,6 +3217,7 @@ istream* __thiscall istream_vector_dtor(ios *base, unsigned int flags)
/* ??_Gistream@@UAEPAXI@Z */
/* ??_Gistream_withassign@@UAEPAXI@Z */
/* ??_Gistrstream@@UAEPAXI@Z */
/* ??_Gifstream@@UAEPAXI@Z */
DEFINE_THISCALL_WRAPPER(istream_scalar_dtor, 8)
istream* __thiscall istream_scalar_dtor(ios *base, unsigned int flags)
{
......@@ -4089,6 +4104,175 @@ char* __thiscall istrstream_str(istream *this)
return strstreambuf_str(istrstream_rdbuf(this));
}
/* ??0ifstream@@QAE@ABV0@@Z */
/* ??0ifstream@@QEAA@AEBV0@@Z */
DEFINE_THISCALL_WRAPPER(ifstream_copy_ctor, 12)
istream* __thiscall ifstream_copy_ctor(istream *this, const istream *copy, BOOL virt_init)
{
TRACE("(%p %p %d)\n", this, copy, virt_init);
istream_withassign_copy_ctor(this, copy, virt_init);
istream_get_ios(this)->vtable = &MSVCP_ifstream_vtable;
return this;
}
/* ??0ifstream@@QAE@HPADH@Z */
/* ??0ifstream@@QEAA@HPEADH@Z */
DEFINE_THISCALL_WRAPPER(ifstream_buffer_ctor, 20)
istream* __thiscall ifstream_buffer_ctor(istream *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);
istream_sb_ctor(this, &fb->base, virt_init);
base = istream_get_ios(this);
base->vtable = &MSVCP_ifstream_vtable;
base->delbuf = 1;
return this;
}
/* ??0ifstream@@QAE@H@Z */
/* ??0ifstream@@QEAA@H@Z */
DEFINE_THISCALL_WRAPPER(ifstream_fd_ctor, 12)
istream* __thiscall ifstream_fd_ctor(istream *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);
istream_sb_ctor(this, &fb->base, virt_init);
base = istream_get_ios(this);
base->vtable = &MSVCP_ifstream_vtable;
base->delbuf = 1;
return this;
}
/* ??0ifstream@@QAE@PBDHH@Z */
/* ??0ifstream@@QEAA@PEBDHH@Z */
DEFINE_THISCALL_WRAPPER(ifstream_open_ctor, 20)
istream* __thiscall ifstream_open_ctor(istream *this, const char *name, ios_open_mode mode, int protection, BOOL virt_init)
{
ios *base;
filebuf *fb = MSVCRT_operator_new(sizeof(filebuf));
TRACE("(%p %s %d %d %d)\n", this, name, mode, protection, virt_init);
if (!fb)
{
FIXME("out of memory\n");
return NULL;
}
filebuf_ctor(fb);
istream_sb_ctor(this, &fb->base, virt_init);
filebuf_open(fb, name, mode|OPENMODE_in, protection);
base = istream_get_ios(this);
base->vtable = &MSVCP_ifstream_vtable;
base->delbuf = 1;
return this;
}
/* ??0ifstream@@QAE@XZ */
/* ??0ifstream@@QEAA@XZ */
DEFINE_THISCALL_WRAPPER(ifstream_ctor, 8)
istream* __thiscall ifstream_ctor(istream *this, BOOL virt_init)
{
return ifstream_fd_ctor(this, -1, virt_init);
}
/* ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ */
/* ?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ */
DEFINE_THISCALL_WRAPPER(ifstream_rdbuf, 4)
filebuf* __thiscall ifstream_rdbuf(const istream *this)
{
TRACE("(%p)\n", this);
return (filebuf*) istream_get_ios(this)->sb;
}
/* ?fd@ifstream@@QBEHXZ */
/* ?fd@ifstream@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER(ifstream_fd, 4)
filedesc __thiscall ifstream_fd(istream *this)
{
TRACE("(%p)\n", this);
return filebuf_fd(ifstream_rdbuf(this));
}
/* ?attach@ifstream@@QAEXH@Z */
/* ?attach@ifstream@@QEAAXH@Z */
DEFINE_THISCALL_WRAPPER(ifstream_attach, 8)
void __thiscall ifstream_attach(istream *this, filedesc fd)
{
ios *base = istream_get_ios(this);
TRACE("(%p %d)\n", this, fd);
if (filebuf_attach(ifstream_rdbuf(this), fd) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
}
/* ?close@ifstream@@QAEXXZ */
/* ?close@ifstream@@QEAAXXZ */
DEFINE_THISCALL_WRAPPER(ifstream_close, 4)
void __thiscall ifstream_close(istream *this)
{
ios *base = istream_get_ios(this);
TRACE("(%p)\n", this);
if (filebuf_close(ifstream_rdbuf(this)) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
else
ios_clear(base, IOSTATE_goodbit);
}
/* ?is_open@ifstream@@QBEHXZ */
/* ?is_open@ifstream@@QEBAHXZ */
DEFINE_THISCALL_WRAPPER(ifstream_is_open, 4)
int __thiscall ifstream_is_open(const istream *this)
{
TRACE("(%p)\n", this);
return filebuf_is_open(ifstream_rdbuf(this));
}
/* ?open@ifstream@@QAEXPBDHH@Z */
/* ?open@ifstream@@QEAAXPEBDHH@Z */
DEFINE_THISCALL_WRAPPER(ifstream_open, 16)
void __thiscall ifstream_open(istream *this, const char *name, ios_open_mode mode, int protection)
{
ios *base = istream_get_ios(this);
TRACE("(%p %s %d %d)\n", this, name, mode, protection);
if (filebuf_open(ifstream_rdbuf(this), name, mode|OPENMODE_in, protection) == NULL)
ios_clear(base, base->state | IOSTATE_failbit);
}
/* ?setmode@ifstream@@QAEHH@Z */
/* ?setmode@ifstream@@QEAAHH@Z */
DEFINE_THISCALL_WRAPPER(ifstream_setmode, 8)
int __thiscall ifstream_setmode(istream *this, int mode)
{
TRACE("(%p %d)\n", this, mode);
return filebuf_setmode(ifstream_rdbuf(this), mode);
}
static inline ios* iostream_to_ios(const iostream *this)
{
return (ios*)((char*)this + iostream_vbtable_istream[1]);
......@@ -4522,6 +4706,7 @@ static void init_io(void *base)
init_istream_rtti(base);
init_istream_withassign_rtti(base);
init_istrstream_rtti(base);
init_ifstream_rtti(base);
init_iostream_rtti(base);
init_strstream_rtti(base);
init_stdiostream_rtti(base);
......
......@@ -26,16 +26,16 @@
@ stub -arch=win64 ??0fstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0fstream@@QAE@XZ # __thiscall fstream::fstream(void)
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ stub -arch=win32 ??0ifstream@@QAE@ABV0@@Z # __thiscall ifstream::ifstream(class ifstream const &)
@ stub -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0ifstream@@QAE@H@Z # __thiscall ifstream::ifstream(int)
@ stub -arch=win64 ??0ifstream@@QEAA@H@Z
@ stub -arch=win32 ??0ifstream@@QAE@HPADH@Z # __thiscall ifstream::ifstream(int,char *,int)
@ stub -arch=win64 ??0ifstream@@QEAA@HPEADH@Z
@ stub -arch=win32 ??0ifstream@@QAE@PBDHH@Z # __thiscall ifstream::ifstream(char const *,int,int)
@ stub -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0ifstream@@QAE@XZ # __thiscall ifstream::ifstream(void)
@ stub -arch=win64 ??0ifstream@@QEAA@XZ
@ 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
@ cdecl -arch=win64 ??0ifstream@@QEAA@H@Z(ptr long long) ifstream_fd_ctor
@ thiscall -arch=win32 ??0ifstream@@QAE@HPADH@Z(ptr long ptr long long) ifstream_buffer_ctor
@ cdecl -arch=win64 ??0ifstream@@QEAA@HPEADH@Z(ptr long ptr long long) ifstream_buffer_ctor
@ thiscall -arch=win32 ??0ifstream@@QAE@PBDHH@Z(ptr str long long long) ifstream_open_ctor
@ cdecl -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z(ptr str long long long) ifstream_open_ctor
@ thiscall -arch=win32 ??0ifstream@@QAE@XZ(ptr long) ifstream_ctor
@ cdecl -arch=win64 ??0ifstream@@QEAA@XZ(ptr long) ifstream_ctor
@ thiscall -arch=win32 ??0ios@@IAE@ABV0@@Z(ptr ptr) ios_copy_ctor
@ cdecl -arch=win64 ??0ios@@IEAA@AEBV0@@Z(ptr ptr) ios_copy_ctor
@ thiscall -arch=win32 ??0ios@@IAE@XZ(ptr) ios_ctor
......@@ -138,8 +138,8 @@
@ cdecl -arch=win64 ??1filebuf@@UEAA@XZ(ptr) filebuf_dtor
@ stub -arch=win32 ??1fstream@@UAE@XZ # virtual __thiscall fstream::~fstream(void)
@ stub -arch=win64 ??1fstream@@UEAA@XZ
@ stub -arch=win32 ??1ifstream@@UAE@XZ # virtual __thiscall ifstream::~ifstream(void)
@ stub -arch=win64 ??1ifstream@@UEAA@XZ
@ thiscall -arch=win32 ??1ifstream@@UAE@XZ(ptr) istream_dtor
@ cdecl -arch=win64 ??1ifstream@@UEAA@XZ(ptr) istream_dtor
@ thiscall -arch=win32 ??1ios@@UAE@XZ(ptr) ios_dtor
@ cdecl -arch=win64 ??1ios@@UEAA@XZ(ptr) ios_dtor
@ thiscall -arch=win32 ??1iostream@@UAE@XZ(ptr) iostream_dtor
......@@ -178,8 +178,8 @@
@ 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
@ stub -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z # class ifstream & __thiscall ifstream::operator=(class ifstream const &)
@ stub -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@Z
@ 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
@ cdecl -arch=win64 ??4ios@@IEAAAEAV0@AEBV0@@Z(ptr ptr) ios_assign
@ thiscall -arch=win32 ??4iostream@@IAEAAV0@AAV0@@Z(ptr ptr) iostream_assign
......@@ -305,7 +305,7 @@
@ extern ??_7exception@@6B@ MSVCP_exception_vtable
@ extern ??_7filebuf@@6B@ MSVCP_filebuf_vtable
# @ extern ??_7fstream@@6B@ # const fstream::`vftable'
# @ extern ??_7ifstream@@6B@ # const ifstream::`vftable'
@ extern ??_7ifstream@@6B@ MSVCP_ifstream_vtable
@ extern ??_7ios@@6B@ MSVCP_ios_vtable
@ extern ??_7iostream@@6B@ MSVCP_iostream_vtable
@ extern ??_7istream@@6B@ MSVCP_istream_vtable
......@@ -323,7 +323,7 @@
@ extern ??_7strstreambuf@@6B@ MSVCP_strstreambuf_vtable
# @ extern ??_8fstream@@7Bistream@@@ # const fstream::`vbtable'{for `istream'}
# @ extern ??_8fstream@@7Bostream@@@ # const fstream::`vbtable'{for `ostream'}
# @ extern ??_8ifstream@@7B@ # const ifstream::`vbtable'
@ extern ??_8ifstream@@7B@ istream_vbtable
@ extern ??_8iostream@@7Bistream@@@ iostream_vbtable_istream
@ extern ??_8iostream@@7Bostream@@@ iostream_vbtable_ostream
@ extern ??_8istream@@7B@ istream_vbtable
......@@ -339,8 +339,8 @@
@ extern ??_8strstream@@7Bostream@@@ iostream_vbtable_ostream
@ stub -arch=win32 ??_Dfstream@@QAEXXZ # void __thiscall fstream::`vbase destructor'(void)
@ stub -arch=win64 ??_Dfstream@@QEAAXXZ
@ stub -arch=win32 ??_Difstream@@QAEXXZ # void __thiscall ifstream::`vbase destructor'(void)
@ stub -arch=win64 ??_Difstream@@QEAAXXZ
@ thiscall -arch=win32 ??_Difstream@@QAEXXZ(ptr) istream_vbase_dtor
@ cdecl -arch=win64 ??_Difstream@@QEAAXXZ(ptr) istream_vbase_dtor
@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) iostream_vbase_dtor
@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) iostream_vbase_dtor
@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) istream_vbase_dtor
......@@ -364,7 +364,7 @@
@ thiscall -arch=win32 ??_Eexception@@UAEPAXI@Z(ptr long) MSVCP_exception_vector_dtor
@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI@Z(ptr long) filebuf_vector_dtor
@ stub -arch=win32 ??_Efstream@@UAEPAXI@Z # virtual void * __thiscall fstream::`vector deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Eifstream@@UAEPAXI@Z # virtual void * __thiscall ifstream::`vector deleting destructor'(unsigned int)
@ thiscall -arch=win32 ??_Eifstream@@UAEPAXI@Z(ptr long) istream_vector_dtor
@ thiscall -arch=win32 ??_Eios@@UAEPAXI@Z(ptr long) ios_vector_dtor
@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI@Z(ptr long) iostream_vector_dtor
@ thiscall -arch=win32 ??_Eistream@@UAEPAXI@Z(ptr long) istream_vector_dtor
......@@ -383,7 +383,7 @@
@ thiscall -arch=win32 ??_Gexception@@UAEPAXI@Z(ptr long) MSVCP_exception_scalar_dtor
@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI@Z(ptr long) filebuf_scalar_dtor
@ stub -arch=win32 ??_Gfstream@@UAEPAXI@Z # virtual void * __thiscall fstream::`scalar deleting destructor'(unsigned int)
@ stub -arch=win32 ??_Gifstream@@UAEPAXI@Z # virtual void * __thiscall ifstream::`scalar deleting destructor'(unsigned int)
@ thiscall -arch=win32 ??_Gifstream@@UAEPAXI@Z(ptr long) istream_scalar_dtor
@ thiscall -arch=win32 ??_Gios@@UAEPAXI@Z(ptr long) ios_scalar_dtor
@ thiscall -arch=win32 ??_Giostream@@UAEPAXI@Z(ptr long) iostream_scalar_dtor
@ thiscall -arch=win32 ??_Gistream@@UAEPAXI@Z(ptr long) istream_scalar_dtor
......@@ -406,8 +406,8 @@
@ 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
@ stub -arch=win32 ?attach@ifstream@@QAEXH@Z # void __thiscall ifstream::attach(int)
@ stub -arch=win64 ?attach@ifstream@@QEAAXH@Z
@ thiscall -arch=win32 ?attach@ifstream@@QAEXH@Z(ptr long) ifstream_attach
@ cdecl -arch=win64 ?attach@ifstream@@QEAAXH@Z(ptr long) ifstream_attach
@ stub -arch=win32 ?attach@ofstream@@QAEXH@Z # void __thiscall ofstream::attach(int)
@ stub -arch=win64 ?attach@ofstream@@QEAAXH@Z
@ thiscall -arch=win32 ?bad@ios@@QBEHXZ(ptr) ios_bad
......@@ -428,8 +428,8 @@
@ 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
@ stub -arch=win32 ?close@ifstream@@QAEXXZ # void __thiscall ifstream::close(void)
@ stub -arch=win64 ?close@ifstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) ifstream_close
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) ifstream_close
@ stub -arch=win32 ?close@ofstream@@QAEXXZ # void __thiscall ofstream::close(void)
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ cdecl -arch=win32 ?clrlock@ios@@QAAXXZ(ptr) ios_clrlock
......@@ -472,8 +472,8 @@
@ 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
@ stub -arch=win32 ?fd@ifstream@@QBEHXZ # int __thiscall ifstream::fd(void)const
@ stub -arch=win64 ?fd@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) ifstream_fd
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) ifstream_fd
@ stub -arch=win32 ?fd@ofstream@@QBEHXZ # int __thiscall ofstream::fd(void)const
@ stub -arch=win64 ?fd@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?fill@ios@@QAEDD@Z(ptr long) ios_fill_set
......@@ -541,8 +541,8 @@
@ 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
@ stub -arch=win32 ?is_open@ifstream@@QBEHXZ # int __thiscall ifstream::is_open(void)const
@ stub -arch=win64 ?is_open@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?is_open@ifstream@@QBEHXZ(ptr) ifstream_is_open
@ cdecl -arch=win64 ?is_open@ifstream@@QEBAHXZ(ptr) ifstream_is_open
@ stub -arch=win32 ?is_open@ofstream@@QBEHXZ # int __thiscall ofstream::is_open(void)const
@ stub -arch=win64 ?is_open@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?isfx@istream@@QAEXXZ(ptr) istream_isfx
......@@ -566,8 +566,8 @@
@ 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
@ stub -arch=win32 ?open@ifstream@@QAEXPBDHH@Z # void __thiscall ifstream::open(char const *,int,int)
@ stub -arch=win64 ?open@ifstream@@QEAAXPEBDHH@Z
@ 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
@ stub -arch=win32 ?open@ofstream@@QAEXPBDHH@Z # void __thiscall ofstream::open(char const *,int,int)
@ stub -arch=win64 ?open@ofstream@@QEAAXPEBDHH@Z
@ extern ?openprot@filebuf@@2HB filebuf_openprot
......@@ -615,8 +615,8 @@
@ 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
@ stub -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ # class filebuf * __thiscall ifstream::rdbuf(void)const
@ stub -arch=win64 ?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ
@ 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
@ cdecl -arch=win64 ?rdbuf@ios@@QEBAPEAVstreambuf@@XZ(ptr) ios_rdbuf
@ thiscall -arch=win32 ?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ(ptr) istrstream_rdbuf
......@@ -685,8 +685,8 @@
@ 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
@ stub -arch=win32 ?setmode@ifstream@@QAEHH@Z # int __thiscall ifstream::setmode(int)
@ stub -arch=win64 ?setmode@ifstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setmode@ifstream@@QAEHH@Z(ptr long) ifstream_setmode
@ cdecl -arch=win64 ?setmode@ifstream@@QEAAHH@Z(ptr long) ifstream_setmode
@ stub -arch=win32 ?setmode@ofstream@@QAEHH@Z # int __thiscall ofstream::setmode(int)
@ stub -arch=win64 ?setmode@ofstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setp@streambuf@@IAEXPAD0@Z(ptr ptr ptr) streambuf_setp
......
......@@ -23,6 +23,7 @@
#include <stdio.h>
#include <windef.h>
#include <winbase.h>
#include <sys/stat.h>
#include "wine/test.h"
typedef void (*vtable_ptr)(void);
......@@ -403,6 +404,22 @@ static void (*__thiscall p_iostream_vbase_dtor)(iostream*);
static iostream* (*__thiscall p_iostream_assign_sb)(iostream*, streambuf*);
static iostream* (*__thiscall p_iostream_assign)(iostream*, const iostream*);
/* ifstream */
static istream* (*__thiscall p_ifstream_copy_ctor)(istream*, const istream*, BOOL);
static istream* (*__thiscall p_ifstream_buffer_ctor)(istream*, filedesc, char*, int, BOOL);
static istream* (*__thiscall p_ifstream_fd_ctor)(istream*, filedesc fd, BOOL virt_init);
static istream* (*__thiscall p_ifstream_open_ctor)(istream*, const char *name, ios_open_mode, int, BOOL);
static istream* (*__thiscall p_ifstream_ctor)(istream*, BOOL);
static void (*__thiscall p_ifstream_dtor)(ios*);
static void (*__thiscall p_ifstream_vbase_dtor)(istream*);
static void (*__thiscall p_ifstream_attach)(istream*, filedesc);
static void (*__thiscall p_ifstream_close)(istream*);
static filedesc (*__thiscall p_ifstream_fd)(istream*);
static int (*__thiscall p_ifstream_is_open)(const istream*);
static void (*__thiscall p_ifstream_open)(istream*, const char*, ios_open_mode, int);
static filebuf* (*__thiscall p_ifstream_rdbuf)(const istream*);
static int (*__thiscall p_ifstream_setmode)(istream*, int);
/* strstream */
static iostream* (*__thiscall p_strstream_copy_ctor)(iostream*, const iostream*, BOOL);
static iostream* (*__thiscall p_strstream_buffer_ctor)(iostream*, char*, int, int, BOOL);
......@@ -703,6 +720,21 @@ static BOOL init(void)
SET(p_iostream_assign_sb, "??4iostream@@IEAAAEAV0@PEAVstreambuf@@@Z");
SET(p_iostream_assign, "??4iostream@@IEAAAEAV0@AEAV0@@Z");
SET(p_ifstream_copy_ctor, "??0ifstream@@QEAA@AEBV0@@Z");
SET(p_ifstream_buffer_ctor, "??0ifstream@@QEAA@HPEADH@Z");
SET(p_ifstream_fd_ctor, "??0ifstream@@QEAA@H@Z");
SET(p_ifstream_open_ctor, "??0ifstream@@QEAA@PEBDHH@Z");
SET(p_ifstream_ctor, "??0ifstream@@QEAA@XZ");
SET(p_ifstream_dtor, "??1ifstream@@UEAA@XZ");
SET(p_ifstream_vbase_dtor, "??_Difstream@@QEAAXXZ");
SET(p_ifstream_attach, "?attach@ifstream@@QEAAXH@Z");
SET(p_ifstream_close, "?close@ifstream@@QEAAXXZ");
SET(p_ifstream_fd, "?fd@ifstream@@QEBAHXZ");
SET(p_ifstream_is_open, "?is_open@ifstream@@QEBAHXZ");
SET(p_ifstream_open, "?open@ifstream@@QEAAXPEBDHH@Z");
SET(p_ifstream_rdbuf, "?rdbuf@ifstream@@QEBAPEAVfilebuf@@XZ");
SET(p_ifstream_setmode, "?setmode@ifstream@@QEAAHH@Z");
SET(p_strstream_copy_ctor, "??0strstream@@QEAA@AEBV0@@Z");
SET(p_strstream_buffer_ctor, "??0strstream@@QEAA@PEADHH@Z");
SET(p_strstream_ctor, "??0strstream@@QEAA@XZ");
......@@ -917,6 +949,21 @@ static BOOL init(void)
SET(p_iostream_assign_sb, "??4iostream@@IAEAAV0@PAVstreambuf@@@Z");
SET(p_iostream_assign, "??4iostream@@IAEAAV0@AAV0@@Z");
SET(p_ifstream_copy_ctor, "??0ifstream@@QAE@ABV0@@Z");
SET(p_ifstream_fd_ctor, "??0ifstream@@QAE@H@Z");
SET(p_ifstream_buffer_ctor, "??0ifstream@@QAE@HPADH@Z");
SET(p_ifstream_open_ctor, "??0ifstream@@QAE@PBDHH@Z");
SET(p_ifstream_ctor, "??0ifstream@@QAE@XZ");
SET(p_ifstream_dtor, "??1ifstream@@UAE@XZ");
SET(p_ifstream_vbase_dtor, "??_Difstream@@QAEXXZ");
SET(p_ifstream_attach, "?attach@ifstream@@QAEXH@Z");
SET(p_ifstream_close, "?close@ifstream@@QAEXXZ");
SET(p_ifstream_fd, "?fd@ifstream@@QBEHXZ");
SET(p_ifstream_is_open, "?is_open@ifstream@@QBEHXZ");
SET(p_ifstream_open, "?open@ifstream@@QAEXPBDHH@Z");
SET(p_ifstream_rdbuf, "?rdbuf@ifstream@@QBEPAVfilebuf@@XZ");
SET(p_ifstream_setmode, "?setmode@ifstream@@QAEHH@Z");
SET(p_strstream_copy_ctor, "??0strstream@@QAE@ABV0@@Z");
SET(p_strstream_buffer_ctor, "??0strstream@@QAE@PADHH@Z");
SET(p_strstream_ctor, "??0strstream@@QAE@XZ");
......@@ -6720,6 +6767,209 @@ static void test_iostream(void)
ok(ios2.base_ios.do_lock == 0xcdcdcdcd, "expected %d got %d\n", 0xcdcdcdcd, ios2.base_ios.do_lock);
}
static void test_ifstream(void)
{
const char *filename = "ifstream_test";
istream ifs, ifs_copy, *pifs;
filebuf *pfb;
char buffer[64];
char st[8];
int fd, ret, i;
memset(&ifs, 0xab, sizeof(istream));
/* constructors/destructors */
pifs = call_func2(p_ifstream_ctor, &ifs, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(ifs.extract_delim == 0, "expected 0 got %d\n", ifs.extract_delim);
ok(ifs.count == 0, "expected 0 got %d\n", ifs.count);
ok(ifs.base_ios.sb != NULL, "expected not %p got %p\n", NULL, ifs.base_ios.sb);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(ifs.base_ios.delbuf == 1, "expected 1 got %d\n", ifs.base_ios.delbuf);
ok(ifs.base_ios.tie == NULL, "expected %p got %p\n", NULL, ifs.base_ios.tie);
ok(ifs.base_ios.flags == FLAGS_skipws, "expected %x got %x\n", FLAGS_skipws, ifs.base_ios.flags);
ok(ifs.base_ios.precision == 6, "expected 6 got %d\n", ifs.base_ios.precision);
ok(ifs.base_ios.fill == ' ', "expected 32 got %d\n", ifs.base_ios.fill);
ok(ifs.base_ios.width == 0, "expected 0 got %d\n", ifs.base_ios.width);
ok(ifs.base_ios.do_lock == -1, "expected -1 got %d\n", ifs.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_ifstream_vbase_dtor, &ifs);
pifs = call_func3(p_ifstream_fd_ctor, &ifs, 42, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(ifs.base_ios.delbuf == 1, "expected 1 got %d\n", ifs.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);
pifs = call_func3(p_ifstream_copy_ctor, &ifs_copy, &ifs, TRUE);
pfb = (filebuf*) ifs_copy.base_ios.sb;
ok(pifs == &ifs_copy, "wrong return, expected %p got %p\n", &ifs_copy, pifs);
ok(ifs_copy.base_ios.sb == ifs.base_ios.sb, "expected shared streambuf\n");
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(ifs_copy.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs_copy.base_ios.state);
call_func1(p_ifstream_vbase_dtor, &ifs_copy);
call_func1(p_ifstream_dtor, &ifs.base_ios);
pifs = call_func5(p_ifstream_buffer_ctor, &ifs, 53, buffer, ARRAY_SIZE(buffer), TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(ifs.base_ios.delbuf == 1, "expected 1 got %d\n", ifs.base_ios.delbuf);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.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_ifstream_dtor, &ifs.base_ios);
pifs = call_func5(p_ifstream_buffer_ctor, &ifs, 64, NULL, 0, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(ifs.base_ios.delbuf == 1, "expected 1 got %d\n", ifs.base_ios.delbuf);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.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_ifstream_vbase_dtor, &ifs);
pifs = call_func5(p_ifstream_open_ctor, &ifs, filename, OPENMODE_in, filebuf_openprot, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(ifs.base_ios.delbuf == 1, "expected 1 got %d\n", ifs.base_ios.delbuf);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
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_ifstream_vbase_dtor, &ifs);
ok(_close(fd) == -1, "expected ifstream to close opened file\n");
/* attach */
pifs = call_func2(p_ifstream_ctor, &ifs, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
call_func2(p_ifstream_attach, &ifs, 42);
ok(ifs.base_ios.state == IOSTATE_goodbit, "attaching on vanilla stream set some state bits\n");
fd = (int) call_func1(p_ifstream_fd, &ifs);
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);
ifs.base_ios.state = IOSTATE_eofbit;
call_func2(p_ifstream_attach, &ifs, 53);
ok(ifs.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_ifstream_vbase_dtor, &ifs);
/* fd */
pifs = call_func2(p_ifstream_ctor, &ifs, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
fd = (int) call_func1(p_ifstream_fd, &ifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(fd == -1, "wrong fd, expected -1 but got %d\n", fd);
call_func1(p_ifstream_vbase_dtor, &ifs);
pifs = call_func5(p_ifstream_open_ctor, &ifs, filename, OPENMODE_in, filebuf_openprot, TRUE);
pfb = (filebuf*) ifs.base_ios.sb;
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
fd = (int) call_func1(p_ifstream_fd, &ifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ok(fd == pfb->fd, "wrong fd, expected %d but got %d\n", pfb->fd, fd);
/* rdbuf */
pfb = (filebuf*) call_func1(p_ifstream_rdbuf, &ifs);
ok((streambuf*) pfb == ifs.base_ios.sb, "wrong return, expected %p got %p\n", ifs.base_ios.sb, pfb);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
/* setmode */
ret = (int) call_func2(p_ifstream_setmode, &ifs, filebuf_binary);
ok(ret == filebuf_text, "wrong return, expected %d got %d\n", filebuf_text, ret);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ret = (int) call_func2(p_ifstream_setmode, &ifs, filebuf_binary);
ok(ret == filebuf_binary, "wrong return, expected %d got %d\n", filebuf_binary, ret);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ret = (int) call_func2(p_ifstream_setmode, &ifs, filebuf_text);
ok(ret == filebuf_binary, "wrong return, expected %d got %d\n", filebuf_binary, ret);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
ret = (int) call_func2(p_ifstream_setmode, &ifs, 0x9000);
ok(ret == -1, "wrong return, expected -1 got %d\n", ret);
ok(ifs.base_ios.state == IOSTATE_goodbit, "expected %d got %d\n", IOSTATE_goodbit, ifs.base_ios.state);
/* close && is_open */
ok((int) call_func1(p_ifstream_is_open, &ifs) == 1, "expected ifstream to be open\n");
ifs.base_ios.state = IOSTATE_eofbit | IOSTATE_failbit;
call_func1(p_ifstream_close, &ifs);
ok(ifs.base_ios.state == IOSTATE_goodbit, "close did not clear state = %d\n", ifs.base_ios.state);
ifs.base_ios.state = IOSTATE_eofbit;
call_func1(p_ifstream_close, &ifs);
ok(ifs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "close on a closed stream did not set failbit\n");
ok((int) call_func1(p_ifstream_is_open, &ifs) == 0, "expected ifstream to not be open\n");
ok(_close(fd) == -1, "expected close to close the opened file\n");
/* open */
ifs.base_ios.state = IOSTATE_eofbit;
call_func4(p_ifstream_open, &ifs, filename, OPENMODE_in, filebuf_openprot);
fd = (int) call_func1(p_ifstream_fd, &ifs);
ok(fd != -1, "wrong fd, expected not -1 got %d\n", fd);
ok(ifs.base_ios.state == IOSTATE_eofbit, "open did not succeed\n");
call_func4(p_ifstream_open, &ifs, filename, OPENMODE_in, filebuf_openprot);
ok(ifs.base_ios.state == (IOSTATE_eofbit | IOSTATE_failbit), "second open did not set failbit\n");
call_func1(p_ifstream_close, &ifs);
/* write something we can read later */
fd = _open(filename, _O_TRUNC|_O_CREAT|_O_RDWR, _S_IWRITE);
ok(fd != -1, "_open failed\n");
ok(_write(fd, "test 12", 7) == 7, "_write failed\n");
ok(_close(fd) == 0, "_close failed\n");
/* integration with parent istream - reading */
ifs.base_ios.state = IOSTATE_goodbit; /* open doesn't clear the state */
call_func4(p_ifstream_open, &ifs, filename, OPENMODE_out, filebuf_openprot); /* make sure that OPENMODE_in is implicit */
memset(st, 'A', sizeof(st));
st[7] = 0;
pifs = call_func2(p_istream_read_str, &ifs, st);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(!strcmp(st, "test"), "expected 'test' got '%s'\n", st);
i = 12345;
pifs = call_func2(p_istream_read_int, pifs, &i);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(i == 12, "expected 12 got %d\n", i);
call_func1(p_ifstream_vbase_dtor, &ifs);
/* make sure that OPENMODE_in is implicit with open_ctor */
pifs = call_func5(p_ifstream_open_ctor, &ifs, filename, OPENMODE_out, filebuf_openprot, TRUE);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
memset(st, 'A', sizeof(st));
st[7] = 0;
pifs = call_func2(p_istream_read_str, &ifs, st);
ok(pifs == &ifs, "wrong return, expected %p got %p\n", &ifs, pifs);
ok(!strcmp(st, "test"), "expected 'test' got '%s'\n", st);
call_func1(p_ifstream_vbase_dtor, &ifs);
ok(_unlink(filename) == 0, "Couldn't unlink file named '%s'\n", filename);
}
static void test_strstream(void)
{
iostream ios1, ios2, *pios;
......@@ -7538,6 +7788,7 @@ START_TEST(msvcirt)
test_istream_withassign();
test_istrstream();
test_iostream();
test_ifstream();
test_strstream();
test_stdiostream();
test_Iostream_init();
......
......@@ -20,16 +20,16 @@
@ stub -arch=win64 ??0fstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0fstream@@QAE@XZ
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ stub -arch=win32 ??0ifstream@@QAE@ABV0@@Z
@ stub -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0ifstream@@QAE@H@Z
@ stub -arch=win64 ??0ifstream@@QEAA@H@Z
@ stub -arch=win32 ??0ifstream@@QAE@HPADH@Z
@ stub -arch=win64 ??0ifstream@@QEAA@HPEADH@Z
@ stub -arch=win32 ??0ifstream@@QAE@PBDHH@Z
@ stub -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0ifstream@@QAE@XZ
@ stub -arch=win64 ??0ifstream@@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
@ cdecl -arch=win64 ??0ifstream@@QEAA@H@Z(ptr long long) msvcirt.??0ifstream@@QEAA@H@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@HPADH@Z(ptr long ptr long long) msvcirt.??0ifstream@@QAE@HPADH@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@HPEADH@Z(ptr long ptr long long) msvcirt.??0ifstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@PBDHH@Z(ptr str long long long) msvcirt.??0ifstream@@QAE@PBDHH@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z(ptr str long long long) msvcirt.??0ifstream@@QEAA@PEBDHH@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@XZ(ptr long) msvcirt.??0ifstream@@QAE@XZ
@ cdecl -arch=win64 ??0ifstream@@QEAA@XZ(ptr long) msvcirt.??0ifstream@@QEAA@XZ
@ thiscall -arch=win32 ??0ios@@IAE@ABV0@@Z(ptr ptr) msvcirt.??0ios@@IAE@ABV0@@Z
@ cdecl -arch=win64 ??0ios@@IEAA@AEBV0@@Z(ptr ptr) msvcirt.??0ios@@IEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0ios@@IAE@XZ(ptr) msvcirt.??0ios@@IAE@XZ
......@@ -124,8 +124,8 @@
@ cdecl -arch=win64 ??1filebuf@@UEAA@XZ(ptr) msvcirt.??1filebuf@@UEAA@XZ
@ stub -arch=win32 ??1fstream@@UAE@XZ
@ stub -arch=win64 ??1fstream@@UEAA@XZ
@ stub -arch=win32 ??1ifstream@@UAE@XZ
@ stub -arch=win64 ??1ifstream@@UEAA@XZ
@ thiscall -arch=win32 ??1ifstream@@UAE@XZ(ptr) msvcirt.??1ifstream@@UAE@XZ
@ cdecl -arch=win64 ??1ifstream@@UEAA@XZ(ptr) msvcirt.??1ifstream@@UEAA@XZ
@ thiscall -arch=win32 ??1ios@@UAE@XZ(ptr) msvcirt.??1ios@@UAE@XZ
@ cdecl -arch=win64 ??1ios@@UEAA@XZ(ptr) msvcirt.??1ios@@UEAA@XZ
@ thiscall -arch=win32 ??1iostream@@UAE@XZ(ptr) msvcirt.??1iostream@@UAE@XZ
......@@ -164,8 +164,8 @@
@ 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
@ stub -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z
@ stub -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@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
@ cdecl -arch=win64 ??4ios@@IEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4iostream@@IAEAAV0@AAV0@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0@AAV0@@Z
......@@ -288,7 +288,7 @@
@ cdecl -arch=win64 ??Bios@@QEBAPEAXXZ(ptr) msvcirt.??Bios@@QEBAPEAXXZ
@ extern ??_7filebuf@@6B@ msvcirt.??_7filebuf@@6B@
# @ extern ??_7fstream@@6B@
# @ extern ??_7ifstream@@6B@
@ extern ??_7ifstream@@6B@ msvcirt.??_7ifstream@@6B@
@ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
@ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
@ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
......@@ -305,7 +305,7 @@
@ extern ??_7strstreambuf@@6B@ msvcirt.??_7strstreambuf@@6B@
# @ extern ??_8fstream@@7Bistream@@@
# @ extern ??_8fstream@@7Bostream@@@
# @ extern ??_8ifstream@@7B@
@ extern ??_8ifstream@@7B@ msvcirt.??_8ifstream@@7B@
@ extern ??_8iostream@@7Bistream@@@ msvcirt.??_8iostream@@7Bistream@@@
@ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
@ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
......@@ -321,8 +321,8 @@
@ extern ??_8strstream@@7Bostream@@@ msvcirt.??_8strstream@@7Bostream@@@
@ stub -arch=win32 ??_Dfstream@@QAEXXZ
@ stub -arch=win64 ??_Dfstream@@QEAAXXZ
@ stub -arch=win32 ??_Difstream@@QAEXXZ
@ stub -arch=win64 ??_Difstream@@QEAAXXZ
@ thiscall -arch=win32 ??_Difstream@@QAEXXZ(ptr) msvcirt.??_Difstream@@QAEXXZ
@ cdecl -arch=win64 ??_Difstream@@QEAAXXZ(ptr) msvcirt.??_Difstream@@QEAAXXZ
@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) msvcirt.??_Diostream@@QAEXXZ
@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) msvcirt.??_Diostream@@QEAAXXZ
@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
......@@ -346,7 +346,7 @@
@ stub -arch=win32 ??_EIostream_init@@QAEPAXI@Z
@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI@Z(ptr long) msvcirt.??_Efilebuf@@UAEPAXI@Z
@ stub -arch=win32 ??_Efstream@@UAEPAXI@Z
@ stub -arch=win32 ??_Eifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eifstream@@UAEPAXI@Z(ptr long) msvcirt.??_Eifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eios@@UAEPAXI@Z(ptr long) msvcirt.??_Eios@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI@Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eistream@@UAEPAXI@Z(ptr long) msvcirt.??_Eistream@@UAEPAXI@Z
......@@ -364,7 +364,7 @@
@ stub -arch=win32 ??_GIostream_init@@QAEPAXI@Z
@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI@Z(ptr long) msvcirt.??_Gfilebuf@@UAEPAXI@Z
@ stub -arch=win32 ??_Gfstream@@UAEPAXI@Z
@ stub -arch=win32 ??_Gifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gifstream@@UAEPAXI@Z(ptr long) msvcirt.??_Gifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gios@@UAEPAXI@Z(ptr long) msvcirt.??_Gios@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Giostream@@UAEPAXI@Z(ptr long) msvcirt.??_Giostream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gistream@@UAEPAXI@Z(ptr long) msvcirt.??_Gistream@@UAEPAXI@Z
......@@ -394,8 +394,8 @@
@ 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
@ stub -arch=win32 ?attach@ifstream@@QAEXH@Z
@ stub -arch=win64 ?attach@ifstream@@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
@ stub -arch=win32 ?attach@ofstream@@QAEXH@Z
@ stub -arch=win64 ?attach@ofstream@@QEAAXH@Z
@ thiscall -arch=win32 ?bad@ios@@QBEHXZ(ptr) msvcirt.?bad@ios@@QBEHXZ
......@@ -416,8 +416,8 @@
@ 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
@ stub -arch=win32 ?close@ifstream@@QAEXXZ
@ stub -arch=win64 ?close@ifstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) msvcirt.?close@ifstream@@QAEXXZ
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) msvcirt.?close@ifstream@@QEAAXXZ
@ stub -arch=win32 ?close@ofstream@@QAEXXZ
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ cdecl -arch=win32 ?clrlock@ios@@QAAXXZ(ptr) msvcirt.?clrlock@ios@@QAAXXZ
......@@ -460,8 +460,8 @@
@ cdecl -arch=win64 ?fd@filebuf@@QEBAHXZ(ptr) msvcirt.?fd@filebuf@@QEBAHXZ
@ stub -arch=win32 ?fd@fstream@@QBEHXZ
@ stub -arch=win64 ?fd@fstream@@QEBAHXZ
@ stub -arch=win32 ?fd@ifstream@@QBEHXZ
@ stub -arch=win64 ?fd@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) msvcirt.?fd@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) msvcirt.?fd@ifstream@@QEBAHXZ
@ stub -arch=win32 ?fd@ofstream@@QBEHXZ
@ stub -arch=win64 ?fd@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?fill@ios@@QAEDD@Z(ptr long) msvcirt.?fill@ios@@QAEDD@Z
......@@ -527,8 +527,8 @@
@ 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
@ stub -arch=win32 ?is_open@ifstream@@QBEHXZ
@ stub -arch=win64 ?is_open@ifstream@@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
@ stub -arch=win32 ?is_open@ofstream@@QBEHXZ
@ stub -arch=win64 ?is_open@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?isfx@istream@@QAEXXZ(ptr) msvcirt.?isfx@istream@@QAEXXZ
......@@ -552,8 +552,8 @@
@ 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
@ stub -arch=win32 ?open@ifstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@ifstream@@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
@ stub -arch=win32 ?open@ofstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@ofstream@@QEAAXPEBDHH@Z
@ extern ?openprot@filebuf@@2HB msvcirt.?openprot@filebuf@@2HB
......@@ -601,8 +601,8 @@
@ 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
@ stub -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ
@ stub -arch=win64 ?rdbuf@ifstream@@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
@ cdecl -arch=win64 ?rdbuf@ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf@ios@@QEBAPEAVstreambuf@@XZ
@ thiscall -arch=win32 ?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ
......@@ -673,8 +673,8 @@
@ 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
@ stub -arch=win32 ?setmode@ifstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@ifstream@@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
@ stub -arch=win32 ?setmode@ofstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@ofstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setp@streambuf@@IAEXPAD0@Z(ptr ptr ptr) msvcirt.?setp@streambuf@@IAEXPAD0@Z
......
......@@ -38,16 +38,16 @@
@ stub -arch=win64 ??0fstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0fstream@@QAE@XZ
@ stub -arch=win64 ??0fstream@@QEAA@XZ
@ stub -arch=win32 ??0ifstream@@QAE@ABV0@@Z
@ stub -arch=win64 ??0ifstream@@QEAA@AEBV0@@Z
@ stub -arch=win32 ??0ifstream@@QAE@H@Z
@ stub -arch=win64 ??0ifstream@@QEAA@H@Z
@ stub -arch=win32 ??0ifstream@@QAE@HPADH@Z
@ stub -arch=win64 ??0ifstream@@QEAA@HPEADH@Z
@ stub -arch=win32 ??0ifstream@@QAE@PBDHH@Z
@ stub -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z
@ stub -arch=win32 ??0ifstream@@QAE@XZ
@ stub -arch=win64 ??0ifstream@@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
@ cdecl -arch=win64 ??0ifstream@@QEAA@H@Z(ptr long long) msvcirt.??0ifstream@@QEAA@H@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@HPADH@Z(ptr long ptr long long) msvcirt.??0ifstream@@QAE@HPADH@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@HPEADH@Z(ptr long ptr long long) msvcirt.??0ifstream@@QEAA@HPEADH@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@PBDHH@Z(ptr str long long long) msvcirt.??0ifstream@@QAE@PBDHH@Z
@ cdecl -arch=win64 ??0ifstream@@QEAA@PEBDHH@Z(ptr str long long long) msvcirt.??0ifstream@@QEAA@PEBDHH@Z
@ thiscall -arch=win32 ??0ifstream@@QAE@XZ(ptr long) msvcirt.??0ifstream@@QAE@XZ
@ cdecl -arch=win64 ??0ifstream@@QEAA@XZ(ptr long) msvcirt.??0ifstream@@QEAA@XZ
@ thiscall -arch=win32 ??0ios@@IAE@ABV0@@Z(ptr ptr) msvcirt.??0ios@@IAE@ABV0@@Z
@ cdecl -arch=win64 ??0ios@@IEAA@AEBV0@@Z(ptr ptr) msvcirt.??0ios@@IEAA@AEBV0@@Z
@ thiscall -arch=win32 ??0ios@@IAE@XZ(ptr) msvcirt.??0ios@@IAE@XZ
......@@ -154,8 +154,8 @@
@ cdecl -arch=win64 ??1filebuf@@UEAA@XZ(ptr) msvcirt.??1filebuf@@UEAA@XZ
@ stub -arch=win32 ??1fstream@@UAE@XZ
@ stub -arch=win64 ??1fstream@@UEAA@XZ
@ stub -arch=win32 ??1ifstream@@UAE@XZ
@ stub -arch=win64 ??1ifstream@@UEAA@XZ
@ thiscall -arch=win32 ??1ifstream@@UAE@XZ(ptr) msvcirt.??1ifstream@@UAE@XZ
@ cdecl -arch=win64 ??1ifstream@@UEAA@XZ(ptr) msvcirt.??1ifstream@@UEAA@XZ
@ thiscall -arch=win32 ??1ios@@UAE@XZ(ptr) msvcirt.??1ios@@UAE@XZ
@ cdecl -arch=win64 ??1ios@@UEAA@XZ(ptr) msvcirt.??1ios@@UEAA@XZ
@ thiscall -arch=win32 ??1iostream@@UAE@XZ(ptr) msvcirt.??1iostream@@UAE@XZ
......@@ -206,8 +206,8 @@
@ 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
@ stub -arch=win32 ??4ifstream@@QAEAAV0@ABV0@@Z
@ stub -arch=win64 ??4ifstream@@QEAAAEAV0@AEBV0@@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
@ cdecl -arch=win64 ??4ios@@IEAAAEAV0@AEBV0@@Z(ptr ptr) msvcirt.??4ios@@IEAAAEAV0@AEBV0@@Z
@ thiscall -arch=win32 ??4iostream@@IAEAAV0@AAV0@@Z(ptr ptr) msvcirt.??4iostream@@IAEAAV0@AAV0@@Z
......@@ -340,7 +340,7 @@
@ extern ??_7exception@@6B@ msvcrt.??_7exception@@6B@
@ extern ??_7filebuf@@6B@ msvcirt.??_7filebuf@@6B@
# @ extern ??_7fstream@@6B@
# @ extern ??_7ifstream@@6B@
@ extern ??_7ifstream@@6B@ msvcirt.??_7ifstream@@6B@
@ extern ??_7ios@@6B@ msvcirt.??_7ios@@6B@
@ extern ??_7iostream@@6B@ msvcirt.??_7iostream@@6B@
@ extern ??_7istream@@6B@ msvcirt.??_7istream@@6B@
......@@ -358,7 +358,7 @@
@ extern ??_7strstreambuf@@6B@ msvcirt.??_7strstreambuf@@6B@
# @ extern ??_8fstream@@7Bistream@@@
# @ extern ??_8fstream@@7Bostream@@@
# @ extern ??_8ifstream@@7B@
@ extern ??_8ifstream@@7B@ msvcirt.??_8ifstream@@7B@
@ extern ??_8iostream@@7Bistream@@@ msvcirt.??_8iostream@@7Bistream@@@
@ extern ??_8iostream@@7Bostream@@@ msvcirt.??_8iostream@@7Bostream@@@
@ extern ??_8istream@@7B@ msvcirt.??_8istream@@7B@
......@@ -374,8 +374,8 @@
@ extern ??_8strstream@@7Bostream@@@ msvcirt.??_8strstream@@7Bostream@@@
@ stub -arch=win32 ??_Dfstream@@QAEXXZ
@ stub -arch=win64 ??_Dfstream@@QEAAXXZ
@ stub -arch=win32 ??_Difstream@@QAEXXZ
@ stub -arch=win64 ??_Difstream@@QEAAXXZ
@ thiscall -arch=win32 ??_Difstream@@QAEXXZ(ptr) msvcirt.??_Difstream@@QAEXXZ
@ cdecl -arch=win64 ??_Difstream@@QEAAXXZ(ptr) msvcirt.??_Difstream@@QEAAXXZ
@ thiscall -arch=win32 ??_Diostream@@QAEXXZ(ptr) msvcirt.??_Diostream@@QAEXXZ
@ cdecl -arch=win64 ??_Diostream@@QEAAXXZ(ptr) msvcirt.??_Diostream@@QEAAXXZ
@ thiscall -arch=win32 ??_Distream@@QAEXXZ(ptr) msvcirt.??_Distream@@QAEXXZ
......@@ -403,7 +403,7 @@
@ thiscall -arch=win32 ??_Eexception@@UAEPAXI@Z(ptr long) msvcrt.??_Eexception@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Efilebuf@@UAEPAXI@Z(ptr long) msvcirt.??_Efilebuf@@UAEPAXI@Z
@ stub -arch=win32 ??_Efstream@@UAEPAXI@Z
@ stub -arch=win32 ??_Eifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eifstream@@UAEPAXI@Z(ptr long) msvcirt.??_Eifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eios@@UAEPAXI@Z(ptr long) msvcirt.??_Eios@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eiostream@@UAEPAXI@Z(ptr long) msvcirt.??_Eiostream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Eistream@@UAEPAXI@Z(ptr long) msvcirt.??_Eistream@@UAEPAXI@Z
......@@ -426,7 +426,7 @@
@ thiscall -arch=win32 ??_Gexception@@UAEPAXI@Z(ptr long) msvcrt.??_Gexception@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gfilebuf@@UAEPAXI@Z(ptr long) msvcirt.??_Gfilebuf@@UAEPAXI@Z
@ stub -arch=win32 ??_Gfstream@@UAEPAXI@Z
@ stub -arch=win32 ??_Gifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gifstream@@UAEPAXI@Z(ptr long) msvcirt.??_Gifstream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gios@@UAEPAXI@Z(ptr long) msvcirt.??_Gios@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Giostream@@UAEPAXI@Z(ptr long) msvcirt.??_Giostream@@UAEPAXI@Z
@ thiscall -arch=win32 ??_Gistream@@UAEPAXI@Z(ptr long) msvcirt.??_Gistream@@UAEPAXI@Z
......@@ -457,8 +457,8 @@
@ 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
@ stub -arch=win32 ?attach@ifstream@@QAEXH@Z
@ stub -arch=win64 ?attach@ifstream@@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
@ stub -arch=win32 ?attach@ofstream@@QAEXH@Z
@ stub -arch=win64 ?attach@ofstream@@QEAAXH@Z
@ thiscall -arch=win32 ?bad@ios@@QBEHXZ(ptr) msvcirt.?bad@ios@@QBEHXZ
......@@ -481,8 +481,8 @@
@ 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
@ stub -arch=win32 ?close@ifstream@@QAEXXZ
@ stub -arch=win64 ?close@ifstream@@QEAAXXZ
@ thiscall -arch=win32 ?close@ifstream@@QAEXXZ(ptr) msvcirt.?close@ifstream@@QAEXXZ
@ cdecl -arch=win64 ?close@ifstream@@QEAAXXZ(ptr) msvcirt.?close@ifstream@@QEAAXXZ
@ stub -arch=win32 ?close@ofstream@@QAEXXZ
@ stub -arch=win64 ?close@ofstream@@QEAAXXZ
@ cdecl -arch=win32 ?clrlock@ios@@QAAXXZ(ptr) msvcirt.?clrlock@ios@@QAAXXZ
......@@ -525,8 +525,8 @@
@ cdecl -arch=win64 ?fd@filebuf@@QEBAHXZ(ptr) msvcirt.?fd@filebuf@@QEBAHXZ
@ stub -arch=win32 ?fd@fstream@@QBEHXZ
@ stub -arch=win64 ?fd@fstream@@QEBAHXZ
@ stub -arch=win32 ?fd@ifstream@@QBEHXZ
@ stub -arch=win64 ?fd@ifstream@@QEBAHXZ
@ thiscall -arch=win32 ?fd@ifstream@@QBEHXZ(ptr) msvcirt.?fd@ifstream@@QBEHXZ
@ cdecl -arch=win64 ?fd@ifstream@@QEBAHXZ(ptr) msvcirt.?fd@ifstream@@QEBAHXZ
@ stub -arch=win32 ?fd@ofstream@@QBEHXZ
@ stub -arch=win64 ?fd@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?fill@ios@@QAEDD@Z(ptr long) msvcirt.?fill@ios@@QAEDD@Z
......@@ -594,8 +594,8 @@
@ 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
@ stub -arch=win32 ?is_open@ifstream@@QBEHXZ
@ stub -arch=win64 ?is_open@ifstream@@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
@ stub -arch=win32 ?is_open@ofstream@@QBEHXZ
@ stub -arch=win64 ?is_open@ofstream@@QEBAHXZ
@ thiscall -arch=win32 ?isfx@istream@@QAEXXZ(ptr) msvcirt.?isfx@istream@@QAEXXZ
......@@ -621,8 +621,8 @@
@ 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
@ stub -arch=win32 ?open@ifstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@ifstream@@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
@ stub -arch=win32 ?open@ofstream@@QAEXPBDHH@Z
@ stub -arch=win64 ?open@ofstream@@QEAAXPEBDHH@Z
@ extern ?openprot@filebuf@@2HB msvcirt.?openprot@filebuf@@2HB
......@@ -672,8 +672,8 @@
@ 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
@ stub -arch=win32 ?rdbuf@ifstream@@QBEPAVfilebuf@@XZ
@ stub -arch=win64 ?rdbuf@ifstream@@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
@ cdecl -arch=win64 ?rdbuf@ios@@QEBAPEAVstreambuf@@XZ(ptr) msvcirt.?rdbuf@ios@@QEBAPEAVstreambuf@@XZ
@ thiscall -arch=win32 ?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ(ptr) msvcirt.?rdbuf@istrstream@@QBEPAVstrstreambuf@@XZ
......@@ -745,8 +745,8 @@
@ 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
@ stub -arch=win32 ?setmode@ifstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@ifstream@@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
@ stub -arch=win32 ?setmode@ofstream@@QAEHH@Z
@ stub -arch=win64 ?setmode@ofstream@@QEAAHH@Z
@ thiscall -arch=win32 ?setp@streambuf@@IAEXPAD0@Z(ptr ptr ptr) msvcirt.?setp@streambuf@@IAEXPAD0@Z
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment