mariadb/toku_include/toku_assert.h
Bradley C. Kuszmaul 1c2996546d Merge in [11215], Refs #1672. Consolidate tdiff. Fixes #1673.
git-svn-id: file:///svn/toku/tokudb@11217 c7de825b-a66e-492c-adef-691d508d4ae1
2013-04-16 23:57:48 -04:00

25 lines
887 B
C

#ifndef TOKU_ASSERT_H
#define TOKU_ASSERT_H
/* The problem with assert.h: If NDEBUG is set then it doesn't execute the function, if NDEBUG isn't set then we get a branch that isn't taken. */
/* This version will complain if NDEBUG is set. */
/* It evaluates the argument and then calls a function toku_do_assert() which takes all the hits for the branches not taken. */
#ifdef NDEBUG
#error NDEBUG should not be set
#endif
void toku_do_assert(int,const char*/*expr_as_string*/,const char */*fun*/,const char*/*file*/,int/*line*/);
// Define GCOV if you want to get test-coverage information that ignores the assert statements.
// #define GCOV
#ifdef GCOV
#define WHEN_GCOV(x) x
#define WHEN_NOT_GCOV(x)
#define assert(expr) toku_do_assert((expr) != 0, #expr, __FUNCTION__, __FILE__, __LINE__)
#else
#define WHEN_GCOV(x)
#define WHEN_NOT_GCOV(x) x
#include <assert.h>
#endif
#endif