summaryrefslogtreecommitdiff
path: root/src/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/string.c')
-rw-r--r--src/string.c23
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;