changeset 91:046d0c66e3bb

base/str: Make ystr_at() return char* instead of char
author Lewin Bormann <lbo@spheniscida.de>
date Mon, 26 Aug 2019 16:57:43 +0200
parents 340408c24a6e
children 7e376bff2e91
files src/base/str.c src/base/str.h src/base/str_test.c
diffstat 3 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/src/base/str.c	Mon Aug 26 14:57:02 2019 +0200
+++ b/src/base/str.c	Mon Aug 26 16:57:43 2019 +0200
@@ -74,13 +74,13 @@
     return s->inner.big.len - 1;
 }
 
-char ystr_at(ystr_t *s, size_t index) {
+char* ystr_at(ystr_t *s, size_t index) {
     if (index >= ystr_len(s))
-        return -1;
+        return NULL;
     if (ystr_is_inline(s)) {
-        return s->inner.small[index];
+        return &s->inner.small[index];
     }
-    return *YVEC_AT(&s->inner.big, index, char);
+    return YVEC_AT(&s->inner.big, index, char);
 }
 
 const char *ystr_str(ystr_t *s) {
@@ -102,7 +102,7 @@
     size_t parts = 0;
     size_t len = ystr_len(s);
     for (size_t i = 0; i < len; i++) {
-        if (ystr_at(s, i) == limit)
+        if (*ystr_at(s, i) == limit)
             parts++;
     }
     parts += 1;
@@ -112,7 +112,7 @@
         ystr_t part;
         ystr_init(&part, NULL);
         size_t i = 0;
-        for (i = index; i < len && ystr_at(s, i) != limit; i++)
+        for (i = index; i < len && *ystr_at(s, i) != limit; i++)
             ;
         ystr_set_n(&part, ystr_str(s) + index, i - index);
         YVEC_PUSH(dst, &part);
--- a/src/base/str.h	Mon Aug 26 14:57:02 2019 +0200
+++ b/src/base/str.h	Mon Aug 26 16:57:43 2019 +0200
@@ -76,7 +76,7 @@
 /**
  * @brief Get character at `index`.
  */
-char ystr_at(ystr_t *s, size_t index);
+char* ystr_at(ystr_t *s, size_t index);
 
 /**
  * @brief Compare to `ystr_t` values. If `s1` is lexically lesser than `s2`, -1
--- a/src/base/str_test.c	Mon Aug 26 14:57:02 2019 +0200
+++ b/src/base/str_test.c	Mon Aug 26 16:57:43 2019 +0200
@@ -55,9 +55,9 @@
     ystr_t s;
     ystr_init(&s, "Hello");
 
-    assert('H' == ystr_at(&s, 0));
-    assert('o' == ystr_at(&s, 4));
-    assert(-1 == ystr_at(&s, 5));
+    assert('H' == *ystr_at(&s, 0));
+    assert('o' == *ystr_at(&s, 4));
+    assert(NULL == ystr_at(&s, 5));
     ystr_destroy(&s);
 }