gst/arg-types.py: GstMiniObject used as virtual methods parameters should be unreffed before calling the method and t...

Original commit message from CVS:
* gst/arg-types.py:
GstMiniObject used as virtual methods parameters should be unreffed
before calling the method and the ref-ed.
Added Params and Returns for const-gchar*, GType and gulong so the
code generator can generate more virtual methods handlers/proxys.
* gst/gst-types.defs:
* gst/gst.defs:
* gst/interfaces.defs:
Added vtable and virtual method definition for interfaces so we can properly use virtual
methods from those interfaces in python.
This commit is contained in:
Edward Hervey 2006-04-28 15:07:41 +00:00
parent a0da01acaa
commit 31033595e4
5 changed files with 271 additions and 6 deletions

View file

@ -1,3 +1,16 @@
2006-04-28 Edward Hervey <edward@fluendo.com>
* gst/arg-types.py:
GstMiniObject used as virtual methods parameters should be unreffed
before calling the method and the ref-ed.
Added Params and Returns for const-gchar*, GType and gulong so the
code generator can generate more virtual methods handlers/proxys.
* gst/gst-types.defs:
* gst/gst.defs:
* gst/interfaces.defs:
Added vtable and virtual method definition for interfaces so we can properly use virtual
methods from those interfaces in python.
2006-04-28 Edward Hervey <edward@fluendo.com> 2006-04-28 Edward Hervey <edward@fluendo.com>
* gst/gstmodule.c: (init_gst): * gst/gstmodule.c: (init_gst):

View file

@ -23,7 +23,7 @@
# Author: David I. Lehn <dlehn@users.sourceforge.net> # Author: David I. Lehn <dlehn@users.sourceforge.net>
from argtypes import UInt64Arg, Int64Arg, PointerArg, ArgMatcher, ArgType, matcher from argtypes import UInt64Arg, Int64Arg, PointerArg, ArgMatcher, ArgType, matcher
from reversewrapper import Parameter, ReturnType, GBoxedParam, GBoxedReturn from reversewrapper import Parameter, ReturnType, GBoxedParam, GBoxedReturn, IntParam, IntReturn
class XmlNodeArg(ArgType): class XmlNodeArg(ArgType):
"""libxml2 node generator""" """libxml2 node generator"""
@ -147,14 +147,15 @@ class GstMiniObjectParam(Parameter):
def convert_c2py(self): def convert_c2py(self):
self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name) self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
self.wrapper.write_code(code=("if (%s)\n" self.wrapper.write_code(code=("if (%s) {\n"
" py_%s = pygstminiobject_new((GstMiniObject *) %s);\n" " py_%s = pygstminiobject_new((GstMiniObject *) %s);\n"
"else {\n" " gst_mini_object_unref ((GstMiniObject *) %s);\n"
"} else {\n"
" Py_INCREF(Py_None);\n" " Py_INCREF(Py_None);\n"
" py_%s = Py_None;\n" " py_%s = Py_None;\n"
"}" "}"
% (self.name, self.name, self.name, self.name)), % (self.name, self.name, self.name, self.name, self.name)),
cleanup=("Py_DECREF(py_%s);" % self.name)) cleanup=("gst_mini_object_ref ((GstMiniObject *) %s);\nPy_DECREF(py_%s);" % (self.name, self.name)))
self.wrapper.add_pyargv_item("py_%s" % self.name) self.wrapper.add_pyargv_item("py_%s" % self.name)
matcher.register_reverse('GstMiniObject*', GstMiniObjectParam) matcher.register_reverse('GstMiniObject*', GstMiniObjectParam)
@ -266,6 +267,50 @@ class UInt64Return(ReturnType):
failure_expression="!PyLong_Check(py_retval)", failure_expression="!PyLong_Check(py_retval)",
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be an long");') failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be an long");')
self.wrapper.write_code("retval = PyLong_AsUnsignedLongLongMask(py_retval);") self.wrapper.write_code("retval = PyLong_AsUnsignedLongLongMask(py_retval);")
class ULongParam(Parameter):
def get_c_type(self):
return self.props.get('c_type', 'gulong')
def convert_c2py(self):
self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
self.wrapper.write_code(code=("py_%s = PyLong_FromUnsignedLong(%s);" %
(self.name, self.name)),
cleanup=("Py_DECREF(py_%s);" % self.name))
self.wrapper.add_pyargv_item("py_%s" % self.name)
class ULongReturn(ReturnType):
def get_c_type(self):
return self.props.get('c_type', 'gulong')
def write_decl(self):
self.wrapper.add_declaration("%s retval;" % self.get_c_type())
def write_error_return(self):
self.wrapper.write_code("return -G_MAXINT;")
def write_conversion(self):
self.wrapper.write_code(
code=None,
failure_expression="!PyLong_Check(py_retval)",
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be an long");')
self.wrapper.write_code("retval = PyLong_AsUnsignedLongMask(py_retval);")
class ConstStringReturn(ReturnType):
def get_c_type(self):
return "const gchar *"
def write_decl(self):
self.wrapper.add_declaration("const gchar *retval;")
def write_error_return(self):
self.wrapper.write_code("return NULL;")
def write_conversion(self):
self.wrapper.write_code(
code=None,
failure_expression="!PyString_Check(py_retval)",
failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be a string");')
self.wrapper.write_code("retval = g_strdup(PyString_AsString(py_retval));")
matcher.register('GstClockTime', UInt64Arg()) matcher.register('GstClockTime', UInt64Arg())
matcher.register('GstClockTimeDiff', Int64Arg()) matcher.register('GstClockTimeDiff', Int64Arg())
@ -294,4 +339,12 @@ for typename in ["guint64", "GstClockTime"]:
matcher.register_reverse(typename, UInt64Param) matcher.register_reverse(typename, UInt64Param)
matcher.register_reverse_ret(typename, UInt64Return) matcher.register_reverse_ret(typename, UInt64Return)
matcher.register_reverse_ret("const-gchar*", ConstStringReturn)
matcher.register_reverse("GType", IntParam)
matcher.register_reverse_ret("GType", IntReturn)
matcher.register_reverse("gulong", ULongParam)
matcher.register_reverse_ret("gulong", ULongReturn)
del arg del arg

View file

@ -1028,6 +1028,7 @@
(in-module "Gst") (in-module "Gst")
(c-name "GstURIHandler") (c-name "GstURIHandler")
(gtype-id "GST_TYPE_URI_HANDLER") (gtype-id "GST_TYPE_URI_HANDLER")
(vtable "GstURIHandlerInterface")
) )
(define-interface TagSetter (define-interface TagSetter
@ -1040,5 +1041,6 @@
(in-module "Gst") (in-module "Gst")
(c-name "GstImplementsInterface") (c-name "GstImplementsInterface")
(gtype-id "GST_TYPE_IMPLEMENTS_INTERFACE") (gtype-id "GST_TYPE_IMPLEMENTS_INTERFACE")
(vtable "GstImplementsInterfaceClass")
) )

