00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef LUMIERA_ERROR_H
00022 #define LUMIERA_ERROR_H
00023
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #elif 0
00027 }
00028 #endif
00029
00030 #include <nobug.h>
00031 #include <stdlib.h>
00032
00038 typedef const char* lumiera_err;
00039
00044 #define LUMIERA_DIE(err) \
00045 do { NOBUG_ERROR(NOBUG_ON, "Fatal Error: %s ", strchr(LUMIERA_ERROR_##err, ':')); abort(); } while(0)
00046
00052 #define LUMIERA_ERROR_DECLARE(err) \
00053 extern lumiera_err LUMIERA_ERROR_##err
00054
00061 #define LUMIERA_ERROR_DEFINE(err, msg) \
00062 lumiera_err LUMIERA_ERROR_##err = "LUMIERA_ERROR_" #err ":" msg
00063
00070 #define LUMIERA_ERROR_SET(flag, err) \
00071 (({ERROR (flag, "%s", strchr(LUMIERA_ERROR_##err, ':')+1);}), \
00072 lumiera_error_set(LUMIERA_ERROR_##err))
00073
00081 lumiera_err
00082 lumiera_error_set (lumiera_err err);
00083
00090 lumiera_err
00091 lumiera_error (void);
00092
00093
00101 lumiera_err
00102 lumiera_error_peek (void);
00103
00104
00105
00106
00107
00108 LUMIERA_ERROR_DECLARE (ERRNO);
00109
00110 #ifdef __cplusplus
00111 }
00112 #endif
00113 #endif