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)
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()