@@ -190,6 +190,11 @@ napi_value TemplatedInstanceVoidCallback(napi_env env, napi_callback_info info)
190
190
191
191
template <typename T, typename Finalizer, typename Hint = void >
192
192
struct FinalizeData {
193
+ #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
194
+ template <typename F = Finalizer,
195
+ typename =
196
+ std::enable_if_t <std::is_invocable_v<F, node_api_nogc_env, T*>>>
197
+ #endif
193
198
static inline void Wrapper (NODE_ADDON_API_NOGC_ENV env,
194
199
void * data,
195
200
void * finalizeHint) NAPI_NOEXCEPT {
@@ -200,6 +205,26 @@ struct FinalizeData {
200
205
});
201
206
}
202
207
208
+ #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
209
+ template <typename F = Finalizer,
210
+ typename = std::enable_if_t <
211
+ !std::is_invocable_v<F, node_api_nogc_env, T*>>,
212
+ typename = void >
213
+ static inline void Wrapper (NODE_ADDON_API_NOGC_ENV env,
214
+ void * data,
215
+ void * finalizeHint) NAPI_NOEXCEPT {
216
+ napi_status status =
217
+ node_api_post_finalizer (env, WrapperGC, data, finalizeHint);
218
+ NAPI_FATAL_IF_FAILED (
219
+ status, " PostFinalizerWrapper" , " node_api_post_finalizer failed" );
220
+ }
221
+ #endif
222
+
223
+ #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
224
+ template <typename F = Finalizer,
225
+ typename = std::enable_if_t <
226
+ std::is_invocable_v<F, node_api_nogc_env, T*, Hint*>>>
227
+ #endif
203
228
static inline void WrapperWithHint (NODE_ADDON_API_NOGC_ENV env,
204
229
void * data,
205
230
void * finalizeHint) NAPI_NOEXCEPT {
@@ -210,6 +235,21 @@ struct FinalizeData {
210
235
});
211
236
}
212
237
238
+ #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
239
+ template <typename F = Finalizer,
240
+ typename = std::enable_if_t <
241
+ !std::is_invocable_v<F, node_api_nogc_env, T*, Hint*>>,
242
+ typename = void >
243
+ static inline void WrapperWithHint (NODE_ADDON_API_NOGC_ENV env,
244
+ void * data,
245
+ void * finalizeHint) NAPI_NOEXCEPT {
246
+ napi_status status =
247
+ node_api_post_finalizer (env, WrapperGCWithHint, data, finalizeHint);
248
+ NAPI_FATAL_IF_FAILED (
249
+ status, " PostFinalizerWrapper" , " node_api_post_finalizer failed" );
250
+ }
251
+ #endif
252
+
213
253
static inline void WrapperGCWithoutData (napi_env env,
214
254
void * /* data*/ ,
215
255
void * finalizeHint) NAPI_NOEXCEPT {
0 commit comments