1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/*
This is our assert file for the Win95
platform, with Dave's global/local assert
distinctions.
*/
/*
Note that WaitForReturn now calls FlushTextprintBuffer
and FlipBuffers implicitly.
*/
/*
Modified 10th December 1996 by Dave Malcolm. Now can be set so that
functions are supplied by the project/platform to fire when an assertion
fires.
Also is set so that the compiler will generate an error message if you manage to
include the file more than once (with confusing definitons of UseLocalAssert);
this can be disabled.
*/
#ifdef _OURASERT
#if StopCompilationOnMultipleInclusions
#error OURASERT.H included more than once
#endif
#else
#define _OURASERT 1
#endif
#ifdef AVP_DEBUG_VERSION
#define ASSERT_SYSTEM_ON 1
#else
#define ASSERT_SYSTEM_ON 0
#endif
#if UseProjPlatAssert
/* New assertions system */
#ifdef __cplusplus
extern "C" {
#endif
int GlobalAssertFired(char* Filename, int LineNum, char* Condition);
int LocalAssertFired(char* Filename, int LineNum, char* Condition);
void ExitFired(char* Filename, int LineNum, int ExitCode);
#ifdef __cplusplus
};
#endif
#if ASSERT_SYSTEM_ON
#define GLOBALASSERT(x) \
(void)( (x) ? 1 : \
( \
GlobalAssertFired \
( \
__FILE__, \
__LINE__, \
#x \
) \
) \
)
#if UseLocalAssert
#define LOCALASSERT(x) \
(void)( (x) ? 1 : \
( \
LocalAssertFired \
( \
__FILE__, \
__LINE__, \
#x \
) \
) \
)
#else
#define LOCALASSERT(ignore)
#endif
#define exit(x) ExitFired(__FILE__,__LINE__,x)
#else
#define GLOBALASSERT(ignore) ((void)0)
#define LOCALASSERT(ignore) ((void)0)
#endif
#else
/* Old assertions system */
#define GlobalAssertCode 0xffff
#define LocalAssertCode 0xfffe
#if 0//debug
#define GLOBALASSERT(x) \
(void)((x) ? 1 : \
(textprint("\nGAF " #x "\nLINE %d\nFILE'%s'\n", \
__LINE__, __FILE__), WaitForReturn(), \
ExitSystem(), exit(GlobalAssertCode), \
0))
#if UseLocalAssert
#define LOCALASSERT(x) \
(void)((x) ? 1 : \
(textprint("\nLAF " #x "LINE %d\nFILE'%s'\n", \
__LINE__, __FILE__), WaitForReturn(), \
ExitSystem(), exit(LocalAssertCode), \
0))
#else
#define LOCALASSERT(ignore)
#endif
#else
#define GLOBALASSERT(ignore)
#define LOCALASSERT(ignore)
#endif
#endif
|