21 #define string_unit uint8_t
23 #error I have no idea how to implement unicode, but this library should be unicode-safe if you change string_unit
29 #define _strlen(x) strlen(x)
33 #define string_unit char
38 #define _strlen(x) strlen(x)
78 #define SR_MAGIC_NUMBER 1
84 #define string_to_sr(x) ((string_real *)((unsigned char *)x - sizeof(string_real)))
89 #define sr_to_string(x) ((string)((unsigned char *)x + sizeof(string_real)))
94 #define is_sr(x) (((string_real *)((unsigned char *)x - sizeof(string_real)))->flg == SR_MAGIC_NUMBER)
99 #define string_length(x) is_sr(x) ? string_to_sr(x)->len : _strlen(x)
104 #define string_free(x) free(is_sr(x)?(void *)string_to_sr(x):(void *)x)
108 string string_copy(
string a,
const string b, uint16_t offset, uint16_t num);
122 #define string_append(a, b) string_copy(a, b, string_length(a), 0)
129 #define string_new_size(x) string_realloc(NULL, x)
136 #define string_istemporary(x) (is_sr(x)?(string_to_sr(x)->tmp == 1):0)
string string_mknew(const string_unit *in)
Definition: libstring.c:208
string string_dup(const string a)
Definition: libstring.c:167
Definition: libstring.h:58
string string_copy(string a, const string b, uint16_t offset, uint16_t num)
Definition: libstring.c:107
struct _string_real string_real
string string_appendv(int count,...)
Definition: libstring.c:228
uint16_t tot
Definition: libstring.h:62
string string_new()
Definition: libstring.c:31
string_unit * string
Definition: libstring.h:71
string string_realloc(string a, uint16_t minS)
Definition: libstring.c:57
#define string_unit
Definition: libstring.h:33
unsigned char flg
Definition: libstring.h:66
uint16_t len
Definition: libstring.h:60
string string_temporary(string in)
Definition: libstring.c:196
unsigned char tmp
Definition: libstring.h:64