00001 #ifndef ERROR_H_IS_INCLUDED
00002 #define ERROR_H_IS_INCLUDED
00003 
00004 #include "platform.H"
00005 #include "iostream.H"
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #define ERR_LEV_ERROR    0x01
00021 #define ERR_LEV_WARN     0x02
00022 #define ERR_LEV_INFO     0x03
00023 #define ERR_LEV_SPAM     0x04
00024 
00025 #define ERR_LEV_MASK     0x0F
00026 
00027 
00028 
00029 #define ERR_INCL_ERRNO   0x10
00030 
00031 
00032 void err_(int flags, const char *fmt, va_list ap);
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 inline void
00043 err_mesg(int flags, const char *fmt, ...)
00044 {
00045    va_list ap;
00046    va_start(ap, fmt);
00047    err_(flags, fmt, ap);
00048    va_end(ap);
00049 }
00050 
00051 
00052 
00053 
00054 
00055 inline void
00056 err_mesg_cond(bool doit, int flags, const char *fmt, ...)
00057 {
00058    va_list ap;
00059    va_start(ap, fmt);
00060    if (doit) err_(flags, fmt, ap);
00061    va_end(ap);
00062 }
00063 
00064 
00065 inline void
00066 err_msg(const char *fmt, ...)
00067 {
00068    va_list ap;
00069    va_start(ap, fmt);
00070    err_(ERR_LEV_ERROR, fmt, ap);
00071    va_end(ap);
00072 }
00073 
00074 
00075 
00076 inline void
00077 err_ret(const char *fmt, ...)
00078 {
00079    va_list ap;
00080    va_start(ap, fmt);
00081    err_(ERR_INCL_ERRNO | ERR_LEV_ERROR, fmt, ap);
00082    va_end(ap);
00083 }
00084 
00085 
00086 inline void
00087 err_sys(const char *fmt, ...)
00088 {
00089    va_list ap;
00090    va_start(ap, fmt);
00091    err_(ERR_INCL_ERRNO | ERR_LEV_ERROR, fmt, ap);
00092    va_end(ap);
00093    exit(1);
00094 }
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102 
00103 
00104 inline void
00105 err_adv(bool doit, const char *fmt, ...)
00106 {
00107    if (!doit) return;
00108 
00109    va_list ap;
00110    va_start(ap, fmt);
00111    err_(ERR_LEV_ERROR, fmt, ap);
00112    va_end(ap);
00113 }
00114 
00115 #endif // ERROR_H_IS_INCLUDED
00116 
00117