bare-buffer 1.2.3 → 1.2.4

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/binding.c CHANGED
@@ -120,6 +120,64 @@ bare_buffer_write_utf8 (js_env_t *env, js_callback_info_t *info) {
120
120
  return result;
121
121
  }
122
122
 
123
+ static js_value_t *
124
+ bare_buffer_to_string_utf16le (js_env_t *env, js_callback_info_t *info) {
125
+ int err;
126
+
127
+ size_t argc = 1;
128
+ js_value_t *argv[1];
129
+
130
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
131
+ assert(err == 0);
132
+
133
+ assert(argc == 1);
134
+
135
+ size_t str_len;
136
+ utf16_t *str;
137
+ err = js_get_typedarray_info(env, argv[0], NULL, (void **) &str, &str_len, NULL, NULL);
138
+ assert(err == 0);
139
+
140
+ str_len /= sizeof(utf16_t);
141
+
142
+ js_value_t *result;
143
+ err = js_create_string_utf16le(env, str, str_len, &result);
144
+ assert(err == 0);
145
+
146
+ return result;
147
+ }
148
+
149
+ static js_value_t *
150
+ bare_buffer_write_utf16le (js_env_t *env, js_callback_info_t *info) {
151
+ int err;
152
+
153
+ size_t argc = 2;
154
+ js_value_t *argv[2];
155
+
156
+ err = js_get_callback_info(env, info, &argc, argv, NULL, NULL);
157
+ assert(err == 0);
158
+
159
+ assert(argc == 2);
160
+
161
+ size_t buf_len;
162
+ void *buf;
163
+ err = js_get_typedarray_info(env, argv[0], NULL, &buf, &buf_len, NULL, NULL);
164
+ assert(err == 0);
165
+
166
+ buf_len /= sizeof(utf16_t);
167
+
168
+ size_t str_len;
169
+ err = js_get_value_string_utf16le(env, argv[1], buf, buf_len, &str_len);
170
+ assert(err == 0);
171
+
172
+ str_len *= sizeof(utf16_t);
173
+
174
+ js_value_t *result;
175
+ err = js_create_uint32(env, (uint32_t) str_len, &result);
176
+ assert(err == 0);
177
+
178
+ return result;
179
+ }
180
+
123
181
  static js_value_t *
124
182
  bare_buffer_to_string_base64 (js_env_t *env, js_callback_info_t *info) {
125
183
  int err;
@@ -357,6 +415,16 @@ init (js_env_t *env, js_value_t *exports) {
357
415
  js_create_function(env, "writeUTF8", -1, bare_buffer_write_utf8, NULL, &val);
358
416
  js_set_named_property(env, exports, "writeUTF8", val);
359
417
  }
418
+ {
419
+ js_value_t *val;
420
+ js_create_function(env, "toStringUTF16LE", -1, bare_buffer_to_string_utf16le, NULL, &val);
421
+ js_set_named_property(env, exports, "toStringUTF16LE", val);
422
+ }
423
+ {
424
+ js_value_t *val;
425
+ js_create_function(env, "writeUTF16LE", -1, bare_buffer_write_utf16le, NULL, &val);
426
+ js_set_named_property(env, exports, "writeUTF16LE", val);
427
+ }
360
428
  {
361
429
  js_value_t *val;
362
430
  js_create_function(env, "toStringBase64", -1, bare_buffer_to_string_base64, NULL, &val);
package/lib/utf16le.js CHANGED
@@ -1,34 +1,13 @@
1
+ const binding = require('../binding')
2
+
1
3
  exports.byteLength = function byteLength (string) {
2
4
  return string.length * 2
3
5
  }
4
6
 
5
7
  exports.toString = function toString (buffer) {
6
- const len = buffer.byteLength
7
-
8
- let result = ''
9
-
10
- for (let i = 0; i < len - 1; i += 2) {
11
- result += String.fromCharCode(buffer[i] + (buffer[i + 1] * 256))
12
- }
13
-
14
- return result
8
+ return binding.toStringUTF16LE(buffer)
15
9
  }
16
10
 
17
11
  exports.write = function write (buffer, string) {
18
- const len = buffer.byteLength
19
-
20
- let units = len
21
-
22
- for (let i = 0; i < string.length; ++i) {
23
- if ((units -= 2) < 0) break
24
-
25
- const c = string.charCodeAt(i)
26
- const hi = c >> 8
27
- const lo = c % 256
28
-
29
- buffer[i * 2] = lo
30
- buffer[i * 2 + 1] = hi
31
- }
32
-
33
- return len
12
+ return binding.writeUTF16LE(buffer, string)
34
13
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bare-buffer",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "Native buffers for JavaScript",
5
5
  "main": "index.js",
6
6
  "files": [