41 typedef struct su_strlst_s su_strlst_t;
45 __attribute__((__malloc__));
50 __attribute__((__malloc__, __sentinel__(0)));
52 SU_DLL su_strlst_t *su_strlst_create_with_dup(
su_home_t *,
char const *, ...)
53 __attribute__((__malloc__, __sentinel__(0)));
55 SU_DLL su_strlst_t *su_strlst_vcreate_with(su_home_t *,
58 __attribute__((__malloc__));
60 SU_DLL su_strlst_t *su_strlst_vcreate_with_dup(su_home_t *,
63 __attribute__((__malloc__));
66 SU_DLL su_strlst_t *su_strlst_copy(su_home_t *home, su_strlst_t const *orig);
69 SU_DLL su_strlst_t *su_strlst_dup(su_home_t *home, su_strlst_t const *orig);
72 SU_DLL
char *su_strlst_dup_append(su_strlst_t *,
char const *str);
75 SU_DLL
char const *su_strlst_append(su_strlst_t *,
char const *str);
78 SU_DLL
char const *su_slprintf(su_strlst_t *self,
char const *fmt, ...)
79 __attribute__ ((__format__ (printf, 2, 3)));
82 SU_DLL
char const *su_slvprintf(su_strlst_t *self,
char const *fmt, va_list ap);
85 SU_DLL
char const *su_strlst_item(su_strlst_t const *, usize_t i);
88 SU_DLL
char const *su_strlst_set_item(su_strlst_t *self, usize_t i,
92 SU_DLL
char const *su_strlst_remove(su_strlst_t *, usize_t i);
95 SU_DLL
char *su_strlst_join(su_strlst_t *s, su_home_t *home,
97 __attribute__((__malloc__));
100 SU_DLL su_strlst_t *su_strlst_split(su_home_t *,
char *s,
char const *sep)
101 __attribute__((__malloc__));
104 SU_DLL su_strlst_t *su_strlst_dup_split(su_home_t *,
char const *s,
106 __attribute__((__malloc__));
109 SU_DLL usize_t su_strlst_len(su_strlst_t const *l);
113 su_home_t *su_strlst_home(su_strlst_t *s)
115 return (su_home_t *)s;
118 #define su_strlst_home(s) ((su_home_t *)(s))
123 __attribute__((__malloc__));