Piotr Caban : msvcp60: Added basic_ofstream constructors implementation.
Alexandre Julliard
julliard at winehq.org
Mon Oct 8 13:39:56 CDT 2012
Module: wine
Branch: master
Commit: 1956360c6d8d5a82c28a2fed0693936a013b898e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1956360c6d8d5a82c28a2fed0693936a013b898e
Author: Piotr Caban <piotr at codeweavers.com>
Date: Fri Oct 5 14:55:51 2012 +0200
msvcp60: Added basic_ofstream constructors implementation.
---
dlls/msvcp60/ios.c | 110 +++++++++++++++++++++++++++++++++++++++++++++
dlls/msvcp60/msvcp60.spec | 16 +++---
2 files changed, 118 insertions(+), 8 deletions(-)
diff --git a/dlls/msvcp60/ios.c b/dlls/msvcp60/ios.c
index 4b98fcf..cb355ec 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 at DU?$char_traits at D@std@@@std@@QAE at PAU_iobuf@@@Z */
+/* ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at 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 at DU?$char_traits at D@std@@@std@@QAE at ABV01@@Z */
+/* ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at 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 at DU?$char_traits at D@std@@@std@@QAE at PBDH@Z */
+/* ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at 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 at DU?$char_traits at D@std@@@std@@UAE at XZ */
/* ??1?$basic_ofstream at DU?$char_traits at D@std@@@std@@UEAA at 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 at _WU?$char_traits at _W@std@@@std@@QAE at PAU_iobuf@@@Z */
+/* ??0?$basic_ofstream at _WU?$char_traits at _W@std@@@std@@QEAA at 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 at GU?$char_traits at G@std@@@std@@QAE at PAU_iobuf@@@Z */
+/* ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at 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 at GU?$char_traits at G@std@@@std@@QAE at ABV01@@Z */
+/* ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at 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 at GU?$char_traits at G@std@@@std@@QAE at PBDH@Z */
+/* ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at 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 at _WU?$char_traits at _W@std@@@std@@UAE at XZ */
/* ??1?$basic_ofstream at _WU?$char_traits at _W@std@@@std@@UEAA at XZ */
/* ??1?$basic_ofstream at GU?$char_traits at G@std@@@std@@UAE at XZ */
diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec
index aeae92b..ee9fa34 100644
--- a/dlls/msvcp60/msvcp60.spec
+++ b/dlls/msvcp60/msvcp60.spec
@@ -597,16 +597,16 @@
@ cdecl -arch=win64 ??0?$basic_istringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAA at AEBV?$basic_string at GU?$char_traits at G@std@@V?$allocator at G@2@@1 at H@Z(ptr ptr long long) basic_istringstream_short_ctor_str
@ thiscall -arch=win32 ??0?$basic_istringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QAE at H@Z(ptr long long) basic_istringstream_short_ctor_mode
@ cdecl -arch=win64 ??0?$basic_istringstream at GU?$char_traits at G@std@@V?$allocator at G@2@@std@@QEAA at H@Z(ptr long long) basic_istringstream_short_ctor_mode
-@ stub -arch=win32 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QAE at ABV01@@Z
-@ stub -arch=win64 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at AEBV01@@Z
-@ stub -arch=win32 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QAE at PBDH@Z
-@ stub -arch=win64 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at PEBDH@Z
+@ thiscall -arch=win32 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QAE at ABV01@@Z(ptr ptr long) basic_ofstream_char_copy_ctor
+@ cdecl -arch=win64 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at AEBV01@@Z(ptr ptr long) basic_ofstream_char_copy_ctor
+@ thiscall -arch=win32 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QAE at PBDH@Z(ptr str long long) basic_ofstream_char_ctor_name
+@ cdecl -arch=win64 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at PEBDH@Z(ptr str long long) basic_ofstream_char_ctor_name
@ thiscall -arch=win32 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QAE at XZ(ptr long) basic_ofstream_char_ctor
@ cdecl -arch=win64 ??0?$basic_ofstream at DU?$char_traits at D@std@@@std@@QEAA at XZ(ptr long) basic_ofstream_char_ctor
-@ stub -arch=win32 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QAE at ABV01@@Z
-@ stub -arch=win64 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at AEBV01@@Z
-@ stub -arch=win32 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QAE at PBDH@Z
-@ stub -arch=win64 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at PEBDH@Z
+@ thiscall -arch=win32 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QAE at ABV01@@Z(ptr ptr long) basic_ofstream_short_copy_ctor
+@ cdecl -arch=win64 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at AEBV01@@Z(ptr ptr long) basic_ofstream_short_copy_ctor
+@ thiscall -arch=win32 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QAE at PBDH@Z(ptr str long long) basic_ofstream_short_ctor_name
+@ cdecl -arch=win64 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at PEBDH@Z(ptr str long long) basic_ofstream_short_ctor_name
@ thiscall -arch=win32 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QAE at XZ(ptr long) basic_ofstream_short_ctor
@ cdecl -arch=win64 ??0?$basic_ofstream at GU?$char_traits at G@std@@@std@@QEAA at XZ(ptr long) basic_ofstream_short_ctor
@ stub -arch=win32 ??0?$basic_ostream at DU?$char_traits at D@std@@@std@@QAE at ABV01@@Z
More information about the wine-cvs
mailing list