Example #1
0
		return self.props.get('c_type', 'GstMiniObject *')

	def convert_c2py(self):
		self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
		self.wrapper.write_code(code=("if (%s) {\n"
					      "    py_%s = pygstminiobject_new((GstMiniObject *) %s);\n"
					      "    gst_mini_object_unref ((GstMiniObject *) %s);\n"
					      "} else {\n"
					      "    Py_INCREF(Py_None);\n"
					      "    py_%s = Py_None;\n"
					      "}"
					      % (self.name, self.name, self.name, self.name, self.name)),
					cleanup=("gst_mini_object_ref ((GstMiniObject *) %s); Py_DECREF(py_%s);" % (self.name, self.name)))
		self.wrapper.add_pyargv_item("py_%s" % self.name)

matcher.register_reverse('GstMiniObject*', GstMiniObjectParam)

class GstMiniObjectReturn(ReturnType):

	def get_c_type(self):
		return self.props.get('c_type', 'GstMiniObject *')

	def write_decl(self):
		self.wrapper.add_declaration("%s retval;" % self.get_c_type())

	def write_error_return(self):
		self.wrapper.write_code("return NULL;")

	def write_conversion(self):
		self.wrapper.write_code("retval = (%s) pygstminiobject_get(py_retval);"
					% self.get_c_type())
matcher.register('cairo_matrix_t*', CairoMatrixArg())


class CairoParam(reversewrapper.Parameter):
    def get_c_type(self):
        return self.props.get('c_type').replace('const-', 'const ')
    def convert_c2py(self):
        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
        self.wrapper.write_code(
            code=('py_%s = PycairoContext_FromContext(cairo_reference(%s), NULL, NULL);' %
                  (self.name, self.name)),
            cleanup=("Py_DECREF(py_%s);" % self.name))
        self.wrapper.add_pyargv_item("py_%s" % self.name)

matcher.register_reverse("cairo_t*", CairoParam)

class BoundsPtrArg(ArgType):

    def write_param(self, ptype, pname, pdflt, pnull, info):
        if pdflt:
            info.varlist.add('PyObject', '*py_' + pname + " = " + pdflt)
        else:
            info.varlist.add('PyObject', '*py_' + pname)
        if pnull:
            info.add_parselist('O', ['&py_'+pname], [pname])
            info.codebefore.append(
                '    if (!(py_%(name)s == NULL || py_%(name)s == Py_None || \n'
                '        PyObject_IsInstance(py_%(name)s, (PyObject *) &PyGooCanvasBounds_Type))) {\n'
                '        PyErr_SetString(PyExc_TypeError, "parameter %(name)s must be goocanvas.Bounds or None");\n'
                '        return NULL;\n'
matcher.register('cairo_matrix_t*', CairoMatrixArg())


class CairoParam(reversewrapper.Parameter):
    def get_c_type(self):
        return self.props.get('c_type').replace('const-', 'const ')
    def convert_c2py(self):
        self.wrapper.add_declaration("PyObject *py_%s;" % self.name)
        self.wrapper.write_code(
            code=('py_%s = PycairoContext_FromContext(cairo_reference(%s), NULL, NULL);' %
                  (self.name, self.name)),
            cleanup=("Py_DECREF(py_%s);" % self.name))
        self.wrapper.add_pyargv_item("py_%s" % self.name)

matcher.register_reverse("cairo_t*", CairoParam)

class BoundsPtrArg(ArgType):

    def write_param(self, ptype, pname, pdflt, pnull, info):
        if pdflt:
            info.varlist.add('PyObject', '*py_' + pname + " = " + pdflt)
        else:
            info.varlist.add('PyObject', '*py_' + pname)
        if pnull:
            info.add_parselist('O', ['&py_'+pname], [pname])
            info.codebefore.append(
                '    if (!(py_%(name)s == NULL || py_%(name)s == Py_None || \n'
                '        PyObject_IsInstance(py_%(name)s, (PyObject *) &PyGooCanvasBounds_Type))) {\n'
                '        PyErr_SetString(PyExc_TypeError, "parameter %(name)s must be goocanvas.Bounds or None");\n'
                '        return NULL;\n'
Example #4
0
        self.wrapper.write_code(
            code=("if (%s) {\n"
                  "    py_%s = pygstminiobject_new((GstMiniObject *) %s);\n"
                  "    gst_mini_object_unref ((GstMiniObject *) %s);\n"
                  "} else {\n"
                  "    Py_INCREF(Py_None);\n"
                  "    py_%s = Py_None;\n"
                  "}" %
                  (self.name, self.name, self.name, self.name, 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)


matcher.register_reverse('GstMiniObject*', GstMiniObjectParam)


class GstMiniObjectReturn(ReturnType):
    def get_c_type(self):
        return self.props.get('c_type', 'GstMiniObject *')

    def write_decl(self):
        self.wrapper.add_declaration("%s retval;" % self.get_c_type())

    def write_error_return(self):
        self.wrapper.write_code("return NULL;")

    def write_conversion(self):
        self.wrapper.write_code(
            "retval = (%s) pygstminiobject_get(py_retval);" %