Piotr Caban : msvcp90: Added ctype<char>::narrow functions implementation.
Module: wine Branch: master Commit: facb3e3fe6796f8ade8d9d4edc2d5cd99efe797c URL: http://source.winehq.org/git/wine.git/?a=commit;h=facb3e3fe6796f8ade8d9d4edc... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed Dec 21 15:58:19 2011 +0100 msvcp90: Added ctype<char>::narrow functions implementation. --- dlls/msvcp90/locale.c | 36 +++++++++++++++++++++++------------- 1 files changed, 23 insertions(+), 13 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index bf32d85..1bae73e 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -1271,30 +1271,40 @@ ctype_char* __thiscall MSVCP_ctype_char_vector_dtor(ctype_char *this, unsigned i /* ?do_narrow@?$ctype(a)D@std@@MBEDDD(a)Z */ /* ?do_narrow@?$ctype(a)D@std@@MEBADDD(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow_ch, 12) +#define call_ctype_char_do_narrow_ch(this, ch, unused) CALL_VTBL_FUNC(this, 36, \ + char, (const ctype_char*, char, char), (this, ch, unused)) char __thiscall ctype_char_do_narrow_ch(const ctype_char *this, char ch, char unused) { - FIXME("(%p %c %c) stub\n", this, ch, unused); - return 0; + TRACE("(%p %c %c)\n", this, ch, unused); + return ch; } /* ?do_narrow@?$ctype(a)D@std@@MBEPBDPBD0DPAD(a)Z */ /* ?do_narrow@?$ctype(a)D@std@@MEBAPEBDPEBD0DPEAD(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_char_do_narrow, 20) +#define call_ctype_char_do_narrow(this, first, last, unused, dest) CALL_VTBL_FUNC(this, 32, \ + const char*, (const ctype_char*, const char*, const char*, char, char*), \ + (this, first, last, unused, dest)) const char* __thiscall ctype_char_do_narrow(const ctype_char *this, const char *first, const char *last, char unused, char *dest) { - FIXME("(%p %p %p %p) stub\n", this, first, last, dest); - return NULL; + TRACE("(%p %p %p %p)\n", this, first, last, dest); + memcpy(dest, first, last-first); + return last; } /* ?_Do_narrow_s@?$ctype(a)D@std@@MBEPBDPBD0DPADI(a)Z */ /* ?_Do_narrow_s@?$ctype(a)D@std@@MEBAPEBDPEBD0DPEAD_K(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_char__Do_narrow_s, 24) +#define call_ctype_char__Do_narrow_s(this, first, last, unused, dest, size) CALL_VTBL_FUNC(this, 40, \ + const char*, (const ctype_char*, const char*, const char*, char, char*, MSVCP_size_t), \ + (this, first, last, unused, dest, size)) const char* __thiscall ctype_char__Do_narrow_s(const ctype_char *this, const char *first, const char *last, char unused, char *dest, MSVCP_size_t size) { - FIXME("(%p %p %p %p %lu) stub\n", this, first, last, dest, size); - return NULL; + TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size); + memcpy_s(dest, size, first, last-first); + return last; } /* ?narrow@?$ctype(a)D@std@@QBEDDD(a)Z */ @@ -1302,8 +1312,8 @@ const char* __thiscall ctype_char__Do_narrow_s(const ctype_char *this, const cha DEFINE_THISCALL_WRAPPER(ctype_char_narrow_ch, 12) char __thiscall ctype_char_narrow_ch(const ctype_char *this, char ch, char dflt) { - FIXME("(%p %c %c) stub\n", this, ch, dflt); - return 0; + TRACE("(%p %c %c)\n", this, ch, dflt); + return call_ctype_char_do_narrow_ch(this, ch, dflt); } /* ?narrow@?$ctype(a)D@std@@QBEPBDPBD0DPAD(a)Z */ @@ -1312,18 +1322,18 @@ DEFINE_THISCALL_WRAPPER(ctype_char_narrow, 20) const char* __thiscall ctype_char_narrow(const ctype_char *this, const char *first, const char *last, char dflt, char *dest) { - FIXME("(%p %p %p %c %p) stub\n", this, first, last, dflt, dest); - return NULL; + TRACE("(%p %p %p %c %p)\n", this, first, last, dflt, dest); + return call_ctype_char_do_narrow(this, first, last, dflt, dest); } /* ?_Narrow_s@?$ctype(a)D@std@@QBEPBDPBD0DPADI(a)Z */ /* ?_Narrow_s@?$ctype(a)D@std@@QEBAPEBDPEBD0DPEAD_K(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_char__Narrow_s, 24) const char* __thiscall ctype_char__Narrow_s(const ctype_char *this, const char *first, - const char *last, char unused, char *dest, MSVCP_size_t size) + const char *last, char dflt, char *dest, MSVCP_size_t size) { - FIXME("(%p %p %p %p %lu) stub\n", this, first, last, dest, size); - return NULL; + TRACE("(%p %p %p %p %lu)\n", this, first, last, dest, size); + return call_ctype_char__Do_narrow_s(this, first, last, dflt, dest, size); } /* ?do_widen@?$ctype(a)D@std@@MBEDD(a)Z */
participants (1)
-
Alexandre Julliard