| 1151 | |
| 1152 | template <typename T> |
| 1153 | class External : public TypeTaggable { |
| 1154 | public: |
| 1155 | static External New(napi_env env, T* data); |
| 1156 | |
| 1157 | // Finalizer must implement `void operator()(Env env, T* data)`. |
| 1158 | template <typename Finalizer> |
| 1159 | static External New(napi_env env, T* data, Finalizer finalizeCallback); |
| 1160 | // Finalizer must implement `void operator()(Env env, T* data, Hint* hint)`. |
| 1161 | template <typename Finalizer, typename Hint> |
| 1162 | static External New(napi_env env, |
| 1163 | T* data, |
| 1164 | Finalizer finalizeCallback, |
| 1165 | Hint* finalizeHint); |
| 1166 | |
| 1167 | static void CheckCast(napi_env env, napi_value value); |
| 1168 | |
| 1169 | External(); |
| 1170 | External(napi_env env, napi_value value); |
| 1171 | |
| 1172 | T* Data() const; |
| 1173 | }; |
| 1174 | |
| 1175 | class Array : public Object { |
| 1176 | public: |