diff --git a/ChangeLog b/ChangeLog index 403f99cdc..4cd91f5a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-29 16:11:14 Tim Janik + + * glib/gmacros.h: added G_PASTE() and G_STATIC_ASSERT(), based on + patches by Christian Persch and Christian Dywan. Fixes: + Bug 558381 - Add support for compile time assertions + 2008-10-27 Joseph Pingenot * glib/ghash.c: changed "#GHashTableIterator" to "#GHashTableIter" diff --git a/glib/gmacros.h b/glib/gmacros.h index f87e932ce..356db119a 100644 --- a/glib/gmacros.h +++ b/glib/gmacros.h @@ -137,6 +137,10 @@ #define G_STRINGIFY(macro_or_string) G_STRINGIFY_ARG (macro_or_string) #define G_STRINGIFY_ARG(contents) #contents +#define G_PASTE_ARGS(identifier1,identifier2) identifier1 ## identifier2 +#define G_PASTE(identifier1,identifier2) G_PASTE_ARGS (identifier1, identifier2) +#define G_STATIC_ASSERT(expr) typedef struct { char Compile_Time_Assertion[(expr) ? 1 : -1]; } G_PASTE (_GStaticAssert_, __LINE__) + /* Provide a string identifying the current code position */ #if defined(__GNUC__) && (__GNUC__ < 3) && !defined(__cplusplus) # define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__) ":" __PRETTY_FUNCTION__ "()"