102 for(
i = 0;
i <
cnt;
i++) {
105 ref->u.v = &vars[
i]->
v;
118 for(
i = 0;
i <
cnt;
i++) {
146 for(
i=0;
i <
ctx->func->var_cnt;
i++) {
154 for(
i=0;
i <
ctx->func->arg_cnt;
i++) {
167 for(
i=0;
i <
ctx->vbthis->desc->prop_cnt;
i++) {
170 ref->u.v =
ctx->vbthis->props+
i;
185 if(
ctx->code->named_item) {
192 if(
ctx->func->code_ctx->named_item &&
ctx->func->code_ctx->named_item->disp &&
193 !(
ctx->func->code_ctx->named_item->flags & SCRIPTITEM_CODEONLY))
198 ref->u.d.disp =
ctx->func->code_ctx->named_item->disp;
212 ref->u.d.disp = &
ctx->script->global_obj->IDispatch_iface;
225 if((
item->flags & SCRIPTITEM_GLOBALMEMBERS)) {
243 ScriptDisp *script_obj =
ctx->code->named_item ?
ctx->code->named_item->script_obj :
ctx->script->script_obj;
272 new_vars =
malloc(
cnt * 2 *
sizeof(*new_vars));
280 new_var->
next =
ctx->dynamic_vars;
281 ctx->dynamic_vars = new_var;
284 *out_var = &new_var->
v;
293 memset(ei, 0,
sizeof(*ei));
298 if(
ctx->error_loc_code) {
307 return ctx->stack + --
ctx->top;
313 return ctx->stack + (
ctx->top-
n-1);
318 if(
ctx->stack_size ==
ctx->top) {
327 ctx->stack = new_stack;
328 ctx->stack_size *= 2;
408 IDispatch_Release(disp);
503 dp->cNamedArgs = is_propput ? 1 : 0;
504 dp->cArgs =
arg_cnt + dp->cNamedArgs;
519 dp->rgvarg =
ctx->stack +
ctx->top-dp->cArgs;
521 dp->rgvarg = is_propput ?
ctx->stack+
ctx->top-1 :
NULL;
532 FIXME(
"NULL array\n");
541 FIXME(
"argc %d does not match cDims %d\n", dp->cArgs,
array->cDims);
632 FIXME(
"REF_VAR no res\n");
653 FIXME(
"arguments on object\n");
658 IDispatch_AddRef(
ref.u.obj);
664 if(
res && !
ctx->func->code_ctx->option_explicit &&
arg_cnt == 0) {
683 BSTR identifier =
ctx->instr->arg1.bstr;
684 const unsigned arg_cnt =
ctx->instr->arg2.uint;
699 BSTR identifier =
ctx->instr->arg1.bstr;
700 const unsigned arg_cnt =
ctx->instr->arg2.uint;
709 const unsigned arg_cnt =
ctx->instr->arg1.uint;
726 const unsigned arg_cnt =
ctx->instr->arg1.uint;
740 const BSTR identifier =
ctx->instr->arg1.bstr;
741 const unsigned arg_cnt =
ctx->instr->arg2.uint;
761 IDispatch_Release(
obj);
792 BSTR identifier =
ctx->instr->arg1.bstr;
828 IDispatch_Release(disp);
875 FIXME(
"Unsupported array type %x\n",
V_VT(
v));
880 FIXME(
"null array\n");
888 FIXME(
"non-array assign\n");
899 FIXME(
"functions not implemented\n");
905 FIXME(
"REF_CONST\n");
908 if(
ctx->func->code_ctx->option_explicit) {
909 FIXME(
"throw exception\n");
932 const unsigned arg_cnt =
ctx->instr->arg2.uint;
950 const unsigned arg_cnt =
ctx->instr->arg2.uint;
971 BSTR identifier =
ctx->instr->arg1.bstr;
972 const unsigned arg_cnt =
ctx->instr->arg2.uint;
1003 BSTR identifier =
ctx->instr->arg1.bstr;
1004 const unsigned arg_cnt =
ctx->instr->arg2.uint;
1017 FIXME(
"NULL obj\n");
1124 const unsigned n =
ctx->instr->arg1.uint;
1134 const unsigned n =
ctx->instr->arg1.uint;
1188 if(
ctx->code->named_item)
1189 for(class_desc =
ctx->code->named_item->script_obj->classes; class_desc; class_desc = class_desc->
next)
1193 for(class_desc =
ctx->script->script_obj->classes; class_desc; class_desc = class_desc->
next)
1212 ScriptDisp *script_obj =
ctx->code->named_item ?
ctx->code->named_item->script_obj :
ctx->script->script_obj;
1214 const unsigned array_id =
ctx->instr->arg2.uint;
1230 assert(i < script_obj->global_vars_cnt);
1249 FIXME(
"got ref.type = %d\n",
ref.type);
1254 array_ref =
ctx->arrays + array_id;
1258 FIXME(
"Array already initialized\n");
1262 array_desc =
ctx->func->array_descs + array_id;
1267 (*array_ref)->fFeatures |= (FADF_FIXEDSIZE | FADF_STATIC);
1282 if(!(bounds =
malloc(dim_cnt *
sizeof(*bounds))))
1285 for(
i = 0;
i < dim_cnt;
i++) {
1303 BSTR identifier =
ctx->instr->arg1.bstr;
1304 const unsigned dim_cnt =
ctx->instr->arg2.uint;
1320 FIXME(
"got ref.type = %d\n",
ref.type);
1332 if(
sa->fFeatures & FADF_FIXEDSIZE)
1354 BSTR identifier =
ctx->instr->arg1.bstr;
1355 const unsigned dim_cnt =
ctx->instr->arg2.uint;
1372 FIXME(
"got ref.type = %d\n",
ref.type);
1383 FIXME(
"ReDim Preserve not valid on type %d\n",
V_VT(
v));
1403 }
else if(
array->cDims != dim_cnt) {
1409 for(
i = 0;
i+1 < dim_cnt; ++
i) {
1479 DISPPARAMS dp = {0};
1493 hres = IUnknown_QueryInterface(
V_UNKNOWN(&iterv), &IID_IEnumVARIANT, (
void**)&iter);
1496 FIXME(
"Could not get IEnumVARIANT iface: %08lx\n",
hres);
1527 const unsigned loop_end =
ctx->instr->arg1.uint;
1538 FIXME(
"uninitialized\n");
1546 hres = IEnumVARIANT_Next(iter, 1, &
v,
NULL);
1567 const unsigned arg =
ctx->instr->arg1.uint;
1577 const unsigned arg =
ctx->instr->arg1.uint;
1596 const unsigned arg =
ctx->instr->arg1.uint;
1660 }
else if(
ctx->code->named_item) {
1661 disp = (
ctx->code->named_item->flags & SCRIPTITEM_CODEONLY)
1662 ? (
IDispatch*)&
ctx->code->named_item->script_obj->IDispatchEx_iface
1663 :
ctx->code->named_item->disp;
1668 if(!(
item->flags & SCRIPTITEM_GLOBALMEMBERS))
continue;
1673 disp = (
IDispatch*)&
ctx->script->script_obj->IDispatchEx_iface;
1676 IDispatch_AddRef(disp);
1687 TRACE(
"%s\n",
arg ?
"true" :
"false");
1696 const int err_mode =
ctx->instr->arg1.uint;
1698 TRACE(
"%d\n", err_mode);
1700 ctx->resume_next = err_mode;
1721 const DATE *
d =
ctx->instr->arg1.date;
1790 const unsigned arg =
ctx->instr->arg1.uint;
2078 const unsigned arg =
ctx->instr->arg1.uint;
2140 hres = IUnknown_QueryInterface(
l, &IID_IObjectIdentity, (
void**)&
identity);
2150 IUnknown_Release(
r);
2152 IUnknown_Release(
l);
2380 FIXME(
"ref.type is not REF_VAR\n");
2400#define X(x,n,a,b) interp_ ## x,
2406#define X(x,n,a,b) n,
2429 IDispatchEx_Release(&
ctx->vbthis->IDispatchEx_iface);
2432 for(
i=0;
i <
ctx->func->arg_cnt;
i++)
2437 for(
i=0;
i <
ctx->func->var_cnt;
i++)
2442 for(
i=0;
i <
ctx->func->array_cnt;
i++) {
2464 FIXME(
"wrong arg_cnt %d, expected %d\n", dp ?
arg_cnt(dp) : 0,
func->arg_cnt);
2481 for(
i=0;
i <
func->arg_cnt;
i++) {
2485 if(
func->args[
i].by_ref)
2520 IActiveScriptSite_OnEnterScript(
ctx->site);
2535 if(
hres != SCRIPT_E_RECORDED) {
2541 if(!
ctx->ei.bstrDescription)
2547 WARN(
"Failed %08lx in resume next mode\n",
ctx->ei.scode);
2555 while((++exec.
instr)->op != OP_catch);
2563 if(exec.
top > stack_off) {
2565 }
else if(exec.
top < stack_off) {
2569 while(exec.
top < stack_off) {
2578 if(!
ctx->error_loc_code) {
2580 ctx->error_loc_code = exec.
code;
2600 IActiveScriptSite_OnLeaveScript(
ctx->site);
static struct sockaddr_in sa
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
named_item_t * lookup_named_item(script_ctx_t *ctx, const WCHAR *item_name, unsigned flags)
HRESULT WINAPI SafeArrayUnlock(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayPtrOfIndex(SAFEARRAY *psa, LONG *rgIndices, void **ppvData)
HRESULT WINAPI SafeArrayLock(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayDestroy(SAFEARRAY *psa)
HRESULT WINAPI SafeArrayRedim(SAFEARRAY *psa, SAFEARRAYBOUND *psabound)
SAFEARRAY *WINAPI SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound)
HRESULT create_safearray_iter(SAFEARRAY *sa, BOOL owned, IEnumVARIANT **ev)
HRESULT report_script_error(script_ctx_t *ctx, const vbscode_t *code, unsigned loc)
#define VBSE_ARRAY_LOCKED
#define VBSE_OUT_OF_BOUNDS
static const char * debugstr_variant(const VARIANT *var)
static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, const WCHAR *name, BSTR name_bstr, DWORD flags, DISPID *id)
GLdouble GLdouble GLdouble r
GLuint GLuint GLsizei GLenum const GLvoid * indices
GLdouble GLdouble GLdouble GLdouble top
GLboolean GLboolean GLboolean b
GLenum const GLvoid * addr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
static HRESULT interp_is(exec_ctx_t *ctx)
static HRESULT interp_or(exec_ctx_t *ctx)
static HRESULT interp_concat(exec_ctx_t *ctx)
static HRESULT interp_date(exec_ctx_t *ctx)
static HRESULT assign_value(exec_ctx_t *ctx, VARIANT *dst, VARIANT *src, WORD flags)
static HRESULT interp_set_member(exec_ctx_t *ctx)
static HRESULT interp_pop(exec_ctx_t *ctx)
static HRESULT interp_step(exec_ctx_t *ctx)
static VARIANT * stack_top(exec_ctx_t *ctx, unsigned n)
static DISPID propput_dispid
void clear_ei(EXCEPINFO *ei)
static HRESULT interp_catch(exec_ctx_t *ctx)
static HRESULT stack_assume_val(exec_ctx_t *ctx, unsigned n)
static HRESULT interp_gt(exec_ctx_t *ctx)
static HRESULT assign_ident(exec_ctx_t *ctx, BSTR name, WORD flags, DISPPARAMS *dp)
static HRESULT interp_icallv(exec_ctx_t *ctx)
static HRESULT interp_not(exec_ctx_t *ctx)
static HRESULT array_bounds_from_stack(exec_ctx_t *ctx, unsigned dim_cnt, SAFEARRAYBOUND **ret)
HRESULT array_access(SAFEARRAY *array, DISPPARAMS *dp, VARIANT **ret)
static HRESULT interp_nequal(exec_ctx_t *ctx)
static HRESULT interp_set_ident(exec_ctx_t *ctx)
static HRESULT stack_pop_val(exec_ctx_t *ctx, variant_val_t *r)
static HRESULT stack_pop_disp(exec_ctx_t *ctx, IDispatch **ret)
static HRESULT interp_val(exec_ctx_t *ctx)
static HRESULT interp_lt(exec_ctx_t *ctx)
static HRESULT interp_bool(exec_ctx_t *ctx)
static HRESULT interp_dim(exec_ctx_t *ctx)
static HRESULT interp_enumnext(exec_ctx_t *ctx)
static HRESULT interp_vcallv(exec_ctx_t *ctx)
static HRESULT interp_add(exec_ctx_t *ctx)
static HRESULT interp_ret(exec_ctx_t *ctx)
static HRESULT interp_exp(exec_ctx_t *ctx)
static void instr_jmp(exec_ctx_t *ctx, unsigned addr)
static void stack_popn(exec_ctx_t *ctx, unsigned n)
static HRESULT stack_push_null(exec_ctx_t *ctx)
HRESULT exec_script(script_ctx_t *ctx, BOOL extern_caller, function_t *func, vbdisp_t *vbthis, DISPPARAMS *dp, VARIANT *res)
static HRESULT interp_mod(exec_ctx_t *ctx)
static HRESULT interp_errmode(exec_ctx_t *ctx)
static void vbstack_to_dp(exec_ctx_t *ctx, unsigned arg_cnt, BOOL is_propput, DISPPARAMS *dp)
static HRESULT interp_retval(exec_ctx_t *ctx)
static HRESULT interp_empty(exec_ctx_t *ctx)
static HRESULT interp_xor(exec_ctx_t *ctx)
static HRESULT interp_deref(exec_ctx_t *ctx)
static HRESULT interp_lteq(exec_ctx_t *ctx)
static const unsigned op_move[]
static HRESULT interp_mcallv(exec_ctx_t *ctx)
static HRESULT interp_null(exec_ctx_t *ctx)
static HRESULT do_mcall(exec_ctx_t *ctx, VARIANT *res)
static HRESULT interp_idiv(exec_ctx_t *ctx)
static HRESULT interp_jmp_false(exec_ctx_t *ctx)
static HRESULT interp_eqv(exec_ctx_t *ctx)
static HRESULT interp_hres(exec_ctx_t *ctx)
static HRESULT interp_icall(exec_ctx_t *ctx)
static HRESULT interp_double(exec_ctx_t *ctx)
static HRESULT lookup_identifier(exec_ctx_t *ctx, BSTR name, vbdisp_invoke_type_t invoke_type, ref_t *ref)
static HRESULT interp_assign_member(exec_ctx_t *ctx)
static HRESULT stack_assume_disp(exec_ctx_t *ctx, unsigned n, IDispatch **disp)
static HRESULT interp_int(exec_ctx_t *ctx)
static HRESULT interp_jmp(exec_ctx_t *ctx)
static HRESULT interp_jmp_true(exec_ctx_t *ctx)
static BOOL lookup_dynamic_vars(dynamic_var_t *var, const WCHAR *name, ref_t *ref)
static HRESULT interp_neg(exec_ctx_t *ctx)
static HRESULT interp_newenum(exec_ctx_t *ctx)
static void stack_pop_deref(exec_ctx_t *ctx, variant_val_t *r)
static HRESULT do_icall(exec_ctx_t *ctx, VARIANT *res, BSTR identifier, unsigned arg_cnt)
void release_dynamic_var(dynamic_var_t *var)
static HRESULT interp_redim(exec_ctx_t *ctx)
static HRESULT cmp_oper(exec_ctx_t *ctx)
static HRESULT interp_imp(exec_ctx_t *ctx)
static BOOL lookup_global_vars(ScriptDisp *script, const WCHAR *name, ref_t *ref)
static HRESULT interp_gteq(exec_ctx_t *ctx)
static void release_val(variant_val_t *v)
static HRESULT interp_vcall(exec_ctx_t *ctx)
static HRESULT stack_pop_bool(exec_ctx_t *ctx, BOOL *b)
static HRESULT interp_ident(exec_ctx_t *ctx)
static HRESULT stack_push(exec_ctx_t *ctx, VARIANT *v)
HRESULT(* instr_func_t)(exec_ctx_t *)
static HRESULT interp_stack(exec_ctx_t *ctx)
static HRESULT interp_case(exec_ctx_t *ctx)
static HRESULT interp_redim_preserve(exec_ctx_t *ctx)
static const instr_func_t op_funcs[]
static HRESULT interp_and(exec_ctx_t *ctx)
static HRESULT interp_new(exec_ctx_t *ctx)
static HRESULT interp_equal(exec_ctx_t *ctx)
static HRESULT variant_call(exec_ctx_t *ctx, VARIANT *v, unsigned arg_cnt, VARIANT *res)
static HRESULT interp_string(exec_ctx_t *ctx)
static HRESULT interp_mul(exec_ctx_t *ctx)
static BOOL lookup_global_funcs(ScriptDisp *script, const WCHAR *name, ref_t *ref)
static HRESULT var_cmp(exec_ctx_t *ctx, VARIANT *l, VARIANT *r)
static HRESULT interp_me(exec_ctx_t *ctx)
static HRESULT interp_div(exec_ctx_t *ctx)
static HRESULT interp_stop(exec_ctx_t *ctx)
static VARIANT * stack_pop(exec_ctx_t *ctx)
static HRESULT interp_sub(exec_ctx_t *ctx)
static HRESULT interp_assign_ident(exec_ctx_t *ctx)
static void clear_error_loc(script_ctx_t *ctx)
static HRESULT interp_numval(exec_ctx_t *ctx)
static HRESULT interp_incc(exec_ctx_t *ctx)
static void release_exec(exec_ctx_t *ctx)
static HRESULT interp_mcall(exec_ctx_t *ctx)
static HRESULT interp_const(exec_ctx_t *ctx)
static HRESULT interp_nothing(exec_ctx_t *ctx)
static HRESULT add_dynamic_var(exec_ctx_t *ctx, const WCHAR *name, BOOL is_const, VARIANT **out_var)
HRESULT disp_call(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD flags, unsigned argc, jsval_t *argv, jsval_t *ret)
HRESULT disp_propput(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t val)
HRESULT create_regexp(script_ctx_t *, jsstr_t *, DWORD, jsdisp_t **)
void heap_pool_init(heap_pool_t *)
void * heap_pool_alloc(heap_pool_t *, DWORD) __WINE_ALLOC_SIZE(2)
void heap_pool_free(heap_pool_t *)
#define memcpy(s1, s2, n)
static VARIANTARG static DISPID
static HRESULT get_builtin_id(DispatchEx *This, BSTR name, DWORD grfdex, DISPID *ret)
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYPUTREF
#define VARIANT_LOCALBOOL
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
static struct __wine_debug_functions funcs
dynamic_var_t ** global_vars
struct _class_desc_t * next
struct _dynamic_var_t * next
IDispatchEx IDispatchEx_iface
dynamic_var_t * dynamic_vars
HRESULT WINAPI VarNot(LPVARIANT pVarIn, LPVARIANT pVarOut)
HRESULT WINAPI VarMul(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarAnd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarXor(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarDiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarSub(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarCat(LPVARIANT left, LPVARIANT right, LPVARIANT out)
HRESULT WINAPI VarOr(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarAdd(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantChangeType(VARIANTARG *pvargDest, VARIANTARG *pvargSrc, USHORT wFlags, VARTYPE vt)
HRESULT WINAPI VarImp(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
HRESULT WINAPI VarIdiv(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarMod(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT WINAPI VarEqv(LPVARIANT pVarLeft, LPVARIANT pVarRight, LPVARIANT pVarOut)
HRESULT WINAPI VarCmp(LPVARIANT left, LPVARIANT right, LCID lcid, DWORD flags)
HRESULT WINAPI VarNeg(LPVARIANT pVarIn, LPVARIANT pVarOut)
HRESULT WINAPI VariantCopyInd(VARIANT *pvargDest, VARIANTARG *pvargSrc)
HRESULT WINAPI VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
HRESULT WINAPI VarPow(LPVARIANT left, LPVARIANT right, LPVARIANT result)
HRESULT create_vbdisp(const class_desc_t *desc, vbdisp_t **ret)
HRESULT get_disp_value(script_ctx_t *ctx, IDispatch *disp, VARIANT *v)
HRESULT vbdisp_get_id(vbdisp_t *This, BSTR name, vbdisp_invoke_type_t invoke_type, BOOL search_private, DISPID *id)
void map_vbs_exception(EXCEPINFO *ei)
void release_vbscode(vbscode_t *code)
HRESULT to_int(VARIANT *v, int *ret)
static void grab_vbscode(vbscode_t *code)
static unsigned arg_cnt(const DISPPARAMS *dp)
#define MAKE_VBSERROR(code)
_In_ ULONG _In_ ULONG_PTR ident
#define DISP_E_UNKNOWNNAME