source: trunk/third/gstreamer/gst/gsterror.c @ 21448

Revision 21448, 7.5 KB checked in by ghudson, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21447, which included commits to RCS files with non-trunk default branches.
Line 
1/* GStreamer
2 * Copyright (C) <2003> David A. Schleef <ds@schleef.org>
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
18 */
19
20#ifdef HAVE_CONFIG_H
21#include "config.h"
22#endif
23
24#include "gst_private.h"
25#include <gst/gst.h>
26#include "gst-i18n-lib.h"
27
28#define TABLE(t, d, a, b) t[GST_ ## d ## _ERROR_ ## a] = g_strdup (b)
29#define QUARK_FUNC(string)                                              \
30GQuark gst_ ## string ## _error_quark (void) {                          \
31  static GQuark quark;                                                  \
32  if (!quark)                                                           \
33    quark = g_quark_from_static_string ("gst-" # string "-error-quark"); \
34  return quark; }
35
36GType
37gst_g_error_get_type (void)
38{
39  static GType type = 0;
40
41  if (!type)
42    type = g_boxed_type_register_static ("GstGError",
43        (GBoxedCopyFunc) g_error_copy, (GBoxedFreeFunc) g_error_free);
44  return type;
45}
46
47/* initialize the dynamic table of translated core errors */
48static gchar **
49_gst_core_errors_init (void)
50{
51  gchar **t = NULL;
52
53  t = g_new0 (gchar *, GST_CORE_ERROR_NUM_ERRORS);
54
55  TABLE (t, CORE, FAILED,
56      N_("GStreamer encountered a general core library error."));
57  TABLE (t, CORE, TOO_LAZY,
58      N_("GStreamer developers were too lazy to assign an error code "
59          "to this error.  Please file a bug."));
60  TABLE (t, CORE, NOT_IMPLEMENTED,
61      N_("Internal GStreamer error: code not implemented.  File a bug."));
62  TABLE (t, CORE, STATE_CHANGE,
63      N_("Internal GStreamer error: state change failed.  File a bug."));
64  TABLE (t, CORE, PAD,
65      N_("Internal GStreamer error: pad problem.  File a bug."));
66  TABLE (t, CORE, THREAD,
67      N_("Internal GStreamer error: thread problem.  File a bug."));
68  TABLE (t, CORE, SCHEDULER,
69      N_("Internal GStreamer error: scheduler problem.  File a bug."));
70  TABLE (t, CORE, NEGOTIATION,
71      N_("Internal GStreamer error: negotiation problem.  File a bug."));
72  TABLE (t, CORE, EVENT,
73      N_("Internal GStreamer error: event problem.  File a bug."));
74  TABLE (t, CORE, SEEK,
75      N_("Internal GStreamer error: seek problem.  File a bug."));
76  TABLE (t, CORE, CAPS,
77      N_("Internal GStreamer error: caps problem.  File a bug."));
78  TABLE (t, CORE, TAG,
79      N_("Internal GStreamer error: tag problem.  File a bug."));
80
81  return t;
82}
83
84/* initialize the dynamic table of translated library errors */
85static gchar **
86_gst_library_errors_init (void)
87{
88  gchar **t = NULL;
89
90  t = g_new0 (gchar *, GST_LIBRARY_ERROR_NUM_ERRORS);
91
92  TABLE (t, LIBRARY, FAILED,
93      N_("GStreamer encountered a general supporting library error."));
94  TABLE (t, LIBRARY, TOO_LAZY,
95      N_("GStreamer developers were too lazy to assign an error code "
96          "to this error.  Please file a bug."));
97  TABLE (t, LIBRARY, INIT, N_("Could not initialize supporting library."));
98  TABLE (t, LIBRARY, SHUTDOWN, N_("Could not close supporting library."));
99  TABLE (t, LIBRARY, SETTINGS, N_("Could not close supporting library."));
100
101  return t;
102}
103
104/* initialize the dynamic table of translated resource errors */
105static gchar **
106_gst_resource_errors_init (void)
107{
108  gchar **t = NULL;
109
110  t = g_new0 (gchar *, GST_RESOURCE_ERROR_NUM_ERRORS);
111
112  TABLE (t, RESOURCE, FAILED,
113      N_("GStreamer encountered a general resource error."));
114  TABLE (t, RESOURCE, TOO_LAZY,
115      N_("GStreamer developers were too lazy to assign an error code "
116          "to this error.  Please file a bug."));
117  TABLE (t, RESOURCE, NOT_FOUND, N_("Resource not found."));
118  TABLE (t, RESOURCE, BUSY, N_("Resource busy or not available."));
119  TABLE (t, RESOURCE, OPEN_READ, N_("Could not open resource for reading."));
120  TABLE (t, RESOURCE, OPEN_WRITE, N_("Could not open resource for writing."));
121  TABLE (t, RESOURCE, OPEN_READ_WRITE,
122      N_("Could not open resource for reading and writing."));
123  TABLE (t, RESOURCE, CLOSE, N_("Could not close resource."));
124  TABLE (t, RESOURCE, READ, N_("Could not read from resource."));
125  TABLE (t, RESOURCE, WRITE, N_("Could not write to resource."));
126  TABLE (t, RESOURCE, SEEK, N_("Could not perform seek on resource."));
127  TABLE (t, RESOURCE, SYNC, N_("Could not synchronize on resource."));
128  TABLE (t, RESOURCE, SETTINGS,
129      N_("Could not get/set settings from/on resource."));
130
131  return t;
132}
133
134/* initialize the dynamic table of translated stream errors */
135static gchar **
136_gst_stream_errors_init (void)
137{
138  gchar **t = NULL;
139
140  t = g_new0 (gchar *, GST_STREAM_ERROR_NUM_ERRORS);
141
142  TABLE (t, STREAM, FAILED,
143      N_("GStreamer encountered a general stream error."));
144  TABLE (t, STREAM, TOO_LAZY,
145      N_("GStreamer developers were too lazy to assign an error code "
146          "to this error.  Please file a bug."));
147  TABLE (t, STREAM, NOT_IMPLEMENTED,
148      N_("Element doesn't implement handling of this stream. "
149          "Please file a bug."));
150  TABLE (t, STREAM, TYPE_NOT_FOUND, N_("Could not determine type of stream."));
151  TABLE (t, STREAM, WRONG_TYPE,
152      N_("The stream is of a different type than handled by this element."));
153  TABLE (t, STREAM, CODEC_NOT_FOUND,
154      N_("There is no codec present that can handle the stream's type."));
155  TABLE (t, STREAM, DECODE, N_("Could not decode stream."));
156  TABLE (t, STREAM, ENCODE, N_("Could not encode stream."));
157  TABLE (t, STREAM, DEMUX, N_("Could not demultiplex stream."));
158  TABLE (t, STREAM, MUX, N_("Could not multiplex stream."));
159  TABLE (t, STREAM, FORMAT, N_("Stream is of the wrong format."));
160
161  return t;
162}
163
164QUARK_FUNC (core)
165    QUARK_FUNC (library)
166    QUARK_FUNC (resource)
167    QUARK_FUNC (stream)
168
169/**
170 * gst_error_get_message:
171 * @domain: the GStreamer error domain this error belongs to.
172 * @code: the error code belonging to the domain.
173 *
174 * Returns: a newly allocated string describing the error message in the
175 * current locale.
176 */
177     gchar *gst_error_get_message (GQuark domain, gint code)
178{
179  static gchar **gst_core_errors = NULL;
180  static gchar **gst_library_errors = NULL;
181  static gchar **gst_resource_errors = NULL;
182  static gchar **gst_stream_errors = NULL;
183
184  gchar *message = NULL;
185
186  /* initialize error message tables if necessary */
187  if (gst_core_errors == NULL)
188    gst_core_errors = _gst_core_errors_init ();
189  if (gst_library_errors == NULL)
190    gst_library_errors = _gst_library_errors_init ();
191  if (gst_resource_errors == NULL)
192    gst_resource_errors = _gst_resource_errors_init ();
193  if (gst_stream_errors == NULL)
194    gst_stream_errors = _gst_stream_errors_init ();
195
196
197  if (domain == GST_CORE_ERROR)
198    message = gst_core_errors[code];
199  else if (domain == GST_LIBRARY_ERROR)
200    message = gst_library_errors[code];
201  else if (domain == GST_RESOURCE_ERROR)
202    message = gst_resource_errors[code];
203  else if (domain == GST_STREAM_ERROR)
204    message = gst_stream_errors[code];
205  else {
206    g_warning ("No error messages for domain %s", g_quark_to_string (domain));
207    return g_strdup_printf (_("No error message for domain %s."),
208        g_quark_to_string (domain));
209  }
210  if (message)
211    return g_strdup (_(message));
212  else
213    return
214        g_strdup_printf (_
215        ("No standard error message for domain %s and code %d."),
216        g_quark_to_string (domain), code);
217}
Note: See TracBrowser for help on using the repository browser.