Module: wine Branch: master Commit: 46fbe490692ff88ca3f39e1a8ce90856893d4bff URL: http://source.winehq.org/git/wine.git/?a=commit;h=46fbe490692ff88ca3f39e1a8c...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Sep 28 11:49:48 2012 +0200
vbscript: Added StrReverse implementation.
---
dlls/vbscript/global.c | 21 +++++++++++++++++++-- dlls/vbscript/tests/api.vbs | 9 +++++++++ 2 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/global.c b/dlls/vbscript/global.c index 9fb6a4d..3f88207 100644 --- a/dlls/vbscript/global.c +++ b/dlls/vbscript/global.c @@ -1187,8 +1187,25 @@ static HRESULT Global_Replace(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, V
static HRESULT Global_StrReverse(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) { - FIXME("\n"); - return E_NOTIMPL; + WCHAR *ptr1, *ptr2, ch; + BSTR ret; + HRESULT hres; + + TRACE("%s\n", debugstr_variant(arg)); + + hres = to_string(arg, &ret); + if(FAILED(hres)) + return hres; + + ptr1 = ret; + ptr2 = ret + SysStringLen(ret)-1; + while(ptr1 < ptr2) { + ch = *ptr1; + *ptr1++ = *ptr2; + *ptr2-- = ch; + } + + return return_bstr(res, ret); }
static HRESULT Global_InStrRev(vbdisp_t *This, VARIANT *arg, unsigned args_cnt, VARIANT *res) diff --git a/dlls/vbscript/tests/api.vbs b/dlls/vbscript/tests/api.vbs index 97ca5e0..9e39a0f 100644 --- a/dlls/vbscript/tests/api.vbs +++ b/dlls/vbscript/tests/api.vbs @@ -196,6 +196,15 @@ Call ok(Space(5.2) = " ", "Space(5.2) = " & Space(5.2) & """") Call ok(Space(5.8) = " ", "Space(5.8) = " & Space(5.8) & """") Call ok(Space(5.5) = " ", "Space(5.5) = " & Space(5.5) & """")
+Sub TestStrReverse(str, ex) + Call ok(StrReverse(str) = ex, "StrReverse(" & str & ") = " & StrReverse(str)) +End Sub + +TestStrReverse "test", "tset" +TestStrReverse "", "" +TestStrReverse 123, "321" +if isEnglishLang then TestStrReverse true, "eurT" + Sub TestRound(val, exval, vt) Call ok(Round(val) = exval, "Round(" & val & ") = " & Round(val)) Call ok(getVT(Round(val)) = vt, "getVT(Round(" & val & ")) = " & getVT(Round(val)))