Skip to content

Commit ec9f521

Browse files
committed
attempt fix compilation issues #2
1 parent 1ad6eda commit ec9f521

File tree

3 files changed

+37
-51
lines changed

3 files changed

+37
-51
lines changed

doc/basic_env.md

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,8 @@ its `Remove()` method.
117117
### PostFinalizer
118118
119119
```cpp
120-
using FinalizerWithoutData = void (*)(Env);
121-
122-
inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const;
120+
template <typename FinalizerType>
121+
inline void PostFinalizer(FinalizerType finalizeCallback) const;
123122
```
124123

125124
- `[in] finalizeCallback`: The function to queue for execution outside of the GC
@@ -129,34 +128,28 @@ inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const;
129128
### PostFinalizer
130129

131130
```cpp
132-
template <typename T>
133-
using Finalizer = void (*)(Napi::Env, T*);
134-
135-
template <typename DataType>
136-
inline void PostFinalizer(Finalizer<DataType> finalizeCallback, DataType* data) const;
131+
template <typename FinalizerType, typename T>
132+
inline void PostFinalizer(FinalizerType finalizeCallback, T* data) const;
137133
```
138134
139135
- `[in] finalizeCallback`: The function to queue for execution outside of the GC
140-
finalization, implementing `operator()(Napi::Env, DataType*)`. See [Finalization]()
136+
finalization, implementing `operator()(Napi::Env, T*)`. See [Finalization]()
141137
for more details.
142-
- `[in] data`: The data value passed to the `finalizeCallback` function.
138+
- `[in] data`: The data to associate with the object.
143139
144140
### PostFinalizer
145141
146142
```cpp
147-
template <typename DataType, typename HintType>
148-
using FinalizerWithHint = void (*)(Napi::Env, DataType*, HintType*);
149-
150-
template <typename DataType, typename HintType>
151-
inline void PostFinalizer(FinalizerWithHint<DataType, HintType> finalizeCallback,
152-
DataType* data,
143+
template <typename FinalizerType, typename T, typename Hint>
144+
inline void PostFinalizer(FinalizerType finalizeCallback,
145+
T* data,
153146
Hint* finalizeHint) const;
154147
```
155148

156149
- `[in] finalizeCallback`: The function to queue for execution outside of the GC
157-
finalization, implementing `operator()(Napi::Env, DataType*, HintType*)`. See
150+
finalization, implementing `operator()(Napi::Env, T*, Hint*)`. See
158151
[Finalization]() for more details.
159-
- `[in] data`: The data value passed to the `finalizeCallback` function.
152+
- `[in] data`: The data to associate with the object.
160153
- `[in] finalizeHint`: The hint value passed to the `finalizeCallback` function.
161154

162155
### AddCleanupHook

