MCPcopy Create free account
hub / github.com/eva-engine/eva.js / stringToUTF8Array

Function stringToUTF8Array

examples/public/basis/basis_transcoder.js:149–169  ·  view source on GitHub ↗
(str, outU8Array, outIdx, maxBytesToWrite)

Source from the content-addressed store, hash-verified

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

Callers 1

stringToUTF8Function · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected