|
4 | 4 | * SPDX-License-Identifier: MIT |
5 | 5 | */ |
6 | 6 |
|
7 | | -#include "arrayUtils.js" |
8 | | - |
9 | 7 | addToLibrary({ |
10 | 8 | // TextDecoder constructor defaults to UTF-8 |
11 | 9 | #if TEXTDECODER == 2 |
@@ -256,8 +254,28 @@ addToLibrary({ |
256 | 254 |
|
257 | 255 | $intArrayFromString__docs: '/** @type {function(string, boolean=, number=)} */', |
258 | 256 | $intArrayFromString__deps: ['$lengthBytesUTF8', '$stringToUTF8Array'], |
259 | | - $intArrayFromString: intArrayFromString, |
260 | | - $intArrayToString: intArrayToString, |
| 257 | + $intArrayFromString: (stringy, dontAddNull, length) => { |
| 258 | + var len = length > 0 ? length : lengthBytesUTF8(stringy)+1; |
| 259 | + var u8array = new Array(len); |
| 260 | + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); |
| 261 | + if (dontAddNull) u8array.length = numBytesWritten; |
| 262 | + return u8array; |
| 263 | + }, |
| 264 | +
|
| 265 | + $intArrayToString: (array) => { |
| 266 | + var ret = []; |
| 267 | + for (var i = 0; i < array.length; i++) { |
| 268 | + var chr = array[i]; |
| 269 | + if (chr > 0xFF) { |
| 270 | + #if ASSERTIONS |
| 271 | + assert(false, `Character code ${chr} (${String.fromCharCode(chr)}) at offset ${i} not in 0x00-0xFF.`); |
| 272 | + #endif |
| 273 | + chr &= 0xFF; |
| 274 | + } |
| 275 | + ret.push(String.fromCharCode(chr)); |
| 276 | + } |
| 277 | + return ret.join(''); |
| 278 | + }, |
261 | 279 |
|
262 | 280 | // Given a pointer 'ptr' to a null-terminated ASCII-encoded string in the |
263 | 281 | // emscripten HEAP, returns a copy of that string as a Javascript String |
|
0 commit comments