1/* Error handling during reading and writing of PO files.
2   Copyright (C) 2005 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
22extern "C" {
23#endif
24
25#include <stddef.h>
26
27struct 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.  */
46extern 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.  */
56extern 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.  */
66extern 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);
70extern 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 */
83