summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/cstr_api.md21
-rw-r--r--examples/replace.c14
-rw-r--r--include/stc/alt/cstr.h14
-rw-r--r--include/stc/cstr.h60
-rw-r--r--include/stc/csview.h4
5 files changed, 57 insertions, 56 deletions
diff --git a/docs/cstr_api.md b/docs/cstr_api.md
index 612e50e2..2be24dfc 100644
--- a/docs/cstr_api.md
+++ b/docs/cstr_api.md
@@ -21,7 +21,7 @@ All cstr definitions and prototypes are available by including a single header f
cstr cstr_init(void); // constructor; same as cstr_null.
cstr cstr_new(const char literal_only[]); // cstr from literal; no strlen() call.
cstr cstr_from(const char* str); // constructor using strlen()
-cstr cstr_from_n(const char* str, size_t n); // constructor with specified length
+cstr cstr_from_n(const char* str, size_t len); // constructor with specified length
cstr cstr_with_capacity(size_t cap);
cstr cstr_with_size(size_t len, char fill); // repeat fill len times
cstr cstr_from_fmt(const char* fmt, ...); // printf() formatting
@@ -48,26 +48,26 @@ void cstr_clear(cstr* self);
char* cstr_assign(cstr* self, const char* str);
char* cstr_assign_s(cstr* self, cstr s);
-char* cstr_assign_n(cstr* self, const char* str, size_t n); // assign n first chars of str
+char* cstr_assign_n(cstr* self, const char* str, size_t len); // assign n first chars of str
void cstr_copy(cstr* self, cstr s); // like cstr_assign_s()
int cstr_printf(cstr* self, const char* fmt, ...); // printf() formatting
char* cstr_append(cstr* self, const char* app);
char* cstr_append_s(cstr* self, cstr app);
-char* cstr_append_n(cstr* self, const char* app, size_t n);
+char* cstr_append_n(cstr* self, const char* app, size_t len);
void cstr_insert(cstr* self, size_t pos, const char* ins);
void cstr_insert_s(cstr* self, size_t pos, cstr ins);
-void cstr_insert_n(cstr* self, size_t pos, const char* ins, size_t n);
+void cstr_insert_n(cstr* self, size_t pos, const char* ins, size_t len);
void cstr_erase(cstr* self, size_t pos);
-void cstr_erase_n(cstr* self, size_t pos, size_t n);
+void cstr_erase_n(cstr* self, size_t pos, size_t len);
size_t cstr_replace(cstr* self, const char* search, const char* repl);
size_t cstr_replace_from(cstr* self, size_t pos, const char* search, const char* repl);
void cstr_replace_at(cstr* self, size_t pos, size_t len, const char* repl);
void cstr_replace_s(cstr* self, size_t pos, size_t len, cstr repl);
-void cstr_replace_n(cstr* self, size_t pos, size_t len, const char* repl, size_t n);
+void cstr_replace_with_n(cstr* self, size_t pos, size_t len, const char* repl, size_t rlen);
void cstr_replace_all(cstr* self, const char* search, const char* repl);
bool cstr_equals(cstr s, const char* str);
@@ -86,9 +86,9 @@ bool cstr_getdelim(cstr *self, int delim, FILE *stream); // does no
```c
size_t cstr_u8size(cstr s); // number of utf8 codepoints
size_t cstr_u8size_n(cstr s, size_t nbytes); // utf8 size within n bytes
-size_t cstr_pos_u8(cstr s, size_t u8idx); // byte pos offset at utf8 index
-const char* cstr_at_u8(const cstr* self, size_t u8idx); // char* position at utf8 index
-csview cstr_chr_u8(const cstr* self, size_t u8idx); // utf8 character at utf8 pos as csview
+size_t cstr_pos_u8(cstr s, size_t u8idx); // byte pos offset at utf8 index
+const char* cstr_at_u8(const cstr* self, size_t u8idx); // char* position at utf8 index
+csview cstr_chr_u8(const cstr* self, size_t u8idx); // utf8 character at utf8 pos as csview
// iterate utf8 codepoints
cstr_iter cstr_begin(const cstr* self);
@@ -151,7 +151,8 @@ int main() {
cstr_erase_n(&s1, 7, 5); // -nine
printf("%s\n", cstr_str(&s1));
- cstr_replace_at(&s1, cstr_find(s1, "seven"), 5, "four");
+ //cstr_replace_at(&s1, cstr_find(s1, "seven"), 5, "four");
+ cstr_replace(&s1, "seven", "four");
printf("%s\n", cstr_str(&s1));
// reassign:
diff --git a/examples/replace.c b/examples/replace.c
index eba8e813..2926977c 100644
--- a/examples/replace.c
+++ b/examples/replace.c
@@ -8,23 +8,23 @@ int main ()
// replace signatures used in the same order as described above:
- // Ustring positions: 0123456789*123456789*12345
- cstr s = cstr_from(base); // "this is a test string."
+ // Ustring positions: 0123456789*123456789*12345
+ cstr s = cstr_from(base); // "this is a test string."
cstr m = cstr_clone(s);
c_autodefer (cstr_drop(&s), cstr_drop(&m)) {
cstr_append(&m, cstr_str(&m));
cstr_append(&m, cstr_str(&m));
printf("%s\n", cstr_str(&m));
- cstr_replace_at(&s, 9, 5, s2); // "this is an example string." (1)
+ cstr_replace_at(&s, 9, 5, s2); // "this is an example string." (1)
printf("(1) %s\n", cstr_str(&s));
- cstr_replace_n(&s, 19, 6, s3+7, 6); // "this is an example phrase." (2)
+ cstr_replace_with_n(&s, 19, 6, s3+7, 6); // "this is an example phrase." (2)
printf("(2) %s\n", cstr_str(&s));
- cstr_replace_at(&s, 8, 10, "just a"); // "this is just a phrase." (3)
+ cstr_replace_at(&s, 8, 10, "just a"); // "this is just a phrase." (3)
printf("(3) %s\n", cstr_str(&s));
- cstr_replace_n(&s, 8, 6,"a shorty", 7); // "this is a short phrase." (4)
+ cstr_replace_with_n(&s, 8, 6,"a shorty", 7); // "this is a short phrase." (4)
printf("(4) %s\n", cstr_str(&s));
- cstr_replace_at(&s, 22, 1, "!!!"); // "this is a short phrase!!!" (5)
+ cstr_replace_at(&s, 22, 1, "!!!"); // "this is a short phrase!!!" (5)
printf("(5) %s\n", cstr_str(&s));
}
}
diff --git a/include/stc/alt/cstr.h b/include/stc/alt/cstr.h
index f5a5b169..8b0362d2 100644
--- a/include/stc/alt/cstr.h
+++ b/include/stc/alt/cstr.h
@@ -56,7 +56,7 @@ STC_API void cstr_resize(cstr* self, size_t len, char fill);
STC_API cstr* cstr_assign_n(cstr* self, const char* str, size_t n);
STC_API int cstr_printf(cstr* self, const char* fmt, ...);
STC_API cstr* cstr_append_n(cstr* self, const char* str, size_t n);
-STC_API void cstr_replace_n(cstr* self, size_t pos, size_t len, const char* str, size_t n);
+STC_API void cstr_replace_with_n(cstr* self, size_t pos, size_t len, const char* str, size_t n);
STC_API void cstr_replace_all(cstr* self, const char* find, const char* replace);
STC_API void cstr_erase_n(cstr* self, size_t pos, size_t n);
STC_API size_t cstr_find(cstr s, const char* needle);
@@ -96,15 +96,15 @@ STC_INLINE void cstr_push_back(cstr* self, char value)
STC_INLINE void cstr_pop_back(cstr* self)
{ self->str[ --_cstr_p(self)->size ] = '\0'; }
STC_INLINE void cstr_insert_n(cstr* self, const size_t pos, const char* str, const size_t n)
- { cstr_replace_n(self, pos, 0, str, n); }
+ { cstr_replace_with_n(self, pos, 0, str, n); }
STC_INLINE void cstr_insert(cstr* self, const size_t pos, const char* str)
- { cstr_replace_n(self, pos, 0, str, strlen(str)); }
+ { cstr_replace_with_n(self, pos, 0, str, strlen(str)); }
STC_INLINE void cstr_insert_s(cstr* self, const size_t pos, cstr s)
- { cstr_replace_n(self, pos, 0, s.str, _cstr_p(&s)->size); }
+ { cstr_replace_with_n(self, pos, 0, s.str, _cstr_p(&s)->size); }
STC_INLINE void cstr_replace_at(cstr* self, const size_t pos, const size_t len, const char* str)
- { cstr_replace_n(self, pos, len, str, strlen(str)); }
+ { cstr_replace_with_n(self, pos, len, str, strlen(str)); }
STC_INLINE void cstr_replace_s(cstr* self, const size_t pos, const size_t len, cstr s)
- { cstr_replace_n(self, pos, len, s.str, _cstr_p(&s)->size); }
+ { cstr_replace_with_n(self, pos, len, s.str, _cstr_p(&s)->size); }
STC_INLINE void cstr_erase(cstr* self, const size_t pos)
{ cstr_erase_n(self, pos, 1); }
STC_INLINE char* cstr_front(cstr* self) { return self->str; }
@@ -306,7 +306,7 @@ STC_INLINE void _cstr_internal_move(cstr* self, const size_t pos1, const size_t
}
STC_DEF void
-cstr_replace_n(cstr* self, const size_t pos, size_t len, const char* str, const size_t n) {
+cstr_replace_with_n(cstr* self, const size_t pos, size_t len, const char* str, const size_t n) {
const size_t sz = cstr_size(*self);
if (len > sz - pos) len = sz - pos;
c_autobuf (xstr, char, n) {
diff --git a/include/stc/cstr.h b/include/stc/cstr.h
index 9c2c9c0c..9b872bd0 100644
--- a/include/stc/cstr.h
+++ b/include/stc/cstr.h
@@ -81,10 +81,10 @@ STC_API char* cstr_reserve(cstr* self, size_t cap);
STC_API void cstr_shrink_to_fit(cstr* self);
STC_API void cstr_resize(cstr* self, size_t size, char value);
STC_API size_t cstr_find_from(cstr s, size_t pos, const char* search);
-STC_API char* cstr_assign_n(cstr* self, const char* str, size_t n);
-STC_API char* cstr_append_n(cstr* self, const char* str, size_t n);
+STC_API char* cstr_assign_n(cstr* self, const char* str, size_t len);
+STC_API char* cstr_append_n(cstr* self, const char* str, size_t len);
STC_API bool cstr_getdelim(cstr *self, int delim, FILE *fp);
-STC_API void cstr_erase_n(cstr* self, size_t pos, size_t n);
+STC_API void cstr_erase_n(cstr* self, size_t pos, size_t len);
STC_API cstr cstr_from_fmt(const char* fmt, ...);
STC_API int cstr_printf(cstr* self, const char* fmt, ...);
STC_API void cstr_replace_all(cstr* self, const char* search, const char* repl);
@@ -102,9 +102,9 @@ STC_INLINE csview cstr_sv(const cstr* s) {
STC_INLINE cstr cstr_init(void)
{ return cstr_null; }
-STC_INLINE cstr cstr_from_n(const char* str, const size_t n) {
+STC_INLINE cstr cstr_from_n(const char* str, const size_t len) {
cstr s;
- memcpy(_cstr_init(&s, n, n), str, n);
+ memcpy(_cstr_init(&s, len, len), str, len);
return s;
}
@@ -266,8 +266,8 @@ STC_INLINE bool cstr_starts_with(cstr s, const char* sub) {
}
STC_INLINE bool cstr_istarts_with(cstr s, const char* sub) {
csview sv = cstr_sv(&s);
- size_t n = strlen(sub);
- return n <= sv.size && !utf8_icmp_n(cstr_npos, sv.str, sv.size, sub, n);
+ size_t len = strlen(sub);
+ return len <= sv.size && !utf8_icmp_n(cstr_npos, sv.str, sv.size, sub, len);
}
STC_INLINE bool cstr_starts_with_s(cstr s, cstr sub)
@@ -307,20 +307,20 @@ STC_INLINE char* cstr_append_s(cstr* self, cstr s) {
return cstr_append_n(self, sv.str, sv.size);
}
-STC_INLINE void cstr_replace_n(cstr* self, size_t pos, size_t len, const char* repl, size_t n) {
- char* d = _cstr_internal_move(self, pos + len, pos + n);
- memcpy(d + pos, repl, n);
+STC_INLINE void cstr_replace_with_n(cstr* self, size_t pos, size_t len, const char* repl, size_t rlen) {
+ char* d = _cstr_internal_move(self, pos + len, pos + rlen);
+ memcpy(d + pos, repl, rlen);
}
STC_INLINE void cstr_replace_at(cstr* self, size_t pos, size_t len, const char* repl)
- { cstr_replace_n(self, pos, len, repl, strlen(repl)); }
+ { cstr_replace_with_n(self, pos, len, repl, strlen(repl)); }
STC_INLINE size_t cstr_replace_from(cstr* self, size_t pos, const char* search, const char* repl) {
pos = cstr_find_from(*self, pos, search);
if (pos == cstr_npos)
return pos;
const size_t rlen = strlen(repl);
- cstr_replace_n(self, pos, strlen(search), repl, rlen);
+ cstr_replace_with_n(self, pos, strlen(search), repl, rlen);
return pos + rlen;
}
@@ -329,18 +329,18 @@ STC_INLINE size_t cstr_replace(cstr* self, const char* search, const char* repl)
STC_INLINE void cstr_replace_s(cstr* self, size_t pos, size_t len, cstr s) {
csview sv = cstr_sv(&s);
- cstr_replace_n(self, pos, len, sv.str, sv.size);
+ cstr_replace_with_n(self, pos, len, sv.str, sv.size);
}
-STC_INLINE void cstr_insert_n(cstr* self, size_t pos, const char* str, size_t n)
- { cstr_replace_n(self, pos, 0, str, n); }
+STC_INLINE void cstr_insert_n(cstr* self, size_t pos, const char* str, size_t len)
+ { cstr_replace_with_n(self, pos, 0, str, len); }
STC_INLINE void cstr_insert(cstr* self, size_t pos, const char* str)
- { cstr_replace_n(self, pos, 0, str, strlen(str)); }
+ { cstr_replace_with_n(self, pos, 0, str, strlen(str)); }
STC_INLINE void cstr_insert_s(cstr* self, size_t pos, cstr s) {
csview sv = cstr_sv(&s);
- cstr_replace_n(self, pos, 0, sv.str, sv.size);
+ cstr_replace_with_n(self, pos, 0, sv.str, sv.size);
}
STC_INLINE bool cstr_getline(cstr *self, FILE *fp)
@@ -428,22 +428,22 @@ STC_DEF size_t cstr_find_from(cstr s, const size_t pos, const char* search) {
return res ? res - sv.str : cstr_npos;
}
-STC_DEF char* cstr_assign_n(cstr* self, const char* str, const size_t n) {
- char* d = cstr_reserve(self, n);
- memmove(d, str, n);
- _cstr_set_size(self, n);
+STC_DEF char* cstr_assign_n(cstr* self, const char* str, const size_t len) {
+ char* d = cstr_reserve(self, len);
+ memmove(d, str, len);
+ _cstr_set_size(self, len);
return d;
}
-STC_DEF char* cstr_append_n(cstr* self, const char* str, const size_t n) {
+STC_DEF char* cstr_append_n(cstr* self, const char* str, const size_t len) {
cstr_buf r = cstr_buffer(self);
- if (r.size + n > r.cap) {
+ if (r.size + len > r.cap) {
const size_t off = (size_t)(str - r.data);
- r.data = cstr_reserve(self, (r.size*3 >> 1) + n);
+ r.data = cstr_reserve(self, (r.size*3 >> 1) + len);
if (off <= r.size) str = r.data + off; /* handle self append */
}
- memcpy(r.data + r.size, str, n);
- _cstr_set_size(self, r.size + n);
+ memcpy(r.data + r.size, str, len);
+ _cstr_set_size(self, r.size + len);
return r.data;
}
@@ -491,11 +491,11 @@ cstr_replace_all(cstr* self, const char* search, const char* repl) {
repl, strlen(repl)));
}
-STC_DEF void cstr_erase_n(cstr* self, const size_t pos, size_t n) {
+STC_DEF void cstr_erase_n(cstr* self, const size_t pos, size_t len) {
cstr_buf r = cstr_buffer(self);
- if (n > r.size - pos) n = r.size - pos;
- memmove(&r.data[pos], &r.data[pos + n], r.size - (pos + n));
- _cstr_set_size(self, r.size - n);
+ if (len > r.size - pos) len = r.size - pos;
+ memmove(&r.data[pos], &r.data[pos + len], r.size - (pos + len));
+ _cstr_set_size(self, r.size - len);
}
#if defined(__clang__)
diff --git a/include/stc/csview.h b/include/stc/csview.h
index 4bdf3af2..31a3ccba 100644
--- a/include/stc/csview.h
+++ b/include/stc/csview.h
@@ -130,10 +130,10 @@ STC_INLINE void cstr_append_sv(cstr* self, csview sv)
{ cstr_append_n(self, sv.str, sv.size); }
STC_INLINE void cstr_insert_sv(cstr* self, size_t pos, csview sv)
- { cstr_replace_n(self, pos, 0, sv.str, sv.size); }
+ { cstr_replace_with_n(self, pos, 0, sv.str, sv.size); }
STC_INLINE void cstr_replace_sv(cstr* self, csview sub, csview with)
- { cstr_replace_n(self, sub.str - cstr_str(self), sub.size, with.str, with.size); }
+ { cstr_replace_with_n(self, sub.str - cstr_str(self), sub.size, with.str, with.size); }
STC_INLINE bool cstr_equals_sv(cstr s, csview sv)
{ return sv.size == cstr_size(s) && !memcmp(cstr_str(&s), sv.str, sv.size); }