1 #ifndef _VSTRING_H_INCLUDED_
2 #define _VSTRING_H_INCLUDED_
54 #define VSTRING_CTL_MAXLEN 1
55 #define VSTRING_CTL_EXACT 2
56 #define VSTRING_CTL_END 0
59 #define CA_VSTRING_CTL_END VSTRING_CTL_END
60 #define CA_VSTRING_CTL_EXACT VSTRING_CTL_EXACT
61 #define CA_VSTRING_CTL_MAXLEN(val) VSTRING_CTL_MAXLEN, CHECK_VAL(VSTRING_CTL, ssize_t, (val))
65 #define VSTRING_FLAG_EXACT (1<<8)
70 #define VSTRING_SPACE(vp, len) ((vp)->vbuf.space(&(vp)->vbuf, (len)))
71 #define vstring_str(vp) ((char *) (vp)->vbuf.data)
72 #define VSTRING_LEN(vp) ((ssize_t) ((vp)->vbuf.ptr - (vp)->vbuf.data))
73 #define vstring_end(vp) ((char *) (vp)->vbuf.ptr)
74 #define VSTRING_TERMINATE(vp) do { \
75 *(vp)->vbuf.ptr = 0; \
77 #define VSTRING_RESET(vp) do { \
78 (vp)->vbuf.ptr = (vp)->vbuf.data; \
79 (vp)->vbuf.cnt = (vp)->vbuf.len; \
81 #define VSTRING_ADDCH(vp, ch) VBUF_PUT(&(vp)->vbuf, ch)
82 #define VSTRING_SKIP(vp) do { \
83 while ((vp)->vbuf.cnt > 0 && *(vp)->vbuf.ptr) \
84 (vp)->vbuf.ptr++, (vp)->vbuf.cnt--; \
86 #define vstring_avail(vp) ((vp)->vbuf.cnt)
92 #define VSTRING_AT_OFFSET(vp, offset) do { \
93 (vp)->vbuf.ptr = (vp)->vbuf.data + (offset); \
94 (vp)->vbuf.cnt = (vp)->vbuf.len - (offset); \
VSTRING * vstring_sprintf_prepend(VSTRING *vp, const char *format,...)
VSTRING * vstring_insert(VSTRING *, ssize_t, const char *, ssize_t)
VSTRING * vstring_strcat(VSTRING *, const char *)
VSTRING const char VSTRING const char VSTRING const char char * vstring_export(VSTRING *)
VSTRING * vstring_prepend(VSTRING *, const char *, ssize_t)
VSTRING * vstring_strncat(VSTRING *, const char *, ssize_t)
VSTRING * vstring_vsprintf_append(VSTRING *, const char *, va_list)
char * vstring_memchr(VSTRING *, int)
VSTRING * vstring_truncate(VSTRING *, ssize_t)
VSTRING * vstring_sprintf_append(VSTRING *vp, const char *format,...)
VSTRING * vstring_vsprintf(VSTRING *, const char *, va_list)
CHECK_VAL_HELPER_DCL(VSTRING_CTL, ssize_t)
VSTRING * vstring_free(VSTRING *)
VSTRING * vstring_alloc(ssize_t)
VSTRING * vstring_sprintf(VSTRING *vp, const char *format,...)
VSTRING * vstring_strcpy(VSTRING *, const char *)
VSTRING * PRINTFLIKE(2, 3) vstring_sprintf(VSTRING *
VSTRING * vstring_memcpy(VSTRING *, const char *, ssize_t)
VSTRING * vstring_strncpy(VSTRING *, const char *, ssize_t)
VSTRING * vstring_import(char *)
void vstring_ctl(VSTRING *,...)
VSTRING * vstring_memcat(VSTRING *, const char *, ssize_t)