From 4f4f93802a1472e12c499d50a2d30c3e78877723 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Sun, 18 Nov 2012 21:43:58 +0100 Subject: [PATCH] msvcp60: Export basic_ostream constructors. --- dlls/msvcp60/ios.c | 110 ++++++++++++++++++-------------------- dlls/msvcp60/msvcp60.spec | 16 +++--- 2 files changed, 60 insertions(+), 66 deletions(-) diff --git a/dlls/msvcp60/ios.c b/dlls/msvcp60/ios.c index e597a7ee940..b1bae120387 100644 --- a/dlls/msvcp60/ios.c +++ b/dlls/msvcp60/ios.c @@ -5087,14 +5087,15 @@ static inline basic_ostream_char* basic_ostream_char_from_basic_ios(basic_ios_ch return (basic_ostream_char*)((char*)ptr-basic_ostream_char_vbtable[1]); } -/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */ -/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N@Z */ -static basic_ostream_char* basic_ostream_char_ctor(basic_ostream_char *this, - basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init) +/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */ +/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor, 20) +basic_ostream_char* __thiscall basic_ostream_char_ctor(basic_ostream_char *this, + basic_streambuf_char *strbuf, MSVCP_bool isstd, MSVCP_bool init, MSVCP_bool virt_init) { basic_ios_char *base; - TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init); + TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, init, virt_init); if(virt_init) { this->vbtable = basic_ostream_char_vbtable; @@ -5105,18 +5106,20 @@ static basic_ostream_char* basic_ostream_char_ctor(basic_ostream_char *this, } base->base.vtable = &MSVCP_basic_ostream_char_vtable; - basic_ios_char_init(base, strbuf, isstd); + if(init) + basic_ios_char_init(base, strbuf, isstd); return this; } -/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */ -/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */ -static basic_ostream_char* basic_ostream_char_ctor_uninitialized(basic_ostream_char *this, - int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init) +/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z */ +/* ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_char_ctor_uninitialized, 12) +basic_ostream_char* __thiscall basic_ostream_char_ctor_uninitialized(basic_ostream_char *this, + int uninitialized, MSVCP_bool virt_init) { basic_ios_char *base; - TRACE("(%p %d %x)\n", this, uninitialized, addstd); + TRACE("(%p %d)\n", this, uninitialized); if(virt_init) { this->vbtable = basic_ostream_char_vbtable; @@ -5127,8 +5130,7 @@ static basic_ostream_char* basic_ostream_char_ctor_uninitialized(basic_ostream_c } base->base.vtable = &MSVCP_basic_ostream_char_vtable; - if(addstd) - ios_base_Addstd(&base->base); + ios_base_Addstd(&base->base); return this; } @@ -5833,14 +5835,15 @@ static inline basic_ostream_wchar* basic_ostream_wchar_from_basic_ios(basic_ios_ return (basic_ostream_wchar*)((char*)ptr-basic_ostream_wchar_vbtable[1]); } -/* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@PAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */ -/* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@PEAV?$basic_streambuf@_WU?$char_traits@_W@std@@@1@_N@Z */ -static basic_ostream_wchar* basic_ostream_wchar_ctor(basic_ostream_wchar *this, - basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init) +/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */ +/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor, 20) +basic_ostream_wchar* __thiscall basic_ostream_short_ctor(basic_ostream_wchar *this, + basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool init, MSVCP_bool virt_init) { basic_ios_wchar *base; - TRACE("(%p %p %d %d)\n", this, strbuf, isstd, virt_init); + TRACE("(%p %p %d %d %d)\n", this, strbuf, isstd, init, virt_init); if(virt_init) { this->vbtable = basic_ostream_wchar_vbtable; @@ -5850,29 +5853,21 @@ static basic_ostream_wchar* basic_ostream_wchar_ctor(basic_ostream_wchar *this, base = basic_ostream_wchar_get_basic_ios(this); } - base->base.vtable = &MSVCP_basic_ostream_wchar_vtable; - basic_ios_wchar_init(base, strbuf, isstd); + base->base.vtable = &MSVCP_basic_ostream_short_vtable; + if(init) + basic_ios_wchar_init(base, strbuf, isstd); return this; } -/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */ -/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N@Z */ -static basic_ostream_wchar* basic_ostream_short_ctor(basic_ostream_wchar *this, - basic_streambuf_wchar *strbuf, MSVCP_bool isstd, MSVCP_bool virt_init) -{ - basic_ostream_wchar_ctor(this, strbuf, isstd, virt_init); - basic_ostream_wchar_get_basic_ios(this)->base.vtable = &MSVCP_basic_ostream_short_vtable; - return this; -} - -/* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QAE@W4_Uninitialized@1@_N@Z */ -/* ??0?$basic_ostream@_WU?$char_traits@_W@std@@@std@@QEAA@W4_Uninitialized@1@_N@Z */ -static basic_ostream_wchar* basic_ostream_wchar_ctor_uninitialized(basic_ostream_wchar *this, - int uninitialized, MSVCP_bool addstd, MSVCP_bool virt_init) +/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z */ +/* ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z */ +DEFINE_THISCALL_WRAPPER(basic_ostream_short_ctor_uninitialized, 12) +basic_ostream_wchar* __thiscall basic_ostream_short_ctor_uninitialized(basic_ostream_wchar *this, + int uninitialized, MSVCP_bool virt_init) { basic_ios_wchar *base; - TRACE("(%p %d %x)\n", this, uninitialized, addstd); + TRACE("(%p %d)\n", this, uninitialized); if(virt_init) { this->vbtable = basic_ostream_wchar_vbtable; @@ -5882,9 +5877,8 @@ static basic_ostream_wchar* basic_ostream_wchar_ctor_uninitialized(basic_ostream base = basic_ostream_wchar_get_basic_ios(this); } - base->base.vtable = &MSVCP_basic_ostream_wchar_vtable; - if(addstd) - ios_base_Addstd(&base->base); + base->base.vtable = &MSVCP_basic_ostream_short_vtable; + ios_base_Addstd(&base->base); return this; } @@ -9150,7 +9144,7 @@ basic_iostream_char* __thiscall basic_iostream_char_ctor(basic_iostream_char *th basic_ios->base.vtable = &MSVCP_basic_iostream_char_vtable; basic_istream_char_ctor(&this->base1, strbuf, FALSE, FALSE); - basic_ostream_char_ctor_uninitialized(&this->base2, 0, FALSE, FALSE); + basic_ostream_char_ctor(&this->base2, NULL, FALSE, FALSE, FALSE); return this; } @@ -9228,7 +9222,7 @@ static basic_iostream_wchar* basic_iostream_wchar_ctor(basic_iostream_wchar *thi } basic_istream_wchar_ctor(&this->base1, strbuf, FALSE, FALSE); - basic_ostream_wchar_ctor_uninitialized(&this->base2, 0, FALSE, FALSE); + basic_ostream_short_ctor(&this->base2, NULL, FALSE, FALSE, FALSE); basic_ios->base.vtable = &MSVCP_basic_iostream_wchar_vtable; return this; @@ -9322,7 +9316,7 @@ basic_ofstream_char* __thiscall basic_ofstream_char_ctor(basic_ofstream_char *th } basic_filebuf_char_ctor(&this->filebuf); - basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable; return this; } @@ -9345,7 +9339,7 @@ static basic_ofstream_char* basic_ofstream_char_ctor_file( } basic_filebuf_char_ctor_file(&this->filebuf, file); - basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ostream_char_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ofstream_char_vtable; return this; } @@ -9505,7 +9499,7 @@ static basic_ofstream_wchar* basic_ofstream_wchar_ctor(basic_ofstream_wchar *thi } basic_filebuf_wchar_ctor(&this->filebuf); - basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable; return this; } @@ -9538,7 +9532,7 @@ static basic_ofstream_wchar* basic_ofstream_wchar_ctor_file( } basic_filebuf_wchar_ctor_file(&this->filebuf, file); - basic_ostream_wchar_ctor(&this->base, &this->filebuf.base, FALSE, FALSE); + basic_ostream_short_ctor(&this->base, &this->filebuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ofstream_wchar_vtable; return this; } @@ -10518,7 +10512,7 @@ basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_str(basic_ost } basic_stringbuf_char_ctor_str(&this->strbuf, str, mode|OPENMODE_out); - basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE); + basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable; return this; } @@ -10542,7 +10536,7 @@ basic_ostringstream_char* __thiscall basic_ostringstream_char_ctor_mode( } basic_stringbuf_char_ctor_mode(&this->strbuf, mode|OPENMODE_out); - basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, FALSE); + basic_ostream_char_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ostringstream_char_vtable; return this; } @@ -10658,7 +10652,7 @@ static basic_ostringstream_wchar* basic_ostringstream_wchar_ctor_str(basic_ostri } basic_stringbuf_wchar_ctor_str(&this->strbuf, str, mode|OPENMODE_out); - basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE); + basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable; return this; } @@ -10692,7 +10686,7 @@ static basic_ostringstream_wchar* basic_ostringstream_wchar_ctor_mode( } basic_stringbuf_wchar_ctor_mode(&this->strbuf, mode|OPENMODE_out); - basic_ostream_wchar_ctor(&this->base, &this->strbuf.base, FALSE, FALSE); + basic_ostream_short_ctor(&this->base, &this->strbuf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_basic_ostringstream_wchar_vtable; return this; } @@ -11762,7 +11756,7 @@ ostrstream* __thiscall ostrstream_ctor(ostrstream *this, char *buf, streamsize s strstreambuf_ctor_get_put(&this->buf, buf, size, buf && (mode & OPENMODE_app) ? buf+strlen(buf) : buf); - basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, FALSE); + basic_ostream_char_ctor(&this->base, &this->buf.base, FALSE, TRUE, FALSE); basic_ios->base.vtable = &MSVCP_ostrstream_vtable; return this; } @@ -12270,31 +12264,31 @@ void init_io(void *base) basic_istream_wchar_ctor(&wcin.obj, &filebuf_wchar_stdin.base, FALSE/*FIXME*/, TRUE); basic_filebuf_char_ctor_file(&filebuf_char_stdout, stdout); - basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE); + basic_ostream_char_ctor(&cout.obj, &filebuf_char_stdout.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_short_ctor_file(&filebuf_short_stdout, stdout); - basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&ucout.obj, &filebuf_short_stdout.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_wchar_ctor_file(&filebuf_wchar_stdout, stdout); - basic_ostream_wchar_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&wcout.obj, &filebuf_wchar_stdout.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_char_ctor_file(&filebuf_char_stderr, stderr); - basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE); + basic_ostream_char_ctor(&cerr.obj, &filebuf_char_stderr.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_short_ctor_file(&filebuf_short_stderr, stderr); - basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&ucerr.obj, &filebuf_short_stderr.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_wchar_ctor_file(&filebuf_wchar_stderr, stderr); - basic_ostream_wchar_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&wcerr.obj, &filebuf_wchar_stderr.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_char_ctor_file(&filebuf_char_log, stderr); - basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE); + basic_ostream_char_ctor(&clog.obj, &filebuf_char_log.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_short_ctor_file(&filebuf_short_log, stderr); - basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&uclog.obj, &filebuf_short_log.base, FALSE/*FIXME*/, TRUE, TRUE); basic_filebuf_wchar_ctor_file(&filebuf_wchar_log, stderr); - basic_ostream_wchar_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE); + basic_ostream_short_ctor(&wclog.obj, &filebuf_wchar_log.base, FALSE/*FIXME*/, TRUE, TRUE); } void free_io(void) diff --git a/dlls/msvcp60/msvcp60.spec b/dlls/msvcp60/msvcp60.spec index abcc88ee24f..cd6e12f8708 100644 --- a/dlls/msvcp60/msvcp60.spec +++ b/dlls/msvcp60/msvcp60.spec @@ -611,16 +611,16 @@ @ 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 @ stub -arch=win64 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z -@ stub -arch=win64 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z -@ stub -arch=win32 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z -@ stub -arch=win64 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z +@ thiscall -arch=win32 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@PAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z(ptr ptr long long long) basic_ostream_char_ctor +@ cdecl -arch=win64 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@_N1@Z(ptr ptr long long long) basic_ostream_char_ctor +@ thiscall -arch=win32 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QAE@W4_Uninitialized@1@@Z(ptr long long) basic_ostream_char_ctor_uninitialized +@ cdecl -arch=win64 ??0?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@W4_Uninitialized@1@@Z(ptr long long) basic_ostream_char_ctor_uninitialized @ stub -arch=win32 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@AEBV01@@Z -@ stub -arch=win32 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z -@ stub -arch=win64 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z -@ stub -arch=win32 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z -@ stub -arch=win64 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z +@ thiscall -arch=win32 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@PAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z(ptr ptr long long long) basic_ostream_short_ctor +@ cdecl -arch=win64 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@PEAV?$basic_streambuf@GU?$char_traits@G@std@@@1@_N1@Z(ptr ptr long long long) basic_ostream_short_ctor +@ thiscall -arch=win32 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QAE@W4_Uninitialized@1@@Z(ptr long long) basic_ostream_short_ctor_uninitialized +@ cdecl -arch=win64 ??0?$basic_ostream@GU?$char_traits@G@std@@@std@@QEAA@W4_Uninitialized@1@@Z(ptr long long) basic_ostream_short_ctor_uninitialized @ stub -arch=win32 ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV01@@Z @ stub -arch=win64 ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@AEBV01@@Z @ thiscall -arch=win32 ??0?$basic_ostringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@1@H@Z(ptr ptr long long) basic_ostringstream_char_ctor_str