source: imaps-frontend/node_modules/node-addon-api/napi-inl.deprecated.h

main
Last change on this file was 0c6b92a, checked in by stefan toskovski <stefantoska84@…>, 5 weeks ago

Pred finalna verzija

  • Property mode set to 100644
File size: 6.2 KB
RevLine 
[0c6b92a]1#ifndef SRC_NAPI_INL_DEPRECATED_H_
2#define SRC_NAPI_INL_DEPRECATED_H_
3
4////////////////////////////////////////////////////////////////////////////////
5// PropertyDescriptor class
6////////////////////////////////////////////////////////////////////////////////
7
8template <typename Getter>
9inline PropertyDescriptor PropertyDescriptor::Accessor(
10 const char* utf8name,
11 Getter getter,
12 napi_property_attributes attributes,
13 void* /*data*/) {
14 using CbData = details::CallbackData<Getter, Napi::Value>;
15 // TODO: Delete when the function is destroyed
16 auto callbackData = new CbData({getter, nullptr});
17
18 return PropertyDescriptor({utf8name,
19 nullptr,
20 nullptr,
21 CbData::Wrapper,
22 nullptr,
23 nullptr,
24 attributes,
25 callbackData});
26}
27
28template <typename Getter>
29inline PropertyDescriptor PropertyDescriptor::Accessor(
30 const std::string& utf8name,
31 Getter getter,
32 napi_property_attributes attributes,
33 void* data) {
34 return Accessor(utf8name.c_str(), getter, attributes, data);
35}
36
37template <typename Getter>
38inline PropertyDescriptor PropertyDescriptor::Accessor(
39 napi_value name,
40 Getter getter,
41 napi_property_attributes attributes,
42 void* /*data*/) {
43 using CbData = details::CallbackData<Getter, Napi::Value>;
44 // TODO: Delete when the function is destroyed
45 auto callbackData = new CbData({getter, nullptr});
46
47 return PropertyDescriptor({nullptr,
48 name,
49 nullptr,
50 CbData::Wrapper,
51 nullptr,
52 nullptr,
53 attributes,
54 callbackData});
55}
56
57template <typename Getter>
58inline PropertyDescriptor PropertyDescriptor::Accessor(
59 Name name, Getter getter, napi_property_attributes attributes, void* data) {
60 napi_value nameValue = name;
61 return PropertyDescriptor::Accessor(nameValue, getter, attributes, data);
62}
63
64template <typename Getter, typename Setter>
65inline PropertyDescriptor PropertyDescriptor::Accessor(
66 const char* utf8name,
67 Getter getter,
68 Setter setter,
69 napi_property_attributes attributes,
70 void* /*data*/) {
71 using CbData = details::AccessorCallbackData<Getter, Setter>;
72 // TODO: Delete when the function is destroyed
73 auto callbackData = new CbData({getter, setter, nullptr});
74
75 return PropertyDescriptor({utf8name,
76 nullptr,
77 nullptr,
78 CbData::GetterWrapper,
79 CbData::SetterWrapper,
80 nullptr,
81 attributes,
82 callbackData});
83}
84
85template <typename Getter, typename Setter>
86inline PropertyDescriptor PropertyDescriptor::Accessor(
87 const std::string& utf8name,
88 Getter getter,
89 Setter setter,
90 napi_property_attributes attributes,
91 void* data) {
92 return Accessor(utf8name.c_str(), getter, setter, attributes, data);
93}
94
95template <typename Getter, typename Setter>
96inline PropertyDescriptor PropertyDescriptor::Accessor(
97 napi_value name,
98 Getter getter,
99 Setter setter,
100 napi_property_attributes attributes,
101 void* /*data*/) {
102 using CbData = details::AccessorCallbackData<Getter, Setter>;
103 // TODO: Delete when the function is destroyed
104 auto callbackData = new CbData({getter, setter, nullptr});
105
106 return PropertyDescriptor({nullptr,
107 name,
108 nullptr,
109 CbData::GetterWrapper,
110 CbData::SetterWrapper,
111 nullptr,
112 attributes,
113 callbackData});
114}
115
116template <typename Getter, typename Setter>
117inline PropertyDescriptor PropertyDescriptor::Accessor(
118 Name name,
119 Getter getter,
120 Setter setter,
121 napi_property_attributes attributes,
122 void* data) {
123 napi_value nameValue = name;
124 return PropertyDescriptor::Accessor(
125 nameValue, getter, setter, attributes, data);
126}
127
128template <typename Callable>
129inline PropertyDescriptor PropertyDescriptor::Function(
130 const char* utf8name,
131 Callable cb,
132 napi_property_attributes attributes,
133 void* /*data*/) {
134 using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
135 using CbData = details::CallbackData<Callable, ReturnType>;
136 // TODO: Delete when the function is destroyed
137 auto callbackData = new CbData({cb, nullptr});
138
139 return PropertyDescriptor({utf8name,
140 nullptr,
141 CbData::Wrapper,
142 nullptr,
143 nullptr,
144 nullptr,
145 attributes,
146 callbackData});
147}
148
149template <typename Callable>
150inline PropertyDescriptor PropertyDescriptor::Function(
151 const std::string& utf8name,
152 Callable cb,
153 napi_property_attributes attributes,
154 void* data) {
155 return Function(utf8name.c_str(), cb, attributes, data);
156}
157
158template <typename Callable>
159inline PropertyDescriptor PropertyDescriptor::Function(
160 napi_value name,
161 Callable cb,
162 napi_property_attributes attributes,
163 void* /*data*/) {
164 using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
165 using CbData = details::CallbackData<Callable, ReturnType>;
166 // TODO: Delete when the function is destroyed
167 auto callbackData = new CbData({cb, nullptr});
168
169 return PropertyDescriptor({nullptr,
170 name,
171 CbData::Wrapper,
172 nullptr,
173 nullptr,
174 nullptr,
175 attributes,
176 callbackData});
177}
178
179template <typename Callable>
180inline PropertyDescriptor PropertyDescriptor::Function(
181 Name name, Callable cb, napi_property_attributes attributes, void* data) {
182 napi_value nameValue = name;
183 return PropertyDescriptor::Function(nameValue, cb, attributes, data);
184}
185
186#endif // !SRC_NAPI_INL_DEPRECATED_H_
Note: See TracBrowser for help on using the repository browser.