* Add split_by_byte_iterator. It functions exactly like split_iterator but takes in a byte seperator rather than a string seperator.

The intention is to provide a faster split parsing if the seperator is known to be byte size.
This commit is contained in:
Lucas Perlind
2022-03-21 21:17:49 +11:00
parent ae6441182d
commit 6d354524e2

View File

@@ -339,6 +339,25 @@ _split_iterator :: proc(s: ^string, sep: string, sep_save: int) -> (res: string,
return
}
@private
_split_by_byte_iterator :: proc(s: ^string, sep: u8) -> (res: string, ok: bool) {
m := index_byte(s^, sep)
if m < 0 {
// not found
res = s[:]
ok = res != ""
s^ = {}
} else {
res = s[:m]
ok = true
s^ = s[m+1:]
}
return
}
split_by_byte_iterator :: proc(s: ^string, sep: u8) -> (string, bool) {
return _split_by_byte_iterator(s, sep)
}
split_iterator :: proc(s: ^string, sep: string) -> (string, bool) {
return _split_iterator(s, sep, 0)