diff --git a/include/extra/string.h b/include/extra/string.h index c224b69..b96933c 100644 --- a/include/extra/string.h +++ b/include/extra/string.h @@ -27,9 +27,10 @@ extern size_t string_align_center(vtype_string* x, size_t padsize, int padchr) L extern size_t string_align_right (vtype_string* x, size_t padsize, int padchr) LIBCDSB_nt__ LIBCDSB_nn1__; extern size_t string_align_left (vtype_string* x, size_t padsize, int padchr) LIBCDSB_nt__ LIBCDSB_nn1__; - extern int string_compare_case_insensitive(const vtype_string* s0, const vtype_string* s1) LIBCDSB_cmpattr__; +extern void libcdsb_string_replace(vtype_string* x, char* dest, size_t dest_nmemb, const char* src, size_t nmemb); + /*#####################################################################################################################*/ inline vtype_array libcdsb_string_split_string (const vtype_string* x, const vtype_string* sep, size_t maxn) __attribute__((always_inline)); diff --git a/src/string/base.c b/src/string/base.c index 55f5ee5..d4b4d46 100644 --- a/src/string/base.c +++ b/src/string/base.c @@ -60,7 +60,7 @@ int string_compare(const str_t* s0, const str_t* s1) { /*#####################################################################################################################*/ -_Bool string_concat_cstring(str_t* x, const char* s) { +_Bool libcdsb_string_concat_cstring(str_t* x, const char* s) { size_t n; size_t xn; @@ -77,7 +77,7 @@ _Bool string_concat_cstring(str_t* x, const char* s) { } -_Bool string_concat_char(str_t* x, int chr) { +_Bool libcdsb_string_concat_char(str_t* x, int chr) { size_t xn; size_t n; char *e; diff --git a/src/string/extra-split.c b/src/string/extra-split.c index 655e067..7879fc3 100644 --- a/src/string/extra-split.c +++ b/src/string/extra-split.c @@ -3,7 +3,7 @@ #include "include.h" -arr_t string_split_cstring(const str_t* s, const char* a, size_t maxn) { +arr_t libcdsb_string_split_cstring(const str_t* s, const char* a, size_t maxn) { arr_t x = { .mem = 0, .size = 0, .type = VTYPE_STRING }; size_t n; @@ -46,7 +46,7 @@ arr_t string_split_cstring(const str_t* s, const char* a, size_t maxn) { } -arr_t string_split_char(const str_t* s, int ac, size_t maxn) { +arr_t libcdsb_string_split_char(const str_t* s, int ac, size_t maxn) { arr_t x = { .mem = 0, .size = 0, .type = VTYPE_STRING }; char a[5] = { 0 }; diff --git a/src/string/extra.c b/src/string/extra.c index 4cd5493..50600f2 100644 --- a/src/string/extra.c +++ b/src/string/extra.c @@ -4,7 +4,7 @@ #include #include "include.h" -int string_case_compare(const str_t* s0, const str_t* s1) { +int string_compare_case_insensitive(const str_t* s0, const str_t* s1) { const char *p0, *p1, *t0, *t1; ssize_t n0, n1; u32_t uc0, uc1; @@ -76,7 +76,7 @@ size_t string_to_lower(str_t* x) { es = tochar_unicode(ps, uc1); if (!is_null(es)) { - string_replace(x, p, e-p, ps, es-ps); + libcdsb_string_replace(x, p, e-p, ps, es-ps); ++n; } } @@ -112,7 +112,7 @@ size_t string_to_upper(str_t* x) { es = tochar_unicode(ps, uc1); if (!is_null(es)) { - string_replace(x, p, e-p, ps, es-ps); + libcdsb_string_replace(x, p, e-p, ps, es-ps); ++n; } } @@ -146,7 +146,7 @@ size_t string_capitalize(str_t* x) { es = tochar_unicode(ps, uc1); if (!is_null(es)) { - string_replace(x, p, e-p, ps, es-ps); + libcdsb_string_replace(x, p, e-p, ps, es-ps); ++n; } } @@ -164,7 +164,7 @@ size_t string_capitalize(str_t* x) { es = tochar_unicode(ps, uc1); if (!is_null(es)) { - string_replace(x, p, e-p, ps, es-ps); + libcdsb_string_replace(x, p, e-p, ps, es-ps); ++n; } } @@ -207,3 +207,22 @@ size_t string_reverse(str_t* x) { return n; } + +/*#####################################################################################################################*/ + +void libcdsb_string_replace(str_t* x, char* p, size_t n, const char* v, size_t vn) { + if (n != vn) { + size_t l = strlen(x->buffer); + + if (n < vn) { + char* t = x->buffer; + + x->buffer = realloc(x->buffer, l + (vn - n) + 1); + p = x->buffer + (p - t); + } + + memmove(p+vn, p+n, l - (p+n - x->buffer) + 1); + } + + memcpy(p, v, vn); +} diff --git a/src/string/get.c b/src/string/get.c index 98c7a63..209ce9a 100644 --- a/src/string/get.c +++ b/src/string/get.c @@ -63,7 +63,7 @@ _Bool string_slice(str_t* x, str_t* s, ssize_t i, size_t c, _Bool cut) { /*#####################################################################################################################*/ -ssize_t string_indexof_cstring(const str_t* s, const char* a) { +ssize_t libcdsb_string_indexof_cstring(const str_t* s, const char* a) { char *e, *p; size_t n; @@ -92,7 +92,7 @@ ssize_t string_indexof_cstring(const str_t* s, const char* a) { } -ssize_t string_indexof_char(const str_t* s, int ac) { +ssize_t libcdsb_string_indexof_char(const str_t* s, int ac) { size_t n; char* e; @@ -127,7 +127,7 @@ ssize_t string_indexof_char(const str_t* s, int ac) { /*#####################################################################################################################*/ -size_t string_count_cstring(const str_t* s, const char* a) { +size_t libcdsb_string_count_cstring(const str_t* s, const char* a) { char* p; size_t n, c; @@ -148,7 +148,7 @@ size_t string_count_cstring(const str_t* s, const char* a) { } -size_t string_count_char(const str_t* s, int ac) { +size_t libcdsb_string_count_char(const str_t* s, int ac) { size_t n, c; char a[5] = {0}; diff --git a/src/string/include.h b/src/string/include.h index 361ba2a..a0a4764 100644 --- a/src/string/include.h +++ b/src/string/include.h @@ -29,35 +29,4 @@ ainline(char* prev_char(char* s)) { return s; } -extern void libcdsb_string_replace(str_t* x, char* p, size_t n, const char* v, size_t vn); - -#ifdef string_replace -#undef string_replace -#endif -#ifdef string_trim_spaces -#undef string_trim_spaces -#endif - -#define string_replace libcdsb_string_replace -#define string_indexof_cstring libcdsb_string_indexof_cstring -#define string_indexof_char libcdsb_string_indexof_char -#define string_count_cstring libcdsb_string_count_cstring -#define string_count_char libcdsb_string_count_char -#define string_concat_cstring libcdsb_string_concat_cstring -#define string_concat_char libcdsb_string_concat_char -#define string_trim_spaces libcdsb_string_trim_spaces -#define string_trim_cstring libcdsb_string_trim_cstring -#define string_trim_char libcdsb_string_trim_char -#define string_replace_cstring_cstring libcdsb_string_replace_cstring_cstring -#define string_replace_cstring_char libcdsb_string_replace_cstring_char -#define string_replace_char_cstring libcdsb_string_replace_char_cstring -#define string_replace_char_char libcdsb_string_replace_char_char -#define string_split_string libcdsb_string_split_string -#define string_split_cstring libcdsb_string_split_cstring -#define string_split_char libcdsb_string_split_char - -#define string_replace_cstring_cstring_r libcdsb_string_replace_r_cstring_cstring -#define string_replace_cstring_char_r libcdsb_string_replace_r_cstring_char -#define string_replace_char_cstring_r libcdsb_string_replace_r_char_cstring - #endif /* LIBCDSB_SRC_STRING_INCLUDE_H */ diff --git a/src/string/internal.c b/src/string/internal.c deleted file mode 100644 index bc50e01..0000000 --- a/src/string/internal.c +++ /dev/null @@ -1,21 +0,0 @@ -/* This software is licensed by the MIT License, see LICENSE file */ -/* Copyright © 2022 Gregory Lirent */ - -#include "include.h" - -void string_replace(str_t* x, char* p, size_t n, const char* v, size_t vn) { - if (n != vn) { - size_t l = strlen(x->buffer); - - if (n < vn) { - char* t = x->buffer; - - x->buffer = realloc(x->buffer, l + (vn - n) + 1); - p = x->buffer + (p - t); - } - - memmove(p+vn, p+n, l - (p+n - x->buffer) + 1); - } - - memcpy(p, v, vn); -} diff --git a/src/string/replace.c b/src/string/replace.c index 2ee84cd..ea08c43 100644 --- a/src/string/replace.c +++ b/src/string/replace.c @@ -3,7 +3,7 @@ #include "include.h" -size_t string_replace_cstring_cstring(str_t* x, const char* a, const char* d, size_t maxn) { +size_t libcdsb_string_replace_cstring_cstring(str_t* x, const char* a, const char* d, size_t maxn) { char *p, *t, *r; size_t c, n, an, dn; @@ -38,7 +38,7 @@ size_t string_replace_cstring_cstring(str_t* x, const char* a, const char* d, si } while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -49,7 +49,7 @@ size_t string_replace_cstring_cstring(str_t* x, const char* a, const char* d, si } -size_t string_replace_cstring_char(str_t* x, const char* a, int dc, size_t maxn) { +size_t libcdsb_string_replace_cstring_char(str_t* x, const char* a, int dc, size_t maxn) { char *p, *t; char d[4]; size_t c, n, an, dn; @@ -77,7 +77,7 @@ size_t string_replace_cstring_char(str_t* x, const char* a, int dc, size_t maxn) } while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -87,7 +87,7 @@ size_t string_replace_cstring_char(str_t* x, const char* a, int dc, size_t maxn) } -size_t string_replace_char_cstring(str_t* x, int ac, const char* d, size_t maxn) { +size_t libcdsb_string_replace_char_cstring(str_t* x, int ac, const char* d, size_t maxn) { char *p, *t; char a[4]; size_t c, n, an, dn; @@ -110,7 +110,7 @@ size_t string_replace_char_cstring(str_t* x, int ac, const char* d, size_t maxn) } while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -120,7 +120,7 @@ size_t string_replace_char_cstring(str_t* x, int ac, const char* d, size_t maxn) } -size_t string_replace_char_char(str_t* x, int ac, int dc, size_t maxn) { +size_t libcdsb_string_replace_char_char(str_t* x, int ac, int dc, size_t maxn) { char* p; char a[4]; char d[4]; @@ -139,7 +139,7 @@ size_t string_replace_char_char(str_t* x, int ac, int dc, size_t maxn) { c = 0; while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -149,7 +149,7 @@ size_t string_replace_char_char(str_t* x, int ac, int dc, size_t maxn) { -size_t string_replace_cstring_cstring_r(str_t* x, const char*restrict a, const char*restrict d, size_t maxn) { +size_t libcdsb_string_replace_r_cstring_cstring(str_t* x, const char*restrict a, const char*restrict d, size_t maxn) { char *restrict p; size_t c, an, dn; @@ -163,7 +163,7 @@ size_t string_replace_cstring_cstring_r(str_t* x, const char*restrict a, const c c = 0; while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -172,7 +172,7 @@ size_t string_replace_cstring_cstring_r(str_t* x, const char*restrict a, const c } -size_t string_replace_cstring_char_r(str_t* x, const char*restrict a, int dc, size_t maxn) { +size_t libcdsb_string_replace_r_cstring_char(str_t* x, const char*restrict a, int dc, size_t maxn) { char *restrict p; char d[4]; size_t c, an, dn; @@ -188,7 +188,7 @@ size_t string_replace_cstring_char_r(str_t* x, const char*restrict a, int dc, si c = 0; while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } @@ -197,7 +197,7 @@ size_t string_replace_cstring_char_r(str_t* x, const char*restrict a, int dc, si } -size_t string_replace_char_cstring_r(str_t* x, int ac, const char*restrict d, size_t maxn) { +size_t libcdsb_string_replace_r_char_cstring(str_t* x, int ac, const char*restrict d, size_t maxn) { char *restrict p; char a[4]; size_t c, an, dn; @@ -214,7 +214,7 @@ size_t string_replace_char_cstring_r(str_t* x, int ac, const char*restrict d, si c = 0; while (maxn-- && !is_null(p = strstr(p, a))) { - string_replace(x, p, an, d, dn); + libcdsb_string_replace(x, p, an, d, dn); p += an; ++c; } diff --git a/src/string/trim.c b/src/string/trim.c index 11ac6e1..d40fe9c 100644 --- a/src/string/trim.c +++ b/src/string/trim.c @@ -7,7 +7,7 @@ /*#####################################################################################################################*/ -void string_trim_spaces(str_t* x, int direction) { +void libcdsb_string_trim_spaces(str_t* x, int direction) { static size_t m[32/(sizeof(size_t))] = {0}; u8_t* l; @@ -51,7 +51,7 @@ void string_trim_spaces(str_t* x, int direction) { /*#####################################################################################################################*/ -void string_trim_cstring(str_t* x, const char* s, int direction) { +void libcdsb_string_trim_cstring(str_t* x, const char* s, int direction) { u8_t* l; u8_t* r; @@ -122,7 +122,7 @@ void string_trim_cstring(str_t* x, const char* s, int direction) { } -void string_trim_char(str_t* x, int sc, int direction) { +void libcdsb_string_trim_char(str_t* x, int sc, int direction) { u8_t* l; u8_t* r;