diff options
author | Piotr Krysik <perper@o2.pl> | 2009-04-20 19:56:50 +0200 |
---|---|---|
committer | Piotr Krysik <perper@o2.pl> | 2009-04-20 19:56:50 +0200 |
commit | 59ea3a8a82e6f166b80fc489945c43fdc8764ea0 (patch) | |
tree | 92176874246d4e5619200f1284934a9d70f96b74 /src/lib/Assert.h | |
parent | 00cf03a40f5ddee09aadec5a45d6bb311d170bbd (diff) |
added non-traced files
Diffstat (limited to 'src/lib/Assert.h')
-rw-r--r-- | src/lib/Assert.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/lib/Assert.h b/src/lib/Assert.h new file mode 100644 index 0000000..6c04f18 --- /dev/null +++ b/src/lib/Assert.h @@ -0,0 +1,65 @@ +/* +* Copyright 2008 Free Software Foundation, Inc. +* +* This software is distributed under the terms of the GNU Public License. +* See the COPYING file in the main directory for details. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#ifndef ASSERT_H +#define ASSERT_H + +#include "stdio.h" +#include <iostream> + +/**@name Macros for standard messages. */ +//@{ +#define COUT(text) { std::cout << text << std::endl; } +#define CERR(text) { std::cerr << __FILE__ << ":" << __LINE__ << ": " << text; } +#ifdef NDEBUG +#define DCOUT(text) {} +#define OBJDCOUT(text) {} +#else +#define DCOUT(text) { COUT(__FILE__ << ":" << __LINE__ << " " << text); } +#define OBJDCOUT(text) { DCOUT(this << " " << text); } +#endif +//@} + + +/** This is thrown by assert() so that gdb can catch it. */ + +class Assertion +{ + + public: + + Assertion() { + fprintf( stderr,"Try setting a breakpoint @ %s:%u.\n",__FILE__,__LINE__ ); + return; + } + +}; + +#ifdef NDEBUG +#define assert(EXPR) {}; +#else +/** This replaces the regular assert() with a C++ exception. */ +#include "stdio.h" +#define assert(E) { if (!(E)) { fprintf(stderr,"%s:%u failed assertion '%s'\n",__FILE__,__LINE__,#E); throw Assertion(); } } +#endif + +#endif |