123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- #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*/) {
- typedef details::CallbackData<Getter, Napi::Value> CbData;
- // 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*/) {
- typedef details::CallbackData<Getter, Napi::Value> CbData;
- // 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*/) {
- typedef details::AccessorCallbackData<Getter, Setter> CbData;
- // 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*/) {
- typedef details::AccessorCallbackData<Getter, Setter> CbData;
- // 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*/) {
- typedef decltype(cb(CallbackInfo(nullptr, nullptr))) ReturnType;
- typedef details::CallbackData<Callable, ReturnType> CbData;
- // 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*/) {
- typedef decltype(cb(CallbackInfo(nullptr, nullptr))) ReturnType;
- typedef details::CallbackData<Callable, ReturnType> CbData;
- // 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_
|