00001
00002 #ifndef __JBXL_BUFFER_H_
00003 #define __JBXL_BUFFER_H_
00004
00005
00016 #include "tools.h"
00017
00018
00038 typedef struct _Buffer {
00039 int bufsz;
00040 int vldsz;
00041 int state;
00042 unsigned char* buf;
00043 } Buffer;
00044
00045
00046 #define BUFFER_FACT (1.3)
00047
00048
00060 #define make_Buffer_bystr(str) set_Buffer((void*)(str), -1)
00061 #define make_Buffer_bybin(str, len) set_Buffer((void*)(str), (len))
00062 #define make_Buffer_byrandomstr(sz) make_Buffer_randomstr(sz)
00063
00064 #define make_Buffer_str(str) set_Buffer((void*)(str), -1)
00065 #define make_Buffer_bin(str, len) set_Buffer((void*)(str), (len))
00066 #define make_Buffer_randomstr(sz) make_Buffer_randomstr(sz)
00067
00068
00069 Buffer* new_Buffer(int sz);
00070 Buffer init_Buffer(void);
00071 Buffer make_Buffer(int sz);
00072 Buffer make_Buffer_bychar(unsigned char cc);
00073 Buffer make_Buffer_randomstr(int sz);
00074 Buffer set_Buffer(void* buf, int sz);
00075 Buffer dup_Buffer(Buffer buf);
00076 Buffer rept_Buffer(unsigned char cc, int n);
00077
00078 void expand_Buffer(Buffer* buf, int len);
00079
00080 void del_Buffer(Buffer** buf);
00081 void free_Buffer(Buffer* buf);
00082 void clear_Buffer(Buffer* buf);
00083
00084 int copy_Buffer(Buffer* src, Buffer* dst);
00085 int cat_Buffer (Buffer* src, Buffer* dst);
00086 int ins_Buffer (Buffer* src, Buffer* dst);
00087
00088 int copy_b2Buffer(void* src, Buffer* dst, int sz);
00089 int cat_b2Buffer (void* src, Buffer* dst, int sz);
00090 int ins_b2Buffer (void* src, Buffer* dst, int sz);
00091
00092 int copy_i2Buffer(int src, Buffer* dst);
00093 int cat_i2Buffer (int src, Buffer* dst);
00094 int ins_i2Buffer (int src, Buffer* dst);
00095
00096
00108 #define copy_s2Buffer(src, dst) copy_b2Buffer((void*)(src), (dst), (int)strlen((char*)(src)))
00109
00110
00122 #define cat_s2Buffer(src, dst) cat_b2Buffer( (void*)(src), (dst), (int)strlen((char*)(src)))
00123 #define ins_s2Buffer(src, dst) ins_b2Buffer( (void*)(src), (dst), (int)strlen((char*)(src)))
00124
00125
00126
00127 void kanji_convert_Buffer(Buffer* mesg);
00128 Buffer encode_base64_Buffer(Buffer buf);
00129 Buffer decode_base64_Buffer(Buffer buf);
00130 Buffer encode_base64_filename_Buffer(Buffer buf);
00131 Buffer decode_base64_filename_Buffer(Buffer buf);
00132
00133 Buffer get_line_Buffer(Buffer buf, int n);
00134 Buffer get_seq_data_Buffer(Buffer str, int* ptr);
00135 Buffer awk_Buffer (Buffer buf, char cc, int n);
00136 Buffer cawk_Buffer(Buffer buf, char cc, int n);
00137 Buffer pack_Buffer(Buffer buf, char cc);
00138
00139 int cmp_Buffer(Buffer src, Buffer dst, int n);
00140 void chomp_Buffer(Buffer* buf);
00141 int isText_Buffer(Buffer buf);
00142 Buffer dump_Buffer(Buffer buf);
00143 int recalc_strlen_Buffer(Buffer* buf);
00144
00145 #define strcmp_Buffer(a, b) cmp_Buffer((a), (b), 0)
00146 #define strncmp_Buffer(a, b, n) cmp_Buffer((a), (b), (n))
00147 #define bincmp_Buffer(a, b) cmp_Buffer((a), (b), 0)
00148 #define binncmp_Buffer(a, b, n) cmp_Buffer((a), (b), (n))
00149
00150 Buffer randstr_Buffer(int n);
00151 Buffer randbit_Buffer(int n);
00152
00153
00154
00155 int fgets_Buffer(Buffer* str, FILE* fp);
00156 int read_lines_Buffer(Buffer* str, FILE* fp);
00157
00158 Buffer read_Buffer_file(const char* fn);
00159 Buffer read_Buffer_data(FILE* fp, int sz);
00160 int save_Buffer_file(Buffer buf, char* fn);
00161
00162
00163
00164 Buffer erase_bBuffer(Buffer buf, char* bin, int len);
00165 #define erase_Buffer(b, f) erase_bBuffer((b), (char*)((f).buf), (f).vldsz)
00166 #define erase_sBuffer(b, f) erase_bBuffer((b), (char*)(f), strlen(f))
00167
00168
00169
00170 Buffer replace_sBuffer_bystr(Buffer buf, const char* frm, const char* tos);
00171 int replace_sBuffer_file(char* fn, Buffer frm, Buffer tos);
00172 #define replace_sBuffer_str(buf, f, t) replace_sBuffer_bystr((buf), (f), (t))
00173 #define replace_sBuffer(buf, f, t) replace_sBuffer_bystr((buf), (f), (t))
00174
00175
00176
00177 void rewrite_sBuffer_bystr(Buffer* buf, const char* frm, const char* tos);
00178 #define rewrite_sBuffer_str(b, f, t) rewrite_sBuffer_bystr((b), (f), (t))
00179 #define rewrite_sBuffer(b, f, t) rewrite_sBuffer_bystr((b), (f), (t))
00180 #define rewrite_sBuffer_file(f, fr, to) replace_sBuffer_file((f), (fr), (to))
00181
00182
00183
00184 int save_Buffer_fp(Buffer, FILE*);
00185 Buffer read_Buffer_fp(FILE*);
00186 int save_Buffer2_fp(Buffer key, Buffer buf, FILE* fp);
00187 int read_Buffer2_fp(Buffer* key, Buffer* buf, FILE* fp);
00188
00189
00190
00191 char pop_char_ringStack(Buffer* buf);
00192 void push_char_ringStack(Buffer* buf, char cc);
00193
00194
00195
00196 #endif
00197