import { atoi, isSpace } from "../../../util"; import { COMMA, BRACKET_RIGHT } from "../../../custom/chars"; export function deserializeStaticArrayInteger>( srcStart: usize, srcEnd: usize, dst: usize, ): T { let count: i32 = 0; let ptr = srcStart; while (ptr < srcEnd) { const code = load(ptr); if (code - 48 <= 9 || code == 45) { count++; ptr += 2; while (ptr < srcEnd) { const code = load(ptr); if (code == COMMA || code == BRACKET_RIGHT || isSpace(code)) break; ptr += 2; } } ptr += 2; } const outSize = count * sizeof>(); const out = changetype>(dst || __new(outSize, idof())); // Second pass: populate values let index = 0; while (srcStart < srcEnd) { const code = load(srcStart); if (code - 48 <= 9 || code == 45) { const lastIndex = srcStart; srcStart += 2; while (srcStart < srcEnd) { const code = load(srcStart); if (code == COMMA || code == BRACKET_RIGHT || isSpace(code)) { unchecked((out[index++] = atoi>(lastIndex, srcStart))); break; } srcStart += 2; } } srcStart += 2; } return out; }