From: "Iván Matellanes" Subject: [v2] msvcirt: Get rid of specific functions for signed and unsigned chars. Message-Id: <1469187033-19374-1-git-send-email-matellanes.ivan@gmail.com> Date: Fri, 22 Jul 2016 12:30:33 +0100 Supersedes 124636. v2: Remove unsigned char versions too as they turn out to be equivalent. Signed-off-by: Iván Matellanes --- dlls/msvcirt/msvcirt.c | 113 +++++++++++----------------------------------- dlls/msvcirt/msvcirt.spec | 48 ++++++++++---------- 2 files changed, 50 insertions(+), 111 deletions(-) diff --git a/dlls/msvcirt/msvcirt.c b/dlls/msvcirt/msvcirt.c index 7ea6541..1438324 100644 --- a/dlls/msvcirt/msvcirt.c +++ b/dlls/msvcirt/msvcirt.c @@ -2458,10 +2458,14 @@ void __thiscall ostream_osfx(ostream *this) ios_unlock(base); } +/* ?put@ostream@@QAEAAV1@C@Z */ +/* ?put@ostream@@QEAAAEAV1@C@Z */ /* ?put@ostream@@QAEAAV1@D@Z */ /* ?put@ostream@@QEAAAEAV1@D@Z */ -DEFINE_THISCALL_WRAPPER(ostream_put_char, 8) -ostream* __thiscall ostream_put_char(ostream *this, char c) +/* ?put@ostream@@QAEAAV1@E@Z */ +/* ?put@ostream@@QEAAAEAV1@E@Z */ +DEFINE_THISCALL_WRAPPER(ostream_put, 8) +ostream* __thiscall ostream_put(ostream *this, char c) { ios *base = ostream_get_ios(this); @@ -2475,22 +2479,6 @@ ostream* __thiscall ostream_put_char(ostream *this, char c) return this; } -/* ?put@ostream@@QAEAAV1@C@Z */ -/* ?put@ostream@@QEAAAEAV1@C@Z */ -DEFINE_THISCALL_WRAPPER(ostream_put_signed_char, 8) -ostream* __thiscall ostream_put_signed_char(ostream *this, signed char c) -{ - return ostream_put_char(this, (char) c); -} - -/* ?put@ostream@@QAEAAV1@E@Z */ -/* ?put@ostream@@QEAAAEAV1@E@Z */ -DEFINE_THISCALL_WRAPPER(ostream_put_unsigned_char, 8) -ostream* __thiscall ostream_put_unsigned_char(ostream *this, unsigned char c) -{ - return ostream_put_char(this, (char) c); -} - /* ?seekp@ostream@@QAEAAV1@J@Z */ /* ?seekp@ostream@@QEAAAEAV1@J@Z */ DEFINE_THISCALL_WRAPPER(ostream_seekp, 8) @@ -2540,10 +2528,14 @@ streampos __thiscall ostream_tellp(ostream *this) return pos; } +/* ?write@ostream@@QAEAAV1@PBCH@Z */ +/* ?write@ostream@@QEAAAEAV1@PEBCH@Z */ /* ?write@ostream@@QAEAAV1@PBDH@Z */ /* ?write@ostream@@QEAAAEAV1@PEBDH@Z */ -DEFINE_THISCALL_WRAPPER(ostream_write_char, 12) -ostream* __thiscall ostream_write_char(ostream *this, const char *str, int count) +/* ?write@ostream@@QAEAAV1@PBEH@Z */ +/* ?write@ostream@@QEAAAEAV1@PEBEH@Z */ +DEFINE_THISCALL_WRAPPER(ostream_write, 12) +ostream* __thiscall ostream_write(ostream *this, const char *str, int count) { ios *base = ostream_get_ios(this); @@ -2557,22 +2549,6 @@ ostream* __thiscall ostream_write_char(ostream *this, const char *str, int count return this; } -/* ?write@ostream@@QAEAAV1@PBCH@Z */ -/* ?write@ostream@@QEAAAEAV1@PEBCH@Z */ -DEFINE_THISCALL_WRAPPER(ostream_write_signed_char, 12) -ostream* __thiscall ostream_write_signed_char(ostream *this, const signed char *str, int count) -{ - return ostream_write_char(this, (const char*) str, count); -} - -/* ?write@ostream@@QAEAAV1@PBEH@Z */ -/* ?write@ostream@@QEAAAEAV1@PEBEH@Z */ -DEFINE_THISCALL_WRAPPER(ostream_write_unsigned_char, 12) -ostream* __thiscall ostream_write_unsigned_char(ostream *this, const unsigned char *str, int count) -{ - return ostream_write_char(this, (const char*) str, count); -} - /* ?writepad@ostream@@AAEAAV1@PBD0@Z */ /* ?writepad@ostream@@AEAAAEAV1@PEBD0@Z */ DEFINE_THISCALL_WRAPPER(ostream_writepad, 12) @@ -2690,6 +2666,8 @@ static ostream* ostream_internal_print_float(ostream *ostr, double d, BOOL dbl) /* ??6ostream@@QEAAAEAV0@C@Z */ /* ??6ostream@@QAEAAV0@D@Z */ /* ??6ostream@@QEAAAEAV0@D@Z */ +/* ??6ostream@@QAEAAV0@E@Z */ +/* ??6ostream@@QEAAAEAV0@E@Z */ DEFINE_THISCALL_WRAPPER(ostream_print_char, 8) ostream* __thiscall ostream_print_char(ostream *this, char c) { @@ -2704,18 +2682,12 @@ ostream* __thiscall ostream_print_char(ostream *this, char c) return this; } -/* ??6ostream@@QAEAAV0@E@Z */ -/* ??6ostream@@QEAAAEAV0@E@Z */ -DEFINE_THISCALL_WRAPPER(ostream_print_unsigned_char, 8) -ostream* __thiscall ostream_print_unsigned_char(ostream *this, unsigned char c) -{ - return ostream_print_char(this, c); -} - /* ??6ostream@@QAEAAV0@PBC@Z */ /* ??6ostream@@QEAAAEAV0@PEBC@Z */ /* ??6ostream@@QAEAAV0@PBD@Z */ /* ??6ostream@@QEAAAEAV0@PEBD@Z */ +/* ??6ostream@@QAEAAV0@PBE@Z */ +/* ??6ostream@@QEAAAEAV0@PEBE@Z */ DEFINE_THISCALL_WRAPPER(ostream_print_str, 8) ostream* __thiscall ostream_print_str(ostream *this, const char *str) { @@ -2727,14 +2699,6 @@ ostream* __thiscall ostream_print_str(ostream *this, const char *str) return this; } -/* ??6ostream@@QAEAAV0@PBE@Z */ -/* ??6ostream@@QEAAAEAV0@PEBE@Z */ -DEFINE_THISCALL_WRAPPER(ostream_print_unsigned_str, 8) -ostream* __thiscall ostream_print_unsigned_str(ostream *this, const unsigned char *str) -{ - return ostream_print_str(this, (const char*) str); -} - /* ??6ostream@@QAEAAV0@F@Z */ /* ??6ostream@@QEAAAEAV0@F@Z */ DEFINE_THISCALL_WRAPPER(ostream_print_short, 8) @@ -2858,7 +2822,7 @@ ostream* __thiscall ostream_print_ios_manip(ostream *this, ios* (__cdecl *func)( ostream* __cdecl ostream_endl(ostream *this) { TRACE("(%p)\n", this); - ostream_put_char(this, '\n'); + ostream_put(this, '\n'); return ostream_flush(this); } @@ -2867,7 +2831,7 @@ ostream* __cdecl ostream_endl(ostream *this) ostream* __cdecl ostream_ends(ostream *this) { TRACE("(%p)\n", this); - return ostream_put_char(this, 0); + return ostream_put(this, 0); } /* ?flush@@YAAAVostream@@AAV1@@Z */ @@ -3148,20 +3112,14 @@ istream* __thiscall istream_get_str_delim(istream *this, char *str, int count, i /* ?get@istream@@QEAAAEAV1@PEACHD@Z */ /* ?get@istream@@QAEAAV1@PADHD@Z */ /* ?get@istream@@QEAAAEAV1@PEADHD@Z */ +/* ?get@istream@@QAEAAV1@PAEHD@Z */ +/* ?get@istream@@QEAAAEAV1@PEAEHD@Z */ DEFINE_THISCALL_WRAPPER(istream_get_str, 16) istream* __thiscall istream_get_str(istream *this, char *str, int count, char delim) { return istream_get_str_delim(this, str, count, (unsigned char) delim); } -/* ?get@istream@@QAEAAV1@PAEHD@Z */ -/* ?get@istream@@QEAAAEAV1@PEAEHD@Z */ -DEFINE_THISCALL_WRAPPER(istream_get_unsigned_str, 16) -istream* __thiscall istream_get_unsigned_str(istream *this, unsigned char *str, int count, char delim) -{ - return istream_get_str(this, (char*) str, count, delim); -} - static int istream_internal_get_char(istream *this, char *ch) { ios *base = istream_get_ios(this); @@ -3188,6 +3146,8 @@ static int istream_internal_get_char(istream *this, char *ch) /* ?get@istream@@QEAAAEAV1@AEAC@Z */ /* ?get@istream@@QAEAAV1@AAD@Z */ /* ?get@istream@@QEAAAEAV1@AEAD@Z */ +/* ?get@istream@@QAEAAV1@AAE@Z */ +/* ?get@istream@@QEAAAEAV1@AEAE@Z */ DEFINE_THISCALL_WRAPPER(istream_get_char, 8) istream* __thiscall istream_get_char(istream *this, char *ch) { @@ -3195,15 +3155,6 @@ istream* __thiscall istream_get_char(istream *this, char *ch) return this; } -/* ?get@istream@@QAEAAV1@AAE@Z */ -/* ?get@istream@@QEAAAEAV1@AEAE@Z */ -DEFINE_THISCALL_WRAPPER(istream_get_unsigned_char, 8) -istream* __thiscall istream_get_unsigned_char(istream *this, unsigned char *ch) -{ - istream_internal_get_char(this, (char*) ch); - return this; -} - /* ?get@istream@@QAEHXZ */ /* ?get@istream@@QEAAHXZ */ DEFINE_THISCALL_WRAPPER(istream_get, 4) @@ -3241,6 +3192,8 @@ istream* __thiscall istream_get_sb(istream *this, streambuf *sb, char delim) /* ?getline@istream@@QEAAAEAV1@PEACHD@Z */ /* ?getline@istream@@QAEAAV1@PADHD@Z */ /* ?getline@istream@@QEAAAEAV1@PEADHD@Z */ +/* ?getline@istream@@QAEAAV1@PAEHD@Z */ +/* ?getline@istream@@QEAAAEAV1@PEAEHD@Z */ DEFINE_THISCALL_WRAPPER(istream_getline, 16) istream* __thiscall istream_getline(istream *this, char *str, int count, char delim) { @@ -3255,14 +3208,6 @@ istream* __thiscall istream_getline(istream *this, char *str, int count, char de return this; } -/* ?getline@istream@@QAEAAV1@PAEHD@Z */ -/* ?getline@istream@@QEAAAEAV1@PEAEHD@Z */ -DEFINE_THISCALL_WRAPPER(istream_getline_unsigned, 16) -istream* __thiscall istream_getline_unsigned(istream *this, unsigned char *str, int count, char delim) -{ - return istream_getline(this, (char*) str, count, delim); -} - /* ?ignore@istream@@QAEAAV1@HH@Z */ /* ?ignore@istream@@QEAAAEAV1@HH@Z */ DEFINE_THISCALL_WRAPPER(istream_ignore, 12) @@ -3318,6 +3263,8 @@ istream* __thiscall istream_putback(istream *this, char ch) /* ?read@istream@@QEAAAEAV1@PEACH@Z */ /* ?read@istream@@QAEAAV1@PADH@Z */ /* ?read@istream@@QEAAAEAV1@PEADH@Z */ +/* ?read@istream@@QAEAAV1@PAEH@Z */ +/* ?read@istream@@QEAAAEAV1@PEAEH@Z */ DEFINE_THISCALL_WRAPPER(istream_read, 12) istream* __thiscall istream_read(istream *this, char *str, int count) { @@ -3333,14 +3280,6 @@ istream* __thiscall istream_read(istream *this, char *str, int count) return this; } -/* ?read@istream@@QAEAAV1@PAEH@Z */ -/* ?read@istream@@QEAAAEAV1@PEAEH@Z */ -DEFINE_THISCALL_WRAPPER(istream_read_unsigned, 12) -istream* __thiscall istream_read_unsigned(istream *this, unsigned char *str, int count) -{ - return istream_read(this, (char*) str, count); -} - /* ?seekg@istream@@QAEAAV1@J@Z */ /* ?seekg@istream@@QEAAAEAV1@J@Z */ DEFINE_THISCALL_WRAPPER(istream_seekg, 8) diff --git a/dlls/msvcirt/msvcirt.spec b/dlls/msvcirt/msvcirt.spec index 74dde53..b71bacb 100644 --- a/dlls/msvcirt/msvcirt.spec +++ b/dlls/msvcirt/msvcirt.spec @@ -264,8 +264,8 @@ @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@C@Z(ptr long) ostream_print_char @ thiscall -arch=win32 ??6ostream@@QAEAAV0@D@Z(ptr long) ostream_print_char @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@D@Z(ptr long) ostream_print_char -@ thiscall -arch=win32 ??6ostream@@QAEAAV0@E@Z(ptr long) ostream_print_unsigned_char -@ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@E@Z(ptr long) ostream_print_unsigned_char +@ thiscall -arch=win32 ??6ostream@@QAEAAV0@E@Z(ptr long) ostream_print_char +@ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@E@Z(ptr long) ostream_print_char @ thiscall -arch=win32 ??6ostream@@QAEAAV0@F@Z(ptr long) ostream_print_short @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@F@Z(ptr long) ostream_print_short @ thiscall -arch=win32 ??6ostream@@QAEAAV0@G@Z(ptr long) ostream_print_unsigned_short @@ -294,8 +294,8 @@ @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@PEBC@Z(ptr str) ostream_print_str @ thiscall -arch=win32 ??6ostream@@QAEAAV0@PBD@Z(ptr str) ostream_print_str @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@PEBD@Z(ptr str) ostream_print_str -@ thiscall -arch=win32 ??6ostream@@QAEAAV0@PBE@Z(ptr str) ostream_print_unsigned_str -@ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@PEBE@Z(ptr str) ostream_print_unsigned_str +@ thiscall -arch=win32 ??6ostream@@QAEAAV0@PBE@Z(ptr str) ostream_print_str +@ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@PEBE@Z(ptr str) ostream_print_str @ thiscall -arch=win32 ??6ostream@@QAEAAV0@PBX@Z(ptr ptr) ostream_print_ptr @ cdecl -arch=win64 ??6ostream@@QEAAAEAV0@PEBX@Z(ptr ptr) ostream_print_ptr @ thiscall -arch=win32 ??7ios@@QBEHXZ(ptr) ios_op_not @@ -501,16 +501,16 @@ @ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@AEAC@Z(ptr ptr) istream_get_char @ thiscall -arch=win32 ?get@istream@@QAEAAV1@AAD@Z(ptr ptr) istream_get_char @ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@AEAD@Z(ptr ptr) istream_get_char -@ thiscall -arch=win32 ?get@istream@@QAEAAV1@AAE@Z(ptr ptr) istream_get_unsigned_char -@ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@AEAE@Z(ptr ptr) istream_get_unsigned_char +@ thiscall -arch=win32 ?get@istream@@QAEAAV1@AAE@Z(ptr ptr) istream_get_char +@ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@AEAE@Z(ptr ptr) istream_get_char @ thiscall -arch=win32 ?get@istream@@QAEAAV1@AAVstreambuf@@D@Z(ptr ptr long) istream_get_sb @ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@AEAVstreambuf@@D@Z(ptr ptr long) istream_get_sb @ thiscall -arch=win32 ?get@istream@@QAEAAV1@PACHD@Z(ptr ptr long long) istream_get_str @ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@PEACHD@Z(ptr ptr long long) istream_get_str @ thiscall -arch=win32 ?get@istream@@QAEAAV1@PADHD@Z(ptr ptr long long) istream_get_str @ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@PEADHD@Z(ptr ptr long long) istream_get_str -@ thiscall -arch=win32 ?get@istream@@QAEAAV1@PAEHD@Z(ptr ptr long long) istream_get_unsigned_str -@ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@PEAEHD@Z(ptr ptr long long) istream_get_unsigned_str +@ thiscall -arch=win32 ?get@istream@@QAEAAV1@PAEHD@Z(ptr ptr long long) istream_get_str +@ cdecl -arch=win64 ?get@istream@@QEAAAEAV1@PEAEHD@Z(ptr ptr long long) istream_get_str @ thiscall -arch=win32 ?get@istream@@QAEHXZ(ptr) istream_get @ cdecl -arch=win64 ?get@istream@@QEAAHXZ(ptr) istream_get @ thiscall -arch=win32 ?getdouble@istream@@AAEHPADH@Z(ptr ptr long) istream_getdouble @@ -521,8 +521,8 @@ @ cdecl -arch=win64 ?getline@istream@@QEAAAEAV1@PEACHD@Z(ptr ptr long long) istream_getline @ thiscall -arch=win32 ?getline@istream@@QAEAAV1@PADHD@Z(ptr ptr long long) istream_getline @ cdecl -arch=win64 ?getline@istream@@QEAAAEAV1@PEADHD@Z(ptr ptr long long) istream_getline -@ thiscall -arch=win32 ?getline@istream@@QAEAAV1@PAEHD@Z(ptr ptr long long) istream_getline_unsigned -@ cdecl -arch=win64 ?getline@istream@@QEAAAEAV1@PEAEHD@Z(ptr ptr long long) istream_getline_unsigned +@ thiscall -arch=win32 ?getline@istream@@QAEAAV1@PAEHD@Z(ptr ptr long long) istream_getline +@ cdecl -arch=win64 ?getline@istream@@QEAAAEAV1@PEAEHD@Z(ptr ptr long long) istream_getline @ thiscall -arch=win32 ?good@ios@@QBEHXZ(ptr) ios_good @ cdecl -arch=win64 ?good@ios@@QEBAHXZ(ptr) ios_good @ thiscall -arch=win32 ?gptr@streambuf@@IBEPADXZ(ptr) streambuf_gptr @@ -603,12 +603,12 @@ @ cdecl -arch=win64 ?precision@ios@@QEAAHH@Z(ptr long) ios_precision_set @ thiscall -arch=win32 ?precision@ios@@QBEHXZ(ptr) ios_precision_get @ cdecl -arch=win64 ?precision@ios@@QEBAHXZ(ptr) ios_precision_get -@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@C@Z(ptr long) ostream_put_signed_char -@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@C@Z(ptr long) ostream_put_signed_char -@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@D@Z(ptr long) ostream_put_char -@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@D@Z(ptr long) ostream_put_char -@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@E@Z(ptr long) ostream_put_unsigned_char -@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@E@Z(ptr long) ostream_put_unsigned_char +@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@C@Z(ptr long) ostream_put +@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@C@Z(ptr long) ostream_put +@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@D@Z(ptr long) ostream_put +@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@D@Z(ptr long) ostream_put +@ thiscall -arch=win32 ?put@ostream@@QAEAAV1@E@Z(ptr long) ostream_put +@ cdecl -arch=win64 ?put@ostream@@QEAAAEAV1@E@Z(ptr long) ostream_put @ thiscall -arch=win32 ?putback@istream@@QAEAAV1@D@Z(ptr long) istream_putback @ cdecl -arch=win64 ?putback@istream@@QEAAAEAV1@D@Z(ptr long) istream_putback @ thiscall -arch=win32 ?pword@ios@@QBEAAPAXH@Z(ptr long) ios_pword @@ -635,8 +635,8 @@ @ cdecl -arch=win64 ?read@istream@@QEAAAEAV1@PEACH@Z(ptr ptr long) istream_read @ thiscall -arch=win32 ?read@istream@@QAEAAV1@PADH@Z(ptr ptr long) istream_read @ cdecl -arch=win64 ?read@istream@@QEAAAEAV1@PEADH@Z(ptr ptr long) istream_read -@ thiscall -arch=win32 ?read@istream@@QAEAAV1@PAEH@Z(ptr ptr long) istream_read_unsigned -@ cdecl -arch=win64 ?read@istream@@QEAAAEAV1@PEAEH@Z(ptr ptr long) istream_read_unsigned +@ thiscall -arch=win32 ?read@istream@@QAEAAV1@PAEH@Z(ptr ptr long) istream_read +@ cdecl -arch=win64 ?read@istream@@QEAAAEAV1@PEAEH@Z(ptr ptr long) istream_read @ thiscall -arch=win32 ?sbumpc@streambuf@@QAEHXZ(ptr) streambuf_sbumpc @ cdecl -arch=win64 ?sbumpc@streambuf@@QEAAHXZ(ptr) streambuf_sbumpc @ thiscall -arch=win32 ?seekg@istream@@QAEAAV1@J@Z(ptr long) istream_seekg @@ -766,12 +766,12 @@ @ cdecl -arch=win64 ?width@ios@@QEAAHH@Z(ptr long) ios_width_set @ thiscall -arch=win32 ?width@ios@@QBEHXZ(ptr) ios_width_get @ cdecl -arch=win64 ?width@ios@@QEBAHXZ(ptr) ios_width_get -@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBCH@Z(ptr str long) ostream_write_signed_char -@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBCH@Z(ptr str long) ostream_write_signed_char -@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBDH@Z(ptr str long) ostream_write_char -@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBDH@Z(ptr str long) ostream_write_char -@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBEH@Z(ptr str long) ostream_write_unsigned_char -@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBEH@Z(ptr str long) ostream_write_unsigned_char +@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBCH@Z(ptr str long) ostream_write +@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBCH@Z(ptr str long) ostream_write +@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBDH@Z(ptr str long) ostream_write +@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBDH@Z(ptr str long) ostream_write +@ thiscall -arch=win32 ?write@ostream@@QAEAAV1@PBEH@Z(ptr str long) ostream_write +@ cdecl -arch=win64 ?write@ostream@@QEAAAEAV1@PEBEH@Z(ptr str long) ostream_write @ thiscall -arch=win32 ?writepad@ostream@@AAEAAV1@PBD0@Z(ptr str str) ostream_writepad @ cdecl -arch=win64 ?writepad@ostream@@AEAAAEAV1@PEBD0@Z(ptr str str) ostream_writepad @ cdecl -arch=win32 ?ws@@YAAAVistream@@AAV1@@Z(ptr) istream_ws -- 2.7.4