napi-inl.h

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6789,16 +6789,16 @@ bool Env::CleanupHook<Hook, Arg>::IsEmpty() const {
67896789
#endif // NAPI_VERSION > 2
67906790

67916791
#ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
6792-
inline void BasicEnv::PostFinalizer(
6793-
FinalizerWithoutData finalizeCallback) const {
6792+
template <typename FinalizerType>
6793+
inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback) const {
67946794
using T = void*;
6795-
details::FinalizeData<T, FinalizerWithoutData>* finalizeData =
6796-
new details::FinalizeData<T, FinalizerWithoutData>(
6795+
details::FinalizeData<T, FinalizerType>* finalizeData =
6796+
new details::FinalizeData<T, FinalizerType>(
67976797
{std::move(finalizeCallback), nullptr});
67986798

67996799
napi_status status = node_api_post_finalizer(
68006800
_env,
6801-
details::FinalizeData<T, FinalizerWithoutData>::WrapperGCWithoutData,
6801+
details::FinalizeData<T, FinalizerType>::WrapperGCWithoutData,
68026802
static_cast<void*>(nullptr),
68036803
finalizeData);
68046804
if (status != napi_ok) {
@@ -6808,16 +6808,16 @@ inline void BasicEnv::PostFinalizer(
68086808
}
68096809
}
68106810

6811-
template <typename DataType>
6812-
inline void BasicEnv::PostFinalizer(Finalizer<DataType> finalizeCallback,
6813-
DataType* data) const {
6814-
details::FinalizeData<DataType, Finalizer<DataType>>* finalizeData =
6815-
new details::FinalizeData<DataType, Finalizer<DataType>>(
6811+
template <typename FinalizerType, typename T>
6812+
inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback,
6813+
T* data) const {
6814+
details::FinalizeData<T, FinalizerType>* finalizeData =
6815+
new details::FinalizeData<T, FinalizerType>(
68166816
{std::move(finalizeCallback), nullptr});
68176817

68186818
napi_status status = node_api_post_finalizer(
68196819
_env,
6820-
details::FinalizeData<DataType, Finalizer<DataType>>::WrapperGC,
6820+
details::FinalizeData<T, FinalizerType>::WrapperGC,
68216821
data,
68226822
finalizeData);
68236823
if (status != napi_ok) {
@@ -6827,21 +6827,16 @@ inline void BasicEnv::PostFinalizer(Finalizer<DataType> finalizeCallback,
68276827
}
68286828
}
68296829

6830-
template <typename DataType, typename HintType>
6831-
inline void BasicEnv::PostFinalizer(
6832-
FinalizerWithHint<DataType, HintType> finalizeCallback,
6833-
DataType* data,
6834-
HintType* finalizeHint) const {
6835-
details::FinalizeData<DataType,
6836-
FinalizerWithHint<DataType, HintType>,
6837-
HintType>* finalizeData = new details::
6838-
FinalizeData<DataType, FinalizerWithHint<DataType, HintType>, HintType>(
6830+
template <typename FinalizerType, typename T, typename Hint>
6831+
inline void BasicEnv::PostFinalizer(FinalizerType finalizeCallback,
6832+
T* data,
6833+
Hint* finalizeHint) const {
6834+
details::FinalizeData<T, FinalizerType, Hint>* finalizeData =
6835+
new details::FinalizeData<T, FinalizerType, Hint>(
68396836
{std::move(finalizeCallback), finalizeHint});
68406837
napi_status status = node_api_post_finalizer(
68416838
_env,
6842-
details::FinalizeData<DataType,
6843-
FinalizerWithHint<DataType, HintType>,
6844-
HintType>::WrapperGCWithHint,
6839+
details::FinalizeData<T, FinalizerType, Hint>::WrapperGCWithHint,
68456840
data,
68466841
finalizeData);
68476842
if (status != napi_ok) {

napi.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -395,18 +395,16 @@ class BasicEnv {
395395
#endif // NAPI_VERSION > 8
396396

397397
#ifdef NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
398-
using FinalizerWithoutData = void (*)(Env);
399-
inline void PostFinalizer(FinalizerWithoutData finalizeCallback) const;
398+
template <typename FinalizerType>
399+
inline void PostFinalizer(FinalizerType finalizeCallback) const;
400400

401-
template <typename DataType>
402-
inline void PostFinalizer(Finalizer<DataType> finalizeCallback,
403-
DataType* data) const;
401+
template <typename FinalizerType, typename T>
402+
inline void PostFinalizer(FinalizerType finalizeCallback, T* data) const;
404403

405-
template <typename DataType, typename HintType>
406-
inline void PostFinalizer(
407-
FinalizerWithHint<DataType, HintType> finalizeCallback,
408-
DataType* data,
409-
HintType* finalizeHint) const;
404+
template <typename FinalizerType, typename T, typename Hint>
405+
inline void PostFinalizer(FinalizerType finalizeCallback,
406+
T* data,
407+
Hint* finalizeHint) const;
410408
#endif // NODE_API_EXPERIMENTAL_HAS_POST_FINALIZER
411409

412410
friend class Env;

0 commit comments

Comments
 (0)