mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 07:38:48 +00:00
Improve strings.index_any and strings.last_index_any
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
//+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;
|
||||
}
|
||||
Reference in New Issue
Block a user