View file

@ -2599,6 +2599,14 @@
) )
) )
(define-virtual supported
(of-object "GstImplementsInterface")
(return-type "gboolean")
(parameters
'("GType" "iface_type")
)
)
;; From ../gstreamer/gst/gstiterator.h ;; From ../gstreamer/gst/gstiterator.h
(define-function iterator_new (define-function iterator_new
@ -6212,6 +6220,29 @@
) )
) )
(define-virtual get_type
(of-object "GstURIHandler")
(return-type "guint")
)
(define-virtual get_protocols
(of-object "GstURIHandler")
(return-type "gchar**")
)
(define-virtual get_uri
(of-object "GstURIHandler")
(return-type "const-gchar*")
)
(define-virtual set_uri
(of-object "GstURIHandler")
(return-type "gboolean")
(parameters
'("const-gchar*" "uri")
)
)
;; From ../gstreamer/gst/gstutils.h ;; From ../gstreamer/gst/gstutils.h
(define-function util_set_value_from_string (define-function util_set_value_from_string

View file

@ -12,6 +12,7 @@
(in-module "Gst") (in-module "Gst")
(c-name "GstColorBalance") (c-name "GstColorBalance")
(gtype-id "GST_TYPE_COLOR_BALANCE") (gtype-id "GST_TYPE_COLOR_BALANCE")
(vtable "GstColorBalanceClass")
) )
(define-object ColorBalanceChannel (define-object ColorBalanceChannel
@ -33,6 +34,7 @@
(fields (fields
'("GstMixerType" "mixer_type") '("GstMixerType" "mixer_type")
) )
(vtable "GstMixerClass")
) )
(define-object MixerTrack (define-object MixerTrack
@ -60,18 +62,21 @@
(in-module "Gst") (in-module "Gst")
(c-name "GstNavigation") (c-name "GstNavigation")
(gtype-id "GST_TYPE_NAVIGATION") (gtype-id "GST_TYPE_NAVIGATION")
(vtable "GstNavigationInterface")
) )
(define-interface PropertyProbe (define-interface PropertyProbe
(in-module "Gst") (in-module "Gst")
(c-name "GstPropertyProbe") (c-name "GstPropertyProbe")
(gtype-id "GST_TYPE_PROPERTY_PROBE") (gtype-id "GST_TYPE_PROPERTY_PROBE")
(vtable "GstPropertyProbeInterface")
) )
(define-interface Tuner (define-interface Tuner
(in-module "Gst") (in-module "Gst")
(c-name "GstTuner") (c-name "GstTuner")
(gtype-id "GST_TYPE_TUNER") (gtype-id "GST_TYPE_TUNER")
(vtable "GstTunerClass")
) )
(define-object TunerChannel (define-object TunerChannel
@ -189,6 +194,28 @@
) )
) )
(define-virtual list_channels
(of-object "GstColorBalance")
(return-type "const-GList*")
)
(define-virtual set_value
(of-object "GstColorBalance")
(return-type "none")
(parameters
'("GstColorBalanceChannel*" "channel")
'("gint" "value")
)
)
(define-virtual get_value
(of-object "GstColorBalance")
(return-type "gint")
(parameters
'("GstColorBalanceChannel*" "channel")
)
)
;; From /opt/gnome/include/gstreamer-0.7/gst/mixer/mixer.h ;; From /opt/gnome/include/gstreamer-0.7/gst/mixer/mixer.h
@ -303,6 +330,48 @@
) )
) )
(define-virtual list_tracks
(of-object "GstMixer")
(return-type "const-GList*")
)
(define-virtual set_volume
(of-object "GstMixer")
(return-type "none")
(parameters
'("GstMixerTrack*" "track")
'("gint*" "volumes")
)
)
(define-virtual get_volume
(of-object "GstMixer")
(return-type "none")
(parameters
'("GstMixerTrack*" "track")
'("gint*" "volumes")
)
)
(define-virtual set_mute
(of-object "GstMixer")
(return-type "none")
(parameters
'("GstMixerTrack*" "track")
'("gboolean" "mute")
)
)
(define-virtual set_record
(of-object "GstMixer")
(return-type "none")
(parameters
'("GstMixerTrack*" "track")
'("gboolean" "record")
)
)
;; From ../gst-plugins-base/gst-libs/gst/interfaces/mixeroptions.h ;; From ../gst-plugins-base/gst-libs/gst/interfaces/mixeroptions.h
(define-function gst_mixer_options_get_type (define-function gst_mixer_options_get_type
@ -355,7 +424,13 @@
) )
) )
(define-virtual send_event
(of-object "GstNavigation")
(return-type "none")
(parameters
'("GstStructure*" "structure")
)
)
;; From /opt/gnome/include/gstreamer-0.7/gst/propertyprobe/propertyprobe.h ;; From /opt/gnome/include/gstreamer-0.7/gst/propertyprobe/propertyprobe.h
@ -451,6 +526,37 @@
) )
) )
(define-virtual get_properties
(of-object "GstPropertyProbe")
(return-type "const-GList*")
)
(define-virtual needs_probe
(of-object "GstPropertyProbe")
(return-type "gboolean")
(parameters
'("guint" "prop_id")
'("const-GParamSpec*" "pspec")
)
)
(define-virtual probe_property
(of-object "GstPropertyProbe")
(return-type "none")
(parameters
'("guint" "prop_id")
'("const-GParamSpec*" "pspec")
)
)
(define-virtual get_values
(of-object "GstPropertyProbe")
(return-type "GValueArray*")
(parameters
'("guint" "prop_id")
'("const-GParamSpec*" "pspec")
)
)
;; From /opt/gnome/include/gstreamer-0.7/gst/tuner/tuner.h ;; From /opt/gnome/include/gstreamer-0.7/gst/tuner/tuner.h
@ -586,6 +692,66 @@
) )
) )
(define-virtual list_channels
(of-object "GstTuner")
(return-type "const-GList*")
)
(define-virtual set_channel
(of-object "GstTuner")
(return-type "none")
(parameters
'("GstTunerChannel*" "channel")
)
)
(define-virtual get_channel
(of-object "GstTuner")
(return-type "GstTunerChannel*")
)
(define-virtual list_norms
(of-object "GstTuner")
(return-type "const-GList*")
)
(define-virtual set_norm
(of-object "GstTuner")
(return-type "none")
(parameters
'("GstTunerNorm*" "channel")
)
)
(define-virtual get_norm
(of-object "GstTuner")
(return-type "GstTunerNorm*")
)
(define-virtual set_frequency
(of-object "GstTuner")
(return-type "none")
(parameters
'("GstTunerChannel*" "channel")
'("gulong" "frequency")
)
)
(define-virtual get_frequency
(of-object "GstTuner")
(return-type "gulong")
(parameters
'("GstTunerChannel*" "channel")
)
)
(define-virtual signal_strength
(of-object "GstTuner")
(return-type "gint")
(parameters
'("GstTunerChannel*" "channel")
)
)