Subversion Repositories Kolibri OS

Rev

Rev 4921 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.         assert.h
  3. */
  4.  
  5. #ifndef __ASSERT_H__
  6. #define __ASSERT_H__
  7.  
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #include "_ansi.h"
  13.  
  14. #undef assert
  15.  
  16. #ifdef NDEBUG           /* required by ANSI standard */
  17. # define assert(__e) ((void)0)
  18. #else
  19. # define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, \
  20.                                                        __ASSERT_FUNC, #__e))
  21.  
  22. # ifndef __ASSERT_FUNC
  23.   /* Use g++'s demangled names in C++.  */
  24. #  if defined __cplusplus && defined __GNUC__
  25. #   define __ASSERT_FUNC __PRETTY_FUNCTION__
  26.  
  27.   /* C99 requires the use of __func__.  */
  28. #  elif __STDC_VERSION__ >= 199901L
  29. #   define __ASSERT_FUNC __func__
  30.  
  31.   /* Older versions of gcc don't have __func__ but can use __FUNCTION__.  */
  32. #  elif __GNUC__ >= 2
  33. #   define __ASSERT_FUNC __FUNCTION__
  34.  
  35.   /* failed to detect __func__ support.  */
  36. #  else
  37. #   define __ASSERT_FUNC ((char *) 0)
  38. #  endif
  39. # endif /* !__ASSERT_FUNC */
  40. #endif /* !NDEBUG */
  41.  
  42. void _EXFUN(__assert, (const char *, int, const char *)
  43.             _ATTRIBUTE ((__noreturn__)));
  44. void _EXFUN(__assert_func, (const char *, int, const char *, const char *)
  45.             _ATTRIBUTE ((__noreturn__)));
  46.  
  47. #if __STDC_VERSION__ >= 201112L && !defined __cplusplus
  48. # define static_assert _Static_assert
  49. #endif
  50.  
  51. #ifdef __cplusplus
  52. }
  53. #endif
  54.  
  55. #endif /* __ASSERT_H__ */
  56.