From 030c5caf0a92c03ec2afca677483044de3bbef56 Mon Sep 17 00:00:00 2001 From: Maxime Coste Date: Fri, 9 Sep 2011 19:24:18 +0000 Subject: assert: custom implementation --- src/assert.hh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/assert.hh (limited to 'src/assert.hh') diff --git a/src/assert.hh b/src/assert.hh new file mode 100644 index 00000000..c1bfd66b --- /dev/null +++ b/src/assert.hh @@ -0,0 +1,31 @@ +#ifndef assert_hh_INCLUDED +#define assert_hh_INCLUDED + +#include "exception.hh" + +namespace Kakoune +{ + +struct assert_failed : logic_error +{ + assert_failed(const std::string& message); + std::string description() const; + +private: + std::string m_message; +}; + +} + +#define STRINGIFY(X) #X +#define TOSTRING(X) STRINGIFY(X) + +#ifdef assert +#undef assert +#endif + +#define assert(condition) \ + if (not (condition)) \ + throw assert_failed("assert failed \"" #condition "\" at " __FILE__ ":" TOSTRING(__LINE__)) + +#endif // assert_hh_INCLUDED -- cgit v1.2.3