Piotr Caban : msvcp90: Added ctype<wchar_t>::scan functions implementation.
Module: wine Branch: master Commit: b433f1cd04c8d4d6fa61413b71c535ffae82f7c0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b433f1cd04c8d4d6fa61413b71... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Thu Dec 22 18:25:23 2011 +0100 msvcp90: Added ctype<wchar_t>::scan functions implementation. --- dlls/msvcp90/locale.c | 28 ++++++++++++++++++++-------- 1 files changed, 20 insertions(+), 8 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index a8d04d4..a628e4d 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -2339,11 +2339,17 @@ const wchar_t* __thiscall ctype_wchar_is(const ctype_wchar *this, /* ?do_scan_is@?$ctype(a)G@std@@MBEPBGFPBG0(a)Z */ /* ?do_scan_is@?$ctype(a)G@std@@MEBAPEBGFPEBG0(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_is, 16) +#define call_ctype_wchar_do_scan_is(this, mask, first, last) CALL_VTBL_FUNC(this, 12, \ + const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \ + (this, mask, first, last)) const wchar_t* __thiscall ctype_wchar_do_scan_is(const ctype_wchar *this, short mask, const wchar_t *first, const wchar_t *last) { - FIXME("(%p %d %p %p) stub\n", this, mask, first, last); - return NULL; + TRACE("(%p %d %p %p)\n", this, mask, first, last); + for(; first<last; first++) + if(!ctype_wchar_is_ch(this, mask, *first)) + break; + return first; } /* ?scan_is@?$ctype(a)_W@std@@QBEPB_WFPB_W0(a)Z */ @@ -2354,8 +2360,8 @@ DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_is, 16) const wchar_t* __thiscall ctype_wchar_scan_is(const ctype_wchar *this, short mask, const wchar_t *first, const wchar_t *last) { - FIXME("(%p %x %p %p) stub\n", this, mask, first, last); - return NULL; + TRACE("(%p %x %p %p)\n", this, mask, first, last); + return call_ctype_wchar_do_scan_is(this, mask, first, last); } /* ?do_scan_not@?$ctype(a)_W@std@@MBEPB_WFPB_W0(a)Z */ @@ -2363,11 +2369,17 @@ const wchar_t* __thiscall ctype_wchar_scan_is(const ctype_wchar *this, /* ?do_scan_not@?$ctype(a)G@std@@MBEPBGFPBG0(a)Z */ /* ?do_scan_not@?$ctype(a)G@std@@MEBAPEBGFPEBG0(a)Z */ DEFINE_THISCALL_WRAPPER(ctype_wchar_do_scan_not, 16) +#define call_ctype_wchar_do_scan_not(this, mask, first, last) CALL_VTBL_FUNC(this, 16, \ + const wchar_t*, (const ctype_wchar*, short, const wchar_t*, const wchar_t*), \ + (this, mask, first, last)) const wchar_t* __thiscall ctype_wchar_do_scan_not(const ctype_wchar *this, short mask, const wchar_t *first, const wchar_t *last) { - FIXME("(%p %x %p %p) stub\n", this, mask, first, last); - return NULL; + TRACE("(%p %x %p %p)\n", this, mask, first, last); + for(; first<last; first++) + if(ctype_wchar_is_ch(this, mask, *first)) + break; + return first; } /* ?scan_not@?$ctype(a)_W@std@@QBEPB_WFPB_W0(a)Z */ @@ -2378,8 +2390,8 @@ DEFINE_THISCALL_WRAPPER(ctype_wchar_scan_not, 16) const wchar_t* __thiscall ctype_wchar_scan_not(const ctype_wchar *this, short mask, const wchar_t *first, const wchar_t *last) { - FIXME("(%p %x %p %p) stub\n", this, mask, first, last); - return NULL; + TRACE("(%p %x %p %p)\n", this, mask, first, last); + return call_ctype_wchar_do_scan_not(this, mask, first, last); } /* ??0_Locimp(a)locale@std@@AAE(a)_N@Z */
participants (1)
-
Alexandre Julliard