Skip to content

Commit 2ca3b42

Browse files
committed
Quickjs: using enum instead of manual opaque id table.
1 parent 44744d9 commit 2ca3b42

File tree

2 files changed

+36
-32
lines changed

2 files changed

+36
-32
lines changed

nginx/ngx_js.h

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
#define ngx_js_buffer_type(btype) ((btype) & ~NGX_JS_DEPRECATED)
4141

42+
#if (NJS_HAVE_QUICKJS)
4243
/*
4344
* This static table solves the problem of a native QuickJS approach
4445
* which uses a static variables of type JSClassID and JS_NewClassID() to
@@ -47,23 +48,25 @@
4748
* are loaded dynamically.
4849
*/
4950

50-
#define NGX_QJS_CLASS_ID_OFFSET (QJS_CORE_CLASS_ID_LAST)
51-
#define NGX_QJS_CLASS_ID_CONSOLE (NGX_QJS_CLASS_ID_OFFSET + 1)
52-
#define NGX_QJS_CLASS_ID_HTTP_REQUEST (NGX_QJS_CLASS_ID_OFFSET + 2)
53-
#define NGX_QJS_CLASS_ID_HTTP_PERIODIC (NGX_QJS_CLASS_ID_OFFSET + 3)
54-
#define NGX_QJS_CLASS_ID_HTTP_VARS (NGX_QJS_CLASS_ID_OFFSET + 4)
55-
#define NGX_QJS_CLASS_ID_HTTP_HEADERS_IN (NGX_QJS_CLASS_ID_OFFSET + 5)
56-
#define NGX_QJS_CLASS_ID_HTTP_HEADERS_OUT (NGX_QJS_CLASS_ID_OFFSET + 6)
57-
#define NGX_QJS_CLASS_ID_STREAM_SESSION (NGX_QJS_CLASS_ID_OFFSET + 7)
58-
#define NGX_QJS_CLASS_ID_STREAM_PERIODIC (NGX_QJS_CLASS_ID_OFFSET + 8)
59-
#define NGX_QJS_CLASS_ID_STREAM_FLAGS (NGX_QJS_CLASS_ID_OFFSET + 9)
60-
#define NGX_QJS_CLASS_ID_STREAM_VARS (NGX_QJS_CLASS_ID_OFFSET + 10)
61-
#define NGX_QJS_CLASS_ID_SHARED (NGX_QJS_CLASS_ID_OFFSET + 11)
62-
#define NGX_QJS_CLASS_ID_SHARED_DICT (NGX_QJS_CLASS_ID_OFFSET + 12)
63-
#define NGX_QJS_CLASS_ID_SHARED_DICT_ERROR (NGX_QJS_CLASS_ID_OFFSET + 13)
64-
#define NGX_QJS_CLASS_ID_FETCH_HEADERS (NGX_QJS_CLASS_ID_OFFSET + 14)
65-
#define NGX_QJS_CLASS_ID_FETCH_REQUEST (NGX_QJS_CLASS_ID_OFFSET + 15)
66-
#define NGX_QJS_CLASS_ID_FETCH_RESPONSE (NGX_QJS_CLASS_ID_OFFSET + 16)
51+
enum {
52+
NGX_QJS_CLASS_ID_CONSOLE = QJS_CORE_CLASS_ID_LAST,
53+
NGX_QJS_CLASS_ID_HTTP_REQUEST,
54+
NGX_QJS_CLASS_ID_HTTP_PERIODIC,
55+
NGX_QJS_CLASS_ID_HTTP_VARS,
56+
NGX_QJS_CLASS_ID_HTTP_HEADERS_IN,
57+
NGX_QJS_CLASS_ID_HTTP_HEADERS_OUT,
58+
NGX_QJS_CLASS_ID_STREAM_SESSION,
59+
NGX_QJS_CLASS_ID_STREAM_PERIODIC,
60+
NGX_QJS_CLASS_ID_STREAM_FLAGS,
61+
NGX_QJS_CLASS_ID_STREAM_VARS,
62+
NGX_QJS_CLASS_ID_SHARED,
63+
NGX_QJS_CLASS_ID_SHARED_DICT,
64+
NGX_QJS_CLASS_ID_SHARED_DICT_ERROR,
65+
NGX_QJS_CLASS_ID_FETCH_HEADERS,
66+
NGX_QJS_CLASS_ID_FETCH_REQUEST,
67+
NGX_QJS_CLASS_ID_FETCH_RESPONSE,
68+
};
69+
#endif
6770

