]> git.kaiwu.me - quickjs.git/commitdiff
added JS_GetAnyOpaque() (oleavr)
authorFabrice Bellard <fabrice@bellard.org>
Mon, 7 Apr 2025 16:45:11 +0000 (18:45 +0200)
committerFabrice Bellard <fabrice@bellard.org>
Mon, 7 Apr 2025 16:45:11 +0000 (18:45 +0200)
quickjs.c
quickjs.h

index b2470ba64e20683a8f06a32c46c96cdb5af560e1..6b731c319e248f3257011d85997a1514a376d99c 100644 (file)
--- a/quickjs.c
+++ b/quickjs.c
@@ -10208,6 +10208,18 @@ void *JS_GetOpaque2(JSContext *ctx, JSValueConst obj, JSClassID class_id)
     return p;
 }
 
+void *JS_GetAnyOpaque(JSValueConst obj, JSClassID *class_id)
+{
+    JSObject *p;
+    if (JS_VALUE_GET_TAG(obj) != JS_TAG_OBJECT) {
+        *class_id = 0;
+        return NULL;
+    }
+    p = JS_VALUE_GET_OBJ(obj);
+    *class_id = p->class_id;
+    return p->u.opaque;
+}
+
 static JSValue JS_ToPrimitiveFree(JSContext *ctx, JSValue val, int hint)
 {
     int i;
index 056037176abb56565c32ef0f3d70951b722332e3..d3bd07f1fbbfbce9873ee1909f07c7a9a38c98f9 100644 (file)
--- a/quickjs.h
+++ b/quickjs.h
@@ -832,6 +832,7 @@ int JS_DefinePropertyGetSet(JSContext *ctx, JSValueConst this_obj,
 void JS_SetOpaque(JSValue obj, void *opaque);
 void *JS_GetOpaque(JSValueConst obj, JSClassID class_id);
 void *JS_GetOpaque2(JSContext *ctx, JSValueConst obj, JSClassID class_id);
+void *JS_GetAnyOpaque(JSValueConst obj, JSClassID *class_id);
 
 /* 'buf' must be zero terminated i.e. buf[buf_len] = '\0'. */
 JSValue JS_ParseJSON(JSContext *ctx, const char *buf, size_t buf_len,