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 * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 * Boston, MA 02111-1307, USA. 19 */ 20 21 #if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) 22 #error "Only <glib.h> can be included directly." 23 #endif 24 25 #ifndef __G_ERROR_H__ 26 #define __G_ERROR_H__ 27 28 #include <glib/gquark.h> 29 30 G_BEGIN_DECLS 31 32 typedef struct _GError GError; 33 34 struct _GError 35 { 36 GQuark domain; 37 gint code; 38 gchar *message; 39 }; 40 41 GError* g_error_new (GQuark domain, 42 gint code, 43 const gchar *format, 44 ...) G_GNUC_PRINTF (3, 4); 45 46 GError* g_error_new_literal (GQuark domain, 47 gint code, 48 const gchar *message); 49 50 void g_error_free (GError *error); 51 GError* g_error_copy (const GError *error); 52 53 gboolean g_error_matches (const GError *error, 54 GQuark domain, 55 gint code); 56 57 /* if (err) *err = g_error_new(domain, code, format, ...), also has 58 * some sanity checks. 59 */ 60 void g_set_error (GError **err, 61 GQuark domain, 62 gint code, 63 const gchar *format, 64 ...) G_GNUC_PRINTF (4, 5); 65 66 void g_set_error_literal (GError **err, 67 GQuark domain, 68 gint code, 69 const gchar *message); 70 71 /* if (dest) *dest = src; also has some sanity checks. 72 */ 73 void g_propagate_error (GError **dest, 74 GError *src); 75 76 /* if (err && *err) { g_error_free(*err); *err = NULL; } */ 77 void g_clear_error (GError **err); 78 79 /* if (err) prefix the formatted string to the ->message */ 80 void g_prefix_error (GError **err, 81 const gchar *format, 82 ...) G_GNUC_PRINTF (2, 3); 83 84 /* g_propagate_error then g_error_prefix on dest */ 85 void g_propagate_prefixed_error (GError **dest, 86 GError *src, 87 const gchar *format, 88 ...) G_GNUC_PRINTF (3, 4); 89 90 G_END_DECLS 91 92 #endif /* __G_ERROR_H__ */ 93