source: git/factory/assert.h @ 3e55bc

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