Improve strings.index_any and strings.last_index_any

This commit is contained in:
gingerBill
2021-08-27 12:07:57 +01:00
parent 284acc37f9
commit bf56e3ea8d
2 changed files with 83 additions and 12 deletions
+22
View File
@@ -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;
}