From: Dmitry Volyntsev Date: Tue, 26 Aug 2025 05:26:24 +0000 (-0700) Subject: QuickJS: using enum instead of manual opaque id table. X-Git-Tag: 0.9.2~10 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=d029662fcb74e69ff5b46711b34ff08a9e822aa8;p=njs.git QuickJS: using enum instead of manual opaque id table. --- diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h index 5a5a79b3..0e217e90 100644 --- a/nginx/ngx_js.h +++ b/nginx/ngx_js.h @@ -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 @@ -47,23 +48,25 @@ * 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; diff --git a/src/qjs.h b/src/qjs.h index cd5c2521..3b50143e 100644 --- a/src/qjs.h +++ b/src/qjs.h @@ -22,21 +22,22 @@ #include -#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);