a4_0003
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* acl4のページ0003
-(by [[K]], 2026.01.28)
** (1)
#if (a_Version >= 1)
#define VecChr a_VecChr
#define VecChr_ini a_VecChr_ini
#define VecChr_ini4 a_VecChr_ini4
#define VecChr_din a_VecChr_din
#define VecChr_din4 a_VecChr_din4
#define VecChr_reserve a_VecChr_reserve
#define VecChr_resize a_VecChr_resize
#define VecChr_resizeDiff a_VecChr_resizeDiff
#define VecChr_reserveDiff a_VecChr_reserveDiff
#define VecChr_reserve0 a_VecChr_reserve0
#define VecChr_align a_VecChr_align
#define VecChr_shrink a_VecChr_shrink
#endif
a_class(a_VecChr) {
char *p;
intptr_t n, n1;
};
a_static void a_VecChr_ini(a_VecChr *w) { w->p = NULL; w...
a_static void a_VecChr_ini4(a_VecChr *w0, a_VecChr *w1, ...
{
if (w0 != NULL) a_VecChr_ini(w0);
if (w1 != NULL) a_VecChr_ini(w1);
if (w2 != NULL) a_VecChr_ini(w2);
if (w3 != NULL) a_VecChr_ini(w3);
}
a_static void a_VecChr_din(a_VecChr *w) { a_free(_arg_ ...
a_static void a_VecChr_din4(a_VecChr *w0, a_VecChr *w1, ...
{
if (w0 != NULL) a_VecChr_din(w0);
if (w1 != NULL) a_VecChr_din(w1);
if (w2 != NULL) a_VecChr_din(w2);
if (w3 != NULL) a_VecChr_din(w3);
}
a_static void a_VecChr_reserve(a_VecChr *w, intptr_t n)
{
if (w->n1 < n) {
intptr_t n1 = w->n1;
if (n1 < 16/2) n1 = 16/2;
do {
n1 *= 2;
} while (n1 < n);
w->p = a_realloc(_arg_ w->p, w->n1, n1);
w->n1 = n1;
}
}
a_static void a_VecChr_resize(_argDef_ a_VecChr *w, int...
{
#if (a_DbgLv >= 2)
if (n < 0)
a_errExit("%s(%d): VecChr_resize: bad size: ...
#endif
a_VecChr_reserve(w, n); w->n = n;
}
a_static void a_VecChr_resizeDiff(_argDef_ a_VecChr *w,...
{
#if (a_DbgLv >= 2)
if (w->n + d < 0)
a_errExit("%s(%d): a_VecChr_resizeDiff: bad ...
#endif
a_VecChr_resize(_arg_ w, w->n + d);
}
a_static void a_VecChr_reserveDiff(a_VecChr *w, intptr_t...
a_static void a_VecChr_reserve0(a_VecChr *w) { a_VecChr_...
a_static void a_VecChr_align(_argDef_ a_VecChr *w, intp...
{
#if (a_DbgLv >= 2)
if (a <= 0 || (a & (a - 1)) != 0)
a_errExit("%s(%d): VecChr_align: bad align: ...
#endif
while ((w->n & (a - 1)) > 0) {
a_VecChr_resizeDiff(_arg_ w, 1);
w->p[w->n - 1] = '\0';
}
}
a_static void a_VecChr_shrink(_argDef_ a_VecChr *w, int...
{
#if (a_DbgLv >= 2)
if (r < 0)
a_errExit("%s(%d): VecChr_shrink: bad reserv...
#endif
w->p = a_realloc(_arg_ w->p, w->n1, w->n + r);
w->n1 = w->n + r;
}
** (2) VecChr
-私の大好きな自動伸長型のchar配列です。C++の vector<char>...
-ini (init): 初期化です。
-din (deinit): 解放です。
-ini4, din4: 初期化や解放をたくさんやることがあるので、4...
-reserve: 必要に応じてreallocをして、指定したサイズまで使...
-resize: サイズを指定しますが、これは C++ の vector を真...
-resizeDiff: resizeを指定するときに、現在のsizeに対しての...
-reserveDiff: reserveを指定するときに、現在のsizeに対して...
-reserve0: VecChrで文字列を生成することがよくあります。そ...
-align: バイナリデータを作ったりするときには、アライン機...
-shrink (shrink_to_fit): 現在のsizeに合わせて配列長を縮小...
-ここまでだけでみると、これがなんでそんなに便利なんだ?っ...
** (99) 更新履歴
-2026.01.28(水) 初版。
-2026.01.30(金) VecChr_pushは使わないので削除。
終了行:
* acl4のページ0003
-(by [[K]], 2026.01.28)
** (1)
#if (a_Version >= 1)
#define VecChr a_VecChr
#define VecChr_ini a_VecChr_ini
#define VecChr_ini4 a_VecChr_ini4
#define VecChr_din a_VecChr_din
#define VecChr_din4 a_VecChr_din4
#define VecChr_reserve a_VecChr_reserve
#define VecChr_resize a_VecChr_resize
#define VecChr_resizeDiff a_VecChr_resizeDiff
#define VecChr_reserveDiff a_VecChr_reserveDiff
#define VecChr_reserve0 a_VecChr_reserve0
#define VecChr_align a_VecChr_align
#define VecChr_shrink a_VecChr_shrink
#endif
a_class(a_VecChr) {
char *p;
intptr_t n, n1;
};
a_static void a_VecChr_ini(a_VecChr *w) { w->p = NULL; w...
a_static void a_VecChr_ini4(a_VecChr *w0, a_VecChr *w1, ...
{
if (w0 != NULL) a_VecChr_ini(w0);
if (w1 != NULL) a_VecChr_ini(w1);
if (w2 != NULL) a_VecChr_ini(w2);
if (w3 != NULL) a_VecChr_ini(w3);
}
a_static void a_VecChr_din(a_VecChr *w) { a_free(_arg_ ...
a_static void a_VecChr_din4(a_VecChr *w0, a_VecChr *w1, ...
{
if (w0 != NULL) a_VecChr_din(w0);
if (w1 != NULL) a_VecChr_din(w1);
if (w2 != NULL) a_VecChr_din(w2);
if (w3 != NULL) a_VecChr_din(w3);
}
a_static void a_VecChr_reserve(a_VecChr *w, intptr_t n)
{
if (w->n1 < n) {
intptr_t n1 = w->n1;
if (n1 < 16/2) n1 = 16/2;
do {
n1 *= 2;
} while (n1 < n);
w->p = a_realloc(_arg_ w->p, w->n1, n1);
w->n1 = n1;
}
}
a_static void a_VecChr_resize(_argDef_ a_VecChr *w, int...
{
#if (a_DbgLv >= 2)
if (n < 0)
a_errExit("%s(%d): VecChr_resize: bad size: ...
#endif
a_VecChr_reserve(w, n); w->n = n;
}
a_static void a_VecChr_resizeDiff(_argDef_ a_VecChr *w,...
{
#if (a_DbgLv >= 2)
if (w->n + d < 0)
a_errExit("%s(%d): a_VecChr_resizeDiff: bad ...
#endif
a_VecChr_resize(_arg_ w, w->n + d);
}
a_static void a_VecChr_reserveDiff(a_VecChr *w, intptr_t...
a_static void a_VecChr_reserve0(a_VecChr *w) { a_VecChr_...
a_static void a_VecChr_align(_argDef_ a_VecChr *w, intp...
{
#if (a_DbgLv >= 2)
if (a <= 0 || (a & (a - 1)) != 0)
a_errExit("%s(%d): VecChr_align: bad align: ...
#endif
while ((w->n & (a - 1)) > 0) {
a_VecChr_resizeDiff(_arg_ w, 1);
w->p[w->n - 1] = '\0';
}
}
a_static void a_VecChr_shrink(_argDef_ a_VecChr *w, int...
{
#if (a_DbgLv >= 2)
if (r < 0)
a_errExit("%s(%d): VecChr_shrink: bad reserv...
#endif
w->p = a_realloc(_arg_ w->p, w->n1, w->n + r);
w->n1 = w->n + r;
}
** (2) VecChr
-私の大好きな自動伸長型のchar配列です。C++の vector<char>...
-ini (init): 初期化です。
-din (deinit): 解放です。
-ini4, din4: 初期化や解放をたくさんやることがあるので、4...
-reserve: 必要に応じてreallocをして、指定したサイズまで使...
-resize: サイズを指定しますが、これは C++ の vector を真...
-resizeDiff: resizeを指定するときに、現在のsizeに対しての...
-reserveDiff: reserveを指定するときに、現在のsizeに対して...
-reserve0: VecChrで文字列を生成することがよくあります。そ...
-align: バイナリデータを作ったりするときには、アライン機...
-shrink (shrink_to_fit): 現在のsizeに合わせて配列長を縮小...
-ここまでだけでみると、これがなんでそんなに便利なんだ?っ...
** (99) 更新履歴
-2026.01.28(水) 初版。
-2026.01.30(金) VecChr_pushは使わないので削除。
ページ名: