JunkBox_Lib++ (for Windows) 1.10.1
Loading...
Searching...
No Matches
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
35typedef 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)
66Buffer* new_Buffer(int sz);
67Buffer init_Buffer(void);
68Buffer make_Buffer(int sz);
69Buffer make_Buffer_bychar(unsigned char cc);
71Buffer set_Buffer(void* buf, int sz);
73Buffer rept_Buffer(unsigned char cc, int n);
74
75void expand_Buffer(Buffer* buf, int len);
76
77void del_Buffer(Buffer** buf);
78void free_Buffer(Buffer* buf);
79void clear_Buffer(Buffer* buf);
80
81int copy_Buffer(Buffer* src, Buffer* dst);
82int cat_Buffer (Buffer* src, Buffer* dst);
83int ins_Buffer (Buffer* src, Buffer* dst);
84
85int copy_b2Buffer(void* src, Buffer* dst, int sz);
86int cat_b2Buffer (void* src, Buffer* dst, int sz);
87int ins_b2Buffer (void* src, Buffer* dst, int sz);
88
89int copy_i2Buffer(int src, Buffer* dst);
90int cat_i2Buffer (int src, Buffer* dst);
91int ins_i2Buffer (int src, Buffer* dst);
92
93int copy_r2Buffer(float src, Buffer* dst);
94int cat_r2Buffer (float src, Buffer* dst);
95int 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// ツール
127void kanji_convert_Buffer(Buffer* mesg);
130
131Buffer encode_base64_Buffer_bin(unsigned char* bin, unsigned int sz, int nopad);
132
133Buffer encode_base64_filename_Buffer(Buffer buf, unsigned char cc);
134Buffer decode_base64_filename_Buffer(Buffer buf, unsigned char cc);
135
136Buffer get_line_Buffer(Buffer buf, int n);
137Buffer get_seq_data_Buffer(Buffer str, int* ptr);
138Buffer awk_Buffer (Buffer buf, char cc, int n);
139Buffer cawk_Buffer(Buffer buf, char cc, int n);
140Buffer pack_Buffer(Buffer buf, char cc);
141
142int cmp_Buffer(Buffer src, Buffer dst, int n);
143void chomp_Buffer(Buffer* buf);
144int isText_Buffer(Buffer buf);
147
148void 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
155Buffer randstr_Buffer(int n);
156Buffer randbit_Buffer(int n);
157
158// ファイルI/O
159int fgets_Buffer(Buffer* str, FILE* fp);
160int read_lines_Buffer(Buffer* str, FILE* fp);
161
162Buffer read_Buffer_file(const char* fn);
163Buffer read_Buffer_data(FILE* fp, int sz);
164int save_Buffer_file(Buffer buf, char* fn);
165
166// 文字削除
167Buffer 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// 文字列置換
172Buffer replace_sBuffer_bystr(Buffer buf, const char* frm, const char* tos);
173int 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自体を書き換える.
178void 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
183void rewrite_Buffer_bychar(Buffer* buf, const char frm, const char toc);
184
185// ヘッダ(書式)付き特殊ファイルI/O
186int save_Buffer_format_fp(Buffer, FILE*);
188int save_Buffer2_format_fp(Buffer key, Buffer buf, FILE* fp);
189int read_Buffer2_format_fp(Buffer* key, Buffer* buf, FILE* fp);
190
191// Buffer型を利用した 簡易char型リングスタック
192char pop_char_ringStack(Buffer* buf);
193void 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.cpp:804
int ins_Buffer(Buffer *src, Buffer *dst)
Buffer変数 dst の前に srcを挿入する.
Definition buffer.cpp:458
Buffer init_Buffer(void)
初期化したBuffer型変数を返す.
Definition buffer.cpp:47
int ins_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstの前に 挿入する.
Definition buffer.cpp:692
#define make_Buffer_randomstr(sz)
make_Buffer_randomstr()
Definition buffer.h:63
Buffer make_Buffer(int sz)
Buffer型変数のバッファ部をつくり出す.
Definition buffer.cpp:71
Buffer replace_sBuffer_bystr(Buffer buf, const char *frm, const char *tos)
buf.buf中の文字列 frmを tosで置き換えた 新しい Bufferを返す
Definition buffer.cpp:1603
Buffer get_line_Buffer(Buffer buf, int n)
複数行の文字列バッファから任意の行を取り出す.
Definition buffer.cpp:956
void clear_Buffer(Buffer *buf)
Buffer型変数 のバッファ部を 0クリアする.
Definition buffer.cpp:272
int fgets_Buffer(Buffer *str, FILE *fp)
拡張fgets.文字列の読み込みに使用する.改行コードは削除する
Definition buffer.cpp:1402
int read_Buffer2_format_fp(Buffer *key, Buffer *buf, FILE *fp)
ファイル fp から 2つのBuffer型変数の keyと bufを読み込む.
Definition buffer.cpp:1819
Buffer encode_base64_filename_Buffer(Buffer buf, unsigned char cc)
バイナリデータ bufを Base64で encodeしてファイル名を作る.ただし '/' は cc として扱う.
Definition buffer.cpp:909
Buffer randstr_Buffer(int n)
英数字を n個生成
Definition buffer.cpp:1199
void free_Buffer(Buffer *buf)
Buffer型変数のバッファ部を解放する
Definition buffer.cpp:128
Buffer randbit_Buffer(int n)
ビットを n個生成
Definition buffer.cpp:1224
char pop_char_ringStack(Buffer *buf)
簡易 char型 ringStack POP
Definition buffer.cpp:1855
void push_char_ringStack(Buffer *buf, char cc)
簡易 char型 ringStack PUSH
Definition buffer.cpp:1869
Buffer read_Buffer_file(const char *fn)
ファイル fn の内容を Buffer型変数に読み込む.
Definition buffer.cpp:1467
Buffer read_Buffer_data(FILE *fp, int sz)
ファイルポインタ fp から szバイトをBuffer型変数に読み込む.
Definition buffer.cpp:1497
void rewrite_Buffer_bychar(Buffer *buf, const char frm, const char toc)
buf.buf中の文字 frmを tocで置き換える
Definition buffer.cpp:1703
int save_Buffer_file(Buffer buf, char *fn)
ファイル fn へ Buffer型変数の buf部を書き込む
Definition buffer.cpp:1530
Buffer dup_Buffer(Buffer buf)
Buffer型変数のコピーをつくる.
Definition buffer.cpp:211
int copy_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstへ copyする.
Definition buffer.cpp:706
int copy_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstへ lenバイト copyする
Definition buffer.cpp:518
void kanji_convert_Buffer(Buffer *mesg)
大域変数 KanjiCode (tools.h) に従って漢字コードを変換する.
Definition buffer.cpp:1157
int ins_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstの前に 挿入する.
Definition buffer.cpp:734
int read_lines_Buffer(Buffer *str, FILE *fp)
複数文字列行の読み込み.文字列の読み込みに使用する
Definition buffer.cpp:1433
void expand_Buffer(Buffer *buf, int len)
buf のデータ部を lenに拡張した新しい Buffer を返す.
Definition buffer.cpp:253
Buffer rept_Buffer(unsigned char cc, int n)
文字 ccを n回繰り返したBuffer型データを返す.
Definition buffer.cpp:234
Buffer pack_Buffer(Buffer buf, char cc)
文字列の先頭のcc(複数),終わりのcc(複数),TAB, CR, LF を削除
Definition buffer.cpp:1134
void rewrite_sBuffer_bystr(Buffer *buf, const char *frm, const char *tos)
buf.buf自体を書き換えること以外は replace_sBuffer_bystr() と同じ
Definition buffer.cpp:1681
int isText_Buffer(Buffer buf)
Buffer型変数 bufのバッファ部がテキストかどうか検査する.
Definition buffer.cpp:1373
int copy_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstへ copyする.
Definition buffer.cpp:664
int replace_sBuffer_file(char *fn, Buffer frm, Buffer tos)
テキストファイル中の frm の文字列を tos に書き換える
Definition buffer.cpp:1652
int cat_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstへ lenバイト catする.
Definition buffer.cpp:585
void add_indent_Buffer(Buffer *buf, char cc, int num)
インデント(cc x num) を付加する.
Definition buffer.cpp:1327
Buffer read_Buffer_format_fp(FILE *)
ファイル fp から Buffer型変数の buf部を読み込む
Definition buffer.cpp:1783
int cat_r2Buffer(float src, Buffer *dst)
実数 srcを文字列に変換して,dstへ catする.
Definition buffer.cpp:720
int recalc_strlen_Buffer(Buffer *buf)
Buffer型変数のデータ部を文字列と見なして,その長さを返す.
Definition buffer.cpp:1310
Buffer decode_base64_Buffer(Buffer buf)
strのバッファを Base64からデコードする
Definition buffer.cpp:850
Buffer make_Buffer_bychar(unsigned char cc)
文字から,Buffer型変数のバッファ部をつくり出す.
Definition buffer.cpp:108
void chomp_Buffer(Buffer *buf)
最初の改行コード以降を無視する.
Definition buffer.cpp:1347
int cmp_Buffer(Buffer src, Buffer dst, int n)
バッファ部の比較.
Definition buffer.cpp:762
Buffer set_Buffer(void *buf, int sz)
Buffer型変数のバッファ部を新しく作り, そのバッファに bufをコピーする.
Definition buffer.cpp:170
int cat_Buffer(Buffer *src, Buffer *dst)
Buffer変数 srcから dstへバッファを catする.
Definition buffer.cpp:384
Buffer encode_base64_Buffer_bin(unsigned char *bin, unsigned int sz, int nopad)
sz バイトの バイナリデータ binを Base64にエンコード する.
Definition buffer.cpp:881
int cat_i2Buffer(int src, Buffer *dst)
整数 srcを文字列に変換して,dstへ catする.
Definition buffer.cpp:678
void del_Buffer(Buffer **buf)
new_Buffer()で作り出した Buffer型変数を削除する.
Definition buffer.cpp:148
Buffer awk_Buffer(Buffer buf, char cc, int n)
Buffer文字列に対する awk.
Definition buffer.cpp:1050
int ins_b2Buffer(void *src, Buffer *dst, int sz)
任意のバイナリデータsrcを Buffer型変数dstの前に lenバイト挿入する
Definition buffer.cpp:636
Buffer * new_Buffer(int sz)
空のBuffer型変数を生成する.
Definition buffer.cpp:23
int save_Buffer_format_fp(Buffer, FILE *)
ファイル fp へ Buffer型変数の buf部を書き込む
Definition buffer.cpp:1759
int copy_Buffer(Buffer *src, Buffer *dst)
Buffer型変数 srcから dstへバッファをコピーする.
Definition buffer.cpp:315
Buffer get_seq_data_Buffer(Buffer str, int *ptr)
複数行の文字列バッファ内の行データをシーケンシャルに取り出す.
Definition buffer.cpp:1003
Buffer erase_bBuffer(Buffer buf, char *bin, int len)
buf.buf 中にある bin のデータ(各1Byte,順不同)を削除する.
Definition buffer.cpp:1562
Buffer cawk_Buffer(Buffer buf, char cc, int n)
Buffer文字列に対する(変形の)awk.
Definition buffer.cpp:1094
int save_Buffer2_format_fp(Buffer key, Buffer buf, FILE *fp)
ファイル fp へ 2つのBuffer型変数 keyと bufを書き込む
Definition buffer.cpp:1733
Buffer decode_base64_filename_Buffer(Buffer buf, unsigned char cc)
bufを Base64で decodeしてバイナリデータを取り出す.ただし cc は '/' として扱う.
Definition buffer.cpp:929
Buffer dump_Buffer(Buffer buf)
Buffer型変数のデバッグ用 16進を Buffer型変数に出力する.
Definition buffer.cpp:1254
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
汎用ツールヘッダ