Piotr Caban : msvcp90: Added ctype<char>::narrow functions implementation.

Alexandre Julliard julliard at winehq.org
Wed Dec 21 12:38:08 CST 2011


Module: wine
Branch: master
Commit: facb3e3fe6796f8ade8d9d4edc2d5cd99efe797c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=facb3e3fe6796f8ade8d9d4edc2d5cd99efe797c

Author: Piotr Caban <piotr at 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 at D@std@@MBEDDD at Z */
 /* ?do_narrow@?$ctype at D@std@@MEBADDD at 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 at D@std@@MBEPBDPBD0DPAD at Z */
 /* ?do_narrow@?$ctype at D@std@@MEBAPEBDPEBD0DPEAD at 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 at D@std@@MBEPBDPBD0DPADI at Z */
 /* ?_Do_narrow_s@?$ctype at D@std@@MEBAPEBDPEBD0DPEAD_K at 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 at D@std@@QBEDDD at 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 at D@std@@QBEPBDPBD0DPAD at 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 at D@std@@QBEPBDPBD0DPADI at Z */
 /* ?_Narrow_s@?$ctype at D@std@@QEBAPEBDPEBD0DPEAD_K at 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 at D@std@@MBEDD at Z */




More information about the wine-cvs mailing list