| 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 |  | 
|---|