diff --git a/nan.h b/nan.h index 9e7c59e4..0ea9909b 100644 --- a/nan.h +++ b/nan.h @@ -2509,6 +2509,53 @@ inline void SetPrototypeMethod( //=== Accessors and Such ======================================================= +NAN_DEPRECATED inline void SetAccessor( + v8::Local tpl + , v8::Local name + , GetterCallback getter + , SetterCallback setter + , v8::Local data + , v8::AccessControl settings + , v8::PropertyAttribute attribute + , imp::Sig signature) { + HandleScope scope; + + imp::NativeGetter getter_ = + imp::GetterCallbackWrapper; + imp::NativeSetter setter_ = + setter ? imp::SetterCallbackWrapper : 0; + + v8::Local otpl = New(); + otpl->SetInternalFieldCount(imp::kAccessorFieldCount); + v8::Local obj = NewInstance(otpl).ToLocalChecked(); + + obj->SetInternalField( + imp::kGetterIndex + , New(reinterpret_cast(getter))); + + if (setter != 0) { + obj->SetInternalField( + imp::kSetterIndex + , New(reinterpret_cast(setter))); + } + + if (!data.IsEmpty()) { + obj->SetInternalField(imp::kDataIndex, data); + } + + tpl->SetAccessor( + name + , getter_ + , setter_ + , obj + , settings + , attribute +#if (NODE_MODULE_VERSION < NODE_16_0_MODULE_VERSION) + , signature +#endif + ); +} + inline void SetAccessor( v8::Local tpl , v8::Local name @@ -2516,8 +2563,7 @@ inline void SetAccessor( , SetterCallback setter = 0 , v8::Local data = v8::Local() , v8::AccessControl settings = v8::DEFAULT - , v8::PropertyAttribute attribute = v8::None - , imp::Sig signature = imp::Sig()) { + , v8::PropertyAttribute attribute = v8::None) { HandleScope scope; imp::NativeGetter getter_ = @@ -2550,9 +2596,6 @@ inline void SetAccessor( , obj , settings , attribute -#if (NODE_MODULE_VERSION < NODE_18_0_MODULE_VERSION) - , signature -#endif ); } diff --git a/nan_callbacks.h b/nan_callbacks.h index 53ede846..93eb2ab4 100644 --- a/nan_callbacks.h +++ b/nan_callbacks.h @@ -52,7 +52,11 @@ typedef void(*IndexQueryCallback)( const PropertyCallbackInfo&); namespace imp { +#if (NODE_MODULE_VERSION < NODE_16_0_MODULE_VERSION) typedef v8::Local Sig; +#else +typedef v8::Local Sig; +#endif static const int kDataIndex = 0;