info.codeafter.append('   return pygoo_canvas_bounds_new(ret);\n');

matcher.register('GooCanvasBounds*', BoundsPtrArg())

class GooCanvasBoundPtrReturn(reversewrapper.ReturnType):
    def get_c_type(self):
        return self.props.get('c_type')
    def write_decl(self):
        self.wrapper.add_declaration("%s retval;" % self.get_c_type())
        self.wrapper.add_declaration("PyObject *py_bounds;")
    def write_error_return(self):
        self.wrapper.write_code("return NULL;")
    def write_conversion(self):
        self.wrapper.add_pyret_parse_item("O!", "&PyGooCanvasBounds_Type, &py_bounds", prepend=True)
        self.wrapper.write_code((
            " /* FIXME: this leaks memory */\n"
            "retval = g_new(GooCanvasBounds, 1);\n"
            "*retval = ((PyGooCanvasBounds*) py_bounds)->bounds;"),
                                code_sink=self.wrapper.post_return_code)

matcher.register_reverse_ret("GooCanvasBounds*", GooCanvasBoundPtrReturn)

class GObjectReturn(reversewrapper.GObjectReturn):
    def write_conversion(self):
        self.wrapper.write_code(
            code=None,
            failure_expression="py_retval == Py_None")
        reversewrapper.GObjectReturn.write_conversion(self)

matcher.register_reverse_ret('GObject*', GObjectReturn)
示例#2
0
	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())
		self.wrapper.write_code("gst_mini_object_ref((GstMiniObject *) retval);")

matcher.register_reverse_ret('GstMiniObject*', GstMiniObjectReturn)

class GstCapsParam(Parameter):

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

	def convert_c2py(self):
		self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
		self.wrapper.write_code(code=("if (%s)\n"
					      "    py_%s = pyg_boxed_new (GST_TYPE_CAPS, %s, FALSE, TRUE);\n"
					      "else {\n"
					      "    Py_INCREF(Py_None);\n"
					      "    py_%s = Py_None;\n"
					      "}"
					      % (self.name, self.name, self.name, self.name)),
示例#3
0
    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())
        self.wrapper.write_code(
            "gst_mini_object_ref((GstMiniObject *) retval);")


matcher.register_reverse_ret('GstMiniObject*', GstMiniObjectReturn)


class GstCapsParam(Parameter):
    def get_c_type(self):
        return self.props.get('c_type', 'GstCaps *')

    def convert_c2py(self):
        self.wrapper.add_declaration("PyObject *py_%s = NULL;" % self.name)
        self.wrapper.write_code(
            code=(
                "if (%s)\n"
                "    py_%s = pyg_boxed_new (GST_TYPE_CAPS, %s, FALSE, TRUE);\n"
                "else {\n"
                "    Py_INCREF(Py_None);\n"
                "    py_%s = Py_None;\n"