71 if(!
ctx->stack_size) {
76 }
else if(
ctx->stack_size ==
ctx->stack_top) {
85 ctx->stack = new_stack;
89 ctx->stack[
ctx->stack_top++] =
v;
107 return ctx->stack[
ctx->stack_top-1];
113 return ctx->stack+
ctx->stack_top-1-
n;
126 return ctx->stack +
ctx->stack_top-
n;
132 return ctx->stack[--
ctx->stack_top];
205 IDispatch_Release(
val->u.idref.disp);
207 case EXPRVAL_STACK_REF:
212 case EXPRVAL_INVALID:
245 r->type = EXPRVAL_INVALID;
252 r->type = EXPRVAL_IDREF;
258 r->type = EXPRVAL_STACK_REF;
263 r->type = EXPRVAL_IDREF;
269 r->type = EXPRVAL_INVALID;
289 case EXPRVAL_STACK_REF: {
305 case EXPRVAL_STACK_REF:
318 case EXPRVAL_STACK_REF: {
342 if(
ref->type == EXPRVAL_JSVAL) {
349 if(
ref->type == EXPRVAL_IDREF)
350 IDispatch_Release(
ref->u.idref.disp);
361 if(
val->u.idref.disp)
362 IDispatch_Release(
val->u.idref.disp);
364 case EXPRVAL_STACK_REF:
365 case EXPRVAL_INVALID:
372 val->type = EXPRVAL_INVALID;
378 ref->type = EXPRVAL_IDREF;
380 IDispatch_AddRef(
obj);
383 IDispatch_AddRef(
ref->u.idref.disp =
obj);
385 ref->u.idref.id =
id;
411 IDispatch_AddRef(
obj);
412 new_scope->
jsobj = jsobj;
445 IDispatch_Release(scope->
obj);
472 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
475 IDispatchEx_Release(dispex);
477 TRACE(
"using IDispatch\n");
478 hres = IDispatch_GetIDsOfNames(disp, &
IID_NULL, &bstr, 1, 0,
id);
481 if(name_bstr != bstr)
497 if(!disp1 || !disp2) {
508 IUnknown_Release(
unk1);
515 hres = IUnknown_QueryInterface(
unk1, &IID_IObjectIdentity, (
void**)&
identity);
525 IUnknown_Release(
unk1);
526 IUnknown_Release(unk2);
562 FIXME(
"VARIANT not implemented\n");
581 TRACE(
"detaching %p\n", frame);
611 if(
item->flags & SCRIPTITEM_GLOBALMEMBERS) {
645 for(scope =
ctx->call_ctx->scope; scope; scope = scope->
next) {
649 static const WCHAR argumentsW[] = {
'a',
'r',
'g',
'u',
'm',
'e',
'n',
't',
's',0};
652 ret->type = EXPRVAL_STACK_REF;
654 TRACE(
"returning ref %d for %d\n",
ret->u.off,
ref->ref);
682 if((
item->flags & SCRIPTITEM_ISVISIBLE) && !
wcscmp(
item->name, identifier)) {
689 hres = IActiveScriptSite_GetItemInfo(
ctx->site, identifier,
690 SCRIPTINFO_IUNKNOWN, &unk,
NULL);
692 WARN(
"GetItemInfo failed: %08x\n",
hres);
697 IUnknown_Release(unk);
699 WARN(
"object does not implement IDispatch\n");
704 IDispatch_AddRef(
item->disp);
705 ret->type = EXPRVAL_JSVAL;
775 FIXME(
"invalid ref: %08x\n", prop_ref.
u.
hres);
783 hres = IDispatch_QueryInterface(
obj, &IID_IDispatchEx, (
void**)&dispex);
785 hres = IDispatchEx_GetNextDispID(dispex, fdexEnumDefault,
id, &
id);
787 hres = IDispatchEx_GetMemberName(dispex,
id, &
name);
788 IDispatchEx_Release(dispex);
792 TRACE(
"No IDispatchEx\n");
836 IDispatch_Release(disp);
921 except->catch_off = catch_off;
922 except->finally_off = finally_off;
934 unsigned finally_off;
936 TRACE(
"%u\n", ret_off);
941 finally_off =
except->finally_off;
954 frame->
ip = finally_off;
974 TRACE(
"passing exception\n");
1014 TRACE(
"%d\n", func_idx);
1017 frame->
scope, &dispex);
1047 IDispatch_Release(
obj);
1059 IDispatch_Release(
obj);
1088 IDispatch_Release(
obj);
1117 IDispatch_Release(
obj);
1126 ref.type = EXPRVAL_IDREF;
1128 ref.u.idref.id =
id;
1130 IDispatch_Release(
obj);
1193 TRACE(
"%d %d\n", argn, do_ret);
1211 TRACE(
"%d %d\n", argn, do_ret);
1241 if(exprval.
type == EXPRVAL_INVALID && (
flags & fdexNameEnsure)) {
1251 if(exprval.
type == EXPRVAL_JSVAL || exprval.
type == EXPRVAL_INVALID) {
1252 WARN(
"invalid ref\n");
1270 if(exprval.
type == EXPRVAL_INVALID)
1292 ref.type = EXPRVAL_STACK_REF;
1350 TRACE(
"%s\n",
arg ?
"true" :
"false");
1606 static const WCHAR prototypeW[] = {
'p',
'r',
'o',
't',
'o',
't',
'y',
'p',
'e',0};
1617 FIXME(
"non-jsdisp objects not supported\n");
1635 for(iter = tmp; !
ret && iter; iter = iter->
prototype) {
1644 FIXME(
"prototype is not an object\n");
1867 IDispatch_Release(
obj);
1872 IDispatch_Release(
obj);
1894 switch(exprval.
type) {
1895 case EXPRVAL_STACK_REF:
1900 IDispatch_Release(exprval.
u.
idref.disp);
1904 case EXPRVAL_INVALID:
1908 FIXME(
"Unsupported exprval\n");
2005 if(exprval.
type == EXPRVAL_INVALID)
2649#define X(x,a,b,c) interp_##x,
2655#define X(a,x,b,c) x,
2672 ERR(
"Failed to detach variable object: %08x\n",
hres);
2691 IDispatch_Release(frame->
this_obj);
2702 for(frame =
ctx->call_ctx; frame; frame = frame->
prev_frame) {
2710 for(
i=0;
i < frame->
argc;
i++) {
2711 if(i < frame->function->param_cnt)
2718 WARN(
"[detached frame]");
2741 static const WCHAR messageW[] = {
'm',
'e',
's',
's',
'a',
'g',
'e',0};
2770 return exception_hres;
2782 frame->
ip = catch_off ? catch_off : except_frame->
finally_off;
2785 except_val =
ctx->ei.val;
2815 frame =
ctx->call_ctx;
2822 }
else if(frame->
ip == -1) {
2828 if(return_to_interp) {
2835 if(!return_to_interp)
2867 hres = IDispatch_QueryInterface(disp, &IID_IBindEventHandler, (
void**)&
target);
2870 IBindEventHandler_Release(
target);
2872 WARN(
"BindEvent failed: %08x\n",
hres);
2874 FIXME(
"No IBindEventHandler, not yet supported binding\n");
2877 IDispatch_Release(disp);
2883 const unsigned orig_stack =
ctx->stack_top;
2953 scope->
frame = frame;
2968 if(!function->
funcs[
i].event_target)
3021 frame = heap_alloc_zero(
sizeof(*frame));
3045 else if(
ctx->host_global)
3051 if(function_instance)
3058 ctx->call_ctx = frame;
static void * heap_alloc(size_t len)
static BOOL heap_free(void *mem)
static void * heap_realloc(void *mem, size_t len)
HRESULT create_array(script_ctx_t *ctx, DWORD length, jsdisp_t **ret)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
INT copy(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], INT append, DWORD lpdwFlags, BOOL bTouch)
static BOOL get_bool(D3DXPARAMETER_TYPE type, const void *data)
void(* interp_func)(GLcontext *, GLuint, GLuint, GLfloat, GLuint, GLuint)
static const WCHAR messageW[]
HRESULT throw_type_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
HRESULT throw_reference_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
static const WCHAR prototypeW[]
static const WCHAR argumentsW[]
static HRESULT interp_identid(script_ctx_t *ctx)
static HRESULT interp_push_except(script_ctx_t *ctx)
static void pop_call_frame(script_ctx_t *ctx)
static HRESULT interp_undefined(script_ctx_t *ctx)
static jsval_t stack_topn(script_ctx_t *ctx, unsigned n)
static HRESULT exprval_propget(script_ctx_t *ctx, exprval_t *ref, jsval_t *r)
static HRESULT interp_assign(script_ctx_t *ctx)
static HRESULT interp_case(script_ctx_t *ctx)
static void print_backtrace(script_ctx_t *ctx)
static HRESULT stack_pop_int(script_ctx_t *ctx, INT *r)
static HRESULT interp_setret(script_ctx_t *ctx)
static HRESULT stack_push(script_ctx_t *ctx, jsval_t v)
static HRESULT interp_carray_set(script_ctx_t *ctx)
static HRESULT interp_local(script_ctx_t *ctx)
static HRESULT disp_get_id(script_ctx_t *ctx, IDispatch *disp, const WCHAR *name, BSTR name_bstr, DWORD flags, DISPID *id)
static HRESULT interp_eq2(script_ctx_t *ctx)
static HRESULT interp_add(script_ctx_t *ctx)
static HRESULT exprval_call(script_ctx_t *ctx, exprval_t *ref, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT unwind_exception(script_ctx_t *ctx, HRESULT exception_hres)
static unsigned get_op_int(script_ctx_t *ctx, int i)
static HRESULT stack_pop_object(script_ctx_t *ctx, IDispatch **r)
static HRESULT detach_variable_object(script_ctx_t *ctx, call_frame_t *frame, BOOL from_release)
static HRESULT bind_event_target(script_ctx_t *ctx, function_code_t *func, jsdisp_t *func_obj)
void clear_ei(script_ctx_t *ctx)
static BOOL lookup_global_members(script_ctx_t *ctx, BSTR identifier, exprval_t *ret)
static HRESULT setup_scope(script_ctx_t *ctx, call_frame_t *frame, scope_chain_t *scope_chain, jsdisp_t *variable_object, unsigned argc, jsval_t *argv)
static HRESULT interp_forin(script_ctx_t *ctx)
static HRESULT interp_lshift(script_ctx_t *ctx)
static HRESULT interp_array(script_ctx_t *ctx)
static HRESULT interp_member(script_ctx_t *ctx)
static HRESULT interp_eq(script_ctx_t *ctx)
static HRESULT stack_pop_uint(script_ctx_t *ctx, DWORD *r)
static HRESULT interp_typeof(script_ctx_t *ctx)
static HRESULT interp_memberid(script_ctx_t *ctx)
static HRESULT interp_minus(script_ctx_t *ctx)
static HRESULT identifier_value(script_ctx_t *ctx, BSTR identifier)
static HRESULT interp_regexp(script_ctx_t *ctx)
static HRESULT interp_identifier_ref(script_ctx_t *ctx, BSTR identifier, unsigned flags)
static HRESULT identifier_eval(script_ctx_t *ctx, BSTR identifier, exprval_t *ret)
static HRESULT interp_neq(script_ctx_t *ctx)
static jsval_t stack_pop(script_ctx_t *ctx)
static const unsigned op_move[]
static HRESULT interp_end_finally(script_ctx_t *ctx)
static void exprval_set_disp_ref(exprval_t *ref, IDispatch *obj, DISPID id)
static HRESULT interp_delete(script_ctx_t *ctx)
static HRESULT interp_new(script_ctx_t *ctx)
static HRESULT interp_gteq(script_ctx_t *ctx)
static HRESULT interp_tonum(script_ctx_t *ctx)
void scope_release(scope_chain_t *scope)
static HRESULT stack_push_exprval(script_ctx_t *ctx, exprval_t *val)
static HRESULT interp_in(script_ctx_t *ctx)
static HRESULT interp_typeofident(script_ctx_t *ctx)
static HRESULT interp_and(script_ctx_t *ctx)
static HRESULT interp_pop(script_ctx_t *ctx)
static jsval_t * stack_top_ref(script_ctx_t *ctx, unsigned n)
static HRESULT interp_jmp(script_ctx_t *ctx)
static HRESULT interp_push_acc(script_ctx_t *ctx)
static HRESULT interp_mod(script_ctx_t *ctx)
static HRESULT interp_bool(script_ctx_t *ctx)
static HRESULT scope_push(scope_chain_t *scope, jsdisp_t *jsobj, IDispatch *obj, scope_chain_t **ret)
static HRESULT interp_rshift(script_ctx_t *ctx)
static HRESULT interp_lteq(script_ctx_t *ctx)
static HRESULT interp_call(script_ctx_t *ctx)
static const op_func_t op_funcs[]
static HRESULT interp_refval(script_ctx_t *ctx)
static HRESULT interp_xor(script_ctx_t *ctx)
static HRESULT interp_call_member(script_ctx_t *ctx)
static HRESULT interp_pop_scope(script_ctx_t *ctx)
static jsval_t * stack_args(script_ctx_t *ctx, unsigned n)
HRESULT(* op_func_t)(script_ctx_t *)
static HRESULT interp_jmp_z(script_ctx_t *ctx)
static HRESULT interp_pop_except(script_ctx_t *ctx)
static HRESULT interp_local_ref(script_ctx_t *ctx)
static HRESULT interp_bneg(script_ctx_t *ctx)
static HRESULT interp_this(script_ctx_t *ctx)
static BSTR get_op_bstr(script_ctx_t *ctx, int i)
static HRESULT interp_throw(script_ctx_t *ctx)
static void exprval_set_exception(exprval_t *val, HRESULT hres)
static HRESULT interp_postinc(script_ctx_t *ctx)
static HRESULT interp_void(script_ctx_t *ctx)
static void jmp_abs(script_ctx_t *ctx, unsigned dst)
static jsstr_t * get_op_str(script_ctx_t *ctx, int i)
static HRESULT interp_gt(script_ctx_t *ctx)
static const WCHAR booleanW[]
static void scope_pop(scope_chain_t **scope)
local_ref_t * lookup_local(const function_code_t *function, const WCHAR *identifier)
static void jmp_next(script_ctx_t *ctx)
static HRESULT interp_ret(script_ctx_t *ctx)
static HRESULT exprval_propput(script_ctx_t *ctx, exprval_t *ref, jsval_t v)
static HRESULT interp_throw_type(script_ctx_t *ctx)
static HRESULT interp_neq2(script_ctx_t *ctx)
static void clear_acc(script_ctx_t *ctx)
static HRESULT interp_cnd_nz(script_ctx_t *ctx)
static double get_op_double(script_ctx_t *ctx)
static HRESULT interp_sub(script_ctx_t *ctx)
static HRESULT interp_new_obj(script_ctx_t *ctx)
static jsval_t steal_ret(call_frame_t *frame)
static HRESULT interp_throw_ref(script_ctx_t *ctx)
static HRESULT interp_rshift2(script_ctx_t *ctx)
static HRESULT interp_or(script_ctx_t *ctx)
static HRESULT interp_instanceof(script_ctx_t *ctx)
static HRESULT interp_cnd_z(script_ctx_t *ctx)
static HRESULT interp_delete_ident(script_ctx_t *ctx)
static HRESULT interp_neg(script_ctx_t *ctx)
static const WCHAR undefinedW[]
static unsigned get_op_uint(script_ctx_t *ctx, int i)
static jsval_t stack_top(script_ctx_t *ctx)
static HRESULT exprval_to_value(script_ctx_t *ctx, exprval_t *ref, jsval_t *r)
static void exprval_release(exprval_t *val)
static unsigned local_off(call_frame_t *frame, int ref)
static const WCHAR stringW[]
static HRESULT interp_carray(script_ctx_t *ctx)
static HRESULT interp_double(script_ctx_t *ctx)
static HRESULT equal_values(script_ctx_t *ctx, jsval_t lval, jsval_t rval, BOOL *ret)
static HRESULT interp_str(script_ctx_t *ctx)
static HRESULT enter_bytecode(script_ctx_t *ctx, jsval_t *r)
static const WCHAR unknownW[]
static BOOL stack_pop_exprval(script_ctx_t *ctx, exprval_t *r)
static const WCHAR objectW[]
static HRESULT disp_cmp(IDispatch *disp1, IDispatch *disp2, BOOL *ret)
static void stack_popn(script_ctx_t *ctx, unsigned n)
static HRESULT typeof_string(jsval_t v, const WCHAR **ret)
static HRESULT interp_ident(script_ctx_t *ctx)
static HRESULT interp_enter_catch(script_ctx_t *ctx)
static HRESULT interp_null(script_ctx_t *ctx)
static HRESULT interp_int(script_ctx_t *ctx)
static HRESULT add_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, jsval_t *ret)
static HRESULT stack_push_string(script_ctx_t *ctx, const WCHAR *str)
static HRESULT less_eval(script_ctx_t *ctx, jsval_t lval, jsval_t rval, BOOL greater, BOOL *ret)
static BSTR local_name(call_frame_t *frame, int ref)
static HRESULT interp_push_scope(script_ctx_t *ctx)
HRESULT jsval_strict_equal(jsval_t lval, jsval_t rval, BOOL *ret)
static const WCHAR numberW[]
static HRESULT stack_pop_number(script_ctx_t *ctx, double *r)
static HRESULT interp_preinc(script_ctx_t *ctx)
HRESULT exec_source(script_ctx_t *ctx, DWORD flags, bytecode_t *bytecode, function_code_t *function, scope_chain_t *scope, IDispatch *this_obj, jsdisp_t *function_instance, jsdisp_t *variable_obj, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT interp_obj_prop(script_ctx_t *ctx)
static int __cdecl local_ref_cmp(const void *key, const void *ref)
static HRESULT interp_div(script_ctx_t *ctx)
static BOOL stack_topn_exprval(script_ctx_t *ctx, unsigned n, exprval_t *r)
static const WCHAR functionW[]
static HRESULT interp_typeofid(script_ctx_t *ctx)
static HRESULT interp_lt(script_ctx_t *ctx)
static HRESULT interp_assign_call(script_ctx_t *ctx)
static HRESULT interp_mul(script_ctx_t *ctx)
static scope_chain_t * scope_addref(scope_chain_t *scope)
@ PROPERTY_DEFINITION_GETTER
@ PROPERTY_DEFINITION_VALUE
HRESULT setup_arguments_object(script_ctx_t *, call_frame_t *) DECLSPEC_HIDDEN
#define EXEC_RETURN_TO_INTERP
void detach_arguments_object(jsdisp_t *) DECLSPEC_HIDDEN
HRESULT create_source_function(script_ctx_t *, bytecode_t *, function_code_t *, scope_chain_t *, jsdisp_t **) DECLSPEC_HIDDEN
static bytecode_t * bytecode_addref(bytecode_t *code)
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
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 to_string(VARIANT *src, BSTR *dst)
_Check_return_ double __cdecl fmod(_In_ double x, _In_ double y)
void release_bytecode(bytecode_t *code)
HRESULT jsdisp_propput_name(jsdisp_t *obj, const WCHAR *name, jsval_t val)
HRESULT disp_propget(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t *val)
HRESULT jsdisp_get_id(jsdisp_t *jsdisp, const WCHAR *name, DWORD flags, DISPID *id)
HRESULT disp_delete(IDispatch *disp, DISPID id, BOOL *ret)
jsdisp_t * iface_to_jsdisp(IDispatch *iface)
HRESULT disp_call(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD flags, unsigned argc, jsval_t *argv, jsval_t *ret)
HRESULT disp_delete_name(script_ctx_t *ctx, IDispatch *disp, jsstr_t *name, BOOL *ret)
HRESULT disp_call_value(script_ctx_t *ctx, IDispatch *disp, IDispatch *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
jsdisp_t * as_jsdisp(IDispatch *disp)
HRESULT create_dispex(script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype, jsdisp_t **dispex)
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
HRESULT jsdisp_propput_idx(jsdisp_t *obj, DWORD idx, jsval_t val)
jsdisp_t * to_jsdisp(IDispatch *disp)
HRESULT disp_propput(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t val)
HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t *desc)
#define DISPATCH_JSCRIPT_CALLEREXECSSOURCE
HRESULT create_object(script_ctx_t *, jsdisp_t *, jsdisp_t **) DECLSPEC_HIDDEN
#define JS_E_ILLEGAL_ASSIGN
#define JS_E_OBJECT_REQUIRED
HRESULT to_object(script_ctx_t *, jsval_t, IDispatch **) DECLSPEC_HIDDEN
#define JS_E_OBJECT_EXPECTED
static void jsdisp_release(jsdisp_t *jsdisp)
#define PROPF_CONFIGURABLE
HRESULT to_primitive(script_ctx_t *, jsval_t, jsval_t *, hint_t) DECLSPEC_HIDDEN
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
HRESULT to_int32(script_ctx_t *, jsval_t, INT *) DECLSPEC_HIDDEN
#define JS_E_FUNCTION_EXPECTED
HRESULT to_uint32(script_ctx_t *, jsval_t, UINT32 *) DECLSPEC_HIDDEN
static IDispatch * to_disp(jsdisp_t *jsdisp)
#define JS_E_UNDEFINED_VARIABLE
static DWORD make_grfdex(script_ctx_t *ctx, DWORD flags)
#define JS_E_INVALID_PROPERTY
const char * debugstr_jsval(const jsval_t) DECLSPEC_HIDDEN
static jsdisp_t * jsdisp_addref(jsdisp_t *jsdisp)
HRESULT to_boolean(jsval_t, BOOL *) DECLSPEC_HIDDEN
#define JS_E_INVALID_ACTION
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
HRESULT create_regexp(script_ctx_t *, jsstr_t *, DWORD, jsdisp_t **) DECLSPEC_HIDDEN
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
jsstr_t * jsstr_alloc_len(const WCHAR *buf, unsigned len)
int jsstr_cmp(jsstr_t *str1, jsstr_t *str2)
jsstr_t * jsstr_undefined(void)
jsstr_t * jsstr_concat(jsstr_t *str1, jsstr_t *str2)
const char * debugstr_jsstr(jsstr_t *str)
static jsstr_t * jsstr_addref(jsstr_t *str)
static const WCHAR * jsstr_flatten(jsstr_t *str)
static BOOL jsstr_eq(jsstr_t *left, jsstr_t *right)
static void jsstr_release(jsstr_t *str)
static jsstr_t * jsstr_alloc(const WCHAR *str)
HRESULT jsval_copy(jsval_t v, jsval_t *r)
void jsval_release(jsval_t val)
static BOOL is_number(jsval_t v)
static VARIANT * get_variant(jsval_t v)
static jsval_t jsval_null(void)
static jsval_t jsval_string(jsstr_t *str)
static jsval_t jsval_undefined(void)
static jsval_t jsval_obj(jsdisp_t *obj)
static jsval_t jsval_bool(BOOL b)
static BOOL is_null_instance(jsval_t v)
static jsval_type_t jsval_type(jsval_t v)
static jsstr_t * get_string(jsval_t v)
static BOOL is_undefined(jsval_t v)
static double get_number(jsval_t v)
static jsval_t jsval_disp(IDispatch *obj)
static IDispatch * get_object(jsval_t v)
static BOOL is_object_instance(jsval_t v)
static BOOL is_null(jsval_t v)
static jsval_t jsval_number(double n)
static BOOL is_bool(jsval_t v)
static const WCHAR desc[]
static const char * debugstr_variant(const VARIANT *var)
static const char mbstate_t *static wchar_t const char mbstate_t *static const wchar_t int *static double
static VARIANTARG static DISPID
BSTR WINAPI SysAllocString(LPCOLESTR str)
UINT WINAPI SysStringLen(BSTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
#define DISPATCH_PROPERTYPUT
static BOOL is_string(parse_buffer *buf)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
except_frame_t * except_frame
struct _call_frame_t * prev_frame
scope_chain_t * base_scope
function_code_t * function
jsdisp_t * function_instance
struct _function_code_t * funcs
struct _function_code_t::@440 * variables
struct _call_frame_t * frame
struct _scope_chain_t * next
struct exprval_t::@437::@438 idref
enum exprval_t::@436 type
IDispatchEx IDispatchEx_iface
const builtin_info_t * builtin_info
_In_ ULONG _In_ ULONG_PTR ident
#define DISP_E_UNKNOWNNAME