bare-buffer 3.0.0-0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CMakeLists.txt +3 -3
- package/binding.c +355 -77
- package/index.d.ts +1 -1
- package/package.json +1 -1
- package/prebuilds/android-arm/bare-buffer.bare +0 -0
- package/prebuilds/android-arm64/bare-buffer.bare +0 -0
- package/prebuilds/android-ia32/bare-buffer.bare +0 -0
- package/prebuilds/android-x64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-arm64/bare-buffer.bare +0 -0
- package/prebuilds/darwin-x64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64/bare-buffer.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-buffer.bare +0 -0
- package/prebuilds/linux-arm64/bare-buffer.bare +0 -0
- package/prebuilds/linux-x64/bare-buffer.bare +0 -0
- package/prebuilds/win32-arm64/bare-buffer.bare +0 -0
- package/prebuilds/win32-x64/bare-buffer.bare +0 -0
package/CMakeLists.txt
CHANGED
|
@@ -5,9 +5,9 @@ find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
|
|
|
5
5
|
|
|
6
6
|
project(bare_buffer C)
|
|
7
7
|
|
|
8
|
-
fetch_package("github:holepunchto/libutf#
|
|
9
|
-
fetch_package("github:holepunchto/libbase64#
|
|
10
|
-
fetch_package("github:holepunchto/libhex#
|
|
8
|
+
fetch_package("github:holepunchto/libutf#9509b28")
|
|
9
|
+
fetch_package("github:holepunchto/libbase64#cded073")
|
|
10
|
+
fetch_package("github:holepunchto/libhex#1dfad95")
|
|
11
11
|
|
|
12
12
|
add_bare_module(bare_buffer)
|
|
13
13
|
|
package/binding.c
CHANGED
|
@@ -3,13 +3,30 @@
|
|
|
3
3
|
#include <base64.h>
|
|
4
4
|
#include <hex.h>
|
|
5
5
|
#include <js.h>
|
|
6
|
-
#include <js/ffi.h>
|
|
7
6
|
#include <stdlib.h>
|
|
8
7
|
#include <string.h>
|
|
9
8
|
#include <utf.h>
|
|
10
9
|
|
|
11
10
|
static js_type_tag_t bare_buffer__tag = {0xfea3e944b70b0812, 0xe53bb5c343c040b6};
|
|
12
11
|
|
|
12
|
+
static inline int
|
|
13
|
+
bare_buffer__memcmp (void *a, size_t a_len, void *b, size_t b_len) {
|
|
14
|
+
int r = memcmp(a, b, a_len < b_len ? a_len : b_len);
|
|
15
|
+
|
|
16
|
+
if (r == 0) {
|
|
17
|
+
if (a_len < b_len) return -1;
|
|
18
|
+
if (a_len > b_len) return 1;
|
|
19
|
+
return 0;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return r < 0 ? -1 : 1;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static void
|
|
26
|
+
bare_buffer__on_free_string (js_env_t *env, void *data, void *finalize_hint) {
|
|
27
|
+
free(data);
|
|
28
|
+
}
|
|
29
|
+
|
|
13
30
|
static js_value_t *
|
|
14
31
|
bare_buffer_alloc (js_env_t *env, js_callback_info_t *info) {
|
|
15
32
|
int err;
|
|
@@ -56,6 +73,21 @@ bare_buffer_alloc_unsafe (js_env_t *env, js_callback_info_t *info) {
|
|
|
56
73
|
return result;
|
|
57
74
|
}
|
|
58
75
|
|
|
76
|
+
static uint32_t
|
|
77
|
+
bare_buffer_typed_byte_length_utf8 (js_value_t *receiver, js_value_t *str, js_typed_callback_info_t *info) {
|
|
78
|
+
int err;
|
|
79
|
+
|
|
80
|
+
js_env_t *env;
|
|
81
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
82
|
+
assert(err == 0);
|
|
83
|
+
|
|
84
|
+
size_t str_len;
|
|
85
|
+
err = js_get_value_string_utf8(env, str, NULL, 0, &str_len);
|
|
86
|
+
assert(err == 0);
|
|
87
|
+
|
|
88
|
+
return (uint32_t) str_len;
|
|
89
|
+
}
|
|
90
|
+
|
|
59
91
|
static js_value_t *
|
|
60
92
|
bare_buffer_byte_length_utf8 (js_env_t *env, js_callback_info_t *info) {
|
|
61
93
|
int err;
|
|
@@ -91,18 +123,43 @@ bare_buffer_to_string_utf8 (js_env_t *env, js_callback_info_t *info) {
|
|
|
91
123
|
|
|
92
124
|
assert(argc == 1);
|
|
93
125
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
err = js_get_typedarray_info(env, argv[0], NULL, (void **) &
|
|
126
|
+
utf8_t *buf;
|
|
127
|
+
size_t buf_len;
|
|
128
|
+
err = js_get_typedarray_info(env, argv[0], NULL, (void **) &buf, &buf_len, NULL, NULL);
|
|
97
129
|
assert(err == 0);
|
|
98
130
|
|
|
99
131
|
js_value_t *result;
|
|
100
|
-
err = js_create_string_utf8(env,
|
|
132
|
+
err = js_create_string_utf8(env, buf, buf_len, &result);
|
|
101
133
|
assert(err == 0);
|
|
102
134
|
|
|
103
135
|
return result;
|
|
104
136
|
}
|
|
105
137
|
|
|
138
|
+
static uint32_t
|
|
139
|
+
bare_buffer_typed_write_utf8 (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
|
|
140
|
+
int err;
|
|
141
|
+
|
|
142
|
+
js_env_t *env;
|
|
143
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
144
|
+
assert(err == 0);
|
|
145
|
+
|
|
146
|
+
void *buf;
|
|
147
|
+
size_t buf_len;
|
|
148
|
+
|
|
149
|
+
js_typedarray_view_t *buf_view;
|
|
150
|
+
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
151
|
+
assert(err == 0);
|
|
152
|
+
|
|
153
|
+
size_t str_len;
|
|
154
|
+
err = js_get_value_string_utf8(env, string, buf, buf_len, &str_len);
|
|
155
|
+
assert(err == 0);
|
|
156
|
+
|
|
157
|
+
err = js_release_typedarray_view(env, buf_view);
|
|
158
|
+
assert(err == 0);
|
|
159
|
+
|
|
160
|
+
return (uint32_t) str_len;
|
|
161
|
+
}
|
|
162
|
+
|
|
106
163
|
static js_value_t *
|
|
107
164
|
bare_buffer_write_utf8 (js_env_t *env, js_callback_info_t *info) {
|
|
108
165
|
int err;
|
|
@@ -115,8 +172,8 @@ bare_buffer_write_utf8 (js_env_t *env, js_callback_info_t *info) {
|
|
|
115
172
|
|
|
116
173
|
assert(argc == 2);
|
|
117
174
|
|
|
118
|
-
size_t buf_len;
|
|
119
175
|
void *buf;
|
|
176
|
+
size_t buf_len;
|
|
120
177
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
121
178
|
assert(err == 0);
|
|
122
179
|
|
|
@@ -143,20 +200,49 @@ bare_buffer_to_string_utf16le (js_env_t *env, js_callback_info_t *info) {
|
|
|
143
200
|
|
|
144
201
|
assert(argc == 1);
|
|
145
202
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
err = js_get_typedarray_info(env, argv[0], NULL, (void **) &
|
|
203
|
+
utf16_t *buf;
|
|
204
|
+
size_t buf_len;
|
|
205
|
+
err = js_get_typedarray_info(env, argv[0], NULL, (void **) &buf, &buf_len, NULL, NULL);
|
|
149
206
|
assert(err == 0);
|
|
150
207
|
|
|
151
|
-
|
|
208
|
+
buf_len /= sizeof(utf16_t);
|
|
152
209
|
|
|
153
210
|
js_value_t *result;
|
|
154
|
-
err = js_create_string_utf16le(env,
|
|
211
|
+
err = js_create_string_utf16le(env, buf, buf_len, &result);
|
|
155
212
|
assert(err == 0);
|
|
156
213
|
|
|
157
214
|
return result;
|
|
158
215
|
}
|
|
159
216
|
|
|
217
|
+
static uint32_t
|
|
218
|
+
bare_buffer_typed_write_utf16le (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
|
|
219
|
+
int err;
|
|
220
|
+
|
|
221
|
+
js_env_t *env;
|
|
222
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
223
|
+
assert(err == 0);
|
|
224
|
+
|
|
225
|
+
void *buf;
|
|
226
|
+
size_t buf_len;
|
|
227
|
+
|
|
228
|
+
js_typedarray_view_t *buf_view;
|
|
229
|
+
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
230
|
+
assert(err == 0);
|
|
231
|
+
|
|
232
|
+
buf_len /= sizeof(utf16_t);
|
|
233
|
+
|
|
234
|
+
size_t str_len;
|
|
235
|
+
err = js_get_value_string_utf16le(env, string, buf, buf_len, &str_len);
|
|
236
|
+
assert(err == 0);
|
|
237
|
+
|
|
238
|
+
str_len *= sizeof(utf16_t);
|
|
239
|
+
|
|
240
|
+
err = js_release_typedarray_view(env, buf_view);
|
|
241
|
+
assert(err == 0);
|
|
242
|
+
|
|
243
|
+
return (uint32_t) str_len;
|
|
244
|
+
}
|
|
245
|
+
|
|
160
246
|
static js_value_t *
|
|
161
247
|
bare_buffer_write_utf16le (js_env_t *env, js_callback_info_t *info) {
|
|
162
248
|
int err;
|
|
@@ -169,8 +255,8 @@ bare_buffer_write_utf16le (js_env_t *env, js_callback_info_t *info) {
|
|
|
169
255
|
|
|
170
256
|
assert(argc == 2);
|
|
171
257
|
|
|
172
|
-
size_t buf_len;
|
|
173
258
|
void *buf;
|
|
259
|
+
size_t buf_len;
|
|
174
260
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
175
261
|
assert(err == 0);
|
|
176
262
|
|
|
@@ -201,28 +287,66 @@ bare_buffer_to_string_base64 (js_env_t *env, js_callback_info_t *info) {
|
|
|
201
287
|
|
|
202
288
|
assert(argc == 1);
|
|
203
289
|
|
|
204
|
-
size_t buf_len;
|
|
205
290
|
void *buf;
|
|
291
|
+
size_t buf_len;
|
|
206
292
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
207
293
|
assert(err == 0);
|
|
208
294
|
|
|
209
295
|
size_t str_len;
|
|
210
|
-
err =
|
|
296
|
+
err = base64_encode_utf8(buf, buf_len, NULL, &str_len);
|
|
211
297
|
assert(err == 0);
|
|
212
298
|
|
|
213
299
|
utf8_t *str = malloc(str_len);
|
|
214
|
-
err =
|
|
300
|
+
err = base64_encode_utf8(buf, buf_len, str, &str_len);
|
|
215
301
|
assert(err == 0);
|
|
216
302
|
|
|
217
303
|
js_value_t *result;
|
|
218
|
-
err =
|
|
304
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_free_string, NULL, &result, NULL);
|
|
219
305
|
assert(err == 0);
|
|
220
306
|
|
|
221
|
-
free(str);
|
|
222
|
-
|
|
223
307
|
return result;
|
|
224
308
|
}
|
|
225
309
|
|
|
310
|
+
static uint32_t
|
|
311
|
+
bare_buffer_typed_write_base64 (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
|
|
312
|
+
int err;
|
|
313
|
+
|
|
314
|
+
js_env_t *env;
|
|
315
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
316
|
+
assert(err == 0);
|
|
317
|
+
|
|
318
|
+
void *buf;
|
|
319
|
+
size_t buf_len;
|
|
320
|
+
|
|
321
|
+
js_typedarray_view_t *buf_view;
|
|
322
|
+
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
323
|
+
assert(err == 0);
|
|
324
|
+
|
|
325
|
+
js_string_encoding_t encoding;
|
|
326
|
+
const void *str;
|
|
327
|
+
size_t str_len;
|
|
328
|
+
|
|
329
|
+
js_string_view_t *str_view;
|
|
330
|
+
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
331
|
+
assert(err == 0);
|
|
332
|
+
|
|
333
|
+
if (encoding == js_utf16le) {
|
|
334
|
+
err = base64_decode_utf16le(str, str_len, buf, &buf_len);
|
|
335
|
+
assert(err == 0);
|
|
336
|
+
} else {
|
|
337
|
+
err = base64_decode_utf8(str, str_len, buf, &buf_len);
|
|
338
|
+
assert(err == 0);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
err = js_release_string_view(env, str_view);
|
|
342
|
+
assert(err == 0);
|
|
343
|
+
|
|
344
|
+
err = js_release_typedarray_view(env, buf_view);
|
|
345
|
+
assert(err == 0);
|
|
346
|
+
|
|
347
|
+
return buf_len;
|
|
348
|
+
}
|
|
349
|
+
|
|
226
350
|
static js_value_t *
|
|
227
351
|
bare_buffer_write_base64 (js_env_t *env, js_callback_info_t *info) {
|
|
228
352
|
int err;
|
|
@@ -235,23 +359,29 @@ bare_buffer_write_base64 (js_env_t *env, js_callback_info_t *info) {
|
|
|
235
359
|
|
|
236
360
|
assert(argc == 2);
|
|
237
361
|
|
|
238
|
-
size_t buf_len;
|
|
239
362
|
void *buf;
|
|
363
|
+
size_t buf_len;
|
|
240
364
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
241
365
|
assert(err == 0);
|
|
242
366
|
|
|
367
|
+
js_string_encoding_t encoding;
|
|
368
|
+
const void *str;
|
|
243
369
|
size_t str_len;
|
|
244
|
-
err = js_get_value_string_utf8(env, argv[1], NULL, 0, &str_len);
|
|
245
|
-
assert(err == 0);
|
|
246
370
|
|
|
247
|
-
|
|
248
|
-
err =
|
|
371
|
+
js_string_view_t *str_view;
|
|
372
|
+
err = js_get_string_view(env, argv[1], &encoding, &str, &str_len, &str_view);
|
|
249
373
|
assert(err == 0);
|
|
250
374
|
|
|
251
|
-
|
|
252
|
-
|
|
375
|
+
if (encoding == js_utf16le) {
|
|
376
|
+
err = base64_decode_utf16le(str, str_len, buf, &buf_len);
|
|
377
|
+
assert(err == 0);
|
|
378
|
+
} else {
|
|
379
|
+
err = base64_decode_utf8(str, str_len, buf, &buf_len);
|
|
380
|
+
assert(err == 0);
|
|
381
|
+
}
|
|
253
382
|
|
|
254
|
-
|
|
383
|
+
err = js_release_string_view(env, str_view);
|
|
384
|
+
assert(err == 0);
|
|
255
385
|
|
|
256
386
|
js_value_t *result;
|
|
257
387
|
err = js_create_uint32(env, (uint32_t) buf_len, &result);
|
|
@@ -272,28 +402,66 @@ bare_buffer_to_string_hex (js_env_t *env, js_callback_info_t *info) {
|
|
|
272
402
|
|
|
273
403
|
assert(argc == 1);
|
|
274
404
|
|
|
275
|
-
size_t buf_len;
|
|
276
405
|
void *buf;
|
|
406
|
+
size_t buf_len;
|
|
277
407
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
278
408
|
assert(err == 0);
|
|
279
409
|
|
|
280
410
|
size_t str_len;
|
|
281
|
-
err =
|
|
411
|
+
err = hex_encode_utf8(buf, buf_len, NULL, &str_len);
|
|
282
412
|
assert(err == 0);
|
|
283
413
|
|
|
284
414
|
utf8_t *str = malloc(str_len);
|
|
285
|
-
err =
|
|
415
|
+
err = hex_encode_utf8(buf, buf_len, str, &str_len);
|
|
286
416
|
assert(err == 0);
|
|
287
417
|
|
|
288
418
|
js_value_t *result;
|
|
289
|
-
err =
|
|
419
|
+
err = js_create_external_string_latin1(env, str, str_len, bare_buffer__on_free_string, NULL, &result, NULL);
|
|
290
420
|
assert(err == 0);
|
|
291
421
|
|
|
292
|
-
free(str);
|
|
293
|
-
|
|
294
422
|
return result;
|
|
295
423
|
}
|
|
296
424
|
|
|
425
|
+
static uint32_t
|
|
426
|
+
bare_buffer_typed_write_hex (js_value_t *receiver, js_value_t *typedarray, js_value_t *string, js_typed_callback_info_t *info) {
|
|
427
|
+
int err;
|
|
428
|
+
|
|
429
|
+
js_env_t *env;
|
|
430
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
431
|
+
assert(err == 0);
|
|
432
|
+
|
|
433
|
+
void *buf;
|
|
434
|
+
size_t buf_len;
|
|
435
|
+
|
|
436
|
+
js_typedarray_view_t *buf_view;
|
|
437
|
+
err = js_get_typedarray_view(env, typedarray, NULL, &buf, &buf_len, &buf_view);
|
|
438
|
+
assert(err == 0);
|
|
439
|
+
|
|
440
|
+
js_string_encoding_t encoding;
|
|
441
|
+
const void *str;
|
|
442
|
+
size_t str_len;
|
|
443
|
+
|
|
444
|
+
js_string_view_t *str_view;
|
|
445
|
+
err = js_get_string_view(env, string, &encoding, &str, &str_len, &str_view);
|
|
446
|
+
assert(err == 0);
|
|
447
|
+
|
|
448
|
+
if (encoding == js_utf16le) {
|
|
449
|
+
err = hex_decode_utf16le(str, str_len, buf, &buf_len);
|
|
450
|
+
assert(err == 0);
|
|
451
|
+
} else {
|
|
452
|
+
err = hex_decode_utf8(str, str_len, buf, &buf_len);
|
|
453
|
+
assert(err == 0);
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
err = js_release_string_view(env, str_view);
|
|
457
|
+
assert(err == 0);
|
|
458
|
+
|
|
459
|
+
err = js_release_typedarray_view(env, buf_view);
|
|
460
|
+
assert(err == 0);
|
|
461
|
+
|
|
462
|
+
return buf_len;
|
|
463
|
+
}
|
|
464
|
+
|
|
297
465
|
static js_value_t *
|
|
298
466
|
bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
|
|
299
467
|
int err;
|
|
@@ -306,23 +474,29 @@ bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
|
|
|
306
474
|
|
|
307
475
|
assert(argc == 2);
|
|
308
476
|
|
|
309
|
-
size_t buf_len;
|
|
310
477
|
void *buf;
|
|
478
|
+
size_t buf_len;
|
|
311
479
|
err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
|
|
312
480
|
assert(err == 0);
|
|
313
481
|
|
|
482
|
+
js_string_encoding_t encoding;
|
|
483
|
+
const void *str;
|
|
314
484
|
size_t str_len;
|
|
315
|
-
err = js_get_value_string_utf8(env, argv[1], NULL, 0, &str_len);
|
|
316
|
-
assert(err == 0);
|
|
317
485
|
|
|
318
|
-
|
|
319
|
-
err =
|
|
486
|
+
js_string_view_t *str_view;
|
|
487
|
+
err = js_get_string_view(env, argv[1], &encoding, &str, &str_len, &str_view);
|
|
320
488
|
assert(err == 0);
|
|
321
489
|
|
|
322
|
-
|
|
323
|
-
|
|
490
|
+
if (encoding == js_utf16le) {
|
|
491
|
+
err = hex_decode_utf16le(str, str_len, buf, &buf_len);
|
|
492
|
+
assert(err == 0);
|
|
493
|
+
} else {
|
|
494
|
+
err = hex_decode_utf8(str, str_len, buf, &buf_len);
|
|
495
|
+
assert(err == 0);
|
|
496
|
+
}
|
|
324
497
|
|
|
325
|
-
|
|
498
|
+
err = js_release_string_view(env, str_view);
|
|
499
|
+
assert(err == 0);
|
|
326
500
|
|
|
327
501
|
js_value_t *result;
|
|
328
502
|
err = js_create_uint32(env, (uint32_t) buf_len, &result);
|
|
@@ -331,17 +505,25 @@ bare_buffer_write_hex (js_env_t *env, js_callback_info_t *info) {
|
|
|
331
505
|
return result;
|
|
332
506
|
}
|
|
333
507
|
|
|
334
|
-
static
|
|
335
|
-
|
|
336
|
-
int
|
|
508
|
+
static int32_t
|
|
509
|
+
bare_buffer_typed_compare (js_value_t *receiver, js_value_t *source, js_value_t *target, js_typed_callback_info_t *info) {
|
|
510
|
+
int err;
|
|
337
511
|
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
return 0;
|
|
342
|
-
}
|
|
512
|
+
js_env_t *env;
|
|
513
|
+
err = js_get_typed_callback_info(info, &env, NULL);
|
|
514
|
+
assert(err == 0);
|
|
343
515
|
|
|
344
|
-
|
|
516
|
+
void *a;
|
|
517
|
+
size_t a_len;
|
|
518
|
+
err = js_get_typedarray_info(env, source, NULL, &a, &a_len, NULL, NULL);
|
|
519
|
+
assert(err == 0);
|
|
520
|
+
|
|
521
|
+
void *b;
|
|
522
|
+
size_t b_len;
|
|
523
|
+
err = js_get_typedarray_info(env, target, NULL, &b, &b_len, NULL, NULL);
|
|
524
|
+
assert(err == 0);
|
|
525
|
+
|
|
526
|
+
return bare_buffer__memcmp(a, a_len, b, b_len);
|
|
345
527
|
}
|
|
346
528
|
|
|
347
529
|
static js_value_t *
|
|
@@ -356,18 +538,18 @@ bare_buffer_compare (js_env_t *env, js_callback_info_t *info) {
|
|
|
356
538
|
|
|
357
539
|
assert(argc == 2);
|
|
358
540
|
|
|
359
|
-
size_t a_len;
|
|
360
541
|
void *a;
|
|
542
|
+
size_t a_len;
|
|
361
543
|
err = js_get_typedarray_info(env, argv[0], NULL, &a, &a_len, NULL, NULL);
|
|
362
544
|
assert(err == 0);
|
|
363
545
|
|
|
364
|
-
size_t b_len;
|
|
365
546
|
void *b;
|
|
547
|
+
size_t b_len;
|
|
366
548
|
err = js_get_typedarray_info(env, argv[1], NULL, &b, &b_len, NULL, NULL);
|
|
367
549
|
assert(err == 0);
|
|
368
550
|
|
|
369
551
|
js_value_t *result;
|
|
370
|
-
err = js_create_int32(env,
|
|
552
|
+
err = js_create_int32(env, bare_buffer__memcmp(a, a_len, b, b_len), &result);
|
|
371
553
|
assert(err == 0);
|
|
372
554
|
|
|
373
555
|
return result;
|
|
@@ -403,12 +585,12 @@ bare_buffer_is_tagged (js_env_t *env, js_callback_info_t *info) {
|
|
|
403
585
|
|
|
404
586
|
assert(argc == 1);
|
|
405
587
|
|
|
406
|
-
bool
|
|
407
|
-
err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &
|
|
588
|
+
bool is_tagged;
|
|
589
|
+
err = js_check_type_tag(env, argv[0], &bare_buffer__tag, &is_tagged);
|
|
408
590
|
assert(err == 0);
|
|
409
591
|
|
|
410
592
|
js_value_t *result;
|
|
411
|
-
err = js_get_boolean(env,
|
|
593
|
+
err = js_get_boolean(env, is_tagged, &result);
|
|
412
594
|
assert(err == 0);
|
|
413
595
|
|
|
414
596
|
return result;
|
|
@@ -418,34 +600,130 @@ static js_value_t *
|
|
|
418
600
|
bare_buffer_exports (js_env_t *env, js_value_t *exports) {
|
|
419
601
|
int err;
|
|
420
602
|
|
|
421
|
-
#define V(name,
|
|
603
|
+
#define V(name, untyped, signature, typed) \
|
|
422
604
|
{ \
|
|
423
605
|
js_value_t *val; \
|
|
424
|
-
|
|
425
|
-
|
|
606
|
+
if (signature) { \
|
|
607
|
+
err = js_create_typed_function(env, name, -1, untyped, signature, typed, NULL, &val); \
|
|
608
|
+
assert(err == 0); \
|
|
609
|
+
} else { \
|
|
610
|
+
err = js_create_function(env, name, -1, untyped, NULL, &val); \
|
|
611
|
+
assert(err == 0); \
|
|
612
|
+
} \
|
|
426
613
|
err = js_set_named_property(env, exports, name, val); \
|
|
427
614
|
assert(err == 0); \
|
|
428
615
|
}
|
|
429
616
|
|
|
430
|
-
V("alloc", bare_buffer_alloc);
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
V(
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
617
|
+
V("alloc", bare_buffer_alloc, NULL, NULL);
|
|
618
|
+
|
|
619
|
+
V("allocUnsafe", bare_buffer_alloc_unsafe, NULL, NULL);
|
|
620
|
+
|
|
621
|
+
V(
|
|
622
|
+
"byteLengthUTF8",
|
|
623
|
+
bare_buffer_byte_length_utf8,
|
|
624
|
+
&((js_callback_signature_t) {
|
|
625
|
+
.version = 0,
|
|
626
|
+
.result = js_uint32,
|
|
627
|
+
.args_len = 2,
|
|
628
|
+
.args = (int[]) {
|
|
629
|
+
js_object,
|
|
630
|
+
js_string,
|
|
631
|
+
}
|
|
632
|
+
}),
|
|
633
|
+
bare_buffer_typed_byte_length_utf8
|
|
634
|
+
);
|
|
635
|
+
|
|
636
|
+
V("toStringUTF8", bare_buffer_to_string_utf8, NULL, NULL);
|
|
637
|
+
|
|
638
|
+
V(
|
|
639
|
+
"writeUTF8",
|
|
640
|
+
bare_buffer_write_utf8,
|
|
641
|
+
&((js_callback_signature_t) {
|
|
642
|
+
.version = 0,
|
|
643
|
+
.result = js_uint32,
|
|
644
|
+
.args_len = 3,
|
|
645
|
+
.args = (int[]) {
|
|
646
|
+
js_object,
|
|
647
|
+
js_object,
|
|
648
|
+
js_string,
|
|
649
|
+
}
|
|
650
|
+
}),
|
|
651
|
+
bare_buffer_typed_write_utf8
|
|
652
|
+
);
|
|
653
|
+
|
|
654
|
+
V("toStringUTF16LE", bare_buffer_to_string_utf16le, NULL, NULL);
|
|
655
|
+
|
|
656
|
+
V(
|
|
657
|
+
"writeUTF16LE",
|
|
658
|
+
bare_buffer_write_utf16le,
|
|
659
|
+
&((js_callback_signature_t) {
|
|
660
|
+
.version = 0,
|
|
661
|
+
.result = js_uint32,
|
|
662
|
+
.args_len = 3,
|
|
663
|
+
.args = (int[]) {
|
|
664
|
+
js_object,
|
|
665
|
+
js_object,
|
|
666
|
+
js_string,
|
|
667
|
+
}
|
|
668
|
+
}),
|
|
669
|
+
bare_buffer_typed_write_utf16le
|
|
670
|
+
);
|
|
671
|
+
|
|
672
|
+
V("toStringBase64", bare_buffer_to_string_base64, NULL, NULL);
|
|
673
|
+
|
|
674
|
+
V(
|
|
675
|
+
"writeBase64",
|
|
676
|
+
bare_buffer_write_base64,
|
|
677
|
+
&((js_callback_signature_t) {
|
|
678
|
+
.version = 0,
|
|
679
|
+
.result = js_uint32,
|
|
680
|
+
.args_len = 3,
|
|
681
|
+
.args = (int[]) {
|
|
682
|
+
js_object,
|
|
683
|
+
js_object,
|
|
684
|
+
js_string,
|
|
685
|
+
}
|
|
686
|
+
}),
|
|
687
|
+
bare_buffer_typed_write_base64
|
|
688
|
+
);
|
|
689
|
+
|
|
690
|
+
V("toStringHex", bare_buffer_to_string_hex, NULL, NULL);
|
|
691
|
+
|
|
692
|
+
V(
|
|
693
|
+
"writeHex",
|
|
694
|
+
bare_buffer_write_hex,
|
|
695
|
+
&((js_callback_signature_t) {
|
|
696
|
+
.version = 0,
|
|
697
|
+
.result = js_uint32,
|
|
698
|
+
.args_len = 3,
|
|
699
|
+
.args = (int[]) {
|
|
700
|
+
js_object,
|
|
701
|
+
js_object,
|
|
702
|
+
js_string,
|
|
703
|
+
}
|
|
704
|
+
}),
|
|
705
|
+
bare_buffer_typed_write_hex
|
|
706
|
+
);
|
|
707
|
+
|
|
708
|
+
V(
|
|
709
|
+
"compare",
|
|
710
|
+
bare_buffer_compare,
|
|
711
|
+
&((js_callback_signature_t) {
|
|
712
|
+
.version = 0,
|
|
713
|
+
.result = js_int32,
|
|
714
|
+
.args_len = 3,
|
|
715
|
+
.args = (int[]) {
|
|
716
|
+
js_object,
|
|
717
|
+
js_object,
|
|
718
|
+
js_object,
|
|
719
|
+
}
|
|
720
|
+
}),
|
|
721
|
+
bare_buffer_typed_compare
|
|
722
|
+
);
|
|
723
|
+
|
|
724
|
+
V("tag", bare_buffer_tag, NULL, NULL);
|
|
725
|
+
|
|
726
|
+
V("isTagged", bare_buffer_is_tagged, NULL, NULL);
|
|
449
727
|
#undef V
|
|
450
728
|
|
|
451
729
|
return exports;
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|