Skip to content

Commit 65dce0e

Browse files
committed
Add JS_ArrayGetLength and JS_FreePropertyEnum for external iterators
1 parent f588210 commit 65dce0e

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

quickjs.c

+11
Original file line numberDiff line numberDiff line change
@@ -7007,6 +7007,11 @@ static JSValue JS_GetPrototypeFree(JSContext *ctx, JSValue obj)
70077007
return obj1;
70087008
}
70097009

7010+
/* works for arrays, strings, functions and arguments, but not for typed arrays */
7011+
int JS_ArrayGetLength(JSContext *ctx, int64_t *pres, JSValueConst obj) {
7012+
return js_get_length64(ctx, pres, obj);
7013+
}
7014+
70107015
/* return TRUE, FALSE or (-1) in case of exception */
70117016
static int JS_OrdinaryIsInstanceOf(JSContext *ctx, JSValue val,
70127017
JSValue obj)
@@ -7845,6 +7850,12 @@ int JS_GetOwnProperty(JSContext *ctx, JSPropertyDescriptor *desc,
78457850
return JS_GetOwnPropertyInternal(ctx, desc, JS_VALUE_GET_OBJ(obj), prop);
78467851
}
78477852

7853+
void JS_FreePropertyEnum(JSContext *ctx, JSPropertyEnum *tab,
7854+
uint32_t len)
7855+
{
7856+
js_free_prop_enum(ctx, tab, len);
7857+
}
7858+
78487859
/* return -1 if exception (Proxy object only) or TRUE/FALSE */
78497860
int JS_IsExtensible(JSContext *ctx, JSValue obj)
78507861
{

quickjs.h

+3
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ JS_EXTERN int JS_PreventExtensions(JSContext *ctx, JSValue obj);
694694
JS_EXTERN int JS_DeleteProperty(JSContext *ctx, JSValue obj, JSAtom prop, int flags);
695695
JS_EXTERN int JS_SetPrototype(JSContext *ctx, JSValue obj, JSValue proto_val);
696696
JS_EXTERN JSValue JS_GetPrototype(JSContext *ctx, JSValue val);
697+
JS_EXTERN int JS_ArrayGetLength(JSContext *ctx, int64_t *pres, JSValueConst obj);
697698

698699
#define JS_GPN_STRING_MASK (1 << 0)
699700
#define JS_GPN_SYMBOL_MASK (1 << 1)
@@ -707,6 +708,8 @@ JS_EXTERN int JS_GetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab,
707708
uint32_t *plen, JSValue obj, int flags);
708709
JS_EXTERN int JS_GetOwnProperty(JSContext *ctx, JSPropertyDescriptor *desc,
709710
JSValue obj, JSAtom prop);
711+
JS_EXTERN void JS_FreePropertyEnum(JSContext *ctx, JSPropertyEnum *tab,
712+
uint32_t len);
710713

711714
JS_EXTERN JSValue JS_Call(JSContext *ctx, JSValue func_obj, JSValue this_obj,
712715
int argc, JSValue *argv);

0 commit comments

Comments
 (0)