Mercurial > njs
changeset 2609:c86522744d77
QuickJS: using enum instead of manual opaque id table.
| author | Dmitry Volyntsev <xeioex@nginx.com> |
|---|---|
| date | Mon, 25 Aug 2025 22:26:24 -0700 |
| parents | 76ccd4e7d5d7 |
| children | 54eab0317d4c |
| files | nginx/ngx_js.h src/qjs.h |
| diffstat | 2 files changed, 36 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/nginx/ngx_js.h Fri Aug 29 09:42:18 2025 -0700 +++ b/nginx/ngx_js.h Mon Aug 25 22:26:24 2025 -0700 @@ -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;
--- a/src/qjs.h Fri Aug 29 09:42:18 2025 -0700 +++ b/src/qjs.h Mon Aug 25 22:26:24 2025 -0700 @@ -22,21 +22,22 @@ #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);