6871

6972
typedef struct ngx_js_loc_conf_s ngx_js_loc_conf_t;

src/qjs.h

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,22 @@
4343
#include <pthread.h>
4444

4545

46-
#define QJS_CORE_CLASS_ID_OFFSET 64
47-
#define QJS_CORE_CLASS_ID_BUFFER (QJS_CORE_CLASS_ID_OFFSET)
48-
#define QJS_CORE_CLASS_ID_UINT8_ARRAY_CTOR (QJS_CORE_CLASS_ID_OFFSET + 1)
49-
#define QJS_CORE_CLASS_ID_TEXT_DECODER (QJS_CORE_CLASS_ID_OFFSET + 2)
50-
#define QJS_CORE_CLASS_ID_TEXT_ENCODER (QJS_CORE_CLASS_ID_OFFSET + 3)
51-
#define QJS_CORE_CLASS_ID_FS_STATS (QJS_CORE_CLASS_ID_OFFSET + 4)
52-
#define QJS_CORE_CLASS_ID_FS_DIRENT (QJS_CORE_CLASS_ID_OFFSET + 5)
53-
#define QJS_CORE_CLASS_ID_FS_FILEHANDLE (QJS_CORE_CLASS_ID_OFFSET + 6)
54-
#define QJS_CORE_CLASS_ID_WEBCRYPTO_KEY (QJS_CORE_CLASS_ID_OFFSET + 7)
55-
#define QJS_CORE_CLASS_CRYPTO_HASH (QJS_CORE_CLASS_ID_OFFSET + 8)
56-
#define QJS_CORE_CLASS_CRYPTO_HMAC (QJS_CORE_CLASS_ID_OFFSET + 9)
57-
#define QJS_CORE_CLASS_ID_XML_DOC (QJS_CORE_CLASS_ID_OFFSET + 10)
58-
#define QJS_CORE_CLASS_ID_XML_NODE (QJS_CORE_CLASS_ID_OFFSET + 11)
59-
#define QJS_CORE_CLASS_ID_XML_ATTR (QJS_CORE_CLASS_ID_OFFSET + 12)
60-
#define QJS_CORE_CLASS_ID_LAST (QJS_CORE_CLASS_ID_OFFSET + 13)
46+
enum {
47+
QJS_CORE_CLASS_ID_BUFFER = 64,
48+
QJS_CORE_CLASS_ID_UINT8_ARRAY_CTOR,
49+
QJS_CORE_CLASS_ID_TEXT_DECODER,
50+
QJS_CORE_CLASS_ID_TEXT_ENCODER,
51+
QJS_CORE_CLASS_ID_FS_STATS,
52+
QJS_CORE_CLASS_ID_FS_DIRENT,
53+
QJS_CORE_CLASS_ID_FS_FILEHANDLE,
54+
QJS_CORE_CLASS_ID_WEBCRYPTO_KEY,
55+
QJS_CORE_CLASS_CRYPTO_HASH,
56+
QJS_CORE_CLASS_CRYPTO_HMAC,
57+
QJS_CORE_CLASS_ID_XML_DOC,
58+
QJS_CORE_CLASS_ID_XML_NODE,
59+
QJS_CORE_CLASS_ID_XML_ATTR,
60+
QJS_CORE_CLASS_ID_LAST,
61+
};
6162

6263

6364
typedef JSModuleDef *(*qjs_addon_init_pt)(JSContext *ctx, const char *name);

0 commit comments

Comments
 (0)