1 #ifndef YACASL2_CMEM_H_INCLUDED
2 #define YACASL2_CMEM_H_INCLUDED
14 #define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
21 #define FREE(ptr) {free(ptr); ptr = NULL;}
25 * @brief mallocを実行し、0で初期化する
27 * メモリを確保できない場合はエラーを出力して終了
31 * @param size メモリーのサイズ
32 * @param tag エラーメッセージなどで表示されるタグ
34 void *malloc_chk(size_t size, const char *tag);
37 * @brief 領域の数とサイズを指定してメモリーを確保するcallocを実行する
39 * メモリを確保できない場合はエラーを出力して終了
44 * @param size 領域1個あたりのメモリーサイズ
45 * @param tag エラーメッセージなどで表示されるタグ
47 void *calloc_chk(size_t nmemb, size_t size, const char *tag);
50 * @brief malloc_chkを実行してメモリを確保し、コピーした文字列を返す
55 * @param tag エラーメッセージなどで表示されるタグ
57 char *strdup_chk(const char *s, const char *tag);
60 * @brief malloc_chkを実行してメモリを確保し、コピーした文字列の指定した長さの部分を返す
66 * @param tag エラーメッセージなどで表示されるタグ
68 char *strndup_chk(const char *s, size_t len, const char *tag);
71 * @brief 文字列の末尾から、改行と空白とタブを削除する
77 void strip_end(char *s);
80 * @brief 文字列から「'」以降の文字列をCASL IIのコメントとして削除する。「''」の場合は除く
86 void strip_casl2_comment(char *s);
95 char *strrev(const char *s);