@@ -30,6 +30,39 @@ static napi_value Get(napi_env env, napi_callback_info info) {
30
30
return output ;
31
31
}
32
32
33
+ static napi_value GetNamed (napi_env env , napi_callback_info info ) {
34
+ size_t argc = 2 ;
35
+ napi_value args [2 ];
36
+ char key [256 ] = "" ;
37
+ size_t key_length ;
38
+ NAPI_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
39
+
40
+ NAPI_ASSERT (env , argc >= 2 , "Wrong number of arguments" );
41
+
42
+ napi_valuetype valuetype0 ;
43
+ NAPI_CALL (env , napi_typeof (env , args [0 ], & valuetype0 ));
44
+
45
+ NAPI_ASSERT (env , valuetype0 == napi_object ,
46
+ "Wrong type of arguments. Expects an object as first argument." );
47
+
48
+ napi_valuetype valuetype1 ;
49
+ NAPI_CALL (env , napi_typeof (env , args [1 ], & valuetype1 ));
50
+
51
+ NAPI_ASSERT (env , valuetype1 == napi_string ,
52
+ "Wrong type of arguments. Expects a string as second." );
53
+
54
+ napi_value object = args [0 ];
55
+ NAPI_CALL (env ,
56
+ napi_get_value_string_utf8 (env , args [1 ], key , 255 , & key_length ));
57
+ key [255 ] = 0 ;
58
+ NAPI_ASSERT (env , key_length <= 255 ,
59
+ "Cannot accommodate keys longer than 255 bytes" );
60
+ napi_value output ;
61
+ NAPI_CALL (env , napi_get_named_property (env , object , key , & output ));
62
+
63
+ return output ;
64
+ }
65
+
33
66
static napi_value Set (napi_env env , napi_callback_info info ) {
34
67
size_t argc = 3 ;
35
68
napi_value args [3 ];
@@ -57,6 +90,41 @@ static napi_value Set(napi_env env, napi_callback_info info) {
57
90
return valuetrue ;
58
91
}
59
92
93
+ static napi_value SetNamed (napi_env env , napi_callback_info info ) {
94
+ size_t argc = 3 ;
95
+ napi_value args [3 ];
96
+ char key [256 ] = "" ;
97
+ size_t key_length ;
98
+ NAPI_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
99
+
100
+ NAPI_ASSERT (env , argc >= 3 , "Wrong number of arguments" );
101
+
102
+ napi_valuetype valuetype0 ;
103
+ NAPI_CALL (env , napi_typeof (env , args [0 ], & valuetype0 ));
104
+
105
+ NAPI_ASSERT (env , valuetype0 == napi_object ,
106
+ "Wrong type of arguments. Expects an object as first argument." );
107
+
108
+ napi_valuetype valuetype1 ;
109
+ NAPI_CALL (env , napi_typeof (env , args [1 ], & valuetype1 ));
110
+
111
+ NAPI_ASSERT (env , valuetype1 == napi_string ,
112
+ "Wrong type of arguments. Expects a string as second." );
113
+
114
+ NAPI_CALL (env ,
115
+ napi_get_value_string_utf8 (env , args [1 ], key , 255 , & key_length ));
116
+ key [255 ] = 0 ;
117
+ NAPI_ASSERT (env , key_length <= 255 ,
118
+ "Cannot accommodate keys longer than 255 bytes" );
119
+
120
+ NAPI_CALL (env , napi_set_named_property (env , args [0 ], key , args [2 ]));
121
+
122
+ napi_value valuetrue ;
123
+ NAPI_CALL (env , napi_get_boolean (env , true, & valuetrue ));
124
+
125
+ return valuetrue ;
126
+ }
127
+
60
128
static napi_value Has (napi_env env , napi_callback_info info ) {
61
129
size_t argc = 2 ;
62
130
napi_value args [2 ];
@@ -85,6 +153,42 @@ static napi_value Has(napi_env env, napi_callback_info info) {
85
153
return ret ;
86
154
}
87
155
156
+ static napi_value HasNamed (napi_env env , napi_callback_info info ) {
157
+ size_t argc = 2 ;
158
+ napi_value args [2 ];
159
+ char key [256 ] = "" ;
160
+ size_t key_length ;
161
+ NAPI_CALL (env , napi_get_cb_info (env , info , & argc , args , NULL , NULL ));
162
+
163
+ NAPI_ASSERT (env , argc >= 2 , "Wrong number of arguments" );
164
+
165
+ napi_valuetype valuetype0 ;
166
+ NAPI_CALL (env , napi_typeof (env , args [0 ], & valuetype0 ));
167
+
168
+ NAPI_ASSERT (env , valuetype0 == napi_object ,
169
+ "Wrong type of arguments. Expects an object as first argument." );
170
+
171
+ napi_valuetype valuetype1 ;
172
+ NAPI_CALL (env , napi_typeof (env , args [1 ], & valuetype1 ));
173
+
174
+ NAPI_ASSERT (env , valuetype1 == napi_string || valuetype1 == napi_symbol ,
175
+ "Wrong type of arguments. Expects a string as second." );
176
+
177
+ NAPI_CALL (env ,
178
+ napi_get_value_string_utf8 (env , args [1 ], key , 255 , & key_length ));
179
+ key [255 ] = 0 ;
180
+ NAPI_ASSERT (env , key_length <= 255 ,
181
+ "Cannot accommodate keys longer than 255 bytes" );
182
+
183
+ bool has_property ;
184
+ NAPI_CALL (env , napi_has_named_property (env , args [0 ], key , & has_property ));
185
+
186
+ napi_value ret ;
187
+ NAPI_CALL (env , napi_get_boolean (env , has_property , & ret ));
188
+
189
+ return ret ;
190
+ }
191
+
88
192
static napi_value HasOwn (napi_env env , napi_callback_info info ) {
89
193
size_t argc = 2 ;
90
194
napi_value args [2 ];
@@ -220,8 +324,11 @@ EXTERN_C_START
220
324
napi_value Init (napi_env env , napi_value exports ) {
221
325
napi_property_descriptor descriptors [] = {
222
326
DECLARE_NAPI_PROPERTY ("Get" , Get ),
327
+ DECLARE_NAPI_PROPERTY ("GetNamed" , GetNamed ),
223
328
DECLARE_NAPI_PROPERTY ("Set" , Set ),
329
+ DECLARE_NAPI_PROPERTY ("SetNamed" , SetNamed ),
224
330
DECLARE_NAPI_PROPERTY ("Has" , Has ),
331
+ DECLARE_NAPI_PROPERTY ("HasNamed" , HasNamed ),
225
332
DECLARE_NAPI_PROPERTY ("HasOwn" , HasOwn ),
226
333
DECLARE_NAPI_PROPERTY ("Delete" , Delete ),
227
334
DECLARE_NAPI_PROPERTY ("New" , New ),
0 commit comments