Jacek Caban : vbscript: Added interpreter support for numeric literals.

Alexandre Julliard julliard at winehq.org
Mon Sep 12 11:42:59 CDT 2011


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Sep 12 12:30:21 2011 +0200

vbscript: Added interpreter support for numeric literals.

---

 dlls/vbscript/interp.c       |   30 ++++++++++++++++++++++++------
 dlls/vbscript/tests/lang.vbs |    6 ++++++
 2 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index e7e3ab3..1661700 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -253,20 +253,38 @@ static HRESULT interp_string(exec_ctx_t *ctx)
 
 static HRESULT interp_long(exec_ctx_t *ctx)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    const LONG arg = ctx->instr->arg1.lng;
+    VARIANT v;
+
+    TRACE("%d\n", arg);
+
+    V_VT(&v) = VT_I4;
+    V_I4(&v) = arg;
+    return stack_push(ctx, &v);
 }
 
 static HRESULT interp_short(exec_ctx_t *ctx)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    const LONG arg = ctx->instr->arg1.lng;
+    VARIANT v;
+
+    TRACE("%d\n", arg);
+
+    V_VT(&v) = VT_I2;
+    V_I2(&v) = arg;
+    return stack_push(ctx, &v);
 }
 
 static HRESULT interp_double(exec_ctx_t *ctx)
 {
-    FIXME("\n");
-    return E_NOTIMPL;
+    const DOUBLE *arg = ctx->instr->arg1.dbl;
+    VARIANT v;
+
+    TRACE("%lf\n", *arg);
+
+    V_VT(&v) = VT_R8;
+    V_R8(&v) = *arg;
+    return stack_push(ctx, &v);
 }
 
 static HRESULT interp_empty(exec_ctx_t *ctx)
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index 8a5a9c5..91da4fe 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -38,5 +38,11 @@ Call ok(getVT("") = "VT_BSTR", "getVT("""") is not VT_BSTR")
 Call ok(getVT("test") = "VT_BSTR", "getVT(""test"") is not VT_BSTR")
 Call ok(getVT(Empty) = "VT_EMPTY", "getVT(Empty) is not VT_EMPTY")
 Call ok(getVT(null) = "VT_NULL", "getVT(null) is not VT_NULL")
+Call ok(getVT(0) = "VT_I2", "getVT(0) is not VT_I2")
+Call ok(getVT(1) = "VT_I2", "getVT(1) is not VT_I2")
+Call ok(getVT(0.5) = "VT_R8", "getVT(0.5) is not VT_R8")
+Call ok(getVT(0.0) = "VT_R8", "getVT(0.0) is not VT_R8")
+Call ok(getVT(2147483647) = "VT_I4", "getVT(2147483647) is not VT_I4")
+Call ok(getVT(2147483648) = "VT_R8", "getVT(2147483648) is not VT_R8")
 
 reportSuccess()




More information about the wine-cvs mailing list