~ubuntu-branches/ubuntu/precise/widelands/precise-backports

« back to all changes in this revision

Viewing changes to src/error.h

  • Committer: Bazaar Package Importer
  • Author(s): Martin Quinson
  • Date: 2005-02-14 10:41:12 UTC
  • Revision ID: james.westby@ubuntu.com-20050214104112-6v08iux9fptxpva9
Tags: upstream-build9
Import upstream version build9

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2002, 2003 by the Widelands Development Team
 
3
 *
 
4
 * This program is free software; you can redistribute it and/or
 
5
 * modify it under the terms of the GNU General Public License
 
6
 * as published by the Free Software Foundation; either version 2
 
7
 * of the License, or (at your option) any later version.
 
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., 675 Mass Ave, Cambridge, MA 02139, USA.
 
17
 *
 
18
 */
 
19
 
 
20
#ifndef ERROR_H
 
21
#define ERROR_H
 
22
 
 
23
#include "types.h"
 
24
 
 
25
#ifdef __GNUC__
 
26
#define PRINTF_FORMAT(b,c) __attribute__ (( __format__ (__printf__,b,c) ))
 
27
#else
 
28
#define PRINTF_FORMAT(b,c)
 
29
#endif
 
30
 
 
31
/*
 
32
==============================================================================
 
33
 
 
34
ERROR HANDLING FUNCTIONS
 
35
 
 
36
==============================================================================
 
37
*/
 
38
 
 
39
#define RET_OK                          0
 
40
#define RET_EXIT           1
 
41
#define ERR_NOT_IMPLEMENTED -1
 
42
#define ERR_INVAL_ARG -2
 
43
#define ERR_FAILED -255
 
44
 
 
45
 
 
46
// Critical errors, displayed to the user.
 
47
// Does not return (unless the user is really daring)
 
48
void critical_error(const char *, ...) PRINTF_FORMAT(1,2);
 
49
 
 
50
// Informational messages that can aid in debugging
 
51
#define ALIVE() log("Alive in %s line %i\n", __FILE__, __LINE__)
 
52
void log(const char *, ...) PRINTF_FORMAT(1,2);
 
53
 
 
54
#ifdef DEBUG
 
55
   #ifndef KEEP_STANDART_ASSERT
 
56
                #include "wexception.h"
 
57
 
 
58
      #ifdef assert
 
59
         #undef assert
 
60
      #endif
 
61
 
 
62
/* reintroduce when we figure out a way to actually manage the beast that is autotools
 
63
   (problem is: tools include this as well)
 
64
      extern int graph_is_init;
 
65
 
 
66
      inline void myassert(int line, const char* file, int cond, const char* condt) {
 
67
         if(!cond) {
 
68
            char buf[200];
 
69
            sprintf(buf, "%s (%i): assertion \"%s\" failed!\n", file, line, condt);
 
70
 
 
71
            if(graph_is_init) {
 
72
               critical_error(buf);
 
73
               // User chooses, if it goes on
 
74
            } else {
 
75
               tell_user(buf);
 
76
               exit(-1);
 
77
            }
 
78
         }
 
79
      }
 
80
*/
 
81
                void myassert(int line, const char* file, const char* condt) throw(wexception);
 
82
 
 
83
      #define assert(condition) \
 
84
                        do { if (!(condition)) myassert(__LINE__, __FILE__, #condition); } while(0)
 
85
 
 
86
        #endif
 
87
#else
 
88
      #define NDEBUG 1
 
89
      #include <assert.h>
 
90
#endif
 
91
 
 
92
#endif