Files
Odin/core/strings/ascii_set.odin
T
2021-08-31 22:21:13 +01:00

22 lines
426 B
Odin

//+private
package strings
import "core:unicode/utf8"
Ascii_Set :: distinct [8]u32
ascii_set_make :: proc(chars: string) -> (as: Ascii_Set, ok: bool) #no_bounds_check {
for i in 0..<len(chars) {
c := chars[i]
if c >= utf8.RUNE_SELF {
return
}
as[c>>5] |= 1 << uint(c&31)
}
ok = true
return
}
ascii_set_contains :: proc(as: Ascii_Set, c: byte) -> bool #no_bounds_check {
return as[c>>5] & (1<<(c&31)) != 0
}