Main Page | Modules | Data Structures | File List | Data Fields

/extra/work/state-dev/src/sul/sul_error.h

00001 /* ----------------------------------------------------------------------------
00002  * @(#) $Header: /home/systems/jlewalle/dev/jacob-cvs/projects/state/src/sul/sul_error.h,v 1.7 2004/01/14 21:44:38 jlewalle Exp $
00003  *
00004  * --------------------------------------------------------------------------*/
00005 #if !defined(_INCLUDED_SUL_ERROR_H_HEADER__)
00006 #define _INCLUDED_SUL_ERROR_H_HEADER__
00007 
00020 SUL_DECLARE(apr_status_t)
00021 sul_errors_initialize(apr_pool_t *pool);
00022 
00031 SUL_DECLARE(apr_pool_t *)
00032 sul_pool_create(apr_pool_t *pp, const char *tag);
00033 
00041 SUL_DECLARE(void)
00042 sul_error_locate(const char *file, apr_int32_t line);
00043 
00050 SUL_DECLARE(sul_error_t *)
00051 sul_errprintf(const char *strf, ...);
00052 
00062 SUL_DECLARE(sul_error_t *)
00063 sul_error_printf(sul_error_t *err, apr_size_t indention, 
00064                  sul_stringbuf_t *stream, apr_pool_t *pool);
00065 
00075 SUL_DECLARE(sul_error_t *)
00076 sul_error_qualify(sul_error_t *err, apr_status_t apr_err, sul_status_t sul_err,
00077                   sul_error_t *cause);
00078 
00088 SUL_DECLARE(sul_error_t *)
00089 sul_error_create(apr_status_t apr_err, sul_status_t sul_err, sul_error_t *cause,
00090                  const char *msg, ...);
00091 
00092 #define sul_error_create \
00093   (sul_error_locate(__FILE__,__LINE__), (sul_error_create))
00094 
00103 SUL_DECLARE(sul_error_t *)
00104 sul_error_quick_wrap(sul_error_t *cause, const char *msg, ...);
00105 
00106 #define sul_error_quick_wrap \
00107   (sul_error_locate(__FILE__,__LINE__), (sul_error_quick_wrap))
00108 
00116 SUL_DECLARE(void)
00117 sul_error_handle(sul_error_t *error, sul_boolean_t fatal);
00118 
00125 SUL_DECLARE(sul_error_t *)
00126 sul_error_get_cause(sul_error_t *error);
00127 
00134 SUL_DECLARE(const char *)
00135 sul_error_get_message(sul_error_t *error);
00136 
00143 SUL_DECLARE(apr_status_t)
00144 sul_error_get_apr_error(sul_error_t *error);
00145 
00152 SUL_DECLARE(sul_status_t)
00153 sul_error_get_sul_error(sul_error_t *error);
00154 
00160 SUL_DECLARE(void)
00161 sul_error_destroy(sul_error_t *error);
00162 
00168 #define SUL_ERR_WRAP0(expr, wrap_msg)                         \
00169   do {                                                        \
00170     sul_error_t *sul_err__temp = (expr);                      \
00171     if (sul_err__temp)                                        \
00172       return (sul_error_quick_wrap(sul_err__temp, wrap_msg)); \
00173   } while (0)
00174 
00175 #define SUL_ERR_WRAP1(expr, wrap_msg, a1)                     \
00176   do {                                                        \
00177     sul_error_t *sul_err__temp = (expr);                      \
00178     if (sul_err__temp)                                        \
00179       return (sul_error_quick_wrap(sul_err__temp, wrap_msg, a1)); \
00180   } while (0)
00181 
00182 #define SUL_ERR_WRAP4(expr, wrap_msg, a1, a2, a3, a4)         \
00183   do {                                                        \
00184     sul_error_t *sul_err__temp = (expr);                      \
00185     if (sul_err__temp)                                        \
00186       return (sul_error_quick_wrap(sul_err__temp, wrap_msg, a1, a2, a3, a4)); \
00187   } while (0)
00188 
00189 #define SUL_ERR_WRAP3(expr, wrap_msg, a1, a2, a3)             \
00190   do {                                                        \
00191     sul_error_t *sul_err__temp = (expr);                      \
00192     if (sul_err__temp)                                        \
00193       return (sul_error_quick_wrap(sul_err__temp, wrap_msg, a1, a2, a3)); \
00194   } while (0)
00195 
00196 #define SUL_ERR_WRAP2(expr, wrap_msg, a1, a2)                 \
00197   do {                                                        \
00198     sul_error_t *sul_err__temp = (expr);                      \
00199     if (sul_err__temp)                                        \
00200       return (sul_error_quick_wrap(sul_err__temp, wrap_msg, a1, a2)); \
00201   } while (0)
00202 
00207 #define SUL_ERR_HOOK(expr, code)                    \
00208   do {                                              \
00209     sul_error_t *sul_err__temp = (expr);            \
00210     if (sul_err__temp) {                            \
00211       code;                                         \
00212       return (sul_err__temp);                       \
00213     }                                               \
00214   } while (0)
00215 
00220 #define SUL_ERR(expr)                               \
00221   do {                                              \
00222     sul_error_t *sul_err__temp = (expr);            \
00223     if (sul_err__temp)                              \
00224       return (sul_err__temp);                       \
00225   } while (0)
00226 
00231 #define SUL_ERR_IGN(expr, code)                     \
00232   do {                                              \
00233     sul_error_t *sul_err__temp = (expr);            \
00234     if (sul_err__temp) {                            \
00235       if (sul_error_get_sul_error(sul_err__temp) != code) \
00236         sul_error_destroy(sul_err__temp);           \
00237     }                                               \
00238   } while (0)
00239 
00243 #define SUL_WARN(expr)                              \
00244   do {                                              \
00245     sul_error_t *sul_err__temp = (expr);            \
00246     if (sul_err__temp)                              \
00247       sul_error_handle(sul_err__temp, FALSE);       \
00248   } while (0)
00249 
00253 #define SUL_ERR_IGN_ALL(expr)                       \
00254   do {                                              \
00255     sul_error_t *sul_err__temp = (expr);            \
00256     if (sul_err__temp)                              \
00257       sul_error_destroy(sul_err__temp);             \
00258   } while (0)
00259 
00263 #define APR_ERR(expr, pool, msg)                    \
00264   do {                                              \
00265     apr_status_t apr_err__temp = (expr);            \
00266     if (apr_err__temp != APR_SUCCESS)               \
00267       return (sul_error_create(apr_err__temp, 0,    \
00268               NULL, msg));                          \
00269   } while (0)
00270 
00274 #define SUL_NO_ERROR  (NULL)
00275 
00276 #define SUL_ERR_NONE                  (0)
00277 #define SUL_ERR_DB_NO_ROWS            (1)
00278 #define SUL_ERR_DB_TOO_MANY_ROWS      (2)
00279 
00288 #if defined(_WIN32)
00289 # define BREAKPOINT() __asm { int 3 }
00290 #else
00291 #  define BREAKPOINT() { __asm__ __volatile__ ("int $03"); }
00292 /*
00293 # if defined(LINUX)
00294 #  define BREAKPOINT() { __asm__ __volatile__ ("int $03"); }
00295 # else
00296 #  define BREAKPOINT() { assert(0); }
00297 # endif
00298 */
00299 #endif
00300 
00301 
00311 SUL_DECLARE(void)
00312 sul_error_log_assertion(const char *expr_str, const char *msg, 
00313                         const char *func, const char *file, apr_ssize_t line);
00314 
00315 #define SUL_ASSERT(expr, msg) \
00316   do { \
00317     if (!(expr)) { \
00318       sul_error_log_assertion(#expr, msg, __FUNCTION__, __FILE__, __LINE__); \
00319       abort(); \
00320     } \
00321   } \
00322   while (0)
00323 
00327 #define ASSERT(expr, msg)  SUL_ASSERT((expr), msg)
00328 
00332 #define ASSERTN(expr)      SUL_ASSERT((expr), NULL)
00333 
00337 #define SUL_VERIFY0(expr, msg) \
00338   do { \
00339     if (!(expr)) { \
00340       return (sul_error_create(0, 0, NULL, #expr " failed: " msg)); \
00341     } \
00342   } while (0)
00343 
00344 #define SUL_VERIFY1(expr, msg, a1) \
00345   do { \
00346     if (!(expr)) { \
00347       return (sul_error_create(0, 0, NULL, #expr " failed: " msg, a1)); \
00348     } \
00349   } while (0)
00350 
00351 #define SUL_VERIFY2(expr, msg, a1, a2) \
00352   do { \
00353     if (!(expr)) { \
00354       return (sul_error_create(0, 0, NULL, #expr " failed: " msg, a1, a2)); \
00355     } \
00356   } while (0)
00357 
00358 #define SUL_VERIFY3(expr, msg, a1, a2, a3) \
00359   do { \
00360     if (!(expr)) { \
00361       return (sul_error_create(0, 0, NULL, #expr " failed: " msg, a1, a2, a3)); \
00362     } \
00363   } while (0)
00364 
00365 #define SUL_VERIFY4(expr, msg, a1, a2, a3, a4) \
00366   do { \
00367     if (!(expr)) { \
00368       return (sul_error_create(0, 0, NULL, #expr " failed: " msg, a1, a2, a3, a4)); \
00369     } \
00370   } while (0)
00371 
00375 #endif

Generated on Wed Apr 28 09:38:33 2004 for State by doxygen 1.3.5