Mercurial > lbo > hg > ylisp
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); }