メモリ管理の改善
[YACASL2.git] / include / cerr.h
index f651c7d..662cff2 100644 (file)
@@ -5,39 +5,40 @@
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
+#include <stdbool.h>
+#include "cmem.h"
 
 #ifndef ARRAYSIZE
 #define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
 #endif
 
-/* エラー番号 */
-extern int cerrno;
-
-/* エラーメッセージ */
-extern char *cerrmsg;
-
-/* エラーコード配列 */
+/* エラーの構造体 */
 typedef struct {
-    int num;
-    char *msg;
-} CERRARRAY;
+    int num;        /* エラー番号 */
+    char *msg;      /* エラーメッセージ */
+} CERR;
 
-/* エラーコードリスト */
+/* 現在のエラー */
+extern CERR *cerr;
+
+/* エラーリスト */
 typedef struct _CERRLIST {
     struct _CERRLIST *next;
-    CERRARRAY *err;
+    CERR *cerr;
 } CERRLIST;
 
-/* エラーメッセージ */
-extern CERRLIST *cerr;
+extern CERRLIST *cerrlist;
 
 enum {
     CERRSTRSIZE = 10,    /* エラーメッセージ中に挿入できる文字列のサイズ */
     CERRMSGSIZE = 70,    /* エラーメッセージのサイズ */
 };
 
-/* エラーを追加する */
-void addcerrlist(int cerrc, CERRARRAY cerrv[]);
+/* エラーの初期化 */
+void cerr_init();
+
+/* エラーリストを作成・追加する */
+bool addcerrlist(int cerrc, CERR cerrv[]);
 
 /* エラー番号とエラーメッセージを設定 */
 void setcerr(int num, const char *str);