diff --git a/doc/basic_env.md b/doc/basic_env.md index bc8255478..e8af172bb 100644 --- a/doc/basic_env.md +++ b/doc/basic_env.md @@ -117,9 +117,8 @@ its `Remove()` method. ### PostFinalizer ```cpp -using FinalizerWithoutData = void (*)(Env); - -inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const; +template +inline void PostFinalizer(FinalizerType finalizeCallback) const; ``` - `[in] finalizeCallback`: The function to queue for execution outside of the GC @@ -129,34 +128,28 @@ inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const; ### PostFinalizer ```cpp -template -using Finalizer = void (*)(Napi::Env, T*); - -template -inline void PostFinalizer(Finalizer finalizeCallback, DataType* data) const; +template +inline void PostFinalizer(FinalizerType finalizeCallback, T* data) const; ``` - `[in] finalizeCallback`: The function to queue for execution outside of the GC - finalization, implementing `operator()(Napi::Env, DataType*)`. See [Finalization]() + finalization, implementing `operator()(Napi::Env, T*)`. See [Finalization]() for more details. -- `[in] data`: The data value passed to the `finalizeCallback` function. +- `[in] data`: The data to associate with the object. ### PostFinalizer ```cpp -template -using FinalizerWithHint = void (*)(Napi::Env, DataType*, HintType*); - -template -inline void PostFinalizer(FinalizerWithHint finalizeCallback, - DataType* data, +template +inline void PostFinalizer(FinalizerType finalizeCallback, + T* data, Hint* finalizeHint) const; ``` - `[in] finalizeCallback`: The function to queue for execution outside of the GC - finalization, implementing `operator()(Napi::Env, DataType*, HintType*)`. See + finalization, implementing `operator()(Napi::Env, T*, Hint*)`. See [Finalization]() for more details. -- `[in] data`: The data value passed to the `finalizeCallback` function. +- `[in] data`: The data to associate with the object. - `[in] finalizeHint`: The hint value passed to the `finalizeCallback` function. ### AddCleanupHook diff --git a/napi-inl.h b/napi-inl.h index 5af32b390..a66f2cbcf 100644 --- a/napi-inl.h +++ b/napi-inl.h @@ -6789,16 +6789,16 @@ bool Env::CleanupHook::IsEmpty() const { #endif // NAPI_VERSION > 2 #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER -inline void BasicEnv::PostFinalizer( - FinalizerWithoutData finalizeCallback) const { +template +inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback) const { using T = void*; - details::FinalizeData* finalizeData = - new details::FinalizeData( + details::FinalizeData* finalizeData = + new details::FinalizeData( {std::move(finalizeCallback), nullptr}); napi_status status = node_api_post_finalizer( _env, - details::FinalizeData::WrapperGCWithoutData, + details::FinalizeData::WrapperGCWithoutData, static_cast(nullptr), finalizeData); if (status != napi_ok) { @@ -6808,16 +6808,16 @@ inline void BasicEnv::PostFinalizer( } } -template -inline void BasicEnv::PostFinalizer(Finalizer finalizeCallback, - DataType* data) const { - details::FinalizeData>* finalizeData = - new details::FinalizeData>( +template +inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback, + T* data) const { + details::FinalizeData* finalizeData = + new details::FinalizeData( {std::move(finalizeCallback), nullptr}); napi_status status = node_api_post_finalizer( _env, - details::FinalizeData>::WrapperGC, + details::FinalizeData::WrapperGC, data, finalizeData); if (status != napi_ok) { @@ -6827,21 +6827,16 @@ inline void BasicEnv::PostFinalizer(Finalizer finalizeCallback, } } -template -inline void BasicEnv::PostFinalizer( - FinalizerWithHint finalizeCallback, - DataType* data, - HintType* finalizeHint) const { - details::FinalizeData, - HintType>* finalizeData = new details:: - FinalizeData, HintType>( +template +inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback, + T* data, + Hint* finalizeHint) const { + details::FinalizeData* finalizeData = + new details::FinalizeData( {std::move(finalizeCallback), finalizeHint}); napi_status status = node_api_post_finalizer( _env, - details::FinalizeData, - HintType>::WrapperGCWithHint, + details::FinalizeData::WrapperGCWithHint, data, finalizeData); if (status != napi_ok) { diff --git a/napi.h b/napi.h index d808e4b32..d7c897a3d 100644 --- a/napi.h +++ b/napi.h @@ -395,18 +395,16 @@ class BasicEnv { #endif // NAPI_VERSION > 8 #ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER - using FinalizerWithoutData = void (*)(Env); - inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const; + template + inline void PostFinalizer(FinalizerType finalizeCallback) const; - template - inline void PostFinalizer(Finalizer finalizeCallback, - DataType* data) const; + template + inline void PostFinalizer(FinalizerType finalizeCallback, T* data) const; - template - inline void PostFinalizer( - FinalizerWithHint finalizeCallback, - DataType* data, - HintType* finalizeHint) const; + template + inline void PostFinalizer(FinalizerType finalizeCallback, + T* data, + Hint* finalizeHint) const; #endif // NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER friend class Env;