#ifndef IOBUFFER_H_INCLUDED #define IOBUFFER_H_INCLUDED typedef struct { char* iodata; //if not null, always 16 byte alignment for better AES encrypt int size; int capacity; //capacity, always >= size } iobuffer; void iobuffer_init(iobuffer* p); void iobuffer_deinit(iobuffer* p); /* 申请cap大小的缓冲 */ int iobuffer_reserve(iobuffer* p, int cap); /* 获取剩余缓冲的大小 */ int iobuffer_freesize(iobuffer* p); /* to后的data移到from位置 */ void iobuffer_erase(iobuffer* p, int from, int to); /* 设置size=0, 清除所有data */ void iobuffer_eraseall(iobuffer* p); /* 读size大小的数据到to的内存 */ void iobuffer_read(iobuffer* p, void* to, int size); /* 插入字符串 */ int iobuffer_append_string(iobuffer* p, const void* str); /* 插入数据 */ int iobuffer_appendData(iobuffer* p, const void* iodata, int count); /* 插入格式打印:iobuffer_printf(p, "i m %s, years old", "liming", 5)*/ int iobuffer_printf(iobuffer* p, const char *format, ...) __attribute__((__format__ (printf, 2, 3)));/* first arg is this pointer */ // Don't call it but change your code logic // int iobuffer_prependData(iobuffer* p, const void* iodata, int count); #endif /* IOBUFFER_H_INCLUDED */