Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 103 additions & 1 deletion quickjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -3837,7 +3837,7 @@ JSClassID JS_NewClassID(JSClassID *pclass_id)
return class_id;
}

JSClassID JS_GetClassID(JSValue v)
JSClassID JS_GetClassID(JSValueConst v)
{
JSObject *p;
if (JS_VALUE_GET_TAG(v) != JS_TAG_OBJECT)
Expand All @@ -3846,6 +3846,108 @@ JSClassID JS_GetClassID(JSValue v)
return p->class_id;
}

JS_BOOL JS_IsArrayBuffer(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_ARRAY_BUFFER;
}

JS_BOOL JS_IsSharedArrayBuffer(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_SHARED_ARRAY_BUFFER;
}

JS_BOOL JS_IsTypedArray(JSValueConst v)
{
JSClassID class_id = JS_GetClassID(v);
return class_id >= JS_CLASS_UINT8C_ARRAY && class_id <= JS_CLASS_FLOAT64_ARRAY;
}

JS_BOOL JS_IsDataView(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_DATAVIEW;
}

JS_BOOL JS_IsDate(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_DATE;
}

JS_BOOL JS_IsRegExp(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_REGEXP;
}

JS_BOOL JS_IsPromise(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_PROMISE;
}

JS_BOOL JS_IsProxy(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_PROXY;
}

JS_BOOL JS_IsMap(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_MAP;
}

JS_BOOL JS_IsSet(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_SET;
}

JS_BOOL JS_IsWeakMap(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_WEAKMAP;
}

JS_BOOL JS_IsWeakSet(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_WEAKSET;
}

JS_BOOL JS_IsWeakRef(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_WEAK_REF;
}

JS_BOOL JS_IsAsyncFunction(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_ASYNC_FUNCTION;
}

JS_BOOL JS_IsGeneratorFunction(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_GENERATOR_FUNCTION;
}

JS_BOOL JS_IsGenerator(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_GENERATOR;
}

JS_BOOL JS_IsArguments(JSValueConst v)
{
JSClassID class_id = JS_GetClassID(v);
return class_id == JS_CLASS_ARGUMENTS || class_id == JS_CLASS_MAPPED_ARGUMENTS;
}

JS_BOOL JS_IsMapIterator(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_MAP_ITERATOR;
}

JS_BOOL JS_IsSetIterator(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_SET_ITERATOR;
}

JS_BOOL JS_IsModuleNamespace(JSValueConst v)
{
return JS_GetClassID(v) == JS_CLASS_MODULE_NS;
}

BOOL JS_IsRegisteredClass(JSRuntime *rt, JSClassID class_id)
{
return (class_id < rt->class_count &&
Expand Down
22 changes: 21 additions & 1 deletion quickjs.h
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ typedef struct JSClassDef {
#define JS_INVALID_CLASS_ID 0
JSClassID JS_NewClassID(JSClassID *pclass_id);
/* Returns the class ID if `v` is an object, otherwise returns JS_INVALID_CLASS_ID. */
JSClassID JS_GetClassID(JSValue v);
JSClassID JS_GetClassID(JSValueConst v);
int JS_NewClass(JSRuntime *rt, JSClassID class_id, const JSClassDef *class_def);
int JS_IsRegisteredClass(JSRuntime *rt, JSClassID class_id);

Expand Down Expand Up @@ -770,6 +770,26 @@ JS_BOOL JS_SetConstructorBit(JSContext *ctx, JSValueConst func_obj, JS_BOOL val)

JSValue JS_NewArray(JSContext *ctx);
int JS_IsArray(JSContext *ctx, JSValueConst val);
JS_BOOL JS_IsArrayBuffer(JSValueConst val);
JS_BOOL JS_IsSharedArrayBuffer(JSValueConst val);
JS_BOOL JS_IsTypedArray(JSValueConst val);
JS_BOOL JS_IsDataView(JSValueConst val);
JS_BOOL JS_IsDate(JSValueConst val);
JS_BOOL JS_IsRegExp(JSValueConst val);
JS_BOOL JS_IsPromise(JSValueConst val);
JS_BOOL JS_IsProxy(JSValueConst val);
JS_BOOL JS_IsMap(JSValueConst val);
JS_BOOL JS_IsSet(JSValueConst val);
JS_BOOL JS_IsWeakMap(JSValueConst val);
JS_BOOL JS_IsWeakSet(JSValueConst val);
JS_BOOL JS_IsWeakRef(JSValueConst val);
JS_BOOL JS_IsAsyncFunction(JSValueConst val);
JS_BOOL JS_IsGeneratorFunction(JSValueConst val);
JS_BOOL JS_IsGenerator(JSValueConst val);
JS_BOOL JS_IsArguments(JSValueConst val);
JS_BOOL JS_IsMapIterator(JSValueConst val);
JS_BOOL JS_IsSetIterator(JSValueConst val);
JS_BOOL JS_IsModuleNamespace(JSValueConst val);

JSValue JS_NewDate(JSContext *ctx, double epoch_ms);

Expand Down
Loading