1 | /* gerror.h - Error reporting system |
2 | * |
3 | * Copyright 2000 Red Hat, Inc. |
4 | * |
5 | * The Gnome Library is free software; you can redistribute it and/or |
6 | * modify it under the terms of the GNU Lesser General Public License as |
7 | * published by the Free Software Foundation; either version 2 of the |
8 | * License, or (at your option) any later version. |
9 | * |
10 | * The Gnome Library 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 GNU |
13 | * Lesser General Public License for more details. |
14 | * |
15 | * You should have received a copy of the GNU Lesser General Public |
16 | * License along with the Gnome Library; see the file COPYING.LIB. If not, |
17 | * see <http://www.gnu.org/licenses/>. |
18 | */ |
19 | |
20 | #ifndef __G_ERROR_H__ |
21 | #define __G_ERROR_H__ |
22 | |
23 | #if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) |
24 | #error "Only <glib.h> can be included directly." |
25 | #endif |
26 | |
27 | #include <stdarg.h> |
28 | |
29 | #include <glib/gquark.h> |
30 | |
31 | G_BEGIN_DECLS |
32 | |
33 | /** |
34 | * GError: |
35 | * @domain: error domain, e.g. #G_FILE_ERROR |
36 | * @code: error code, e.g. %G_FILE_ERROR_NOENT |
37 | * @message: human-readable informative error message |
38 | * |
39 | * The `GError` structure contains information about |
40 | * an error that has occurred. |
41 | */ |
42 | typedef struct _GError GError; |
43 | |
44 | struct _GError |
45 | { |
46 | GQuark domain; |
47 | gint code; |
48 | gchar *message; |
49 | }; |
50 | |
51 | GLIB_AVAILABLE_IN_ALL |
52 | GError* g_error_new (GQuark domain, |
53 | gint code, |
54 | const gchar *format, |
55 | ...) G_GNUC_PRINTF (3, 4); |
56 | |
57 | GLIB_AVAILABLE_IN_ALL |
58 | GError* g_error_new_literal (GQuark domain, |
59 | gint code, |
60 | const gchar *message); |
61 | GLIB_AVAILABLE_IN_ALL |
62 | GError* g_error_new_valist (GQuark domain, |
63 | gint code, |
64 | const gchar *format, |
65 | va_list args) G_GNUC_PRINTF(3, 0); |
66 | |
67 | GLIB_AVAILABLE_IN_ALL |
68 | void g_error_free (GError *error); |
69 | GLIB_AVAILABLE_IN_ALL |
70 | GError* g_error_copy (const GError *error); |
71 | |
72 | GLIB_AVAILABLE_IN_ALL |
73 | gboolean g_error_matches (const GError *error, |
74 | GQuark domain, |
75 | gint code); |
76 | |
77 | /* if (err) *err = g_error_new(domain, code, format, ...), also has |
78 | * some sanity checks. |
79 | */ |
80 | GLIB_AVAILABLE_IN_ALL |
81 | void g_set_error (GError **err, |
82 | GQuark domain, |
83 | gint code, |
84 | const gchar *format, |
85 | ...) G_GNUC_PRINTF (4, 5); |
86 | |
87 | GLIB_AVAILABLE_IN_ALL |
88 | void g_set_error_literal (GError **err, |
89 | GQuark domain, |
90 | gint code, |
91 | const gchar *message); |
92 | |
93 | /* if (dest) *dest = src; also has some sanity checks. |
94 | */ |
95 | GLIB_AVAILABLE_IN_ALL |
96 | void g_propagate_error (GError **dest, |
97 | GError *src); |
98 | |
99 | /* if (err && *err) { g_error_free(*err); *err = NULL; } */ |
100 | GLIB_AVAILABLE_IN_ALL |
101 | void g_clear_error (GError **err); |
102 | |
103 | /* if (err) prefix the formatted string to the ->message */ |
104 | GLIB_AVAILABLE_IN_ALL |
105 | void g_prefix_error (GError **err, |
106 | const gchar *format, |
107 | ...) G_GNUC_PRINTF (2, 3); |
108 | |
109 | /* g_propagate_error then g_error_prefix on dest */ |
110 | GLIB_AVAILABLE_IN_ALL |
111 | void g_propagate_prefixed_error (GError **dest, |
112 | GError *src, |
113 | const gchar *format, |
114 | ...) G_GNUC_PRINTF (3, 4); |
115 | |
116 | G_END_DECLS |
117 | |
118 | #endif /* __G_ERROR_H__ */ |
119 | |