Add function string_subset

This commit is contained in:
Patrick Pelissier committed 2020-11-19 22:31:33 +01:00
1 parent ebf440731d
commit 45f8b31efc
3 files changed
+23

No files matched your search

+8
View File
@@ -5071,6 +5071,14 @@ Keep the right part of the string, after the index 'index'.
Extract the medium string from offset 'index' and up to 'size' bytes.
##### void string\_subset (string\_t v, const string\_t org, size\_t index, size\_t size)
Extract the medium string from offset 'index' and up to 'size' bytes of 'org'
and set it in 'v'.
The subset string shall fully exist in the string org.
The string 'v' and 'org' shall be different.
##### size\_t string\_replace\_str (string\_t v, const char str1[], const char str2[] [, size_t start])
##### size\_t string\_replace (string\_t v, const string\_t str1, const string\_t str2 [ , size_t start])
+12
View File
@@ -709,6 +709,18 @@ string_mid (string_t v, size_t index, size_t size)
string_left(v, size);
}
/* Set the string 'v' to the substring of org from position index to size bytes */
static inline void
string_subset (string_t v, const string_t org, size_t index, size_t size)
{
// The substring shall fully exist within the string org
assert(index + size <= string_size(org) );
assert(v != org);
const char *str = string_get_cstr(org);
string_set_strn(v, &str[index], size);
}
/* Return in the string the C string str1 into the C string str2 from start
By default, start is zero.
*/
+3
View File
@@ -201,6 +201,9 @@ static void test0(void)
string_mid (s1, j, 2);
assert (string_cmp_str (s1, ", ") == 0);
string_subset (s1, s2, j, 2);
assert (string_cmp_str (s1, ", ") == 0);
string_set (s1, s2);
i = string_replace_str (s1, "world", "Paul");
assert (i != STRING_FAILURE);