@@ -31,7 +31,7 @@ struct uv_loop_s; // Forward declaration.
31
31
typedef napi_value (NAPI_CDECL * napi_addon_register_func )(napi_env env ,
32
32
napi_value exports );
33
33
34
- typedef napi_value (NAPI_CDECL * napi_addon_api_version_func )( );
34
+ typedef int32_t (NAPI_CDECL * napi_addon_api_version_func )();
35
35
36
36
typedef struct napi_module {
37
37
int nm_version ;
@@ -88,19 +88,20 @@ typedef struct napi_module {
88
88
apiversionfunc, \
89
89
{0}, \
90
90
}; \
91
- NAPI_C_CTOR(_register_##modname) { \
92
- napi_module_register(&_module); \
93
- } \
91
+ NAPI_C_CTOR(_register_##modname) { napi_module_register(&_module); } \
94
92
EXTERN_C_END
95
93
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)
99
96
97
+ #define NAPI_MODULE_INITIALIZER_BASE napi_register_module_v
100
98
#define NAPI_MODULE_API_VERSION_BASE napi_module_api_version_v
101
99
100
+ #define NAPI_MODULE_INITIALIZER \
101
+ NAPI_CONCAT(NAPI_MODULE_INITIALIZER_BASE, NAPI_MODULE_VERSION)
102
+
102
103
#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)
104
105
105
106
#define NAPI_MODULE_X (modname , regfunc , priv , flags ) \
106
107
EXTERN_C_START \
@@ -110,11 +111,21 @@ typedef struct napi_module {
110
111
EXTERN_C_END \
111
112
NAPI_MODULE_XV(modname, regfunc, NAPI_MODULE_API_VERSION, priv, flags)
112
113
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
+
113
124
#ifdef __wasm32__
114
125
#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)
116
127
#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)
118
129
#define NAPI_MODULE (modname , regfunc ) \
119
130
EXTERN_C_START \
120
131
NAPI_MODULE_EXPORT napi_value NAPI_WASM_INITIALIZER(napi_env env, \
@@ -127,21 +138,11 @@ typedef struct napi_module {
127
138
EXTERN_C_END
128
139
#else
129
140
#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
+ }
137
144
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
145
146
146
147
EXTERN_C_START
147
148
0 commit comments