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