diff --git a/quickjs.c b/quickjs.c index a6099dc3c..e4328a107 100644 --- a/quickjs.c +++ b/quickjs.c @@ -3609,6 +3609,14 @@ bool JS_IsRegisteredClass(JSRuntime *rt, JSClassID class_id) return (class_id < rt->class_count && rt->class_array[class_id].class_id != 0); } +JSAtom JS_GetClassName(JSRuntime *rt, JSClassID class_id) +{ + if (JS_IsRegisteredClass(rt, class_id)) { + return JS_DupAtomRT(rt, rt->class_array[class_id].class_id); + } else { + return JS_ATOM_NULL; + } + } /* create a new object internal class. Return -1 if error, 0 if OK. The finalizer can be NULL if none is needed. */ diff --git a/quickjs.h b/quickjs.h index ab07706d9..6ba21237c 100644 --- a/quickjs.h +++ b/quickjs.h @@ -634,6 +634,8 @@ JS_EXTERN JSClassID JS_NewClassID(JSRuntime *rt, JSClassID *pclass_id); JS_EXTERN JSClassID JS_GetClassID(JSValueConst v); JS_EXTERN int JS_NewClass(JSRuntime *rt, JSClassID class_id, const JSClassDef *class_def); JS_EXTERN bool JS_IsRegisteredClass(JSRuntime *rt, JSClassID class_id); +/* Returns the class name or JS_ATOM_NULL if `id` is not a registered class. Must be freed with JS_FreeAtom. */ +JS_EXTERN JSAtom JS_GetClassName(JSRuntime *rt, JSClassID class_id); /* value handling */