diff --git a/dlls/msvcp60/ios.c b/dlls/msvcp60/ios.c index 4b98fcf8503..cb355ec41af 100644 --- a/dlls/msvcp60/ios.c +++ b/dlls/msvcp60/ios.c @@ -9383,6 +9383,56 @@ basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *th return this; } +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PAU_iobuf@@@Z */ +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEAU_iobuf@@@Z */ +static basic_ofstream_char* basic_ofstream_char_ctor_file( + basic_ofstream_char *this, FILE *file, MSVCP_bool virt_init) +{ + basic_ios_char *basic_ios; + + TRACE("(%p %p %d)\n", this, file, virt_init); + + if(virt_init) { + this->base.vbtable = basic_ofstream_char_vbtable; + basic_ios = basic_ostream_char_get_basic_ios(&this->base); + basic_ios_char_ctor(basic_ios); + }else { + basic_ios = basic_ostream_char_get_basic_ios(&this->base); + } + + basic_filebuf_char_ctor_file(&this->filebuf, file); + basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable; + return this; +} + +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z */ +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ofstream_char_copy_ctor, 12) +basic_ofstream_char* __thiscall basic_ofstream_char_copy_ctor(basic_ofstream_char *this, + basic_ofstream_char *copy, MSVCP_bool virt_init) +{ + TRACE("(%p %p %d)\n", this, copy, virt_init); + return basic_ofstream_char_ctor_file(this, copy->filebuf.file, virt_init); +} + +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z */ +/* ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z */ +DEFINE_THISCALL_WRAPPER(basic_ofstream_char_ctor_name, 16) +basic_ofstream_char* __thiscall basic_ofstream_char_ctor_name(basic_ofstream_char *this, + const char *name, int mode, MSVCP_bool virt_init) +{ + TRACE("(%p %s %d %d)\n", this, name, mode, virt_init); + + basic_ofstream_char_ctor(this, virt_init); + + if(!basic_filebuf_char_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) { + basic_ios_char *basic_ios = basic_ostream_char_get_basic_ios(&this->base); + basic_ios_char_setstate(basic_ios, IOSTATE_failbit); + } + return this; +} + /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UAE@XZ */ /* ??1?$basic_ofstream@DU?$char_traits@D@std@@@std@@UEAA@XZ */ DEFINE_THISCALL_WRAPPER(basic_ofstream_char_dtor, 4) @@ -9526,6 +9576,66 @@ basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor(basic_ofstream_wchar return this; } +/* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QAE@PAU_iobuf@@@Z */ +/* ??0?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAU_iobuf@@@Z */ +static basic_ofstream_wchar* basic_ofstream_wchar_ctor_file( + basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init) +{ + basic_ios_wchar *basic_ios; + + TRACE("(%p %p %d)\n", this, file, virt_init); + + if(virt_init) { + this->base.vbtable = basic_ofstream_wchar_vbtable; + basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); + basic_ios_wchar_ctor(basic_ios); + }else { + basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); + } + + basic_filebuf_wchar_ctor_file(&this->filebuf, file); + basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable; + return this; +} + +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PAU_iobuf@@@Z */ +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEAU_iobuf@@@Z */ +static basic_ofstream_wchar* basic_ofstream_short_ctor_file( + basic_ofstream_wchar *this, FILE *file, MSVCP_bool virt_init) +{ + basic_ofstream_wchar_ctor_file(this, file, virt_init); + basic_ostream_wchar_get_basic_ios(&this->base)->base.vtable = &MSVCP_basic_ofstream_short_vtable; + return this; +} + +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z */ +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ofstream_short_copy_ctor, 12) +basic_ofstream_wchar* __thiscall basic_ofstream_short_copy_ctor(basic_ofstream_wchar *this, + basic_ofstream_wchar *copy, MSVCP_bool virt_init) +{ + TRACE("(%p %p %d)\n", this, copy, virt_init); + return basic_ofstream_short_ctor_file(this, copy->filebuf.file, virt_init); +} + +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z */ +/* ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z */ +DEFINE_THISCALL_WRAPPER(basic_ofstream_short_ctor_name, 16) +basic_ofstream_wchar* __thiscall basic_ofstream_short_ctor_name(basic_ofstream_wchar *this, + const char *name, int mode, MSVCP_bool virt_init) +{ + TRACE("(%p %s %d %d)\n", this, name, mode, virt_init); + + basic_ofstream_short_ctor(this, virt_init); + + if(!basic_filebuf_wchar_open(&this->filebuf, name, mode|OPENMODE_out, _SH_DENYNO)) { + basic_ios_wchar *basic_ios = basic_ostream_wchar_get_basic_ios(&this->base); + basic_ios_wchar_setstate(basic_ios, IOSTATE_failbit); + } + return this; +} + /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UAE@XZ */ /* ??1?$basic_ofstream@_WU?$char_traits@_W@std@@@std@@UEAA@XZ */ /* ??1?$basic_ofstream@GU?$char_traits@G@std@@@std@@UAE@XZ */ diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec index aeae92be499..ee9fa34ed26 100644 --- a/dlls/msvcp60/msvcp60.spec +++ b/dlls/msvcp60/msvcp60.spec @@ -597,16 +597,16 @@ @ cdecl -arch=win64 ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@AEBV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@1@H@Z(ptr ptr long long) basic_istringstream_short_ctor_str @ thiscall -arch=win32 ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAE@H@Z(ptr long long) basic_istringstream_short_ctor_mode @ cdecl -arch=win64 ??0?$basic_istringstream@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QEAA@H@Z(ptr long long) basic_istringstream_short_ctor_mode -@ stub -arch=win32 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z -@ stub -arch=win64 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z +@ thiscall -arch=win32 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z(ptr ptr long) basic_ofstream_char_copy_ctor +@ cdecl -arch=win64 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z(ptr ptr long) basic_ofstream_char_copy_ctor +@ thiscall -arch=win32 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@PBDH@Z(ptr str long long) basic_ofstream_char_ctor_name +@ cdecl -arch=win64 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@PEBDH@Z(ptr str long long) basic_ofstream_char_ctor_name @ thiscall -arch=win32 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ(ptr long) basic_ofstream_char_ctor @ cdecl -arch=win64 ??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QEAA@XZ(ptr long) basic_ofstream_char_ctor -@ stub -arch=win32 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z -@ stub -arch=win64 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z -@ stub -arch=win64 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z +@ thiscall -arch=win32 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z(ptr ptr long) basic_ofstream_short_copy_ctor +@ cdecl -arch=win64 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z(ptr ptr long) basic_ofstream_short_copy_ctor +@ thiscall -arch=win32 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@PBDH@Z(ptr str long long) basic_ofstream_short_ctor_name +@ cdecl -arch=win64 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@PEBDH@Z(ptr str long long) basic_ofstream_short_ctor_name @ thiscall -arch=win32 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QAE@XZ(ptr long) basic_ofstream_short_ctor @ cdecl -arch=win64 ??0?$basic_ofstream@GU?$char_traits@G@std@@@std@@QEAA@XZ(ptr long) basic_ofstream_short_ctor @ stub -arch=win32 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@ABV01@@Z