25 #ifndef STR_UTILS_H_INCLUDED
26 #define STR_UTILS_H_INCLUDED 1
35 static inline GString *
36 g_string_append_unichar_optimized(GString *
string, gunichar wc)
39 g_string_append_c(
string, (gchar) wc);
41 g_string_append_unichar(
string, wc);
64 #define APPEND_ZERO(dest, value, value_len) \
67 if (G_UNLIKELY(value[value_len] != 0)) \
71 __buf = g_alloca(value_len + 1); \
72 memcpy(__buf, value, value_len); \
73 __buf[value_len] = 0; \
78 __buf = (gchar *) value; \
101 static inline const char *
102 _strchr_optimized_for_single_char_haystack(
const char *str,
int c)
106 else if (str[0] ==
'\0')
115 return strchr(str + 1, c);
124 gchar **strsplit(
const gchar *str,
char delim, gint maxtokens)
126 if (!str || delim ==
'\0')
129 const gchar *delim_pos = NULL;
130 const gchar *remainder = str;
131 GPtrArray *array = g_ptr_array_new();
134 maxtokens = G_MAXINT;
136 for (delim_pos = strchr(remainder, delim); delim_pos && maxtokens; maxtokens--)
138 const gchar *d = delim_pos;
139 while (d && *d++ == delim);
143 gint len = delim_pos - remainder;
146 g_ptr_array_add(array, g_strndup(remainder, len));
148 delim_pos = strchr(remainder, delim);
152 g_ptr_array_add(array, g_strdup(remainder));
153 g_ptr_array_add(array, NULL);
155 return (gchar **) g_ptr_array_free(array, FALSE);
gchar * __normalize_key(const gchar *buffer)
Definition: str-utils.c:68
gchar * g_string_steal(GString *s)
Definition: str-utils.c:36
gchar * normalize_flag(const gchar *buffer)
Definition: str-utils.c:74
GString * g_string_assign_len(GString *s, const gchar *val, gint len)
Definition: str-utils.c:27
GString * buffer
Definition: test_smart_multi_line.c:69