]> git.kaiwu.me - njs.git/commitdiff
QuickJS: using enum instead of manual opaque id table.
authorDmitry Volyntsev <xeioex@nginx.com>
Tue, 26 Aug 2025 05:26:24 +0000 (22:26 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Mon, 8 Sep 2025 22:59:30 +0000 (15:59 -0700)
nginx/ngx_js.h
src/qjs.h

index 5a5a79b38059b4e8476bd21d621ef1aa359a87e4..0e217e905f4011a911287ffbdd415cbd1b73959c 100644 (file)
@@ -39,6 +39,7 @@
 
 #define ngx_js_buffer_type(btype) ((btype) & ~NGX_JS_DEPRECATED)
 
+#if (NJS_HAVE_QUICKJS)
 /*
  * This static table solves the problem of a native QuickJS approach
  * which uses a static variables of type JSClassID and JS_NewClassID() to
  * are loaded dynamically.
  */
 
-#define NGX_QJS_CLASS_ID_OFFSET (QJS_CORE_CLASS_ID_LAST)
-#define NGX_QJS_CLASS_ID_CONSOLE (NGX_QJS_CLASS_ID_OFFSET + 1)
-#define NGX_QJS_CLASS_ID_HTTP_REQUEST (NGX_QJS_CLASS_ID_OFFSET + 2)
-#define NGX_QJS_CLASS_ID_HTTP_PERIODIC (NGX_QJS_CLASS_ID_OFFSET + 3)
-#define NGX_QJS_CLASS_ID_HTTP_VARS (NGX_QJS_CLASS_ID_OFFSET + 4)
-#define NGX_QJS_CLASS_ID_HTTP_HEADERS_IN (NGX_QJS_CLASS_ID_OFFSET + 5)
-#define NGX_QJS_CLASS_ID_HTTP_HEADERS_OUT (NGX_QJS_CLASS_ID_OFFSET + 6)
-#define NGX_QJS_CLASS_ID_STREAM_SESSION (NGX_QJS_CLASS_ID_OFFSET + 7)
-#define NGX_QJS_CLASS_ID_STREAM_PERIODIC (NGX_QJS_CLASS_ID_OFFSET + 8)
-#define NGX_QJS_CLASS_ID_STREAM_FLAGS (NGX_QJS_CLASS_ID_OFFSET + 9)
-#define NGX_QJS_CLASS_ID_STREAM_VARS (NGX_QJS_CLASS_ID_OFFSET + 10)
-#define NGX_QJS_CLASS_ID_SHARED (NGX_QJS_CLASS_ID_OFFSET + 11)
-#define NGX_QJS_CLASS_ID_SHARED_DICT (NGX_QJS_CLASS_ID_OFFSET + 12)
-#define NGX_QJS_CLASS_ID_SHARED_DICT_ERROR (NGX_QJS_CLASS_ID_OFFSET + 13)
-#define NGX_QJS_CLASS_ID_FETCH_HEADERS (NGX_QJS_CLASS_ID_OFFSET + 14)
-#define NGX_QJS_CLASS_ID_FETCH_REQUEST (NGX_QJS_CLASS_ID_OFFSET + 15)
-#define NGX_QJS_CLASS_ID_FETCH_RESPONSE (NGX_QJS_CLASS_ID_OFFSET + 16)
+enum {
+    NGX_QJS_CLASS_ID_CONSOLE = QJS_CORE_CLASS_ID_LAST,
+    NGX_QJS_CLASS_ID_HTTP_REQUEST,
+    NGX_QJS_CLASS_ID_HTTP_PERIODIC,
+    NGX_QJS_CLASS_ID_HTTP_VARS,
+    NGX_QJS_CLASS_ID_HTTP_HEADERS_IN,
+    NGX_QJS_CLASS_ID_HTTP_HEADERS_OUT,
+    NGX_QJS_CLASS_ID_STREAM_SESSION,
+    NGX_QJS_CLASS_ID_STREAM_PERIODIC,
+    NGX_QJS_CLASS_ID_STREAM_FLAGS,
+    NGX_QJS_CLASS_ID_STREAM_VARS,
+    NGX_QJS_CLASS_ID_SHARED,
+    NGX_QJS_CLASS_ID_SHARED_DICT,
+    NGX_QJS_CLASS_ID_SHARED_DICT_ERROR,
+    NGX_QJS_CLASS_ID_FETCH_HEADERS,
+    NGX_QJS_CLASS_ID_FETCH_REQUEST,
+    NGX_QJS_CLASS_ID_FETCH_RESPONSE,
+};
+#endif
 
 
 typedef struct ngx_js_loc_conf_s ngx_js_loc_conf_t;
index cd5c25215ec5c627763f4a487e532e90976b0a74..3b50143e644560039fa0f8307c86eeb5580e9ced 100644 (file)
--- a/src/qjs.h
+++ b/src/qjs.h
 #include <quickjs_compat.h>
 
 
-#define QJS_CORE_CLASS_ID_OFFSET    64
-#define QJS_CORE_CLASS_ID_BUFFER    (QJS_CORE_CLASS_ID_OFFSET)
-#define QJS_CORE_CLASS_ID_UINT8_ARRAY_CTOR (QJS_CORE_CLASS_ID_OFFSET + 1)
-#define QJS_CORE_CLASS_ID_TEXT_DECODER (QJS_CORE_CLASS_ID_OFFSET + 2)
-#define QJS_CORE_CLASS_ID_TEXT_ENCODER (QJS_CORE_CLASS_ID_OFFSET + 3)
-#define QJS_CORE_CLASS_ID_FS_STATS  (QJS_CORE_CLASS_ID_OFFSET + 4)
-#define QJS_CORE_CLASS_ID_FS_DIRENT (QJS_CORE_CLASS_ID_OFFSET + 5)
-#define QJS_CORE_CLASS_ID_FS_FILEHANDLE (QJS_CORE_CLASS_ID_OFFSET + 6)
-#define QJS_CORE_CLASS_ID_WEBCRYPTO_KEY (QJS_CORE_CLASS_ID_OFFSET + 7)
-#define QJS_CORE_CLASS_CRYPTO_HASH (QJS_CORE_CLASS_ID_OFFSET + 8)
-#define QJS_CORE_CLASS_CRYPTO_HMAC (QJS_CORE_CLASS_ID_OFFSET + 9)
-#define QJS_CORE_CLASS_ID_XML_DOC (QJS_CORE_CLASS_ID_OFFSET + 10)
-#define QJS_CORE_CLASS_ID_XML_NODE (QJS_CORE_CLASS_ID_OFFSET + 11)
-#define QJS_CORE_CLASS_ID_XML_ATTR (QJS_CORE_CLASS_ID_OFFSET + 12)
-#define QJS_CORE_CLASS_ID_LAST      (QJS_CORE_CLASS_ID_OFFSET + 13)
+enum {
+    QJS_CORE_CLASS_ID_BUFFER = 64,
+    QJS_CORE_CLASS_ID_UINT8_ARRAY_CTOR,
+    QJS_CORE_CLASS_ID_TEXT_DECODER,
+    QJS_CORE_CLASS_ID_TEXT_ENCODER,
+    QJS_CORE_CLASS_ID_FS_STATS,
+    QJS_CORE_CLASS_ID_FS_DIRENT,
+    QJS_CORE_CLASS_ID_FS_FILEHANDLE,
+    QJS_CORE_CLASS_ID_WEBCRYPTO_KEY,
+    QJS_CORE_CLASS_CRYPTO_HASH,
+    QJS_CORE_CLASS_CRYPTO_HMAC,
+    QJS_CORE_CLASS_ID_XML_DOC,
+    QJS_CORE_CLASS_ID_XML_NODE,
+    QJS_CORE_CLASS_ID_XML_ATTR,
+    QJS_CORE_CLASS_ID_LAST,
+};
 
 
 typedef JSModuleDef *(*qjs_addon_init_pt)(JSContext *ctx, const char *name);