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