a25_acl3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* acl3 : A C-lang Library ver.3
-(by [[K]], 2025.05.05)
** 基本方針
-mainは置き換えない。AComArgも使わない。・・・おかげで癖...
-[1]まず開発の際にはメモリリークなどを早期に発見したいで...
-[2]次に可変長型のバッファを簡単に扱えるクラスを用意しま...
-[3]私は言語などを作る時に「ファイルからソースコードを読...
-[4]これを容易に実現するために、ファイルの内容をメモリに...
** 各種短縮表記
|Ai|intptr_t|
|Ap|void *|
|As|static|
|Av|void|
|AStr|char *|
|ACStr|const char *|
** AM (malloc, free, reallocの代用)
-Ap ''AM_alc''(AM *w, AM_Vt *v, Ai n)
--malloc(n)の代用。wやvはシステムが提供しているものをその...
-Av ''AM_fre''(AM *w, AM_Vt *v, Ap p, Ai n)
--free(p)の代用。nはAM_alc()したときと同じ値を渡す。直前...
-Ap ''AM_rlc''(AM *w, AM_Vt *v, Ap p, Ai n0, Ai n1)
--realloc(p, n1)の代用。n0はAM_alc()したときと同じ値を渡...
** AX (サイズ可変メモリ) (旧名:AExpMem)
-''AX_ini''(AX *w)
--コンストラクタ。
--コンストラクタを呼んだ直後にw->mとw->mvを上書きすれば、...
-''AX_dst''(AX *w)
--デストラクタ。
-Av ''AX_ini4''(AX *x0, AX *x1, AX *x2, AX *x3)
--x0~x3をiniするだけ。x2やx3にNULLを指定すれば、それは無...
-Av ''AX_dst4''(AX *x0, AX *x1, AX *x2, AX *x3)
--x0~x3をdstするだけ。x2やx3にNULLを指定すれば、それは無...
-Av ''AX_rsv''(AX *w, Ai n)
--w->p + w->n からnバイトをリザーブして、自由に読み書きで...
--書き込みが済んだら w->n を更新するのを忘れずに。
-Av ''AX_putc''(AX *w, char c)
--1バイト書き込み(AX_rsv(1)して、cを書いて、n++する)。
-Av ''AX_puts0''(AX *x, Ap s, Ai n)
--nバイト書き込み。
-Av ''AX_puts''(AX *x, ACStr s)
--AX_puts0(x, s, strlen(s));する。
-Ai ''AX_fread''(AX *x, FILE *fp)
--ファイルをEOFまで読み込んでメモリに格納。読み込んだバイ...
-Av ''AX_fread1''(AX *x, ACStr path, Ai flg)
--AOpen(path, "rb")してfread()してfclose()する。
--pathが"-"の場合は、stdinからfreadする。
--flg:4=freadに先立って、AXの中身を空にする。この指定がな...
--flg:2=リードした結果メモリ内にCR(0x0d)の文字がある場...
--flg:1=ファイル読み取り後に AX_putc('\n'); する。
//--flg:1=ファイル読み取り後に AX_putc('\0'); する。
-Av ''AX_fwrite1''(AX *x, ACStr path, ACStr mod)
--AOpen()してfwrite()してfclose()する。
--pathが"-"の場合は、stdoutへfwriteする。
--x->pからx->nバイトをファイルに出力。
-Av ''AX_gets0''(AX *x, Ap s, Ai n)
--sからnバイトの内容からなる文字列をAX上に作る。末尾に'\0...
-AStr ''AX_gets''(AX *x, ACStr s)
--s1 = Astrchr1(s, '\n', 3); AX_gets0(x, s, s1 - s); AX_p...
-Ai ''AX_printrf''(AX *x, ACStr fmt, ...)
--printfの出力先がAXになったもの。
** ATokenMgr (文字列にIDを割り当てる)
-''ATokenMgr_ini''(ATokenMgr *w)
--コンストラクタ。
--コンストラクタを呼んだ直後にw->mとw->mvを上書きすれば、...
-''ATokenMgr_dst''(ATokenMgr *w)
--デストラクタ。
-Ai ''ATokenMgr_s2i''(ATokenMgr *w, ACStr s, Ai n)
--sからのn文字の文字列に対応する整数(=トークン番号)を...
--内部で二分探索しているので、比較的高速に結果を返すこと...
-AStr ''ATokenMgr_i2s''(ATokenMgr *w, Ai i)
--トークン番号を渡すと対応する文字列を返す。
** string系拡張
-AStr ''Astrstr1''(ACStr s, ACStr t, Ai flg)
--基本的にはstrstr()と同じ。
--flg:2=文字列が見つかった場合、strlen(t)を加算してから返...
--flg:1=文字列が見つからない場合、s + strlen(s)を返す。
-AStr ''Astrchr1''(ACStr s, char c, Ai flg)
--Astrstr1()のstrchr()版。
** 言語処理系用
-AStr ''AskpSpc''(ACStr s)
--スペース類を読み飛ばす。
-AStr ''AskpLiteral''(ACStr s, char t)
--文字tが現れるまで読み飛ばす。返すポインタはtが見つかっ...
-AStr ''AskpParenthesis''(ACStr s, char p0, char p1, Ai f...
--sの位置にあるカッコに対応する閉じカッコを探す。p0に'('...
--返されるポインタはp1の次を指している。対応するカッコを...
--flg:1=処理中に文字列リテラルを見つけた場合、AskpLiteral...
--flg:2=flg:1の処理でエラーがあった場合、これを無視して続...
--flg:4=「//」のコメントを見つけた場合は、行末まで読み飛...
-AStr ''AskpParenthesis1''(ACStr s, Ai flg)
--sの位置にあるカッコの種類に応じて、p0とp1を自動設定した...
-Ai ''AnamLen''(ACStr s)
--sで始まる文字列が変数名か関数名であった場合、その名前の...
-Ai ''AnamLen1''(ACStr s, ACStr t)
--AnamLen()に、さらに変数名・関数名に許す文字を追加した状...
-int ''AnamCmp''(ACStr s, ACStr t, Ai l)
--AnamLen()でlを獲得したら、AnamCmp("abc", s, l)で名前がa...
--strncmp(s, "abc", 3)==0で比較すると、s上でabcdってなっ...
** バイナリ系
-Av ''AputBytes''(Auc *p, Ai i, Ai s0, Ai s1, Ai s2, Ai s3)
--iの値をp[0], p[1], p[2], p[3]に書き込む。その際にs0~s3...
--対応するsの値が-1の場合は、書き込みを行わない。
-Ai ''AgetBytes''(Auc *p, Ai s0, Ai s1, Ai s2, Ai s3)
--p[0]~p[3]を読み込んで、s0~s3の値だけシフトしてORして...
--対応するsの値が-1の場合は、読み込みを行わない。
** そのほか
-FILE *''AOpen''(ACStr path, ACStr mod)
--fopen()の代わり。fopenがNULLを返した場合は適当なエラー...
終了行:
* acl3 : A C-lang Library ver.3
-(by [[K]], 2025.05.05)
** 基本方針
-mainは置き換えない。AComArgも使わない。・・・おかげで癖...
-[1]まず開発の際にはメモリリークなどを早期に発見したいで...
-[2]次に可変長型のバッファを簡単に扱えるクラスを用意しま...
-[3]私は言語などを作る時に「ファイルからソースコードを読...
-[4]これを容易に実現するために、ファイルの内容をメモリに...
** 各種短縮表記
|Ai|intptr_t|
|Ap|void *|
|As|static|
|Av|void|
|AStr|char *|
|ACStr|const char *|
** AM (malloc, free, reallocの代用)
-Ap ''AM_alc''(AM *w, AM_Vt *v, Ai n)
--malloc(n)の代用。wやvはシステムが提供しているものをその...
-Av ''AM_fre''(AM *w, AM_Vt *v, Ap p, Ai n)
--free(p)の代用。nはAM_alc()したときと同じ値を渡す。直前...
-Ap ''AM_rlc''(AM *w, AM_Vt *v, Ap p, Ai n0, Ai n1)
--realloc(p, n1)の代用。n0はAM_alc()したときと同じ値を渡...
** AX (サイズ可変メモリ) (旧名:AExpMem)
-''AX_ini''(AX *w)
--コンストラクタ。
--コンストラクタを呼んだ直後にw->mとw->mvを上書きすれば、...
-''AX_dst''(AX *w)
--デストラクタ。
-Av ''AX_ini4''(AX *x0, AX *x1, AX *x2, AX *x3)
--x0~x3をiniするだけ。x2やx3にNULLを指定すれば、それは無...
-Av ''AX_dst4''(AX *x0, AX *x1, AX *x2, AX *x3)
--x0~x3をdstするだけ。x2やx3にNULLを指定すれば、それは無...
-Av ''AX_rsv''(AX *w, Ai n)
--w->p + w->n からnバイトをリザーブして、自由に読み書きで...
--書き込みが済んだら w->n を更新するのを忘れずに。
-Av ''AX_putc''(AX *w, char c)
--1バイト書き込み(AX_rsv(1)して、cを書いて、n++する)。
-Av ''AX_puts0''(AX *x, Ap s, Ai n)
--nバイト書き込み。
-Av ''AX_puts''(AX *x, ACStr s)
--AX_puts0(x, s, strlen(s));する。
-Ai ''AX_fread''(AX *x, FILE *fp)
--ファイルをEOFまで読み込んでメモリに格納。読み込んだバイ...
-Av ''AX_fread1''(AX *x, ACStr path, Ai flg)
--AOpen(path, "rb")してfread()してfclose()する。
--pathが"-"の場合は、stdinからfreadする。
--flg:4=freadに先立って、AXの中身を空にする。この指定がな...
--flg:2=リードした結果メモリ内にCR(0x0d)の文字がある場...
--flg:1=ファイル読み取り後に AX_putc('\n'); する。
//--flg:1=ファイル読み取り後に AX_putc('\0'); する。
-Av ''AX_fwrite1''(AX *x, ACStr path, ACStr mod)
--AOpen()してfwrite()してfclose()する。
--pathが"-"の場合は、stdoutへfwriteする。
--x->pからx->nバイトをファイルに出力。
-Av ''AX_gets0''(AX *x, Ap s, Ai n)
--sからnバイトの内容からなる文字列をAX上に作る。末尾に'\0...
-AStr ''AX_gets''(AX *x, ACStr s)
--s1 = Astrchr1(s, '\n', 3); AX_gets0(x, s, s1 - s); AX_p...
-Ai ''AX_printrf''(AX *x, ACStr fmt, ...)
--printfの出力先がAXになったもの。
** ATokenMgr (文字列にIDを割り当てる)
-''ATokenMgr_ini''(ATokenMgr *w)
--コンストラクタ。
--コンストラクタを呼んだ直後にw->mとw->mvを上書きすれば、...
-''ATokenMgr_dst''(ATokenMgr *w)
--デストラクタ。
-Ai ''ATokenMgr_s2i''(ATokenMgr *w, ACStr s, Ai n)
--sからのn文字の文字列に対応する整数(=トークン番号)を...
--内部で二分探索しているので、比較的高速に結果を返すこと...
-AStr ''ATokenMgr_i2s''(ATokenMgr *w, Ai i)
--トークン番号を渡すと対応する文字列を返す。
** string系拡張
-AStr ''Astrstr1''(ACStr s, ACStr t, Ai flg)
--基本的にはstrstr()と同じ。
--flg:2=文字列が見つかった場合、strlen(t)を加算してから返...
--flg:1=文字列が見つからない場合、s + strlen(s)を返す。
-AStr ''Astrchr1''(ACStr s, char c, Ai flg)
--Astrstr1()のstrchr()版。
** 言語処理系用
-AStr ''AskpSpc''(ACStr s)
--スペース類を読み飛ばす。
-AStr ''AskpLiteral''(ACStr s, char t)
--文字tが現れるまで読み飛ばす。返すポインタはtが見つかっ...
-AStr ''AskpParenthesis''(ACStr s, char p0, char p1, Ai f...
--sの位置にあるカッコに対応する閉じカッコを探す。p0に'('...
--返されるポインタはp1の次を指している。対応するカッコを...
--flg:1=処理中に文字列リテラルを見つけた場合、AskpLiteral...
--flg:2=flg:1の処理でエラーがあった場合、これを無視して続...
--flg:4=「//」のコメントを見つけた場合は、行末まで読み飛...
-AStr ''AskpParenthesis1''(ACStr s, Ai flg)
--sの位置にあるカッコの種類に応じて、p0とp1を自動設定した...
-Ai ''AnamLen''(ACStr s)
--sで始まる文字列が変数名か関数名であった場合、その名前の...
-Ai ''AnamLen1''(ACStr s, ACStr t)
--AnamLen()に、さらに変数名・関数名に許す文字を追加した状...
-int ''AnamCmp''(ACStr s, ACStr t, Ai l)
--AnamLen()でlを獲得したら、AnamCmp("abc", s, l)で名前がa...
--strncmp(s, "abc", 3)==0で比較すると、s上でabcdってなっ...
** バイナリ系
-Av ''AputBytes''(Auc *p, Ai i, Ai s0, Ai s1, Ai s2, Ai s3)
--iの値をp[0], p[1], p[2], p[3]に書き込む。その際にs0~s3...
--対応するsの値が-1の場合は、書き込みを行わない。
-Ai ''AgetBytes''(Auc *p, Ai s0, Ai s1, Ai s2, Ai s3)
--p[0]~p[3]を読み込んで、s0~s3の値だけシフトしてORして...
--対応するsの値が-1の場合は、読み込みを行わない。
** そのほか
-FILE *''AOpen''(ACStr path, ACStr mod)
--fopen()の代わり。fopenがNULLを返した場合は適当なエラー...
ページ名: