Imported Upstream version 0.19.7
[platform/upstream/gettext.git] / gettext-tools / src / po-xerror.h
1 /* Error handling during reading and writing of PO files.
2    Copyright (C) 2005, 2015 Free Software Foundation, Inc.
3    Written by Bruno Haible <bruno@clisp.org>, 2005.
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; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 #ifndef _PO_XERROR_H
19 #define _PO_XERROR_H
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif 
24
25 #include <stddef.h>
26
27 struct message_ty;
28
29
30 /* A higher-level error handler than the one in po-error.h.  */
31
32 /* These values must be the same as those in gettext-po.h.  */
33 #define PO_SEVERITY_WARNING     0 /* just a warning, tell the user */
34 #define PO_SEVERITY_ERROR       1 /* an error, the operation cannot complete */
35 #define PO_SEVERITY_FATAL_ERROR 2 /* an error, the operation must be aborted */
36
37 /* Signal a problem of the given severity.
38    MESSAGE and/or FILENAME + LINENO indicate where the problem occurred.
39    If FILENAME is NULL, FILENAME and LINENO and COLUMN should be ignored.
40    If LINENO is (size_t)(-1), LINENO and COLUMN should be ignored.
41    If COLUMN is (size_t)(-1), it should be ignored.
42    MESSAGE_TEXT is the problem description (if MULTILINE_P is true,
43    multiple lines of text, each terminated with a newline, otherwise
44    usually a single line).
45    Must not return if SEVERITY is PO_SEVERITY_FATAL_ERROR.  */
46 extern DLL_VARIABLE
47        void (*po_xerror) (int severity,
48                           const struct message_ty *message,
49                           const char *filename, size_t lineno, size_t column,
50                           int multiline_p, const char *message_text);
51
52 /* Signal a problem that refers to two messages.
53    Similar to two calls to po_xerror.
54    If possible, a "..." can be appended to MESSAGE_TEXT1 and prepended to
55    MESSAGE_TEXT2.  */
56 extern DLL_VARIABLE
57        void (*po_xerror2) (int severity,
58                            const struct message_ty *message1,
59                            const char *filename1, size_t lineno1, size_t column1,
60                            int multiline_p1, const char *message_text1,
61                            const struct message_ty *message2,
62                            const char *filename2, size_t lineno2, size_t column2,
63                            int multiline_p2, const char *message_text2);
64
65 /* The default error handler.  */
66 extern void textmode_xerror (int severity,
67                              const struct message_ty *message,
68                              const char *filename, size_t lineno, size_t column,
69                              int multiline_p, const char *message_text);
70 extern void textmode_xerror2 (int severity,
71                               const struct message_ty *message1,
72                               const char *filename1, size_t lineno1, size_t column1,
73                               int multiline_p1, const char *message_text1,
74                               const struct message_ty *message2,
75                               const char *filename2, size_t lineno2, size_t column2,
76                               int multiline_p2, const char *message_text2);
77
78 #ifdef __cplusplus
79 }
80 #endif
81
82 #endif /* _PO_XERROR_H */