mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 07:08:48 +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
|
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) {
|
split_iterator :: proc(s: ^string, sep: string) -> (string, bool) {
|
||||||
return _split_iterator(s, sep, 0)
|
return _split_iterator(s, sep, 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user