X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fcerr.h;h=a67b65def6af9aebb71928700476e970f676135e;hp=586ab4d5b3502a2d7ca7a74fc2aa331ad0cec2da;hb=a639337a9aa30a059c1695ab1701b8714fd26193;hpb=d2638d2dd5f2437cabbf752c89042ca49347a248 diff --git a/include/cerr.h b/include/cerr.h index 586ab4d..a67b65d 100644 --- a/include/cerr.h +++ b/include/cerr.h @@ -1,36 +1,67 @@ #ifndef YACASL2_CERR_H_INCLUDED #define YACASL2_CERR_H_INCLUDED -#include -#include -#include +#include +#include "cmem.h" -#ifndef ARRAYSIZE -#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0])) -#endif +/** + * エラーの構造体 + */ +typedef struct _CERR { + int num; /**<エラー番号 */ + char *msg; /**<エラーメッセージ */ +} CERR; -/* エラー番号 */ -extern int cerrno; +/** + * 現在のエラー + */ +extern CERR *cerr; -/* エラーメッセージ */ -extern char *cerrmsg; +/** + * エラーリスト型 + */ +typedef struct _CERRLIST { + struct _CERRLIST *next; /**<リスト次項目へのポインタ */ + CERR *cerr; /**<エラーの構造体 */ +} CERRLIST; -/* エラーコードリスト */ -typedef struct { - int num; - char *msg; -} CERRARRAY; +/** + * エラーリスト + */ +extern CERRLIST *cerrlist; enum { - MSGSIZE = 60, + CERRSTRSIZE = 10, /**<エラーメッセージ中に挿入できる文字列のサイズ */ + CERRMSGSIZE = 70, /**<エラーメッセージのサイズ */ }; -/* エラー番号とエラーメッセージを設定 */ -void setcerr(int num, const char *val); +/** + * エラーの初期化 + */ +void cerr_init(); + +/** + * エラーリストを作成・追加する + */ +bool addcerrlist(int cerrc, CERR cerrv[]); + +/** + * エラーリストを表示する + */ +void printcerrlist(); + +/** + * 現在のエラーを設定する + */ +void setcerr(int num, const char *str); -/* エラー番号からメッセージを返す */ +/** + * エラーリストから、エラー番号に対応するメッセージを返す + */ char *getcerrmsg(int num); -/* エラーを解放する */ +/** + * エラーリストと現在のエラーを解放する + */ void freecerr(); #endif