Commit | Line | Data |
---|---|---|
970ed795 | 1 | /////////////////////////////////////////////////////////////////////////////// |
3abe9331 | 2 | // Copyright (c) 2000-2015 Ericsson Telecom AB |
970ed795 EL |
3 | // All rights reserved. This program and the accompanying materials |
4 | // are made available under the terms of the Eclipse Public License v1.0 | |
5 | // which accompanies this distribution, and is available at | |
6 | // http://www.eclipse.org/legal/epl-v10.html | |
7 | /////////////////////////////////////////////////////////////////////////////// | |
8 | #ifndef _ERROR_H | |
9 | #define _ERROR_H | |
10 | ||
11 | #ifndef __GNUC__ | |
12 | /** If a C compiler other than GCC is used the macro below will substitute all | |
13 | * GCC-specific non-standard attributes with an empty string. */ | |
14 | #ifndef __attribute__ | |
15 | #define __attribute__(arg) | |
16 | #endif | |
17 | #endif | |
18 | ||
19 | #ifdef __cplusplus | |
20 | extern "C" { | |
21 | #endif | |
22 | ||
23 | /** | |
24 | * \defgroup error Error reporting functions | |
25 | * \author Roland Gecse <ethrge@eth.ericsson.se> | |
26 | * | |
27 | * @{ | |
28 | */ | |
29 | ||
30 | /** | |
31 | * | |
32 | * Verbosity level (bitmask). | |
33 | * | |
34 | * Meaning of bits: | |
35 | * 1: "not supported" messages | |
36 | * 2: warning | |
37 | * 4: notify | |
38 | * 8: debug 0 | |
39 | * 16: debug 1 | |
40 | * 32: debug 2 | |
41 | * | |
42 | * Debug bits define the debug level in the interval 0..7; 0 means no | |
43 | * debug messages, 7 means very verbose. | |
44 | */ | |
45 | extern unsigned verb_level; | |
46 | ||
47 | /** | |
48 | * The argv[0] of main, i.e. the program name. | |
49 | */ | |
50 | extern const char *argv0; | |
51 | ||
52 | /** | |
53 | * FATAL_ERROR(const char *fmt, ...) macro prints a formatted error message | |
54 | * to stderr and aborts execution. It calls the fatal_error function with | |
55 | * appropriate file name and line number information | |
56 | */ | |
57 | #if defined(__GNUC__) && __GNUC__ < 3 | |
58 | /** | |
59 | * The preprocessors of GCC versions earlier than 3.0 do not support the | |
60 | * standard notation for variadic macros in C++ mode. | |
61 | * Therefore this proprietary notation is used with those old GCC versions. | |
62 | */ | |
63 | #define FATAL_ERROR(fmt, args...) \ | |
64 | (fatal_error(__FILE__, __LINE__, fmt, ## args)) | |
65 | #else | |
66 | /** | |
67 | * This is the standard notation. | |
68 | */ | |
69 | #define FATAL_ERROR(...) \ | |
70 | (fatal_error(__FILE__, __LINE__, __VA_ARGS__)) | |
71 | #endif | |
72 | ||
73 | /** | |
74 | * fatal_error function, which is not supposed to be called directly. | |
75 | */ | |
76 | extern void fatal_error(const char *filename, int lineno, const char *fmt, ...) | |
77 | __attribute__ ((__format__ (__printf__, 3, 4), __noreturn__)); | |
78 | ||
79 | /** | |
80 | * Prints a formatted error message to stderr. | |
81 | * Used for reporting system-related errors, e.g. file not found etc. | |
82 | * Compiler errors are reported through Common::Location::error. | |
83 | */ | |
84 | extern void ERROR(const char *fmt, ...) | |
85 | __attribute__ ((__format__ (__printf__, 1, 2))); | |
86 | ||
87 | /** | |
88 | * Prints a formatted warning message to stderr. | |
89 | */ | |
90 | extern void WARNING(const char *fmt, ...) | |
91 | __attribute__ ((__format__ (__printf__, 1, 2))); | |
92 | ||
93 | /** | |
94 | * Prints a formatted warning message to stderr: "Warning: Not supported: %s". | |
95 | */ | |
96 | extern void NOTSUPP(const char *fmt, ...) | |
97 | __attribute__ ((__format__ (__printf__, 1, 2))); | |
98 | ||
99 | /** | |
100 | * Prints a formatted notify message to stderr. | |
101 | */ | |
102 | extern void NOTIFY(const char *fmt, ...) | |
103 | __attribute__ ((__format__ (__printf__, 1, 2))); | |
104 | ||
105 | /** | |
106 | * Prints a formatted debug message to stderr. | |
107 | */ | |
108 | extern void DEBUG(unsigned level, const char *fmt, ...) | |
109 | __attribute__ ((__format__ (__printf__, 2, 3))); | |
110 | ||
111 | /** | |
112 | * Returns the current value of the error counter. | |
113 | */ | |
114 | extern unsigned int get_error_count(void); | |
115 | ||
116 | /** | |
117 | * Returns the current value of the warning counter. | |
118 | */ | |
119 | extern unsigned int get_warning_count(void); | |
120 | ||
121 | /** @} end of error group */ | |
122 | ||
123 | #ifdef __cplusplus | |
124 | } | |
125 | #endif | |
126 | ||
127 | #endif /* _ERROR_H */ |