diff options
author | Nobuyoshi Nakada <[email protected]> | 2019-07-14 13:05:16 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2019-07-14 17:45:21 +0900 |
commit | 32f013514460574eed03aa678f87ed7ca9600872 (patch) | |
tree | c40387e1b8d734107cc553b061dcc3ffd9ae9858 /include/ruby/assert.h | |
parent | 5786df12f5c07510f9f15e984c564179afae33c0 (diff) |
Split RUBY_ASSERT and so on under include/ruby
Diffstat (limited to 'include/ruby/assert.h')
-rw-r--r-- | include/ruby/assert.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/ruby/assert.h b/include/ruby/assert.h new file mode 100644 index 0000000000..5ef866ac9e --- /dev/null +++ b/include/ruby/assert.h @@ -0,0 +1,49 @@ +#ifndef RUBY_ASSERT_H +#define RUBY_ASSERT_H + +#if defined(__cplusplus) +extern "C" { +#if 0 +} /* satisfy cc-mode */ +#endif +#endif + +NORETURN(void rb_assert_failure(const char *, int, const char *, const char *)); +#ifdef RUBY_FUNCTION_NAME_STRING +# define RUBY_ASSERT_FAIL(expr) \ + rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr) +#else +# define RUBY_ASSERT_FAIL(expr) \ + rb_assert_failure(__FILE__, __LINE__, NULL, expr) +#endif +#define RUBY_ASSERT_MESG(expr, mesg) \ + ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg)) +#ifdef HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P +# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \ + __builtin_choose_expr( \ + __builtin_constant_p(cond), \ + __builtin_choose_expr(cond, RUBY_ASSERT_MESG(expr, mesg), (void)0), \ + RUBY_ASSERT_MESG(!(cond) || (expr), mesg)) +#else +# define RUBY_ASSERT_MESG_WHEN(cond, expr, mesg) \ + RUBY_ASSERT_MESG(!(cond) || (expr), mesg) +#endif +#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN(!RUBY_NDEBUG+0, expr, #expr) +#define RUBY_ASSERT_WHEN(cond, expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr) + +#ifndef RUBY_NDEBUG +# ifdef NDEBUG +# define RUBY_NDEBUG 1 +# else +# define RUBY_NDEBUG 0 +# endif +#endif + +#if defined(__cplusplus) +#if 0 +{ /* satisfy cc-mode */ +#endif +} /* extern "C" { */ +#endif + +#endif |