mirror of
https://github.com/odin-lang/Odin.git
synced 2026-02-13 14:53:34 +00:00
* 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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user