JunkBox_Lib  1.10.2
buffer.h
Go to the documentation of this file.
1 #ifndef __JBXL_BUFFER_H_
2 #define __JBXL_BUFFER_H_
3 
13 #include "tools.h"
14 
15 
35 typedef struct _Buffer {
36  int bufsz;
37  int vldsz;
38  int state;
39  unsigned char* buf;
40 } Buffer;
41 
42 
43 #define BUFFER_FACT (1.3)
44 
45 
57 #define make_Buffer_bystr(str) set_Buffer((void*)(str), -1)
58 #define make_Buffer_bybin(str, len) set_Buffer((void*)(str), (len))
59 #define make_Buffer_byrandomstr(sz) make_Buffer_randomstr(sz)
60 
61 #define make_Buffer_str(str) set_Buffer((void*)(str), -1)
62 #define make_Buffer_bin(str, len) set_Buffer((void*)(str), (len))
63 #define make_Buffer_randomstr(sz) make_Buffer_randomstr(sz)
64 
65 // new_Buffer() -> new_Buffer(0)
66 Buffer* new_Buffer(int sz);
67 Buffer init_Buffer(void);
68 Buffer make_Buffer(int sz);
69 Buffer make_Buffer_bychar(unsigned char cc);
71 Buffer set_Buffer(void* buf, int sz);
73 Buffer rept_Buffer(unsigned char cc, int n);
74 
75 void expand_Buffer(Buffer* buf, int len);
76 
77 void del_Buffer(Buffer** buf);
78 void free_Buffer(Buffer* buf);
79 void clear_Buffer(Buffer* buf);
80 
81 int copy_Buffer(Buffer* src, Buffer* dst);
82 int cat_Buffer (Buffer* src, Buffer* dst);
83 int ins_Buffer (Buffer* src, Buffer* dst);
84 
85 int copy_b2Buffer(void* src, Buffer* dst, int sz);
86 int cat_b2Buffer (void* src, Buffer* dst, int sz);
87 int ins_b2Buffer (void* src, Buffer* dst, int sz);
88 
89 int copy_i2Buffer(int src, Buffer* dst);
90 int cat_i2Buffer (int src, Buffer* dst);
91 int ins_i2Buffer (int src, Buffer* dst);
92 
93 int copy_r2Buffer(float src, Buffer* dst);
94 int cat_r2Buffer (float src, Buffer* dst);
95 int ins_r2Buffer (float src, Buffer* dst);
96 
108 #define copy_s2Buffer(src, dst) copy_b2Buffer((void*)(src), (dst), -1)
109 
110 
122 #define cat_s2Buffer(src, dst) cat_b2Buffer( (void*)(src), (dst), -1)
123 #define ins_s2Buffer(src, dst) ins_b2Buffer( (void*)(src), (dst), -1)
124 
125 
126 // ツール
127 void kanji_convert_Buffer(Buffer* mesg);
130 
131 Buffer encode_base64_Buffer_bin(unsigned char* bin, unsigned int sz, int nopad);
132 
133 Buffer encode_base64_filename_Buffer(Buffer buf, unsigned char cc);
134 Buffer decode_base64_filename_Buffer(Buffer buf, unsigned char cc);
135 
137 Buffer get_seq_data_Buffer(Buffer str, int* ptr);
138 Buffer awk_Buffer (Buffer buf, char cc, int n);
139 Buffer cawk_Buffer(Buffer buf, char cc, int n);
140 Buffer pack_Buffer(Buffer buf, char cc);
141 
142 int cmp_Buffer(Buffer src, Buffer dst, int n);
143 void chomp_Buffer(Buffer* buf);
144 int isText_Buffer(Buffer buf);
147 
148 void add_indent_Buffer(Buffer* buf, char cc, int num);
149 
150 #define strcmp_Buffer(a, b) cmp_Buffer((a), (b), 0)
151 #define strncmp_Buffer(a, b, n) cmp_Buffer((a), (b), (n))
152 #define bincmp_Buffer(a, b) cmp_Buffer((a), (b), 0)
153 #define binncmp_Buffer(a, b, n) cmp_Buffer((a), (b), (n))
154 
155 Buffer randstr_Buffer(int n);
156 Buffer randbit_Buffer(int n);
157 
158 // ファイルI/O
159 int fgets_Buffer(Buffer* str, FILE* fp);
160 int read_lines_Buffer(Buffer* str, FILE* fp);
161 
162 Buffer read_Buffer_file(const char* fn);
163 Buffer read_Buffer_data(FILE* fp, int sz);
164 int save_Buffer_file(Buffer buf, char* fn);
165 
166 // 文字削除
167 Buffer erase_bBuffer(Buffer buf, char* bin, int len);
168 #define erase_Buffer(b, f) erase_bBuffer((b), (char*)((f).buf), (f).vldsz)
169 #define erase_sBuffer(b, f) erase_bBuffer((b), (char*)(f), -1)
170 
171 // 文字列置換
172 Buffer replace_sBuffer_bystr(Buffer buf, const char* frm, const char* tos);
173 int replace_sBuffer_file(char* fn, Buffer frm, Buffer tos);
174 #define replace_sBuffer_str(buf, f, t) replace_sBuffer_bystr((buf), (f), (t))
175 #define replace_sBuffer(buf, f, t) replace_sBuffer_bystr((buf), (f), (t))
176 
177 // buf.buf自体を書き換える.
178 void rewrite_sBuffer_bystr(Buffer* buf, const char* frm, const char* tos);
179 #define rewrite_sBuffer_str(b, f, t) rewrite_sBuffer_bystr((b), (f), (t))
180 #define rewrite_sBuffer(b, f, t) rewrite_sBuffer_bystr((b), (f), (t))
181 #define rewrite_sBuffer_file(f, fr, to) replace_sBuffer_file((f), (fr), (to))
182 
183 void rewrite_Buffer_bychar(Buffer* buf, const char frm, const char toc);
184 
185 // ヘッダ(書式)付き特殊ファイルI/O
186 int save_Buffer_format_fp(Buffer, FILE*);
188 int save_Buffer2_format_fp(Buffer key, Buffer buf, FILE* fp);
189 int read_Buffer2_format_fp(Buffer* key, Buffer* buf, FILE* fp);
190 
191 // Buffer型を利用した 簡易char型リングスタック
193 void push_char_ringStack(Buffer* buf, char cc);
194 
195 
196 #endif
197 
Buffer encode_base64_Buffer(Buffer buf)
バイナリデータ buf.bufの buf.vldszバイトを Base64にエンコード する
Definition: buffer.c:804
int ins_Buffer(Buffer *src, Buffer *dst)
Buffer変数 dst の前に srcを挿入する.
Definition: buffer.c:458
Buffer init_Buffer(void)
初期化したBuffer型変数を返す.
Definition: buffer.c:47
int ins_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstの前に 挿入する.
Definition: buffer.c:692
#define make_Buffer_randomstr(sz)
make_Buffer_randomstr()
Definition: buffer.h:63
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
Definition: buffer.c:71
Buffer replace_sBuffer_bystr(Buffer buf, const char *frm, const char *tos)
buf.buf中の文字列 frmを tosで置き換えた 新しい Bufferを返す
Definition: buffer.c:1603
Buffer get_line_Buffer(Buffer buf, int n)
複数行の文字列バッファから任意の行を取り出す.
Definition: buffer.c:956
void clear_Buffer(Buffer *buf)
Buffer型変数 のバッファ部を 0クリアする.
Definition: buffer.c:272
int fgets_Buffer(Buffer *str, FILE *fp)
拡張fgets.文字列の読み込みに使用する.改行コードは削除する
Definition: buffer.c:1402
int read_Buffer2_format_fp(Buffer *key, Buffer *buf, FILE *fp)
ファイル fp から 2つのBuffer型変数の keyと bufを読み込む.
Definition: buffer.c:1819
Buffer encode_base64_filename_Buffer(Buffer buf, unsigned char cc)
バイナリデータ bufを Base64で encodeしてファイル名を作る.ただし '/' は cc として扱う.
Definition: buffer.c:909
Buffer randstr_Buffer(int n)
英数字を n個生成
Definition: buffer.c:1199
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Definition: buffer.c:128
Buffer randbit_Buffer(int n)
ビットを n個生成
Definition: buffer.c:1224
char pop_char_ringStack(Buffer *buf)
簡易 char型 ringStack POP
Definition: buffer.c:1855
void push_char_ringStack(Buffer *buf, char cc)
簡易 char型 ringStack PUSH
Definition: buffer.c:1869
Buffer read_Buffer_file(const char *fn)
ファイル fn の内容を Buffer型変数に読み込む.
Definition: buffer.c:1467
Buffer read_Buffer_data(FILE *fp, int sz)
ファイルポインタ fp から szバイトをBuffer型変数に読み込む.
Definition: buffer.c:1497
void rewrite_Buffer_bychar(Buffer *buf, const char frm, const char toc)
buf.buf中の文字 frmを tocで置き換える
Definition: buffer.c:1703
int save_Buffer_file(Buffer buf, char *fn)
ファイル fn へ Buffer型変数の buf部を書き込む
Definition: buffer.c:1530
Buffer dup_Buffer(Buffer buf)
Buffer型変数のコピーをつくる.
Definition: buffer.c:211
int copy_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstへ copyする.
Definition: buffer.c:706
int copy_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstへ lenバイト copyする
Definition: buffer.c:518
Buffer * new_Buffer(int sz)
空のBuffer型変数を生成する.
Definition: buffer.c:23
void kanji_convert_Buffer(Buffer *mesg)
大域変数 KanjiCode (tools.h) に従って漢字コードを変換する.
Definition: buffer.c:1157
int ins_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstの前に 挿入する.
Definition: buffer.c:734
int read_lines_Buffer(Buffer *str, FILE *fp)
複数文字列行の読み込み.文字列の読み込みに使用する
Definition: buffer.c:1433
void expand_Buffer(Buffer *buf, int len)
buf のデータ部を lenに拡張した新しい Buffer を返す.
Definition: buffer.c:253
Buffer rept_Buffer(unsigned char cc, int n)
文字 ccを n回繰り返したBuffer型データを返す.
Definition: buffer.c:234
Buffer pack_Buffer(Buffer buf, char cc)
文字列の先頭のcc(複数),終わりのcc(複数),TAB, CR, LF を削除
Definition: buffer.c:1134
void rewrite_sBuffer_bystr(Buffer *buf, const char *frm, const char *tos)
buf.buf自体を書き換えること以外は replace_sBuffer_bystr() と同じ
Definition: buffer.c:1681
int isText_Buffer(Buffer buf)
Buffer型変数 bufのバッファ部がテキストかどうか検査する.
Definition: buffer.c:1373
int copy_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstへ copyする.
Definition: buffer.c:664
int replace_sBuffer_file(char *fn, Buffer frm, Buffer tos)
テキストファイル中の frm の文字列を tos に書き換える
Definition: buffer.c:1652
int cat_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstへ lenバイト catする.
Definition: buffer.c:585
void add_indent_Buffer(Buffer *buf, char cc, int num)
インデント(cc x num) を付加する.
Definition: buffer.c:1327
Buffer read_Buffer_format_fp(FILE *)
ファイル fp から Buffer型変数の buf部を読み込む
Definition: buffer.c:1783
int cat_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstへ catする.
Definition: buffer.c:720
int recalc_strlen_Buffer(Buffer *buf)
Buffer型変数のデータ部を文字列と見なして,その長さを返す.
Definition: buffer.c:1310
Buffer decode_base64_Buffer(Buffer buf)
strのバッファを Base64からデコードする
Definition: buffer.c:850
Buffer make_Buffer_bychar(unsigned char cc)
文字から,Buffer型変数のバッファ部をつくり出す.
Definition: buffer.c:108
void chomp_Buffer(Buffer *buf)
最初の改行コード以降を無視する.
Definition: buffer.c:1347
int cmp_Buffer(Buffer src, Buffer dst, int n)
バッファ部の比較.
Definition: buffer.c:762
Buffer set_Buffer(void *buf, int sz)
Buffer型変数のバッファ部を新しく作り, そのバッファに bufをコピーする.
Definition: buffer.c:170
int cat_Buffer(Buffer *src, Buffer *dst)
Buffer変数 srcから dstへバッファを catする.
Definition: buffer.c:384
Buffer encode_base64_Buffer_bin(unsigned char *bin, unsigned int sz, int nopad)
sz バイトの バイナリデータ binを Base64にエンコード する.
Definition: buffer.c:881
int cat_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstへ catする.
Definition: buffer.c:678
void del_Buffer(Buffer **buf)
new_Buffer()で作り出した Buffer型変数を削除する.
Definition: buffer.c:148
Buffer awk_Buffer(Buffer buf, char cc, int n)
Buffer文字列に対する awk.
Definition: buffer.c:1050
int ins_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstの前に lenバイト挿入する
Definition: buffer.c:636
int save_Buffer_format_fp(Buffer, FILE *)
ファイル fp へ Buffer型変数の buf部を書き込む
Definition: buffer.c:1759
int copy_Buffer(Buffer *src, Buffer *dst)
Buffer型変数 srcから dstへバッファをコピーする.
Definition: buffer.c:315
Buffer get_seq_data_Buffer(Buffer str, int *ptr)
複数行の文字列バッファ内の行データをシーケンシャルに取り出す.
Definition: buffer.c:1003
Buffer erase_bBuffer(Buffer buf, char *bin, int len)
buf.buf 中にある bin のデータ(各1Byte,順不同)を削除する.
Definition: buffer.c:1562
Buffer cawk_Buffer(Buffer buf, char cc, int n)
Buffer文字列に対する(変形の)awk.
Definition: buffer.c:1094
int save_Buffer2_format_fp(Buffer key, Buffer buf, FILE *fp)
ファイル fp へ 2つのBuffer型変数 keyと bufを書き込む
Definition: buffer.c:1733
Buffer decode_base64_filename_Buffer(Buffer buf, unsigned char cc)
bufを Base64で decodeしてバイナリデータを取り出す.ただし cc は '/' として扱う.
Definition: buffer.c:929
Buffer dump_Buffer(Buffer buf)
Buffer型変数のデバッグ用 16進を Buffer型変数に出力する.
Definition: buffer.c:1254
unsigned char ** buf
Definition: jpeg_tool.h:96
unsigned char unsigned long * len
Definition: jpeg_tool.h:96
Definition: buffer.h:35
int bufsz
確保してあるバッファの大きさ - 1.
Definition: buffer.h:36
int vldsz
データの長さ.バイナリデータの場合も使用可能.文字列の場合は 0x00 を含まない.
Definition: buffer.h:37
int state
変数の状態を表す.正常は JBXL_NORMAL
Definition: buffer.h:38
unsigned char * buf
バッファの先頭へのポインタ.str[bufsz]は必ず 0x00となる.
Definition: buffer.h:39
汎用ツールヘッダ