-#define xbt_strdup(s) ((s)?(strdup(s)?:(xbt_die("memory allocation error"),NULL))\
- :(NULL))
-#define xbt_malloc(n) (malloc(n) ?: (xbt_die("memory allocation error"),NULL))
-#define xbt_malloc0(n) (calloc( (n),1 ) ?: (xbt_die("memory allocation error"),NULL))
-#define xbt_realloc(p,s) (s? (p? (realloc(p,s)?:(xbt_die("memory allocation error"),NULL)) \
- : xbt_malloc(s)) \
- : (p? (free(p),NULL) \
- : NULL))
-#define xbt_free free /*nothing specific to do here. A poor valgrind replacement?*/
-#define xbt_free_fct free /* replacement with the guareenty of being a function */
-
-#define xbt_new(type, count) ((type*)xbt_malloc (sizeof (type) * (count)))
-#define xbt_new0(type, count) ((type*)xbt_malloc0 (sizeof (type) * (count)))
+SG_BEGIN_DECL()
+
+/* They live in asserts.h, but need to be declared before this module.
+ double declaration to cut dependency cycle */
+/**
+ * @addtogroup XBT_error
+ *
+ * @{
+ */
+XBT_PUBLIC(void) xbt_abort(void) _XBT_GNUC_NORETURN;
+XBT_PUBLIC(void) xbt_die(const char *msg) _XBT_GNUC_NORETURN;
+/** @} */
+
+/* these ones live in str.h, but redeclare them here so that we do
+ not need to load the whole str.h and its heavy dependencies */
+#ifndef __USE_GNU /* do not redeclare existing headers */
+ XBT_PUBLIC(int) asprintf (char **ptr, const char *fmt, /*args*/ ...) _XBT_GNUC_PRINTF(2,3);
+ XBT_PUBLIC(int) vasprintf (char **ptr, const char *fmt, va_list ap);
+#endif
+XBT_PUBLIC(char*) bprintf (const char*fmt, ...) _XBT_GNUC_PRINTF(1,2);