e7738de6d2
CI / Deep Native Runtime Cases (1/6) (push) Has been skipped
CI / Native Preflight (push) Failing after 1s
CI / Native Runtime Cases (1/2) (push) Failing after 0s
CI / Native Runtime Cases (2/2) (push) Failing after 1s
CI / Native Metadata Reports (push) Failing after 0s
CI / Native Direct Backend Artifacts (push) Failing after 0s
CI / Native Sanitizer Smoke (push) Failing after 1s
CI / Command Contract Snapshots (push) Failing after 1s
CI / Deep Conformance Suite (push) Has been skipped
CI / Graph Build Perf (push) Failing after 1s
CI / Deep Native Preflight (push) Has been skipped
CI / Deep Native Runtime Cases (2/6) (push) Has been skipped
CI / Deep Native Runtime Cases (3/6) (push) Has been skipped
CI / Conformance Suite (push) Failing after 1s
CI / Workspace Checks (push) Failing after 0s
CI / Deep Native Runtime Cases (5/6) (push) Has been skipped
CI / Deep Native Runtime Cases (6/6) (push) Has been skipped
CI / Deep Native Runtime Cases (4/6) (push) Has been skipped
CI / Deep Graph Build Perf (push) Has been skipped
273 lines
7.6 KiB
Plaintext
273 lines
7.6 KiB
Plaintext
fn __zero_std_unicode_decode_raw(text: Span<u8>, index: usize) -> u64 {
|
|
let len: usize = std.mem.len(text)
|
|
if index >= len {
|
|
return 0
|
|
}
|
|
let first: u8 = text[index]
|
|
if first < 128_u8 {
|
|
return 4294967296_u64 + (first as u64)
|
|
}
|
|
if first >= 194_u8 && first <= 223_u8 {
|
|
if index + 2 > len {
|
|
return 0
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
if second < 128_u8 || second > 191_u8 {
|
|
return 0
|
|
}
|
|
let cp: u64 = ((first as u64) - 192_u64) * 64_u64 + ((second as u64) - 128_u64)
|
|
return 2_u64 * 4294967296_u64 + cp
|
|
}
|
|
if first >= 224_u8 && first <= 239_u8 {
|
|
if index + 3 > len {
|
|
return 0
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
let third: u8 = text[index + 2]
|
|
if second < 128_u8 || second > 191_u8 || (third < 128_u8 || third > 191_u8) {
|
|
return 0
|
|
}
|
|
if first == 224_u8 && second < 160_u8 {
|
|
return 0
|
|
}
|
|
if first == 237_u8 && second > 159_u8 {
|
|
return 0
|
|
}
|
|
let cp: u64 = ((first as u64) - 224_u64) * 4096_u64 + ((second as u64) - 128_u64) * 64_u64 + ((third as u64) - 128_u64)
|
|
return 3_u64 * 4294967296_u64 + cp
|
|
}
|
|
if first >= 240_u8 && first <= 244_u8 {
|
|
if index + 4 > len {
|
|
return 0
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
let third: u8 = text[index + 2]
|
|
let fourth: u8 = text[index + 3]
|
|
if second < 128_u8 || second > 191_u8 {
|
|
return 0
|
|
}
|
|
if third < 128_u8 || third > 191_u8 || (fourth < 128_u8 || fourth > 191_u8) {
|
|
return 0
|
|
}
|
|
if first == 240_u8 && second < 144_u8 {
|
|
return 0
|
|
}
|
|
if first == 244_u8 && second > 143_u8 {
|
|
return 0
|
|
}
|
|
let cp: u64 = ((first as u64) - 240_u64) * 262144_u64 + ((second as u64) - 128_u64) * 4096_u64 + ((third as u64) - 128_u64) * 64_u64 + ((fourth as u64) - 128_u64)
|
|
return 4_u64 * 4294967296_u64 + cp
|
|
}
|
|
return 0
|
|
}
|
|
|
|
fn __zero_std_unicode_decode_at(text: Span<u8>, index: usize) -> Maybe<u32> {
|
|
let raw: u64 = __zero_std_unicode_decode_raw(text, index)
|
|
if raw == 0 {
|
|
return null
|
|
}
|
|
return (raw % 4294967296_u64) as u32
|
|
}
|
|
|
|
fn __zero_std_unicode_decode_status_at(text: Span<u8>, index: usize) -> u32 {
|
|
let len: usize = std.mem.len(text)
|
|
if index >= len {
|
|
return 1_u32
|
|
}
|
|
let first: u8 = text[index]
|
|
if first < 128_u8 {
|
|
return 0_u32
|
|
}
|
|
if first >= 128_u8 && first <= 191_u8 {
|
|
return 2_u32
|
|
}
|
|
if first == 192_u8 || first == 193_u8 {
|
|
return 6_u32
|
|
}
|
|
if first >= 194_u8 && first <= 223_u8 {
|
|
if index + 2 > len {
|
|
return 4_u32
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
if second < 128_u8 || second > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
return 0_u32
|
|
}
|
|
if first >= 224_u8 && first <= 239_u8 {
|
|
if index + 3 > len {
|
|
return 4_u32
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
let third: u8 = text[index + 2]
|
|
if second < 128_u8 || second > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
if third < 128_u8 || third > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
if first == 224_u8 && second < 160_u8 {
|
|
return 6_u32
|
|
}
|
|
if first == 237_u8 && second > 159_u8 {
|
|
return 7_u32
|
|
}
|
|
return 0_u32
|
|
}
|
|
if first >= 240_u8 && first <= 244_u8 {
|
|
if index + 4 > len {
|
|
return 4_u32
|
|
}
|
|
let second: u8 = text[index + 1]
|
|
let third: u8 = text[index + 2]
|
|
let fourth: u8 = text[index + 3]
|
|
if second < 128_u8 || second > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
if third < 128_u8 || third > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
if fourth < 128_u8 || fourth > 191_u8 {
|
|
return 5_u32
|
|
}
|
|
if first == 240_u8 && second < 144_u8 {
|
|
return 6_u32
|
|
}
|
|
if first == 244_u8 && second > 143_u8 {
|
|
return 8_u32
|
|
}
|
|
return 0_u32
|
|
}
|
|
return 3_u32
|
|
}
|
|
|
|
fn __zero_std_unicode_status_name(status: u32) -> String {
|
|
if status == 0_u32 {
|
|
return "ok"
|
|
}
|
|
if status == 1_u32 {
|
|
return "out of range"
|
|
}
|
|
if status == 2_u32 {
|
|
return "unexpected continuation byte"
|
|
}
|
|
if status == 3_u32 {
|
|
return "invalid leading byte"
|
|
}
|
|
if status == 4_u32 {
|
|
return "truncated sequence"
|
|
}
|
|
if status == 5_u32 {
|
|
return "invalid continuation byte"
|
|
}
|
|
if status == 6_u32 {
|
|
return "overlong encoding"
|
|
}
|
|
if status == 7_u32 {
|
|
return "surrogate codepoint"
|
|
}
|
|
if status == 8_u32 {
|
|
return "codepoint above U+10FFFF"
|
|
}
|
|
return "unknown status"
|
|
}
|
|
|
|
fn __zero_std_unicode_next_index(text: Span<u8>, index: usize) -> Maybe<usize> {
|
|
let width: Maybe<usize> = __zero_std_unicode_width_at(text, index)
|
|
if width.has {
|
|
return index + width.value
|
|
}
|
|
return null
|
|
}
|
|
|
|
fn __zero_std_unicode_invalid_index(text: Span<u8>) -> usize {
|
|
var index: usize = 0
|
|
while index < std.mem.len(text) {
|
|
let next: Maybe<usize> = __zero_std_unicode_next_index(text, index)
|
|
if !next.has {
|
|
return index
|
|
}
|
|
index = next.value
|
|
}
|
|
return std.mem.len(text)
|
|
}
|
|
|
|
fn __zero_std_unicode_width_at(text: Span<u8>, index: usize) -> Maybe<usize> {
|
|
let raw: u64 = __zero_std_unicode_decode_raw(text, index)
|
|
if raw == 0 {
|
|
return null
|
|
}
|
|
return (raw / 4294967296_u64) as usize
|
|
}
|
|
|
|
fn __zero_std_unicode_encoded_width(cp: u32) -> Maybe<usize> {
|
|
if cp >= 55296_u32 && cp <= 57343_u32 {
|
|
return null
|
|
}
|
|
if cp > 1114111_u32 {
|
|
return null
|
|
}
|
|
if cp < 128_u32 {
|
|
return 1_usize
|
|
}
|
|
if cp < 2048_u32 {
|
|
return 2_usize
|
|
}
|
|
if cp < 65536_u32 {
|
|
return 3_usize
|
|
}
|
|
return 4_usize
|
|
}
|
|
|
|
fn __zero_std_unicode_encode(buffer: MutSpan<u8>, cp: u32) -> Maybe<Span<u8>> {
|
|
let width: Maybe<usize> = __zero_std_unicode_encoded_width(cp)
|
|
if !width.has {
|
|
return null
|
|
}
|
|
let needed: usize = width.value
|
|
if needed > std.mem.len(buffer) {
|
|
return null
|
|
}
|
|
if needed == 1 {
|
|
buffer[0] = cp as u8
|
|
return buffer[..1]
|
|
}
|
|
if needed == 2 {
|
|
buffer[0] = (192_u32 + cp / 64_u32) as u8
|
|
buffer[1] = (128_u32 + cp % 64_u32) as u8
|
|
return buffer[..2]
|
|
}
|
|
if needed == 3 {
|
|
buffer[0] = (224_u32 + cp / 4096_u32) as u8
|
|
buffer[1] = (128_u32 + (cp / 64_u32) % 64_u32) as u8
|
|
buffer[2] = (128_u32 + cp % 64_u32) as u8
|
|
return buffer[..3]
|
|
}
|
|
buffer[0] = (240_u32 + cp / 262144_u32) as u8
|
|
buffer[1] = (128_u32 + (cp / 4096_u32) % 64_u32) as u8
|
|
buffer[2] = (128_u32 + (cp / 64_u32) % 64_u32) as u8
|
|
buffer[3] = (128_u32 + cp % 64_u32) as u8
|
|
return buffer[..4]
|
|
}
|
|
|
|
fn __zero_std_unicode_is_digit(cp: u32) -> Bool {
|
|
return cp >= 48_u32 && cp <= 57_u32
|
|
}
|
|
|
|
fn __zero_std_unicode_is_word(cp: u32) -> Bool {
|
|
return (cp >= 48_u32 && cp <= 57_u32) || ((cp >= 65_u32 && cp <= 90_u32) || (cp >= 97_u32 && cp <= 122_u32) || cp == 95_u32)
|
|
}
|
|
|
|
fn __zero_std_unicode_is_space(cp: u32) -> Bool {
|
|
if cp == 9_u32 || cp == 10_u32 || (cp == 11_u32 || cp == 12_u32) || (cp == 13_u32 || cp == 32_u32) {
|
|
return true
|
|
}
|
|
if cp == 160_u32 || cp == 5760_u32 || (cp == 8232_u32 || cp == 8233_u32) {
|
|
return true
|
|
}
|
|
if cp >= 8192_u32 && cp <= 8202_u32 {
|
|
return true
|
|
}
|
|
return cp == 8239_u32 || cp == 8287_u32 || (cp == 12288_u32 || cp == 65279_u32)
|
|
}
|