|
- #ifndef SRC_NAPI_INL_DEPRECATED_H_
- #define SRC_NAPI_INL_DEPRECATED_H_
-
- ////////////////////////////////////////////////////////////////////////////////
- // PropertyDescriptor class
- ////////////////////////////////////////////////////////////////////////////////
-
- template <typename Getter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- const char* utf8name,
- Getter getter,
- napi_property_attributes attributes,
- void* /*data*/) {
- using CbData = details::CallbackData<Getter, Napi::Value>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({getter, nullptr});
-
- return PropertyDescriptor({utf8name,
- nullptr,
- nullptr,
- CbData::Wrapper,
- nullptr,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Getter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- const std::string& utf8name,
- Getter getter,
- napi_property_attributes attributes,
- void* data) {
- return Accessor(utf8name.c_str(), getter, attributes, data);
- }
-
- template <typename Getter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- napi_value name,
- Getter getter,
- napi_property_attributes attributes,
- void* /*data*/) {
- using CbData = details::CallbackData<Getter, Napi::Value>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({getter, nullptr});
-
- return PropertyDescriptor({nullptr,
- name,
- nullptr,
- CbData::Wrapper,
- nullptr,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Getter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- Name name, Getter getter, napi_property_attributes attributes, void* data) {
- napi_value nameValue = name;
- return PropertyDescriptor::Accessor(nameValue, getter, attributes, data);
- }
-
- template <typename Getter, typename Setter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- const char* utf8name,
- Getter getter,
- Setter setter,
- napi_property_attributes attributes,
- void* /*data*/) {
- using CbData = details::AccessorCallbackData<Getter, Setter>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({getter, setter, nullptr});
-
- return PropertyDescriptor({utf8name,
- nullptr,
- nullptr,
- CbData::GetterWrapper,
- CbData::SetterWrapper,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Getter, typename Setter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- const std::string& utf8name,
- Getter getter,
- Setter setter,
- napi_property_attributes attributes,
- void* data) {
- return Accessor(utf8name.c_str(), getter, setter, attributes, data);
- }
-
- template <typename Getter, typename Setter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- napi_value name,
- Getter getter,
- Setter setter,
- napi_property_attributes attributes,
- void* /*data*/) {
- using CbData = details::AccessorCallbackData<Getter, Setter>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({getter, setter, nullptr});
-
- return PropertyDescriptor({nullptr,
- name,
- nullptr,
- CbData::GetterWrapper,
- CbData::SetterWrapper,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Getter, typename Setter>
- inline PropertyDescriptor PropertyDescriptor::Accessor(
- Name name,
- Getter getter,
- Setter setter,
- napi_property_attributes attributes,
- void* data) {
- napi_value nameValue = name;
- return PropertyDescriptor::Accessor(
- nameValue, getter, setter, attributes, data);
- }
-
- template <typename Callable>
- inline PropertyDescriptor PropertyDescriptor::Function(
- const char* utf8name,
- Callable cb,
- napi_property_attributes attributes,
- void* /*data*/) {
- using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
- using CbData = details::CallbackData<Callable, ReturnType>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({cb, nullptr});
-
- return PropertyDescriptor({utf8name,
- nullptr,
- CbData::Wrapper,
- nullptr,
- nullptr,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Callable>
- inline PropertyDescriptor PropertyDescriptor::Function(
- const std::string& utf8name,
- Callable cb,
- napi_property_attributes attributes,
- void* data) {
- return Function(utf8name.c_str(), cb, attributes, data);
- }
-
- template <typename Callable>
- inline PropertyDescriptor PropertyDescriptor::Function(
- napi_value name,
- Callable cb,
- napi_property_attributes attributes,
- void* /*data*/) {
- using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
- using CbData = details::CallbackData<Callable, ReturnType>;
- // TODO: Delete when the function is destroyed
- auto callbackData = new CbData({cb, nullptr});
-
- return PropertyDescriptor({nullptr,
- name,
- CbData::Wrapper,
- nullptr,
- nullptr,
- nullptr,
- attributes,
- callbackData});
- }
-
- template <typename Callable>
- inline PropertyDescriptor PropertyDescriptor::Function(
- Name name, Callable cb, napi_property_attributes attributes, void* data) {
- napi_value nameValue = name;
- return PropertyDescriptor::Function(nameValue, cb, attributes, data);
- }
-
- #endif // !SRC_NAPI_INL_DEPRECATED_H_
|