1 #ifndef _UTIL_STRING_H
2 #define _UTIL_STRING_H
3 
4 #include <stddef.h>
5 
6 typedef struct str_t {
7     size_t len;
8     char* data;
9 } str;
10 
11 void str_create(str *string);
12 void str_create_from_cstr(str *string, const char *cstr);
13 void str_create_from_data(str *string, const char *data, size_t len);
14 void str_free(str *string);
15 
16 size_t str_size(const str *string);
17 
18 void str_substr(str *dst, const str *src, size_t start, size_t end);
19 void str_copy(str *dst, const str *src);
20 void str_append(str *dst, const str *src);
21 void str_append_c(str *dst, const char *src);
22 void str_prepend(str *dst, const str *src);
23 void str_remove_at(str *string, size_t pos);
24 
25 int str_first_of(const str *string, char find, size_t *pos);
26 int str_next_of(const str *string, char find, size_t *pos);
27 int str_last_of(const str *string, char find, size_t *pos);
28 
29 int str_equal(const str *string, const str *string_b);
30 
31 void str_toupper(str *string);
32 void str_tolower(str *string);
33 
34 char str_at(const str *string, size_t pos);
35 int str_cmp(const str *string, const str *string_b);
36 
37 int str_to_int(const str *string, int *result);
38 int str_to_long(const str *string, long *result);
39 int str_to_float(const str *string, float *result);
40 const char* str_c(const str *string);
41 
42 #endif // _UTIL_STRING_H
43