Преглед на файлове

Merge pull request #1640 from Lperlind/split-iterator-byte

Add split_iterator_byte
gingerBill преди 3 години
родител
ревизия
84cee5d9d5
променени са 1 файла, в които са добавени 19 реда и са изтрити 0 реда
  1. 19 0
      core/strings/strings.odin

+ 19 - 0
core/strings/strings.odin

@@ -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)