13 #include "eina_private.h"
15 #include "eina_strbuf_common.h"
16 #include "eina_unicode.h"
18 /*============================================================================*
20 *============================================================================*/
26 #ifdef _STRBUF_DATA_TYPE
27 # undef _STRBUF_DATA_TYPE
34 #ifdef _STRBUF_STRUCT_NAME
35 # undef _STRBUF_STRUCT_NAME
38 #ifdef _STRBUF_STRLEN_FUNC
39 # undef _STRBUF_STRLEN_FUNC
42 #ifdef _STRBUF_STRESCAPE_FUNC
43 # undef _STRBUF_STRESCAPE_FUNC
50 #ifdef _STRBUF_MAGIC_STR
51 # undef _STRBUF_MAGIC_STR
59 #define _STRBUF_DATA_TYPE char
60 #define _STRBUF_CSIZE sizeof(_STRBUF_DATA_TYPE)
61 #define _STRBUF_STRUCT_NAME Eina_Strbuf
62 #define _STRBUF_STRLEN_FUNC(x) strlen(x)
63 #define _STRBUF_STRESCAPE_FUNC(x) eina_str_escape(x)
64 #define _STRBUF_MAGIC EINA_MAGIC_STRBUF
65 #define _STRBUF_MAGIC_STR __STRBUF_MAGIC_STR
66 static const char __STRBUF_MAGIC_STR[] = "Eina Strbuf";
68 #define _FUNC_EXPAND(y) eina_strbuf_ ## y
75 /*============================================================================*
77 *============================================================================*/
80 /*============================================================================*
82 *============================================================================*/
86 eina_strbuf_append_printf(Eina_Strbuf *buf, const char *fmt, ...)
94 len = vasprintf(&str, fmt, args);
100 ret = eina_strbuf_append_length(buf, str, len);
106 eina_strbuf_append_vprintf(Eina_Strbuf *buf, const char *fmt, va_list args)
112 len = vasprintf(&str, fmt, args);
114 if (len <= 0 || !str)
117 ret = eina_strbuf_append_length(buf, str, len);
123 eina_strbuf_insert_printf(Eina_Strbuf *buf, const char *fmt, size_t pos, ...)
131 len = vasprintf(&str, fmt, args);
134 if (len <= 0 || !str)
137 ret = eina_strbuf_insert(buf, str, pos);
143 eina_strbuf_insert_vprintf(Eina_Strbuf *buf,
152 len = vasprintf(&str, fmt, args);
154 if (len <= 0 || !str)
157 ret = eina_strbuf_insert(buf, str, pos);
163 eina_strbuf_trim(Eina_Strbuf *buf)
165 unsigned char *c = buf->buf;
167 while (buf->len > 0 && isspace(c[buf->len - 1]))
169 while (buf->len > 0 && isspace(*c))
174 memmove(buf->buf, c, buf->len);
175 ((unsigned char *)buf->buf)[buf->len] = '\0';
179 eina_strbuf_ltrim(Eina_Strbuf *buf)
181 unsigned char *c = buf->buf;
183 while (buf->len > 0 && isspace(*c))
188 memmove(buf->buf, c, buf->len);
189 ((unsigned char *)buf->buf)[buf->len] = '\0';
193 eina_strbuf_rtrim(Eina_Strbuf *buf)
195 while (buf->len > 0 && isspace(((unsigned char*)(buf->buf))[buf->len - 1]))
197 ((unsigned char *)buf->buf)[buf->len] = '\0';
202 #include "eina_strbuf_template_c.x"