| 147 | |
| 148 | return str; |
| 149 | } function UTF8ToString(ptr, maxBytesToRead) { return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ''; } function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) |
| 150 | { |
| 151 | if (!(maxBytesToWrite > 0)) return 0; const startIdx = outIdx; const endIdx = outIdx + maxBytesToWrite - 1; |
| 152 | |
| 153 | for (let i = 0; i < str.length; ++i) |
| 154 | { |
| 155 | let u = str.charCodeAt(i); |
| 156 | |
| 157 | if (u >= 55296 && u <= 57343) |
| 158 | { |
| 159 | const u1 = str.charCodeAt(++i); |
| 160 | |
| 161 | u = 65536 + ((u & 1023) << 10) | u1 & 1023; |
| 162 | } if (u <= 127) { if (outIdx >= endIdx) break; outU8Array[outIdx++] = u; } |
| 163 | else if (u <= 2047) { if (outIdx + 1 >= endIdx) break; outU8Array[outIdx++] = 192 | u >> 6; outU8Array[outIdx++] = 128 | u & 63; } |
| 164 | else if (u <= 65535) { if (outIdx + 2 >= endIdx) break; outU8Array[outIdx++] = 224 | u >> 12; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63; } |
| 165 | else { if (outIdx + 3 >= endIdx) break; outU8Array[outIdx++] = 240 | u >> 18; outU8Array[outIdx++] = 128 | u >> 12 & 63; outU8Array[outIdx++] = 128 | u >> 6 & 63; outU8Array[outIdx++] = 128 | u & 63; } |
| 166 | }outU8Array[outIdx] = 0; |
| 167 | |
| 168 | return outIdx - startIdx; |
| 169 | } function stringToUTF8(str, outPtr, maxBytesToWrite) { return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); } function lengthBytesUTF8(str) |
| 170 | { |
| 171 | let len = 0; |
| 172 | |