マクロ定義の重複を削除
[YACASL2.git] / include / cerr.h
index 9c191c1..08532da 100644 (file)
@@ -1,28 +1,44 @@
 #ifndef YACASL2_CERR_H_INCLUDED
 #define YACASL2_CERR_H_INCLUDED
 
-#include <malloc.h>
+#include <stdio.h>
+#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"
+
+/* エラーの構造体 */
+typedef struct {
+    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 {
+    CERRSTRSIZE = 10,    /* エラーメッセージ中に挿入できる文字列のサイズ */
+    CERRMSGSIZE = 70,    /* エラーメッセージのサイズ */
+};
+
+/* エラーの初期化 */
+void cerr_init();
+
+/* エラーリストを作成・追加する */
+bool addcerrlist(int cerrc, CERR cerrv[]);
 
 /* エラー番号とエラーメッセージを設定 */
-void setcerr(int num, const char *val);
+void setcerr(int num, const char *str);
 
 /* エラー番号からメッセージを返す */
 char *getcerrmsg(int num);