#include extern size_t STRINGSPLITCOUNT; typedef struct string string; typedef struct string { char *_str; // not null terminated string, length encoded size_t _len; void (*free)(string*); void (*appendchar)(string *, char); int (*insert)(string *, string *, size_t); void (*replacechar)(string *, char, char); int (*countchar)(string *, char); int (*cmp)(string *, string*); void (*fromcstring)(string *, char *); char *(*tocstring)(string *); string **(*split)(string *, char); } string; string *String(char *cstring); void __stringfree(string *self); void __stringappendchar(string *self, char c); int __stringinsert(string *self, string *substring, size_t point); void __stringreplacechar(string *self, char orig, char new); int __stringcountchar(string *self, char c); int __stringcmp(string *str1, string *str2); void __stringfromcstring(string *self, char *cstring); char *__stringtocstring(string *self); string **__stringsplit(string *self, char delim);