28static const GUID GUID_JScriptTypeInfo = {0xc59c6b12,0xf6c1,0x11cf,{0x88,0x35,0x00,0xa0,0xc9,0x11,0xe8,0xb2}};
30#define FDEX_VERSION_MASK 0xf0000000
31#define GOLDEN_RATIO 0x9E3779B9U
84 return prop -
This->props + 1;
116 if(prop->
u.
ref <
This->prototype->prop_cnt)
132 int min = 0,
max =
This->builtin_info->props_cnt-1,
i,
r;
167 return This->builtin_info->props +
i;
188 if(
This->buf_size !=
This->prop_cnt)
197 for(
i=0;
i<
This->buf_size;
i++) {
198 This->props[
i].bucket_head = ~0;
199 This->props[
i].bucket_next = ~0;
202 for(
i=0;
i<
This->prop_cnt;
i++) {
206 props->bucket_next =
This->props[bucket].bucket_head;
207 This->props[bucket].bucket_head =
i;
221 prop = &
This->props[
This->prop_cnt];
231 This->props[bucket].bucket_head =
This->prop_cnt++;
249 unsigned bucket,
pos, prev = ~0;
252 pos =
obj->props[bucket].bucket_head;
256 obj->props[prev].bucket_next =
obj->props[
pos].bucket_next;
257 obj->props[
pos].bucket_next =
obj->props[bucket].bucket_head;
258 obj->props[bucket].bucket_head =
pos;
325 if(
This->builtin_info->lookup_prop) {
330 case_insens ? fdexNameCaseInsensitive : fdexNameCaseSensitive, &
desc);
411 prot_prop = &
This->prototype->props[own_prop->
u.
ref];
418 if(
This->prototype) {
423 if(own_prop && case_insens &&
wcscmp(prot_prop->
name, own_prop->
name)) {
434 own_prop->
u.
ref = prot_prop -
This->prototype->props;
464 if(
This->builtin_info->lookup_prop) {
496 if(
obj->builtin_info->prop_put)
511 if(
obj->builtin_info->prop_put)
523 for(
i=0;
i < dp->cNamedArgs;
i++) {
528 WARN(
"This is not VT_DISPATCH\n");
533 TRACE(
"no this passed\n");
544 cnt = dp->cArgs - dp->cNamedArgs;
554 for(
i = 0;
i <
cnt;
i++) {
622 prototype_iter = prototype_iter->
prototype;
623 prop_iter = prototype_iter->
props + prop_iter->
u.
ref;
633 TRACE(
"getter with no setter\n");
639 if(!
This->extensible)
653 TRACE(
"no setter\n");
658 if(!
This->builtin_info->prop_put) {
659 TRACE(
"no prop_put\n");
680 if(
This->builtin_info->on_put)
752 if(
obj->builtin_info->next_prop) {
798 for(iter =
This->prototype->props; iter < This->prototype->props+
This->prototype->prop_cnt; iter++) {
806 prop->
u.
ref = iter -
This->prototype->props;
940 unsigned chunk_idx = 0;
971 if(
obj->builtin_info->addref) {
975 for(prop =
obj->props, props_end = prop +
obj->prop_cnt; prop < props_end; prop++) {
993 obj->prototype->ref--;
994 if(
obj->builtin_info->gc_traverse)
1001 if(!
obj->ref || !
obj->gc_marked)
1013 for(prop = obj2->
props, props_end = prop + obj2->
prop_cnt; prop < props_end; prop++) {
1014 switch(prop->
type) {
1086 obj->ref =
chunk->ref[chunk_idx++];
1104 if(!
obj->gc_marked) {
1134 else if(
link->gc_marked)
1188 if (
memid == func_memid)
1190 else if (
memid < func_memid)
1207 if (
memid == var_memid)
1209 else if (
memid < var_memid)
1232 *
ppv = &
This->ITypeInfo_iface;
1234 *
ppv = &
This->ITypeComp_iface;
1267 for (
i =
This->num_funcs;
i--;)
1282 TRACE(
"(%p)->(%p)\n",
This, ppTypeAttr);
1293 attr->cbSizeInstance = 4;
1297 attr->cImplTypes = 1;
1298 attr->cbSizeVft =
sizeof(IDispatchVtbl);
1299 attr->cbAlignment = 4;
1300 attr->wTypeFlags = TYPEFLAG_FDISPATCHABLE;
1316 *ppTComp = &
This->ITypeComp_iface;
1317 ITypeInfo_AddRef(iface);
1339 desc->funckind = FUNC_DISPATCH;
1340 desc->invkind = INVOKE_FUNC;
1342 desc->cParams =
func->code->param_cnt;
1345 if (
func->code->param_cnt)
desc->lprgelemdescParam = (ELEMDESC*)(
desc + 1);
1346 for (
i = 0;
i <
func->code->param_cnt;
i++)
1367 desc->varkind = VAR_DISPATCH;
1384 TRACE(
"(%p)->(%ld %p %u %p)\n",
This,
memid, rgBstrNames, cMaxNames, pcNames);
1398 return ITypeInfo_GetNames(disp_typeinfo,
memid, rgBstrNames, cMaxNames, pcNames);
1403 if (!cMaxNames)
return S_OK;
1411 unsigned num =
min(cMaxNames,
func->code->param_cnt + 1);
1413 for (;
i <
num;
i++)
1450 *pImplTypeFlags = 0;
1463 TRACE(
"(%p)->(%p %u %p)\n",
This, rgszNames, cNames, pMemId);
1465 if (!rgszNames || !cNames || !pMemId)
return E_INVALIDARG;
1468 name = rgszNames[0];
1470 for (
i = 0;
i <
This->num_funcs;
i++)
1477 for (
j = 1;
j < cNames;
j++)
1479 name = rgszNames[
j];
1480 for (
arg =
func->code->param_cnt; --
arg >= 0;)
1491 for (
i = 0;
i <
This->num_vars;
i++)
1504 return ITypeInfo_GetIDsOfNames(disp_typeinfo, rgszNames, cNames, pMemId);
1508 DISPPARAMS *pDispParams,
VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
1516 pDispParams, pVarResult, pExcepInfo, puArgErr);
1526 return ITypeInfo_Invoke(disp_typeinfo, pvInstance,
memid,
wFlags, pDispParams,
1527 pVarResult, pExcepInfo, puArgErr);
1534 pDispParams, pVarResult, pExcepInfo, puArgErr);
1535 IDispatch_Release(disp);
1541 BSTR *pBstrDocString,
DWORD *pdwHelpContext,
BSTR *pBstrHelpFile)
1549 TRACE(
"(%p)->(%ld %p %p %p %p)\n",
This,
memid, pBstrName, pBstrDocString, pdwHelpContext, pBstrHelpFile);
1551 if (pBstrDocString) *pBstrDocString =
NULL;
1552 if (pdwHelpContext) *pdwHelpContext = 0;
1553 if (pBstrHelpFile) *pBstrHelpFile =
NULL;
1559 if (pBstrDocString &&
1578 return ITypeInfo_GetDocumentation(disp_typeinfo,
memid, pBstrName, pBstrDocString,
1579 pdwHelpContext, pBstrHelpFile);
1600 TRACE(
"(%p)->(%ld %d %p %p %p)\n",
This,
memid, invKind, pBstrDllName, pBstrName, pwOrdinal);
1602 if (pBstrDllName) *pBstrDllName =
NULL;
1603 if (pBstrName) *pBstrName =
NULL;
1604 if (pwOrdinal) *pwOrdinal = 0;
1611 return ITypeInfo_GetDllEntry(disp_typeinfo,
memid, invKind, pBstrDllName, pBstrName, pwOrdinal);
1621 TRACE(
"(%p)->(%lx %p)\n",
This, hRefType, ppTInfo);
1625 if (hRefType & ~3)
return E_FAIL;
1634 ITypeInfo_AddRef(*ppTInfo);
1654 return ITypeInfo_AddressOfMember(disp_typeinfo,
memid, invKind,
ppv);
1686 return ITypeInfo_GetMops(disp_typeinfo,
memid, pBstrMops);
1757 return ITypeInfo_QueryInterface(&
This->ITypeInfo_iface,
riid,
ppv);
1763 return ITypeInfo_AddRef(&
This->ITypeInfo_iface);
1769 return ITypeInfo_Release(&
This->ITypeInfo_iface);
1773 ITypeInfo **ppTInfo, DESCKIND *pDescKind, BINDPTR *pBindPtr)
1783 wFlags, ppTInfo, pDescKind, pBindPtr);
1785 if (!
szName || !ppTInfo || !pDescKind || !pBindPtr)
1788 for (
i = 0;
i <
This->num_funcs;
i++)
1793 hr = ITypeInfo_GetFuncDesc(&
This->ITypeInfo_iface,
i, &pBindPtr->lpfuncdesc);
1796 *pDescKind = DESCKIND_FUNCDESC;
1797 *ppTInfo = &
This->ITypeInfo_iface;
1798 ITypeInfo_AddRef(*ppTInfo);
1802 for (
i = 0;
i <
This->num_vars;
i++)
1807 hr = ITypeInfo_GetVarDesc(&
This->ITypeInfo_iface,
i, &pBindPtr->lpvardesc);
1810 *pDescKind = DESCKIND_VARDESC;
1811 *ppTInfo = &
This->ITypeInfo_iface;
1812 ITypeInfo_AddRef(*ppTInfo);
1820 hr = ITypeInfo_GetTypeComp(disp_typeinfo, &disp_typecomp);
1823 hr = ITypeComp_Bind(disp_typecomp,
szName, lHashVal,
wFlags, ppTInfo, pDescKind, pBindPtr);
1824 ITypeComp_Release(disp_typecomp);
1838 if (!
szName || !ppTInfo || !ppTComp)
1845 hr = ITypeInfo_GetTypeComp(disp_typeinfo, &disp_typecomp);
1848 hr = ITypeComp_BindType(disp_typecomp,
szName, lHashVal, ppTInfo, ppTComp);
1849 ITypeComp_Release(disp_typecomp);
1869 if(
obj->has_weak_refs) {
1873 }
while(
obj->has_weak_refs);
1876 for(prop =
obj->props; prop < obj->
props+
obj->prop_cnt; prop++) {
1877 switch(prop->
type) {
1897 if(
obj->builtin_info->destructor)
1898 obj->builtin_info->destructor(
obj);
1904 if(
obj->builtin_info->addref)
1905 obj->builtin_info->addref(
obj);
1915 if(
obj->builtin_info->release)
1916 return obj->builtin_info->release(
obj);
1935 *
ppv = &
This->IWineJSDispatch_iface;
1938 *
ppv = &
This->IWineJSDispatch_iface;
1941 *
ppv = &
This->IWineJSDispatch_iface;
1944 *
ppv = &
This->IWineJSDispatch_iface;
1958 if(
This->builtin_info->addref)
1959 return This->builtin_info->addref(
This);
1985 UINT num_funcs = 0, num_vars = 0;
2058 if (!func_code)
continue;
2061 typefunc->
code = func_code;
2074 *ppTInfo = &
typeinfo->ITypeInfo_iface;
2098 for(
i = 1;
i < cNames;
i++)
2099 rgDispId[
i] = DISPID_UNKNOWN;
2108 VARIANT *pVarResult, EXCEPINFO *pExcepInfo,
UINT *puArgErr)
2113 lcid,
wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
2116 pDispParams, pVarResult, pExcepInfo,
NULL);
2125 if(grfdex & ~(fdexNameCaseSensitive|fdexNameCaseInsensitive|fdexNameEnsure|fdexNameImplicit|
FDEX_VERSION_MASK)) {
2126 FIXME(
"Unsupported grfdex %lx\n", grfdex);
2142 TRACE(
"(%p)->(%lx %lx %x %p %p %p %p)\n",
This,
id,
lcid,
wFlags, pdp, pvarRes, pei, pspCaller);
2148 if(!
prop &&
id != DISPID_VALUE) {
2149 TRACE(
"invalid id\n");
2155 prev_caller =
This->ctx->jscaller->caller;
2156 This->ctx->jscaller->caller = pspCaller;
2158 IServiceProvider_AddRef(pspCaller);
2165 case DISPATCH_CONSTRUCT: {
2218 for(
i=0;
i < pdp->cNamedArgs;
i++) {
2219 if(pdp->rgdispidNamedArgs[
i] == DISPID_PROPERTYPUT)
2223 if(
i == pdp->cNamedArgs) {
2224 TRACE(
"no value to set\n");
2243 This->ctx->jscaller->caller = prev_caller;
2245 IServiceProvider_Release(pspCaller);
2274 if(
obj->builtin_info->prop_delete) {
2297 if(grfdex & ~(fdexNameCaseSensitive|fdexNameCaseInsensitive|fdexNameEnsure|fdexNameImplicit|
FDEX_VERSION_MASK))
2298 FIXME(
"Unsupported grfdex %lx\n", grfdex);
2304 TRACE(
"not found\n");
2321 WARN(
"invalid id\n");
2333 TRACE(
"(%p)->(%lx %lx %p)\n",
This,
id, grfdexFetch, pgrfdex);
2341 FIXME(
"unimplemented flags %08lx\n", grfdexFetch);
2353 TRACE(
"(%p)->(%lx %p)\n",
This,
id, pbstrName);
2373 if(
id != DISPID_VALUE)
2376 *
pid = DISPID_STARTENUM;
2410 if(!
This->ctx->site)
2462 TRACE(
"%p (%p)\n", dispex, prototype);
2524 ERR(
"Could not get prototype\n");
2557 flags & fdexNameCaseInsensitive, &
prop);
2569 *
id = DISPID_UNKNOWN;
2591 WARN(
"Not a function\n");
2598 flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
2637 memset(&ei, 0,
sizeof(ei));
2638 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
2641 IDispatchEx_Release(dispex);
2645 if(
flags == DISPATCH_CONSTRUCT) {
2646 WARN(
"IDispatch cannot be constructor\n");
2657 TRACE(
"using IDispatch\n");
2675 if(jsdisp && jsdisp->
ctx ==
ctx) {
2677 FIXME(
"disp_call(propput) on builtin object\n");
2683 flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
2691 flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
2704 dp.rgdispidNamedArgs =
NULL;
2720 if(dp.rgvarg !=
buf)
2731 if(dp.rgvarg !=
buf)
2753 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
2755 hres = IDispatchEx_GetDispID(dispex, bstr,
make_grfdex(
ctx, fdexNameCaseSensitive), &
id);
2756 IDispatchEx_Release(dispex);
2758 hres = IDispatch_GetIDsOfNames(disp, &
IID_NULL, &bstr, 1, 0, &
id);
2782 if(jsdisp && jsdisp->
ctx ==
ctx) {
2796 flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
2801 dp.cArgs =
argc + 1;
2803 dp.rgdispidNamedArgs = &this_id;
2807 dp.rgdispidNamedArgs =
NULL;
2878 if(jsdisp && jsdisp->
ctx ==
ctx) {
2889 DISPID dispid = DISPID_PROPERTYPUT;
2892 DISPPARAMS dp = {&
var, &dispid, 1, 1};
2916 if(!jsdisp || jsdisp->
ctx !=
ctx) {
2926 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
2928 hres = IDispatchEx_GetDispID(dispex,
str,
make_grfdex(
ctx, fdexNameEnsure|fdexNameCaseSensitive), &
id);
2929 IDispatchEx_Release(dispex);
2931 TRACE(
"using IDispatch\n");
3002 if(jsdisp && jsdisp->
ctx ==
ctx) {
3058 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
3064 hres = IDispatchEx_DeleteMemberByDispID(dispex,
id);
3065 IDispatchEx_Release(dispex);
3079 if(
id == DISPID_STARTENUM ||
idx >=
obj->prop_cnt) {
3083 if(
id == DISPID_STARTENUM)
3089 for(iter = &
obj->props[
idx]; iter < obj->
props +
obj->prop_cnt; iter++) {
3106 if(
obj->ctx->html_mode)
3147 hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (
void**)&dispex);
3149 hres = IDispatchEx_DeleteMemberByName(dispex, bstr,
make_grfdex(
ctx, fdexNameCaseSensitive));
3152 IDispatchEx_Release(dispex);
3156 hres = IDispatch_GetIDsOfNames(disp, &
IID_NULL, &bstr, 1, 0, &
id);
3233 if(
desc->explicit_getter ||
desc->explicit_setter) {
3241 if(
desc->explicit_value) {
3282 if(
desc->explicit_value) {
3295 if(
desc->explicit_value) {
3313 }
else if(
desc->explicit_getter ||
desc->explicit_setter) {
3327 if(
desc->explicit_getter) {
3335 if(
desc->explicit_setter) {
3363 if(!
obj->extensible)
3370 if(
obj->prototype) {
3371 for(
i = 0;
i <
obj->prop_cnt;
i++)
3398 for(
i = 0;
i <
obj->prop_cnt;
i++) {
3416 for(
i = 0;
i <
obj->prop_cnt;
i++) {
3453 return IWineJSDispatchHost_AddRef(
This->host_iface);
3459 return IWineJSDispatchHost_Release(
This->host_iface);
3472 EXCEPINFO ei = { 0 };
3492 EXCEPINFO ei = { 0 };
3512 return IWineJSDispatchHost_NextProperty(
This->host_iface,
id,
desc);
3519 return IWineJSDispatchHost_DeleteProperty(
This->host_iface,
id);
3526 return IWineJSDispatchHost_ConfigureProperty(
This->host_iface,
id,
flags);
3535 hres = IWineJSDispatchHost_ToString(
This->host_iface, &
str);
3570 prototype =
ctx->object_prototype;
3596 IWineJSDispatchHost_GetOuterDispatch(
host_obj->host_iface, &
ret);
@ SCRIPTSTATE_UNINITIALIZED
struct outqueuenode * head
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static const WCHAR version[]
void handle_dispatch_exception(script_ctx_t *ctx, EXCEPINFO *ei)
HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
function_code_t * Function_get_code(jsdisp_t *jsthis)
HRESULT Function_invoke(jsdisp_t *func_this, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT create_host_function(script_ctx_t *ctx, const struct property_info *desc, DWORD flags, jsdisp_t **ret)
HRESULT create_builtin_function(script_ctx_t *ctx, builtin_invoke_t value_proc, const WCHAR *name, const builtin_info_t *builtin_info, DWORD flags, jsdisp_t *prototype, jsdisp_t **ret)
void script_release(script_ctx_t *ctx)
#define JSCRIPT_MAJOR_VERSION
#define JSCRIPT_MINOR_VERSION
ULONG WINAPI DECLSPEC_HOTPATCH GetTickCount(void)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
static wchar_t * wcsdup(const wchar_t *str)
IDispatch * lookup_global_host(script_ctx_t *ctx)
HRESULT jsval_strict_equal(jsval_t lval, jsval_t rval, BOOL *ret)
HRESULT leave_script(script_ctx_t *, HRESULT)
void enter_script(script_ctx_t *, jsexcept_t *)
static bytecode_t * bytecode_addref(bytecode_t *code)
GLuint GLuint GLsizei GLenum type
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLenum const GLfloat * params
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLboolean GLboolean GLboolean GLboolean a
GLfloat GLfloat GLfloat GLfloat h
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 const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static DISPID propput_dispid
void release_bytecode(bytecode_t *code)
HRESULT jsdisp_call(jsdisp_t *disp, DISPID id, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT find_prop_name(jsdisp_t *This, unsigned hash, const WCHAR *name, BOOL case_insens, dispex_prop_t *prop, dispex_prop_t **ret)
HRESULT jsdisp_get_own_property(jsdisp_t *obj, const WCHAR *name, BOOL flags_only, property_desc_t *desc)
HRESULT jsdisp_define_data_property(jsdisp_t *obj, const WCHAR *name, unsigned flags, jsval_t value)
#define FDEX_VERSION_MASK
static dispex_prop_t * alloc_protref(jsdisp_t *This, const WCHAR *name, DWORD ref)
static dispex_prop_t * alloc_prop(jsdisp_t *This, const WCHAR *name, prop_type_t type, DWORD flags)
HRESULT jsdisp_propput_name(jsdisp_t *obj, const WCHAR *name, jsval_t val)
static HRESULT HostObject_prop_get(jsdisp_t *jsdisp, unsigned idx, jsval_t *r)
HRESULT disp_propget(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t *val)
static HRESULT WINAPI DispatchEx_DeleteMemberByDispID(IWineJSDispatch *iface, DISPID id)
static HRESULT WINAPI ScriptTypeInfo_GetContainingTypeLib(ITypeInfo *iface, ITypeLib **ppTLib, UINT *pIndex)
static struct typeinfo_func * get_func_from_memid(const ScriptTypeInfo *typeinfo, MEMBERID memid)
static void WINAPI ScriptTypeInfo_ReleaseVarDesc(ITypeInfo *iface, VARDESC *pVarDesc)
HRESULT init_host_object(script_ctx_t *ctx, IWineJSDispatchHost *host_iface, IWineJSDispatch *prototype_iface, UINT32 flags, IWineJSDispatch **ret)
static HRESULT find_prop_name_prot(jsdisp_t *This, unsigned hash, const WCHAR *name, BOOL case_insens, dispex_prop_t *own_prop, dispex_prop_t **ret)
HRESULT jsdisp_propput(jsdisp_t *obj, const WCHAR *name, DWORD flags, BOOL throw, jsval_t val)
static const ITypeCompVtbl ScriptTypeCompVtbl
static unsigned string_hash(const WCHAR *name)
static HRESULT WINAPI ScriptTypeInfo_GetImplTypeFlags(ITypeInfo *iface, UINT index, INT *pImplTypeFlags)
static HRESULT HostObject_to_string(jsdisp_t *jsdisp, jsstr_t **ret)
static IDispatch * get_this(DISPPARAMS *dp)
HRESULT jsdisp_get_id(jsdisp_t *jsdisp, const WCHAR *name, DWORD flags, DISPID *id)
static HRESULT WINAPI DispatchEx_QueryInterface(IWineJSDispatch *iface, REFIID riid, void **ppv)
static HRESULT WINAPI ScriptTypeInfo_GetDocumentation(ITypeInfo *iface, MEMBERID memid, BSTR *pBstrName, BSTR *pBstrDocString, DWORD *pdwHelpContext, BSTR *pBstrHelpFile)
static HRESULT WINAPI ScriptTypeInfo_QueryInterface(ITypeInfo *iface, REFIID riid, void **ppv)
static HRESULT WINAPI WineJSDispatch_GetPropertyFlags(IWineJSDispatch *iface, DISPID id, UINT32 *ret)
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
static void fix_protref_prop(jsdisp_t *jsdisp, dispex_prop_t *prop)
static const builtin_info_t HostObject_info
static HRESULT WINAPI WineJSDispatch_GetScriptGlobal(IWineJSDispatch *iface, IWineJSDispatchHost **ret)
static HRESULT HostObject_next_prop(jsdisp_t *jsdisp, unsigned id, struct property_info *desc)
static dispex_prop_t * lookup_dispex_prop(jsdisp_t *obj, unsigned hash, const WCHAR *name, BOOL case_insens)
HRESULT disp_delete(IDispatch *disp, DISPID id, BOOL *ret)
jsdisp_t * iface_to_jsdisp(IDispatch *iface)
static HRESULT ensure_prop_name(jsdisp_t *This, const WCHAR *name, DWORD create_flags, BOOL case_insens, dispex_prop_t **ret)
HRESULT gc_process_linked_val(struct gc_ctx *gc_ctx, enum gc_traverse_op op, jsdisp_t *obj, jsval_t *link)
HRESULT jsdisp_get_prop_name(jsdisp_t *obj, DISPID id, jsstr_t **r)
static HRESULT WINAPI ScriptTypeInfo_GetVarDesc(ITypeInfo *iface, UINT index, VARDESC **ppVarDesc)
static HRESULT WINAPI ScriptTypeComp_QueryInterface(ITypeComp *iface, REFIID riid, void **ppv)
static BOOL is_function_prop(dispex_prop_t *prop)
HRESULT disp_call(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD flags, unsigned argc, jsval_t *argv, jsval_t *ret)
static ScriptTypeInfo * ScriptTypeInfo_from_ITypeComp(ITypeComp *iface)
HRESULT disp_call_name(script_ctx_t *ctx, IDispatch *disp, const WCHAR *name, 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)
static ULONG WINAPI ScriptTypeInfo_Release(ITypeInfo *iface)
static HRESULT WINAPI DispatchEx_GetTypeInfo(IWineJSDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
static HRESULT WINAPI DispatchEx_GetTypeInfoCount(IWineJSDispatch *iface, UINT *pctinfo)
static HRESULT WINAPI ScriptTypeInfo_Invoke(ITypeInfo *iface, PVOID pvInstance, MEMBERID memid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
ULONG jsdisp_release(jsdisp_t *obj)
static void unlink_jsdisp(jsdisp_t *jsdisp)
static void set_prop_flags(jsdisp_t *obj, dispex_prop_t *prop, UINT32 flags)
HRESULT gc_process_linked_obj(struct gc_ctx *gc_ctx, enum gc_traverse_op op, jsdisp_t *obj, jsdisp_t *link, void **unlink_ref)
static HRESULT gc_stack_push(struct gc_ctx *gc_ctx, jsdisp_t *obj)
static HRESULT WINAPI ScriptTypeInfo_GetFuncDesc(ITypeInfo *iface, UINT index, FUNCDESC **ppFuncDesc)
static HRESULT WINAPI DispatchEx_GetMemberName(IWineJSDispatch *iface, DISPID id, BSTR *pbstrName)
static HRESULT fill_props(jsdisp_t *obj)
static HRESULT find_external_prop(jsdisp_t *This, const WCHAR *name, BOOL case_insens, dispex_prop_t *prop, dispex_prop_t **ret)
static HRESULT WINAPI ScriptTypeInfo_GetNames(ITypeInfo *iface, MEMBERID memid, BSTR *rgBstrNames, UINT cMaxNames, UINT *pcNames)
HRESULT jsdisp_index_lookup(jsdisp_t *obj, const WCHAR *name, unsigned length, struct property_info *desc)
static DISPID prop_to_id(jsdisp_t *This, dispex_prop_t *prop)
HRESULT jsdisp_delete_idx(jsdisp_t *obj, DWORD idx)
jsdisp_t * as_jsdisp(IDispatch *disp)
static HRESULT WINAPI ScriptTypeInfo_GetTypeComp(ITypeInfo *iface, ITypeComp **ppTComp)
HRESULT jsdisp_call_value(jsdisp_t *jsfunc, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT WINAPI ScriptTypeInfo_AddressOfMember(ITypeInfo *iface, MEMBERID memid, INVOKEKIND invKind, PVOID *ppv)
HRESULT jsdisp_get_idx(jsdisp_t *obj, DWORD idx, jsval_t *r)
static HRESULT prop_put(jsdisp_t *This, dispex_prop_t *prop, jsval_t val)
static unsigned get_props_idx(jsdisp_t *This, unsigned hash)
static const GUID GUID_JScriptTypeInfo
HRESULT disp_propput_name(script_ctx_t *ctx, IDispatch *disp, const WCHAR *name, jsval_t val)
static const builtin_info_t dispex_info
static HRESULT WINAPI DispatchEx_GetDispID(IWineJSDispatch *iface, BSTR bstrName, DWORD grfdex, DISPID *pid)
static IWineJSDispatchVtbl DispatchExVtbl
static jsdisp_t * impl_from_IWineJSDispatch(IWineJSDispatch *iface)
static HRESULT WINAPI ScriptTypeComp_BindType(ITypeComp *iface, LPOLESTR szName, ULONG lHashVal, ITypeInfo **ppTInfo, ITypeComp **ppTComp)
static HRESULT prop_get(jsdisp_t *This, IDispatch *jsthis, dispex_prop_t *prop, jsval_t *r)
static HRESULT WINAPI DispatchEx_DeleteMemberByName(IWineJSDispatch *iface, BSTR bstrName, DWORD grfdex)
static HRESULT HostObject_prop_put(jsdisp_t *jsdisp, unsigned idx, jsval_t v)
HRESULT create_dispex(script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype, jsdisp_t **dispex)
static ULONG HostObject_release(jsdisp_t *jsdisp)
static ULONG WINAPI ScriptTypeComp_Release(ITypeComp *iface)
static HRESULT WINAPI DispatchEx_InvokeEx(IWineJSDispatch *iface, DISPID id, LCID lcid, WORD wFlags, DISPPARAMS *pdp, VARIANT *pvarRes, EXCEPINFO *pei, IServiceProvider *pspCaller)
static void WINAPI WineJSDispatch_Free(IWineJSDispatch *iface)
static HRESULT WINAPI ScriptTypeInfo_GetRefTypeInfo(ITypeInfo *iface, HREFTYPE hRefType, ITypeInfo **ppTInfo)
static ULONG WINAPI ScriptTypeInfo_AddRef(ITypeInfo *iface)
static ScriptTypeInfo * ScriptTypeInfo_from_ITypeInfo(ITypeInfo *iface)
static HRESULT HostObject_prop_config(jsdisp_t *jsdisp, unsigned id, unsigned flags)
static void WINAPI ScriptTypeInfo_ReleaseTypeAttr(ITypeInfo *iface, TYPEATTR *pTypeAttr)
void jsdisp_freeze(jsdisp_t *obj, BOOL seal)
IWineJSDispatchHost * get_host_dispatch(IDispatch *disp)
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
static const ITypeInfoVtbl ScriptTypeInfoVtbl
static HRESULT WINAPI DispatchEx_GetNextDispID(IWineJSDispatch *iface, DWORD grfdex, DISPID id, DISPID *pid)
static const builtin_prop_t * find_builtin_prop(jsdisp_t *This, const WCHAR *name, BOOL case_insens)
static HRESULT WINAPI ScriptTypeInfo_GetTypeAttr(ITypeInfo *iface, TYPEATTR **ppTypeAttr)
static HRESULT WINAPI ScriptTypeInfo_GetDllEntry(ITypeInfo *iface, MEMBERID memid, INVOKEKIND invKind, BSTR *pBstrDllName, BSTR *pBstrName, WORD *pwOrdinal)
HRESULT jsdisp_get_idx_id(jsdisp_t *jsdisp, DWORD idx, DISPID *id)
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
static jsdisp_t * gc_stack_pop(struct gc_ctx *gc_ctx)
static ULONG WINAPI DispatchEx_AddRef(IWineJSDispatch *iface)
static HRESULT WINAPI ScriptTypeComp_Bind(ITypeComp *iface, LPOLESTR szName, ULONG lHashVal, WORD wFlags, ITypeInfo **ppTInfo, DESCKIND *pDescKind, BINDPTR *pBindPtr)
static dispex_prop_t * get_prop(jsdisp_t *This, DISPID id)
HRESULT jsdisp_propput_idx(jsdisp_t *obj, DWORD idx, jsval_t val)
jsdisp_t * jsdisp_addref(jsdisp_t *obj)
static HRESULT WINAPI DispatchEx_Invoke(IWineJSDispatch *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
static HRESULT resize_props(jsdisp_t *This)
HRESULT disp_call_value_with_caller(script_ctx_t *ctx, IDispatch *disp, jsval_t vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r, IServiceProvider *caller)
HRESULT jsdisp_call_name(jsdisp_t *disp, const WCHAR *name, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT builtin_set_const(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value)
static HRESULT WINAPI ScriptTypeInfo_CreateInstance(ITypeInfo *iface, IUnknown *pUnkOuter, REFIID riid, PVOID *ppvObj)
static HRESULT WINAPI ScriptTypeInfo_GetIDsOfNames(ITypeInfo *iface, LPOLESTR *rgszNames, UINT cNames, MEMBERID *pMemId)
static HRESULT fill_protrefs(jsdisp_t *This)
static HRESULT WINAPI ScriptTypeInfo_GetRefTypeOfImplType(ITypeInfo *iface, UINT index, HREFTYPE *pRefType)
static HRESULT disp_invoke(script_ctx_t *ctx, IDispatch *disp, DISPID id, WORD flags, DISPPARAMS *params, VARIANT *r, IServiceProvider *caller)
static ULONG WINAPI ScriptTypeComp_AddRef(ITypeComp *iface)
static ULONG WINAPI DispatchEx_Release(IWineJSDispatch *iface)
static void jsdisp_free(jsdisp_t *obj)
static HRESULT WINAPI DispatchEx_GetNameSpaceParent(IWineJSDispatch *iface, IUnknown **ppunk)
jsdisp_t * to_jsdisp(IDispatch *disp)
static HRESULT delete_prop(jsdisp_t *obj, dispex_prop_t *prop, BOOL *ret)
HRESULT disp_propput(script_ctx_t *ctx, IDispatch *disp, DISPID id, jsval_t val)
static ULONG HostObject_addref(jsdisp_t *jsdisp)
HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t *desc)
static HRESULT HostObject_prop_delete(jsdisp_t *jsdisp, unsigned id)
static HRESULT WINAPI ScriptTypeInfo_GetMops(ITypeInfo *iface, MEMBERID memid, BSTR *pBstrMops)
static HRESULT WINAPI DispatchEx_GetMemberProperties(IWineJSDispatch *iface, DISPID id, DWORD grfdexFetch, DWORD *pgrfdex)
HRESULT jsdisp_change_prototype(jsdisp_t *obj, jsdisp_t *proto)
static HRESULT convert_params(script_ctx_t *ctx, const DISPPARAMS *dp, jsval_t *buf, unsigned *argc, jsval_t **ret)
static void WINAPI ScriptTypeInfo_ReleaseFuncDesc(ITypeInfo *iface, FUNCDESC *pFuncDesc)
HRESULT jsdisp_propget(jsdisp_t *jsdisp, DISPID id, jsval_t *val)
static HRESULT invoke_prop_func(jsdisp_t *This, IDispatch *jsthis, dispex_prop_t *prop, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r, IServiceProvider *caller)
HRESULT jsdisp_next_prop(jsdisp_t *obj, DISPID id, enum jsdisp_enum_type enum_type, DISPID *ret)
static dispex_prop_t * get_var_from_memid(const ScriptTypeInfo *typeinfo, MEMBERID memid)
BOOL jsdisp_is_frozen(jsdisp_t *obj, BOOL sealed)
HRESULT jsdisp_next_index(jsdisp_t *obj, unsigned length, unsigned id, struct property_info *desc)
HRESULT gc_run(script_ctx_t *ctx)
static HostObject * HostObject_from_jsdisp(jsdisp_t *jsdisp)
static HRESULT WINAPI DispatchEx_GetIDsOfNames(IWineJSDispatch *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
static HRESULT HostObject_lookup_prop(jsdisp_t *jsdisp, const WCHAR *name, unsigned flags, struct property_info *desc)
static HRESULT update_external_prop(jsdisp_t *obj, const WCHAR *name, dispex_prop_t *prop, const struct property_info *desc, dispex_prop_t **ret)
#define JS_E_CANNOT_CREATE_FOR_NONEXTENSIBLE
HRESULT to_primitive(script_ctx_t *, jsval_t, jsval_t *, hint_t)
#define PROPF_VERSION_MASK
void remove_weakmap_entry(struct weakmap_entry *)
#define JS_E_CYCLIC_PROTO_VALUE
static void script_addref(script_ctx_t *ctx)
#define SCRIPTLANGUAGEVERSION_ES5
#define JS_E_FUNCTION_EXPECTED
#define JS_E_NONWRITABLE_MODIFIED
static IDispatch * to_disp(jsdisp_t *jsdisp)
const char * debugstr_jsval(const jsval_t)
static DWORD make_grfdex(script_ctx_t *ctx, DWORD flags)
static IDispatchEx * to_dispex(jsdisp_t *jsdisp)
#define JS_E_NONCONFIGURABLE_REDEFINED
#define JS_E_INVALID_PROPERTY
@ GC_TRAVERSE_SPECULATIVELY
#define JS_E_TO_PRIMITIVE
#define JS_E_INVALID_ACTION
#define PROPF_VERSION_SHIFT
HRESULT get_dispatch_typeinfo(ITypeInfo **)
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
#define DISPATCH_JSCRIPT_INTERNAL_MASK
#define JS_E_OBJECT_NONEXTENSIBLE
const unsigned int PROPF_WRITABLE
const unsigned int PROPF_ENUMERABLE
const unsigned int PROPF_CONFIGURABLE
const unsigned int PROPF_PUBLIC_MASK
const unsigned int PROPF_METHOD
const unsigned int HOSTOBJ_CONSTRUCTOR
static const WCHAR * jsstr_flatten(jsstr_t *str)
static unsigned jsstr_length(jsstr_t *str)
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
static jsstr_t * jsstr_alloc(const WCHAR *str)
HRESULT jsval_copy(jsval_t v, jsval_t *r)
HRESULT variant_to_jsval(script_ctx_t *ctx, VARIANT *var, jsval_t *r)
void jsval_release(jsval_t val)
HRESULT jsval_to_variant(jsval_t val, VARIANT *retv)
static jsval_t jsval_undefined(void)
static jsval_t jsval_obj(jsdisp_t *obj)
static jsval_t jsval_disp(IDispatch *obj)
static IDispatch * get_object(jsval_t v)
static BOOL is_object_instance(jsval_t v)
D3D11_SHADER_VARIABLE_DESC desc
#define eq(received, expected, label, type)
static VARIANTARG static DISPID
_Out_ PULONG _Out_ PULONG pIndex
#define LOCALE_USER_DEFAULT
BSTR WINAPI SysAllocString(LPCOLESTR str)
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
#define DISPATCH_PROPERTYPUT
#define DISPATCH_PROPERTYGET
#define DISPATCH_PROPERTYPUTREF
static const WCHAR szName[]
#define IsEqualGUID(rguid1, rguid2)
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
__WINE_SERVER_LIST_INLINE struct list * list_next(const struct list *list, const struct list *elem)
#define RB_ENTRY_VALUE(element, type, field)
static struct rb_entry * rb_get(const struct rb_tree *tree, const void *key)
IWineJSDispatchHost * host_iface
IServiceProvider IServiceProvider_iface
ITypeComp ITypeComp_iface
ITypeInfo ITypeInfo_iface
struct typeinfo_func * funcs
union _dispex_prop_t::@430 u
struct _dispex_prop_t::@430::@431 accessor
HRESULT(* prop_get)(jsdisp_t *, unsigned, jsval_t *)
HRESULT(* gc_traverse)(struct gc_ctx *, enum gc_traverse_op, jsdisp_t *)
struct gc_stack_chunk * next
struct gc_stack_chunk * chunk
struct gc_stack_chunk * prev
const builtin_info_t * builtin_info
IWineJSDispatch IWineJSDispatch_iface
#define CONTAINING_RECORD(address, type, field)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
static const WCHAR props[]
WINBASEAPI _In_ DWORD _Out_ _In_ WORD wFlags
_In_ ULONG_PTR _In_ ULONG _Out_ ULONG_PTR * pid
#define TYPE_E_BADMODULEKIND
#define TYPE_E_ELEMENTNOTFOUND
#define TYPE_E_AMBIGUOUSNAME
#define TYPE_E_TYPEMISMATCH
#define DISP_E_MEMBERNOTFOUND
#define DISP_E_PARAMNOTOPTIONAL
#define DISP_E_UNKNOWNNAME