/** A safe string data structure */
typedef struct str_t str_t;
+/**
+ * @brief Create a new string with the contents of the C style string.
+ *
+ * @param p_cstr The C string to copy.
+ *
+ * @return Pointer to the newly constructed string.
+ */
str_t* str_new(const char* p_cstr);
+
size_t str_size(str_t* p_str);
+
const char* str_cstr(str_t* p_str);
+
str_t* str_copy(str_t* p_str);
+
char str_at(str_t* p_str, size_t index);
+
str_t* str_set(str_t* p_str, size_t index, char val);
+
str_t* str_concat(str_t* p_str1, str_t* p_str2);
+
str_t* str_insert(str_t* p_str1, size_t index, str_t* p_str2);
+
str_t* str_erase(str_t* p_str, size_t start, size_t end);
+
str_t* str_substr(str_t* p_str, size_t start, size_t end);
+
int str_compare(str_t* p_str1, str_t* p_str2);
+
size_t str_find(str_t* p_str1, str_t* p_str2);
+
size_t str_rfind(str_t* p_str1, str_t* p_str2);
#ifdef __cplusplus
str_t* p_str2 = str_copy(p_str1);
CHECK(p_str1 != p_str2);
CHECK(0 == strcmp(str_cstr(p_str1), str_cstr(p_str2)));
+ CHECK(3 == str_size(p_str));
mem_release(p_str1);
mem_release(p_str2);
}
str_t* p_str2 = str_set(p_str1, 2, 'd');
CHECK(p_str1 != p_str2);
CHECK(0 == strcmp(str_cstr(p_str1),"abc"));
- CHECK(0 == strcmp(str_cstr(p_str2),"abd"));
CHECK(3 == str_size(p_str1));
+ CHECK(0 == strcmp(str_cstr(p_str2),"abd"));
CHECK(3 == str_size(p_str2));
mem_release(p_str1);
mem_release(p_str2);