21 #include <wine/port.h> 51 static const WCHAR toLocaleStringW[] = {
't',
'o',
'L',
'o',
'c',
'a',
'l',
'e',
'S',
't',
'r',
'i',
'n',
'g',0};
87 *jsthis = &
array->dispex;
135 TRACE(
"%p\n", jsthis);
174 for(
i=0;
i <
obj->length;
i++) {
260 str_tab = heap_alloc_zero(
length *
sizeof(*str_tab));
648 *
cmp =
n > 0.0 ? 1 : -1;
658 *
cmp =
d < -0.0 ? -1 : 0;
702 WARN(
"arg is not dispatch\n");
708 WARN(
"cmp_func is not a function\n");
723 vtab = heap_alloc_zero(
length *
sizeof(*vtab));
731 WARN(
"Could not get elem %d: %08x\n",
i,
hres);
750 tmpbuf = sorttab +
length;
761 sorttab[2*
i] = sorttab[2*
i+1];
762 sorttab[2*
i+1] = tmpv;
779 while(
a <
k &&
b < bend) {
785 sorttab[
i+
a+
b] = tmpbuf[
a];
788 sorttab[
i+
a+
b] = sorttab[
i+
k+
b];
892 if(add_args < delete_cnt) {
905 }
else if(add_args > delete_cnt) {
1061 jsval_t callback_args[3], mapped_value;
1070 FIXME(
"Could not get length\n");
1154 hres = IDispatchEx_DeleteMemberByDispID(vthis->
u.
dispex,
id);
1205 id =
id*10 + (*
ptr-
'0');
1212 if(
id >=
array->length)
1213 array->length =
id+1;
1286 case DISPATCH_CONSTRUCT: {
1335 if(object_prototype)
1369 static const WCHAR ArrayW[] = {
'A',
'r',
'r',
'a',
'y',0};
HRESULT to_uint32(script_ctx_t *, jsval_t, UINT32 *) DECLSPEC_HIDDEN
#define DISP_E_UNKNOWNNAME
static short search(int val, const short *table, int size)
void jsval_release(jsval_t val)
static HRESULT Array_toLocaleString(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static const WCHAR lengthW[]
static HRESULT Array_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT throw_range_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
static HRESULT Array_reverse(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsdisp_propget(jsdisp_t *jsdisp, DISPID id, jsval_t *val)
HRESULT to_integer(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
static IDispatch * get_object(jsval_t v)
static HRESULT Array_set_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t value)
GLdouble GLdouble GLdouble r
HRESULT create_builtin_constructor(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)
static const WCHAR sliceW[]
unsigned array_get_length(jsdisp_t *array)
#define JS_E_ARRAY_EXPECTED
static const WCHAR toStringW[]
static const WCHAR default_separatorW[]
static BOOL is_undefined(jsval_t v)
static const builtin_info_t ArrayInst_info
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
static HRESULT array_join(script_ctx_t *ctx, jsdisp_t *array, DWORD length, const WCHAR *sep, unsigned seplen, jsval_t *r)
static HRESULT Array_join(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
GLint GLint GLint GLint GLint x
static unsigned jsstr_length(jsstr_t *str)
static const builtin_info_t ArrayConstr_info
static void jsstr_release(jsstr_t *str)
#define cmp(status, error)
static HRESULT ArrayConstr_isArray(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static BOOL is_number(jsval_t v)
#define eq(received, expected, label, type)
static void * heap_alloc(size_t len)
static HRESULT Array_shift(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
GLsizei GLsizei GLuint * obj
static const WCHAR mapW[]
static void Array_on_put(jsdisp_t *dispex, const WCHAR *name)
GLenum GLuint GLenum GLsizei const GLchar * buf
int jsstr_cmp(jsstr_t *str1, jsstr_t *str2)
HRESULT to_number(script_ctx_t *, jsval_t, double *) DECLSPEC_HIDDEN
static HRESULT Array_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r)
static BOOL is_class(jsdisp_t *jsdisp, jsclass_t class)
static const WCHAR popW[]
static const builtin_prop_t ArrayInst_props[]
GLenum GLuint GLenum GLsizei length
static HRESULT to_string(VARIANT *src, BSTR *dst)
jsstr_t * jsstr_empty(void)
static const WCHAR shiftW[]
static HRESULT Array_pop(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static const WCHAR unshiftW[]
static BOOL is_object_instance(jsval_t v)
static ArrayInstance * array_from_vdisp(vdisp_t *vdisp)
static void Array_destructor(jsdisp_t *dispex)
static jsval_t jsval_string(jsstr_t *str)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
static HRESULT Array_get_length(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r)
static HRESULT Array_splice(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsval_strict_equal(jsval_t lval, jsval_t rval, BOOL *ret)
static const builtin_info_t Array_info
int(* cmp_func)(const void *ptr1, const void *ptr2)
HRESULT jsdisp_call_value(jsdisp_t *jsfunc, IDispatch *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
GLboolean GLboolean GLboolean b
const char * debugstr_jsstr(jsstr_t *str)
static jsval_t jsval_disp(IDispatch *obj)
static HRESULT Array_push(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsdisp_propget_name(jsdisp_t *obj, const WCHAR *name, jsval_t *val)
static HRESULT Array_slice(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static const WCHAR reverseW[]
static BOOL is_vclass(vdisp_t *vdisp, jsclass_t class)
static HRESULT Array_sort(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsdisp_delete_idx(jsdisp_t *obj, DWORD idx)
static HRESULT ArrayConstr_value(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static BOOL is_null(jsval_t v)
static const WCHAR sortW[]
static jsdisp_t * jsdisp_addref(jsdisp_t *jsdisp)
static const WCHAR ArrayW[]
static const WCHAR isArrayW[]
static ArrayInstance * array_this(vdisp_t *jsthis)
static double get_number(jsval_t v)
static WCHAR * idx_to_str(DWORD idx, WCHAR *ptr)
static ArrayInstance * array_from_jsdisp(jsdisp_t *jsdisp)
static const WCHAR joinW[]
static HRESULT Array_map(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT Array_unshift(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
#define memcpy(s1, s2, n)
HRESULT jsdisp_get_id(jsdisp_t *jsdisp, const WCHAR *name, DWORD flags, DISPID *id)
GLsizei const GLfloat * value
static const WCHAR forEachW[]
#define DEFAULT_FUNCTION_VALUE
static HRESULT alloc_array(script_ctx_t *ctx, jsdisp_t *object_prototype, ArrayInstance **ret)
GLfloat GLfloat GLfloat v2
static HRESULT sort_cmp(script_ctx_t *ctx, jsdisp_t *cmp_func, jsval_t v1, jsval_t v2, INT *cmp)
jsdisp_t * iface_to_jsdisp(IDispatch *iface)
HRESULT jsdisp_propput_idx(jsdisp_t *obj, DWORD idx, jsval_t val)
static jsval_t jsval_undefined(void)
static VARIANTARG static DISPID
static const builtin_prop_t ArrayConstr_props[]
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
static HRESULT concat_array(jsdisp_t *array, ArrayInstance *obj, DWORD *len)
WINE_DEFAULT_DEBUG_CHANNEL(jscript)
HRESULT jsdisp_get_idx(jsdisp_t *obj, DWORD idx, jsval_t *r)
#define JS_E_JSCRIPT_EXPECTED
HRESULT create_array(script_ctx_t *ctx, DWORD length, jsdisp_t **ret)
static void jsdisp_release(jsdisp_t *jsdisp)
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
GLint GLint GLint GLint GLint GLint y
static jsval_t jsval_obj(jsdisp_t *obj)
static const WCHAR toLocaleStringW[]
static HRESULT set_length(jsdisp_t *obj, DWORD length)
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
#define JS_E_INVALID_LENGTH
static const WCHAR pushW[]
HRESULT disp_call_value(script_ctx_t *ctx, IDispatch *disp, IDispatch *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
HRESULT jsdisp_propput_name(jsdisp_t *obj, const WCHAR *name, jsval_t val)
HRESULT throw_type_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str)
static HRESULT Array_forEach(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static const builtin_prop_t Array_props[]
static jsval_t jsval_bool(BOOL b)
static IPrintDialogCallback callback
HRESULT create_array_constr(script_ctx_t *ctx, jsdisp_t *object_prototype, jsdisp_t **ret)
GLboolean GLboolean GLboolean GLboolean a
_Check_return_ _CRTIMP double __cdecl floor(_In_ double x)
HRESULT init_dispex_from_constr(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *constr)
static const WCHAR spliceW[]
static BOOL is_int32(double d)
static HRESULT Array_concat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static HRESULT concat_obj(jsdisp_t *array, IDispatch *obj, DWORD *len)
static const WCHAR concatW[]
HRESULT to_flat_string(script_ctx_t *, jsval_t, jsstr_t **, const WCHAR **) DECLSPEC_HIDDEN
static HRESULT Array_indexOf(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv, jsval_t *r)
static BOOL is_jsdisp(vdisp_t *vdisp)
static HRESULT get_length(script_ctx_t *ctx, vdisp_t *vdisp, jsdisp_t **jsthis, DWORD *ret)
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 GLenum GLenum GLenum GLint GLuint GLenum GLenum GLfloat GLenum GLfloat GLenum GLint const GLfloat GLenum GLint const GLushort GLint GLint GLsizei GLsizei GLenum GLsizei GLsizei GLenum GLenum const GLvoid GLenum GLdouble GLenum GLint GLenum GLenum GLint GLenum GLenum GLfloat GLenum GLenum GLfloat GLenum GLfloat GLenum GLushort const GLubyte GLenum GLenum GLenum GLint GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLvoid GLenum GLenum GLint GLenum GLint GLenum GLint GLuint GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble const GLfloat GLenum const GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLdouble GLint GLint GLsizei GLsizei GLenum GLuint GLenum array
static jsval_t jsval_number(double n)
const char * debugstr_jsval(const jsval_t) DECLSPEC_HIDDEN
static BOOL heap_free(void *mem)
static const WCHAR indexOfW[]
GLuint const GLchar * name