@@ -31,7 +31,7 @@ struct uv_loop_s; // Forward declaration.
3131typedef napi_value (NAPI_CDECL * napi_addon_register_func )(napi_env env ,
3232 napi_value exports );
3333
34- typedef napi_value (NAPI_CDECL * napi_addon_api_version_func )( );
34+ typedef int32_t (NAPI_CDECL * napi_addon_api_version_func )();
3535
3636typedef struct napi_module {
3737 int nm_version ;
@@ -88,19 +88,20 @@ typedef struct napi_module {
8888 apiversionfunc, \
8989 {0}, \
9090 }; \
91- NAPI_C_CTOR(_register_##modname) { \
92- napi_module_register(&_module); \
93- } \
91+ NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
9492 EXTERN_C_END
9593
96- #define NAPI_MODULE_INITIALIZER_X (base , version ) \
97- NAPI_MODULE_INITIALIZER_X_HELPER(base, version)
98- #define NAPI_MODULE_INITIALIZER_X_HELPER (base , version ) base##version
94+ #define NAPI_CONCAT_HELPER (text1 , text2 ) text1##text2
95+ #define NAPI_CONCAT (text1 , text2 ) NAPI_CONCAT_HELPER(text1, text2)
9996
97+ #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
10098#define NAPI_MODULE_API_VERSION_BASE napi_module_api_version_v
10199
100+ #define NAPI_MODULE_INITIALIZER \
101+ NAPI_CONCAT(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
102+
102103#define NAPI_MODULE_API_VERSION \
103- NAPI_MODULE_INITIALIZER_X (NAPI_MODULE_API_VERSION_BASE, NAPI_MODULE_VERSION)
104+ NAPI_CONCAT (NAPI_MODULE_API_VERSION_BASE, NAPI_MODULE_VERSION)
104105
105106#define NAPI_MODULE_X (modname , regfunc , priv , flags ) \
106107 EXTERN_C_START \
@@ -110,11 +111,21 @@ typedef struct napi_module {
110111 EXTERN_C_END \
111112 NAPI_MODULE_XV(modname, regfunc, NAPI_MODULE_API_VERSION, priv, flags)
112113
114+ #define NAPI_MODULE_INIT () \
115+ EXTERN_C_START \
116+ NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
117+ napi_value exports); \
118+ NAPI_MODULE_EXPORT int32_t NAPI_MODULE_API_VERSION() { \
119+ return NAPI_VERSION; \
120+ } \
121+ EXTERN_C_END \
122+ napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
123+
113124#ifdef __wasm32__
114125#define NAPI_WASM_INITIALIZER \
115- NAPI_MODULE_INITIALIZER_X (napi_register_wasm_v, NAPI_MODULE_VERSION)
126+ NAPI_CONCAT (napi_register_wasm_v, NAPI_MODULE_VERSION)
116127#define NAPI_WASM_API_VERSION \
117- NAPI_MODULE_INITIALIZER_X (napi_wasm_api_version_v, NAPI_MODULE_VERSION)
128+ NAPI_CONCAT (napi_wasm_api_version_v, NAPI_MODULE_VERSION)
118129#define NAPI_MODULE (modname , regfunc ) \
119130 EXTERN_C_START \
120131 NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \
@@ -127,21 +138,11 @@ typedef struct napi_module {
127138 EXTERN_C_END
128139#else
129140#define NAPI_MODULE (modname , regfunc ) \
130- NAPI_MODULE_X(modname, regfunc, NULL, 0) // NOLINT (readability/null_usage)
131- #endif
132-
133- #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
134-
135- #define NAPI_MODULE_INITIALIZER \
136- NAPI_MODULE_INITIALIZER_X(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
141+ NAPI_MODULE_INIT() { \
142+ return regfunc(env, exports); \
143+ }
137144
138- #define NAPI_MODULE_INIT () \
139- EXTERN_C_START \
140- NAPI_MODULE_EXPORT napi_value NAPI_MODULE_INITIALIZER(napi_env env, \
141- napi_value exports); \
142- EXTERN_C_END \
143- NAPI_MODULE(NODE_GYP_MODULE_NAME, NAPI_MODULE_INITIALIZER) \
144- napi_value NAPI_MODULE_INITIALIZER(napi_env env, napi_value exports)
145+ #endif
145146
146147EXTERN_C_START
147148
0 commit comments