diff options
Diffstat (limited to 'src/string.c')
| -rw-r--r-- | src/string.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/string.c b/src/string.c index 0925a43..f9340dd 100644 --- a/src/string.c +++ b/src/string.c @@ -138,6 +138,12 @@ char *strng_malloc_str(strng_t const *string) { return s; } +void strng_map(strng_t *string, char (F)(char c)) { + for (u64 i = 0; i < string->len; i++) { + strng_set_ic(string, i, F(*(STRNG_TO(string)+i))); + } +} + strng_view_t sv_from_chars(char const* c) { u64 l = strlen(c); return (strng_view_t){ .start=0, @@ -203,6 +209,23 @@ void sv_trim_strt_prvc(strng_view_t *sv, char n) { } } +u64 sv_find_from_end_c(strng_view_t const *sv, char n, u64 skip) { + if (sv->start > sv->end) return 0; + + u64 i = sv->end; + while (i > sv->start) { + i--; + if (*(sv->string + i) == n) { + if (skip) { + skip--; + continue; + } + return sv->end - i; + } + } + return sv_len(sv); +} + void sv_set_len_left(strng_view_t *sv, u64 n) { if (sv->start > sv->end) return; |