6 static flxStringList *string_list_add_internal(flxStringList *l, const gchar *text, guint size) {
11 n = g_malloc(sizeof(flxStringList) + size);
13 strncpy(n->text, text, size);
19 flxStringList *flx_string_list_add(flxStringList *l, const gchar *text) {
22 return string_list_add_internal(l, text, strlen(text));
25 flxStringList *flx_string_list_parse(gconstpointer data, guint size) {
26 flxStringList *r = NULL;
38 r = string_list_add_internal(r, (const gchar*) c, k);
47 void flx_string_list_free(flxStringList *l) {
58 static flxStringList* string_list_reverse(flxStringList *l) {
59 flxStringList *r = NULL, *n;
71 gchar* flx_string_list_to_string(flxStringList *l) {
76 l = string_list_reverse(l);
78 for (n = l; n; n = n->next) {
82 s += strlen(n->text)+2;
85 t = e = g_new(gchar, s+1);
87 for (n = l; n; n = n->next) {
97 l = string_list_reverse(l);
104 guint flx_string_list_serialize(flxStringList *l, gpointer data, guint size) {
113 l = string_list_reverse(l);
116 for (n = l; n; n = n->next) {
129 memcpy(c, n->text, k);
135 l = string_list_reverse(l);
139 for (n = l; n; n = n->next) {
153 gboolean flx_string_list_equal(flxStringList *a, flxStringList *b) {
162 if (strcmp(a->text, b->text) != 0)
170 flxStringList *flx_string_list_add_many(flxStringList *r, ...) {
174 r = flx_string_list_add_many_va(r, va);
180 flxStringList *flx_string_list_add_many_va(flxStringList *r, va_list va) {
183 while ((txt = va_arg(va, const gchar*)))
184 r = flx_string_list_add(r, txt);
189 flxStringList *flx_string_list_new(const gchar *txt, ...) {
191 flxStringList *r = NULL;
194 r = flx_string_list_add(r, txt);
197 r = flx_string_list_add_many_va(r, va);
204 flxStringList *flx_string_list_new_va(va_list va) {
205 return flx_string_list_add_many_va(NULL, va);
208 flxStringList *flx_string_list_copy(flxStringList *l) {
211 for (; l; l = l->next)
212 r = flx_string_list_add(l, l->text);
214 return string_list_reverse(r);