From 13fcf118a0aa6eb2c46a8a1a29b8aa586302374f Mon Sep 17 00:00:00 2001 From: mquinson Date: Sun, 7 Aug 2005 14:33:56 +0000 Subject: [PATCH] Move the asserts out of error.h in order to kill it afterward git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1605 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- include/Makefile.am | 4 +-- include/xbt.h | 1 + include/xbt/asserts.h | 60 +++++++++++++++++++++++++++++++++++++++++++ include/xbt/error.h | 40 ++--------------------------- include/xbt/sysdep.h | 8 +++--- 5 files changed, 70 insertions(+), 43 deletions(-) create mode 100644 include/xbt/asserts.h diff --git a/include/Makefile.am b/include/Makefile.am index 791f6cb030..417ef3f7ac 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -1,9 +1,9 @@ include_HEADERS = gras.h xbt.h nobase_include_HEADERS = \ - xbt/ex.h \ xbt/misc.h \ xbt/sysdep.h \ - xbt/log.h xbt/error.h \ + xbt/asserts.h xbt/error.h xbt/ex.h \ + xbt/log.h \ xbt/module.h \ xbt/dynar.h xbt/dict.h xbt/set.h \ xbt/heap.h \ diff --git a/include/xbt.h b/include/xbt.h index 08d5228b1a..8be0e35e68 100644 --- a/include/xbt.h +++ b/include/xbt.h @@ -14,6 +14,7 @@ #include #include +#include #include #include diff --git a/include/xbt/asserts.h b/include/xbt/asserts.h new file mode 100644 index 0000000000..479eb60946 --- /dev/null +++ b/include/xbt/asserts.h @@ -0,0 +1,60 @@ +/* $Id$ */ +/* xbt/asserts.h -- assertion mecanism */ + +/* Copyright (c) 2004,2005 Martin Quinson. All rights reserved. */ + +/* This program is free software; you can redistribute it and/or modify it + * under the terms of the license (GNU LGPL) which comes with this package. */ + +#ifndef _XBT_ASSERTS_H +#define _XBT_ASSERTS_H + +#include "xbt/misc.h" + +BEGIN_DECL() + +/** + * \name 4. assert macro familly + * + * Those are the GRAS version of the good ol' assert macro. You can pass them a format message and + * arguments, just as if it where a printf. It is converted to a CRITICALn logging request. + * + * @{ + */ +#ifdef NDEBUG +#define xbt_assert(cond) +#define xbt_assert0(cond,msg) +#define xbt_assert1(cond,msg,a) +#define xbt_assert2(cond,msg,a,b) +#define xbt_assert3(cond,msg,a,b,c) +#define xbt_assert4(cond,msg,a,b,c,d) +#define xbt_assert5(cond,msg,a,b,c,d,e) +#define xbt_assert6(cond,msg,a,b,c,d,e,f) +#else + /** @brief The condition which failed will be displayed. + @hideinitializer */ +#define xbt_assert(cond) if (!(cond)) { CRITICAL1("Assertion %s failed", #cond); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert0(cond,msg) if (!(cond)) { CRITICAL0(msg); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert1(cond,msg,a) if (!(cond)) { CRITICAL1(msg,a); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert2(cond,msg,a,b) if (!(cond)) { CRITICAL2(msg,a,b); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert3(cond,msg,a,b,c) if (!(cond)) { CRITICAL3(msg,a,b,c); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert4(cond,msg,a,b,c,d) if (!(cond)) { CRITICAL4(msg,a,b,c,d); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert5(cond,msg,a,b,c,d,e) if (!(cond)) { CRITICAL5(msg,a,b,c,d,e); xbt_abort(); } + /** @hideinitializer */ +#define xbt_assert6(cond,msg,a,b,c,d,e,f) if (!(cond)) { CRITICAL6(msg,a,b,c,d,e,f); xbt_abort(); } +#endif + +/** @} */ + +void xbt_abort(void) _XBT_GNUC_NORETURN; +void xbt_die(const char *msg) _XBT_GNUC_NORETURN; + +END_DECL() + +#endif /* _XBT_ASSERTS_H */ diff --git a/include/xbt/error.h b/include/xbt/error.h index 97edd88db1..0616168614 100644 --- a/include/xbt/error.h +++ b/include/xbt/error.h @@ -10,6 +10,8 @@ #ifndef XBT_ERROR_H #define XBT_ERROR_H +//#error do not use this crap anymore + #include "xbt/misc.h" /* BEGIN_DECL */ #include "xbt/log.h" @@ -122,44 +124,6 @@ typedef enum { /** @hideinitializer */ #define OLDRAISE6(code,fmt,a1,a2,a3,a4,a5,a6) _XBT_ERR_PRE ERROR6(fmt,a1,a2,a3,a4,a5,a6); _XBT_ERR_POST(code) -/** @} */ -/** - * \name 4. assert macro familly - * - * Those are the GRAS version of the good ol' assert macro. You can pass them a format message and - * arguments, just as if it where a printf. It is converted to a CRITICALn logging request. - * - * @{ - */ -#ifdef NDEBUG -#define xbt_assert(cond) -#define xbt_assert0(cond,msg) -#define xbt_assert1(cond,msg,a) -#define xbt_assert2(cond,msg,a,b) -#define xbt_assert3(cond,msg,a,b,c) -#define xbt_assert4(cond,msg,a,b,c,d) -#define xbt_assert5(cond,msg,a,b,c,d,e) -#define xbt_assert6(cond,msg,a,b,c,d,e,f) -#else -/** @brief The condition which failed will be displayed. - @hideinitializer */ -#define xbt_assert(cond) if (!(cond)) { CRITICAL1("Assertion %s failed", #cond); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert0(cond,msg) if (!(cond)) { CRITICAL0(msg); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert1(cond,msg,a) if (!(cond)) { CRITICAL1(msg,a); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert2(cond,msg,a,b) if (!(cond)) { CRITICAL2(msg,a,b); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert3(cond,msg,a,b,c) if (!(cond)) { CRITICAL3(msg,a,b,c); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert4(cond,msg,a,b,c,d) if (!(cond)) { CRITICAL4(msg,a,b,c,d); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert5(cond,msg,a,b,c,d,e) if (!(cond)) { CRITICAL5(msg,a,b,c,d,e); xbt_abort(); } -/** @hideinitializer */ -#define xbt_assert6(cond,msg,a,b,c,d,e,f) if (!(cond)) { CRITICAL6(msg,a,b,c,d,e,f); xbt_abort(); } -#endif - /** @} */ /** @name 5. Useful predefined errors diff --git a/include/xbt/sysdep.h b/include/xbt/sysdep.h index b917978db7..e6bec9d90b 100644 --- a/include/xbt/sysdep.h +++ b/include/xbt/sysdep.h @@ -14,11 +14,13 @@ #include #include #include +#include /* va_list */ #include "xbt/misc.h" -#include "xbt/error.h" +#include "xbt/asserts.h" BEGIN_DECL() + /** @addtogroup XBT_syscall * @{ */ @@ -94,8 +96,8 @@ static inline void *xbt_realloc(void*p,int s){ /* FIXME: better place? */ int vasprintf (char **ptr, const char *fmt, va_list ap); -char *bprintf(const char*fmt, ...); - +char *bprintf(const char*fmt, ...) _XBT_GNUC_PRINTF(1,2); + END_DECL() #endif /* _XBT_SYSDEP_H */ -- 2.20.1