gst/pygstexception.*: gst.element_factory_make should raise ElementNotFoundError.

Original commit message from CVS:
* gst/pygstexception.c: (element_not_found_error_init),
(pygst_exceptions_register_classes):
* gst/pygstexception.h:
gst.element_factory_make should raise ElementNotFoundError.
Subclass it from PluginNotFoundError so we can add it compatibly
and remove the wrong one later.
* gst/gstelementfactory.override:
raise ElementNotFoundError
This commit is contained in:
Thomas Vander Stichele 2007-01-17 07:30:11 +00:00
parent 7e94773d0f
commit 10fe9ba7f4
4 changed files with 52 additions and 12 deletions

View file

@ -1,3 +1,14 @@
2007-01-17 Thomas Vander Stichele <thomas at apestaart dot org>
* gst/pygstexception.c: (element_not_found_error_init),
(pygst_exceptions_register_classes):
* gst/pygstexception.h:
gst.element_factory_make should raise ElementNotFoundError.
Subclass it from PluginNotFoundError so we can add it compatibly
and remove the wrong one later.
* gst/gstelementfactory.override:
raise ElementNotFoundError
2007-01-17 Thomas Vander Stichele <thomas at apestaart dot org> 2007-01-17 Thomas Vander Stichele <thomas at apestaart dot org>
* gst/interfaces.defs: * gst/interfaces.defs:

View file

@ -35,7 +35,7 @@ _wrap_gst_element_factory_make(PyObject *self, PyObject *args, PyObject *kwargs)
return NULL; return NULL;
ret = gst_element_factory_make(factoryname, name); ret = gst_element_factory_make(factoryname, name);
if (ret == NULL) { if (ret == NULL) {
PyErr_SetString(PyGstExc_PluginNotFoundError, factoryname); PyErr_SetString(PyGstExc_ElementNotFoundError, factoryname);
return NULL; return NULL;
} }
py_ret = pygobject_new((GObject *)ret); py_ret = pygobject_new((GObject *)ret);

View file

@ -29,6 +29,7 @@ PyObject *PyGstExc_AddError = NULL;
PyObject *PyGstExc_QueryError = NULL; PyObject *PyGstExc_QueryError = NULL;
PyObject *PyGstExc_RemoveError = NULL; PyObject *PyGstExc_RemoveError = NULL;
PyObject *PyGstExc_PluginNotFoundError = NULL; PyObject *PyGstExc_PluginNotFoundError = NULL;
PyObject *PyGstExc_ElementNotFoundError = NULL;
static PyObject * static PyObject *
@ -115,21 +116,21 @@ link_error_init(PyObject *self, PyObject *args)
} }
static PyObject * static PyObject *
plugin_not_found_error_init(PyObject *self, PyObject *args) element_not_found_error_init(PyObject *self, PyObject *args)
{ {
PyObject *plugin_name = NULL; PyObject *element_name = NULL;
int status; int status;
if (!PyArg_ParseTuple(args, "O|O:__init__", &self, &plugin_name)) if (!PyArg_ParseTuple(args, "O|O:__init__", &self, &element_name))
return NULL; return NULL;
if (plugin_name == NULL) if (element_name == NULL)
plugin_name = Py_None; element_name = Py_None;
Py_INCREF(plugin_name); Py_INCREF(element_name);
/* set self.name */ /* set self.name */
status = PyObject_SetAttrString(self, "name", plugin_name); status = PyObject_SetAttrString(self, "name", element_name);
Py_DECREF(plugin_name); Py_DECREF(element_name);
if (status < 0) if (status < 0)
return NULL; return NULL;
@ -140,8 +141,8 @@ static PyMethodDef link_error_init_method = {"__init__",
link_error_init, METH_VARARGS link_error_init, METH_VARARGS
}; };
static PyMethodDef plugin_not_found_error_init_method = {"__init__", static PyMethodDef element_not_found_error_init_method = {"__init__",
plugin_not_found_error_init, METH_VARARGS element_not_found_error_init, METH_VARARGS
}; };
void void
@ -202,6 +203,8 @@ pygst_exceptions_register_classes(PyObject *d)
Py_DECREF(PyGstExc_QueryError); Py_DECREF(PyGstExc_QueryError);
/* FIXME: remove this method in 0.11; element_factory_make deals with element
factories, not plug-ins */
/* register gst.PluginNotFoundError */ /* register gst.PluginNotFoundError */
dict = PyDict_New(); dict = PyDict_New();
@ -214,7 +217,7 @@ pygst_exceptions_register_classes(PyObject *d)
goto exception; goto exception;
if (add_method(PyGstExc_PluginNotFoundError, if (add_method(PyGstExc_PluginNotFoundError,
dict, &plugin_not_found_error_init_method) < 0) dict, &element_not_found_error_init_method) < 0)
goto exception; goto exception;
Py_DECREF(dict); Py_DECREF(dict);
@ -225,6 +228,30 @@ pygst_exceptions_register_classes(PyObject *d)
Py_DECREF(PyGstExc_PluginNotFoundError); Py_DECREF(PyGstExc_PluginNotFoundError);
/* register gst.ElementNotFoundError */
dict = PyDict_New();
if (dict == NULL)
goto exception;
PyGstExc_ElementNotFoundError = \
PyErr_NewException("gst.ElementNotFoundError", PyGstExc_PluginNotFoundError, dict);
if (PyGstExc_ElementNotFoundError == NULL)
goto exception;
if (add_method(PyGstExc_ElementNotFoundError,
dict, &element_not_found_error_init_method) < 0)
goto exception;
Py_DECREF(dict);
if (PyDict_SetItemString(d, "ElementNotFoundError",
PyGstExc_ElementNotFoundError) < 0)
goto exception;
Py_DECREF(PyGstExc_ElementNotFoundError);
return;
return; return;
exception: exception:
@ -234,6 +261,7 @@ exception:
Py_XDECREF(PyGstExc_RemoveError); Py_XDECREF(PyGstExc_RemoveError);
Py_XDECREF(PyGstExc_QueryError); Py_XDECREF(PyGstExc_QueryError);
Py_XDECREF(PyGstExc_PluginNotFoundError); Py_XDECREF(PyGstExc_PluginNotFoundError);
Py_XDECREF(PyGstExc_ElementNotFoundError);
return; return;
} }

View file

@ -29,6 +29,7 @@ extern PyObject *PyGstExc_AddError;
extern PyObject *PyGstExc_RemoveError; extern PyObject *PyGstExc_RemoveError;
extern PyObject *PyGstExc_QueryError; extern PyObject *PyGstExc_QueryError;
extern PyObject *PyGstExc_PluginNotFoundError; extern PyObject *PyGstExc_PluginNotFoundError;
extern PyObject *PyGstExc_ElementNotFoundError;
void pygst_exceptions_register_classes(PyObject *d); void pygst_exceptions_register_classes(PyObject *d);