jscript: Introduce to_jsdispex.

This commit is contained in:
Jacek Caban 2024-06-27 19:54:33 +02:00 committed by Alexandre Julliard
parent be46a6033d
commit 119b0bb77d
5 changed files with 10 additions and 5 deletions

View file

@ -1560,7 +1560,7 @@ static HRESULT Array_unshift(script_ctx_t *ctx, jsval_t vthis, WORD flags, unsig
hres = jsdisp_propput_idx(jsthis, i+argc, val); hres = jsdisp_propput_idx(jsthis, i+argc, val);
jsval_release(val); jsval_release(val);
}else if(hres == DISP_E_UNKNOWNNAME) { }else if(hres == DISP_E_UNKNOWNNAME) {
hres = IDispatchEx_DeleteMemberByDispID(&jsthis->IDispatchEx_iface, id); hres = IDispatchEx_DeleteMemberByDispID(to_dispex(jsthis), id);
} }
} }

View file

@ -1893,7 +1893,7 @@ static HRESULT WINAPI DispatchEx_Invoke(IDispatchEx *iface, DISPID dispIdMember,
TRACE("(%p)->(%ld %s %ld %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid), TRACE("(%p)->(%ld %s %ld %d %p %p %p %p)\n", This, dispIdMember, debugstr_guid(riid),
lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr); lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
return IDispatchEx_InvokeEx(&This->IDispatchEx_iface, dispIdMember, lcid, wFlags, return IDispatchEx_InvokeEx(to_dispex(This), dispIdMember, lcid, wFlags,
pDispParams, pVarResult, pExcepInfo, NULL); pDispParams, pVarResult, pExcepInfo, NULL);
} }

View file

@ -216,6 +216,11 @@ static inline IDispatch *to_disp(jsdisp_t *jsdisp)
return (IDispatch*)&jsdisp->IDispatchEx_iface; return (IDispatch*)&jsdisp->IDispatchEx_iface;
} }
static inline IDispatchEx *to_dispex(jsdisp_t *jsdisp)
{
return &jsdisp->IDispatchEx_iface;
}
jsdisp_t *as_jsdisp(IDispatch*); jsdisp_t *as_jsdisp(IDispatch*);
jsdisp_t *to_jsdisp(IDispatch*); jsdisp_t *to_jsdisp(IDispatch*);
void jsdisp_free(jsdisp_t*); void jsdisp_free(jsdisp_t*);

View file

@ -671,7 +671,7 @@ static HRESULT stringify_object(stringify_ctx_t *ctx, jsdisp_t *obj)
if(!append_char(ctx, '{')) if(!append_char(ctx, '{'))
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
while((hres = IDispatchEx_GetNextDispID(&obj->IDispatchEx_iface, fdexEnumDefault, dispid, &dispid)) == S_OK) { while((hres = IDispatchEx_GetNextDispID(to_dispex(obj), fdexEnumDefault, dispid, &dispid)) == S_OK) {
stepback = ctx->buf_len; stepback = ctx->buf_len;
if(prop_cnt && !append_char(ctx, ',')) { if(prop_cnt && !append_char(ctx, ',')) {
@ -693,7 +693,7 @@ static HRESULT stringify_object(stringify_ctx_t *ctx, jsdisp_t *obj)
} }
} }
hres = IDispatchEx_GetMemberName(&obj->IDispatchEx_iface, dispid, &prop_name); hres = IDispatchEx_GetMemberName(to_dispex(obj), dispid, &prop_name);
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;

View file

@ -655,7 +655,7 @@ static HRESULT jsdisp_define_properties(script_ctx_t *ctx, jsdisp_t *obj, jsval_
if(FAILED(hres)) if(FAILED(hres))
break; break;
hres = IDispatchEx_GetMemberName(&list_obj->IDispatchEx_iface, id, &name); hres = IDispatchEx_GetMemberName(to_dispex(list_obj), id, &name);
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
hres = jsdisp_define_property(obj, name, &prop_desc); hres = jsdisp_define_property(obj, name, &prop_desc);
release_property_descriptor(&prop_desc); release_property_descriptor(&prop_desc);