more string fns

This commit is contained in:
Tenari
2026-06-02 07:33:28 -05:00
parent 45bdb7547b
commit a5788ba94c
2 changed files with 43 additions and 2 deletions
+38
View File
@@ -428,3 +428,41 @@ fn StringUTF16Const str16FromStr8(Arena* arena, String string) {
return result;
}
fn u32 stringCountLines(String s) {
u32 result = 1;
for (u32 i = 0; i < s.length; i++) {
if (s.bytes[i] == '\n') {
result += 1;
}
}
return result;
}
fn u32 stringLineLen(String s, u32 line_number) {
u32 result = 0;
u32 current_line = 0;
for (u32 i = 0; i < s.length && current_line <= line_number; i++) {
if (current_line == line_number) {
result += 1;
}
if (s.bytes[i] == '\n') {
current_line += 1;
}
}
return result;
}
fn u32 stringLineStartByteOffset(String s, u32 line_number) {
u32 current_line = 0;
for (u32 i = 0; i < s.length; i++) {
// do this check first, so we won't return '\n' character pos, but the following char pos
if (current_line == line_number) {
return i;
}
if (s.bytes[i] == '\n') {
current_line += 1;
}
}
return s.length;
}