static HRESULT Function_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { TRACE("%p\n", jsthis); *r = jsval_number(function_from_jsdisp(jsthis)->length); return S_OK; }
static HRESULT Function_get_arguments(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { FunctionInstance *function = function_from_jsdisp(jsthis); TRACE("\n"); *r = function->arguments ? jsval_obj(jsdisp_addref(function->arguments)) : jsval_null(); return S_OK; }
HRESULT Function_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { jsstr_t *str; HRESULT hres; TRACE("\n"); hres = function_to_string(function_from_jsdisp(jsthis), &str); if(FAILED(hres)) return hres; *r = jsval_string(str); return S_OK; }
static HRESULT Function_get_arguments(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r) { FunctionInstance *function = function_from_jsdisp(jsthis); call_frame_t *frame; TRACE("\n"); for(frame = ctx->call_ctx; frame; frame = frame->prev_frame) { if(frame->function_instance == &function->dispex) { *r = jsval_obj(jsdisp_addref(frame->arguments_obj)); return S_OK; } } *r = jsval_null(); return S_OK; }
static inline FunctionInstance *function_from_vdisp(vdisp_t *vdisp) { return function_from_jsdisp(vdisp->u.jsdisp); }