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