source: git/factory/libfac/factor/debug.h @ d92d71

spielwiese
Last change on this file since d92d71 was dccceb, checked in by Oleksandr Motsak <motsak@…>, 12 years ago
moved libfac under factory/ CHG: moved libfac/ under factory/ Note: starting to merge libfac into factory (as a private library)
  • Property mode set to 100644
File size: 1.9 KB
Line 
1////////////////////////////////////////////////////////////
2// $Id$
3////////////////////////////////////////////////////////////
4// It is possible to include this file multiple times for different
5// settings of FACDEBUG and/or DEBUGOUTPUT
6
7#undef ASSERT
8#undef __ASSERT
9#undef STICKYASSERT
10#undef DEBOUT
11#undef DEBOUTLN
12#undef DEBINCLEVEL
13#undef DEBDECLEVEL
14#undef DEBOUTSL
15#undef DEBOUTMSG
16#undef DEBOUTNL
17
18#include <stdio.h>
19#include <stdlib.h>
20
21#ifdef NDEBUG
22#define ASSERT(ignore1,ignore2)((void)0)
23#else
24#define ASSERT(expression,message) \
25((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
26#endif
27
28#define STICKYASSERT(expression,message) \
29((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
30
31#define __ASSERT(expression, message, file, line)  \
32(fprintf( stderr, "error: %s\n%s:%u: failed assertion `%s'\n", \
33 message, file, line, expression ), abort(), 0 )
34
35#ifdef DEBUGOUTPUT
36void deb_inc_level(); // use this helper routines from factory
37void deb_dec_level(); // use this helper routines from factory
38extern char * deb_level_msg; // from factory
39#define DEBINCLEVEL(stream,msg) \
40(stream << "\n" << deb_level_msg << "entering << " << msg << " >>" << "\n", deb_inc_level())
41#define DEBDECLEVEL(stream,msg) \
42(deb_dec_level(), stream << deb_level_msg << "leaving << " << msg << " >>" << "\n")
43#define DEBOUTSL(stream) \
44(stream << deb_level_msg, stream.flush())
45#define DEBOUT(stream,msg,object) \
46(stream << deb_level_msg << msg << object, stream.flush())
47#define DEBOUTLN(stream,msg,object) \
48(stream << deb_level_msg << msg << object << "\n")
49#define DEBOUTMSG(stream,msg) \
50(stream << deb_level_msg << msg << "\n")
51#define DEBOUTNL(stream) \
52(stream << "\n")
53#else
54#define DEBINCLEVEL(stream,msg)
55#define DEBDECLEVEL(stream,msg)
56#define DEBOUTSL(stream)
57#define DEBOUT(stream,msg,object)
58#define DEBOUTLN(stream,msg,object)
59#define DEBOUTMSG(stream,msg)
60#define DEBOUTNL(stream)
61#endif
62
Note: See TracBrowser for help on using the repository browser.