#ifndef _STR_BUF_H_ #define _STR_BUF_H_ typedef struct { char *buf; int dsize, rdpos, wrpos; char sep; } Str_Buf; #define str_get_str(BUF,RES) str_nget_str(BUF,RES,sizeof(RES)) /* input */ void str_get_start(Str_Buf *buf); char *str_nget_str(Str_Buf *buf, char *result, int reslen); int str_get_int(Str_Buf *buf, int *res); int str_get_float(Str_Buf *buf, float *res); int str_get_end(Str_Buf *buf); /* output */ void str_put_start(Str_Buf *buf); int str_put_str(Str_Buf *buf, const char *str); int str_put_int(Str_Buf *buf, int val); int str_put_float(Str_Buf *buf, float val); /* common */ #define STR_NOSEPARATOR ((char)1) Str_Buf *str_create_buf(size_t size, char separator); void str_link_buf(Str_Buf *buf, char *str, int size, char separator); void str_free_buf(Str_Buf *buf); #endif /* _STR_BUF_H_ */