1 (*
2 * Hedgewars, a free turn based strategy game
3 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; version 2 of the License
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 *)
18
19 {$INCLUDE "options.inc"}
20
21 unit uDebug;
22
23 interface
24
25 procedure OutError(Msg: shortstring; isFatalError: boolean);
26 //procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean); inline;
checkFailsnull27 function checkFails(Assert: boolean; Msg: shortstring; isFatal: boolean): boolean;
SDLChecknull28 function SDLCheck(Assert: boolean; Msg: shortstring; isFatal: boolean): boolean;
29
30 var
31 allOK: boolean;
32
33 implementation
34 uses SDLh, uConsole, uCommands, uConsts;
35
36 procedure OutError(Msg: shortstring; isFatalError: boolean);
37 begin
38 WriteLnToConsole(Msg);
39 if isFatalError then
40 begin
41 ParseCommand('fatal ' + lastConsoleline, true);
42 // hint for the 'coverity' source analyzer
43 // this halt is never actually reached because ParseCommands will halt first
44 halt(HaltFatalError);
45 end;
46 end;
47
48 procedure TryDo(Assert: boolean; Msg: shortstring; isFatal: boolean);
49 begin
50 if not Assert then
51 OutError(Msg, isFatal)
52 end;
53
checkFailsnull54 function checkFails(Assert: boolean; Msg: shortstring; isFatal: boolean): boolean;
55 begin
56 if not Assert then
57 begin
58 lastConsoleLine:= Msg;
59 OutError(Msg, isFatal);
60 end;
61
62 allOK:= allOK and (Assert or (not isFatal));
63 checkFails:= (not Assert) and isFatal
64 end;
65
SDLChecknull66 function SDLCheck(Assert: boolean; Msg: shortstring; isFatal: boolean): boolean;
67 var s: shortstring;
68 begin
69 if not Assert then
70 begin
71 s:= SDL_GetError();
72 OutError(Msg + ': ' + s, isFatal)
73 end;
74
75 allOK:= allOK and (Assert or (not isFatal));
76 SDLCheck:= (not Assert) and isFatal
77 end;
78
79 end.
80