#include <stdlib.h>
#include <string.h>
#include <assert.h>
+#include <stdbool.h>
-#ifndef ARRAYSIZE
-#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
-#endif
+#include "cmem.h"
-/* エラー番号 */
-extern int cerrno;
+/* エラーの構造体 */
+typedef struct {
+ int num; /* エラー番号 */
+ char *msg; /* エラーメッセージ */
+} CERR;
-/* エラーメッセージ */
-extern char *cerrmsg;
+/* 現在のエラー */
+extern CERR *cerr;
-/* ã\82¨ã\83©ã\83¼ã\82³ã\83¼ã\83\89ã\83ªã\82¹ã\83\88 */
-typedef struct {
- int num;
- char *msg;
-} CERRARRAY;
+/* エラーリスト */
+typedef struct _CERRLIST {
+ struct _CERRLIST *next;
+ CERR *cerr;
+} CERRLIST;
-/* エラーメッセージ */
-extern CERRARRAY cerr[];
+extern CERRLIST *cerrlist;
enum {
CERRSTRSIZE = 10, /* エラーメッセージ中に挿入できる文字列のサイズ */
CERRMSGSIZE = 70, /* エラーメッセージのサイズ */
};
+/* エラーの初期化 */
+void cerr_init();
+
+/* エラーリストを作成・追加する */
+bool addcerrlist(int cerrc, CERR cerrv[]);
+
/* エラー番号とエラーメッセージを設定 */
void setcerr(int num, const char *str);