create an Element constructor

Original commit message from CVS:
create an Element constructor
This commit is contained in:
Thomas Vander Stichele 2003-10-04 13:18:56 +00:00
parent aadd62a79d
commit 7a7a6d1ca9
6 changed files with 84 additions and 4 deletions

View file

@ -7,6 +7,7 @@ pygstreamer_PYTHON = __init__.py
pygstreamerexecdir = $(pyexecdir)/gstreamer
# gstreamer binding
OVERRIDES = gstreamer.override
pyexec_LTLIBRARIES = _gstreamermodule.la
_gstreamermodule_la_SOURCES = gstreamermodule.c gstreamer-fixes.c gstreamer-fixes.h
@ -15,8 +16,8 @@ _gstreamermodule_la_LIBADD = $(GST_LIBS)
_gstreamermodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex initgstreamer
nodist__gstreamermodule_la_SOURCES = gstreamer.c
CLEANFILES = gstreamer.c gstreamer-base.defs gstreamer.defs
EXTRA_DIST = gstreamer-extra.defs gstreamer.override gstreamer-arg-types.py
gstreamer.c: gstreamer.defs gstreamer.override
EXTRA_DIST = gstreamer-extra.defs $(OVERRIDES) gstreamer-arg-types.py
gstreamer.c: gstreamer.defs $(OVERRIDES)
GST_EXCLUDE_INCLUDES=\
$(GST_INCLUDEDIR)/gst/gstatomic_impl.h \

View file

@ -104,3 +104,17 @@
'("char*" "data")
)
)
;;
;; Element constructor override; uses a nonexistant make_element
;; which is defined in gstreamer.overrides
;;
(define-function gst_element_factory_make_element
(is-constructor-of "GstElement")
(c-name "gst_element_factory_make_element")
(return-type "GstElement*")
(parameters
'("const-gchar*" "elementname")
'("const-gchar*" "name")
)
)

View file

@ -437,6 +437,8 @@ _wrap_gst_props_entry_get_float_range(PyObject *self)
%%
override gst_props_entry_get_list
static PyObject *
_wrap_gst_props_entry_get_list(PyObject *self)
{
@ -491,3 +493,26 @@ _wrap_gst_props_get_list(PyObject *self)
}
return Py_BuildValue("(bO)", ret, tuple);
}
%%
override gst_element_factory_make_element
/* we create this function to serve as a constructor for Element */
static int
_wrap_gst_element_factory_make_element(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "factoryname", "name", NULL };
char *factoryname, *name;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss:GstElement.__init__", kwlist, &factoryname, &name))
return -1;
self->obj = (GObject *)gst_element_factory_make(factoryname, name);
if (!self->obj) {
PyErr_SetString(PyExc_RuntimeError, "could not create GstElement object");
return -1;
}
pygobject_register_wrapper((PyObject *)self);
return 0;
}

View file

@ -7,6 +7,7 @@ pygstreamer_PYTHON = __init__.py
pygstreamerexecdir = $(pyexecdir)/gstreamer
# gstreamer binding
OVERRIDES = gstreamer.override
pyexec_LTLIBRARIES = _gstreamermodule.la
_gstreamermodule_la_SOURCES = gstreamermodule.c gstreamer-fixes.c gstreamer-fixes.h
@ -15,8 +16,8 @@ _gstreamermodule_la_LIBADD = $(GST_LIBS)
_gstreamermodule_la_LDFLAGS = -module -avoid-version -export-symbols-regex initgstreamer
nodist__gstreamermodule_la_SOURCES = gstreamer.c
CLEANFILES = gstreamer.c gstreamer-base.defs gstreamer.defs
EXTRA_DIST = gstreamer-extra.defs gstreamer.override gstreamer-arg-types.py
gstreamer.c: gstreamer.defs gstreamer.override
EXTRA_DIST = gstreamer-extra.defs $(OVERRIDES) gstreamer-arg-types.py
gstreamer.c: gstreamer.defs $(OVERRIDES)
GST_EXCLUDE_INCLUDES=\
$(GST_INCLUDEDIR)/gst/gstatomic_impl.h \

View file

@ -104,3 +104,17 @@
'("char*" "data")
)
)
;;
;; Element constructor override; uses a nonexistant make_element
;; which is defined in gstreamer.overrides
;;
(define-function gst_element_factory_make_element
(is-constructor-of "GstElement")
(c-name "gst_element_factory_make_element")
(return-type "GstElement*")
(parameters
'("const-gchar*" "elementname")
'("const-gchar*" "name")
)
)

View file

@ -437,6 +437,8 @@ _wrap_gst_props_entry_get_float_range(PyObject *self)
%%
override gst_props_entry_get_list
static PyObject *
_wrap_gst_props_entry_get_list(PyObject *self)
{
@ -491,3 +493,26 @@ _wrap_gst_props_get_list(PyObject *self)
}
return Py_BuildValue("(bO)", ret, tuple);
}
%%
override gst_element_factory_make_element
/* we create this function to serve as a constructor for Element */
static int
_wrap_gst_element_factory_make_element(PyGObject *self, PyObject *args, PyObject *kwargs)
{
static char *kwlist[] = { "factoryname", "name", NULL };
char *factoryname, *name;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "ss:GstElement.__init__", kwlist, &factoryname, &name))
return -1;
self->obj = (GObject *)gst_element_factory_make(factoryname, name);
if (!self->obj) {
PyErr_SetString(PyExc_RuntimeError, "could not create GstElement object");
return -1;
}
pygobject_register_wrapper((PyObject *)self);
return 0;
}