source: git/factory/assert.h @ 84250a6

spielwiese
Last change on this file since 84250a6 was bc428ca, checked in by Jens Schmidt <schmidt@…>, 27 years ago
NDEBUG renamed to NOASSERT ASSERT1 added DEBUGOUTPUT-functionality moved to debug.h WARN- and PVIRT-functionality added git-svn-id: file:///usr/local/Singular/svn/trunk@79 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 2.7 KB
Line 
1/* emacs edit mode for this file is -*- C++ -*- */
2/* $Id: assert.h,v 1.2 1997-03-26 16:20:48 schmidt Exp $ */
3
4/*
5$Log: not supported by cvs2svn $
6Revision 1.1  1996/12/05 18:19:31  schmidt
7``Unconditional'' check-in.
8Now it is my turn to develop factory.
9
10Revision 1.0  1996/05/17 10:59:37  stobbe
11Initial revision
12
13*/
14
15/* This is for backward compatibility only */
16#if defined (NDEBUG) && ! defined (NOASSERT)
17#define NOASSERT
18#endif
19
20/* It should be possible to include this file multiple times for different */
21/* settings of NOASSERT */
22
23#undef __ASSERT
24#undef __ASSERT1
25#undef STICKYASSERT
26#undef ASSERT
27#undef ASSERT1
28
29#undef __WARN
30#undef STICKYWARN
31#undef WARN
32
33#undef PVIRT_VOID
34#undef PVIRT_INTCF
35#undef PVIRT_BOOL
36#undef PVIRT_INT
37#undef PVIRT_CHARCC
38
39#include <stdio.h>
40#include <stdlib.h>
41
42#define __ASSERT(expression, message, file, line) \
43(fprintf( stderr, "error: " message "\n%s:%u: failed assertion `%s'\n", \
44 file, line, expression ), abort(), 0 )
45#define __ASSERT1(expression, message, parameter1, file, line)  \
46(fprintf( stderr, "error: " message "\n%s:%u: failed assertion `%s'\n", \
47 parameter1, file, line, expression ), abort(), 0 )
48#define STICKYASSERT(expression, message) \
49((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
50
51#define __WARN(expression, message, file, line)  \
52(fprintf( stderr, "warning: " message "\n%s:%u: failed assertion `%s'\n", \
53 file, line, expression ), 0 )
54#define STICKYWARN(expression, message) \
55((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__)))
56
57#ifndef NOASSERT
58#define ASSERT(expression, message) \
59((void)((expression) ? 0 : __ASSERT(#expression, message, __FILE__, __LINE__)))
60#define ASSERT1(expression, message, parameter1) \
61((void)((expression) ? 0 : __ASSERT1(#expression, message, parameter1, __FILE__, __LINE__)))
62
63#define WARN(expression, message) \
64((void)((expression) ? 0 : __WARN(#expression, message, __FILE__, __LINE__)))
65
66#define PVIRT_VOID(msg) \
67{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); }
68#define PVIRT_INTCF(msg) \
69{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
70#define PVIRT_BOOL(msg) \
71{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return false; }
72#define PVIRT_INT(msg) \
73{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
74#define PVIRT_CHARCC(msg) \
75{ fprintf( stderr, "pure method( " msg " ) called\n" ); abort(); return 0; }
76#else /* NOASSERT */
77#define ASSERT(expression, message)
78#define ASSERT1(expression, message, parameter1)
79
80#define WARN(expression, message)
81
82#define PVIRT_VOID(msg) = 0
83#define PVIRT_INTCF(msg) = 0
84#define PVIRT_BOOL(msg) = 0
85#define PVIRT_INT(msg) = 0
86#define PVIRT_CHARCC(msg) = 0
87#endif /* NOASSERT */
Note: See TracBrowser for help on using the repository browser.