}
}
-
-
-// DEPRECATED
-// Everything below this point is deprecated
-
-// Goes up to but not including the closest newline or EOF
-read_line :: (s: ^str, out: ^str) {
- out.data = s.data;
- out.count = 0;
-
- for ch: *s {
- if ch == #char "\n" do break;
- out.count += 1;
- }
-
- s.data += out.count;
- s.count -= out.count;
-
- if s.count > 0 {
- s.data += 1;
- s.count -= 1;
- }
-}
-
read_until :: (s: ^str, upto: u8, skip := 0) -> str {
if s.count == 0 do return "";
width := 0;
height := 0;
while true {
- line := "";
- string.read_line(^contents, ^line);
+ line := string.read_until(^contents, #char "\n");
+ string.advance(^contents, 1);
if line.count == 0 do break;
width = line.count;
field_count := 0;
while true {
- line: str;
- string.read_line(contents, ^line);
+ line := string.read_until(contents, #char "\n");
+ string.advance(contents, 1);
if line.count == 0 do break;
fields := string.split(line, #char " ");
max_val := 0;
while true {
- line: str;
- string.read_line(^contents, ^line);
+ line := string.read_until(^contents, #char "\n");
+ string.advance(^contents);
if line.count == 0 do break;
val := 0;
for ^ch: chars do *ch = false;
while true {
- line: str;
- string.read_line(contents, ^line);
+ line := string.read_until(contents, #char "\n");
+ string.advance(contents, 1);
if line.count == 0 do break;
for ch: line do chars[~~ch - cast(u32) #char "a"] = true;
person_count := 0;
while true {
- line: str;
- string.read_line(contents, ^line);
+ line := string.read_until(contents, #char "\n");
+ string.advance(contents, 1);
if line.count == 0 do break;
+
person_count += 1;
for ch: line do chars[~~ch - cast(u32) #char "a"] += 1;