summaryrefslogtreecommitdiffstats
path: root/gio
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmx.net>2008-08-11 22:05:06 +0000
committerPaul Pogonyshev <paulp@src.gnome.org>2008-08-11 22:05:06 +0000
commitb33d25d72bb0eeeafeedb0e03755e9eab40ab9ba (patch)
treeb6eb04d4f90e09e0e62da259b99b10bc26151f38 /gio
parent35092e66e988321abd9b55b9f693090b7b15bad3 (diff)
Bug 547354 – wrap a few memory stream methods
2008-08-12 Paul Pogonyshev <pogonyshev@gmx.net> Bug 547354 – wrap a few memory stream methods * gio/ginputstream.override (_wrap_g_memory_input_stream_add_data): New function. * gio/gio.defs (gio.MemoryOutputStream.get_contents): Rename from get_data() to avoid name clash. * gio/goutputstream.override (_wrap_g_memory_output_stream_new) (_wrap_g_memory_output_stream_get_data): New functions. * tests/test_gio.py (TestMemoryInputStream) (TestMemoryOutputStream): New test cases. svn path=/trunk/; revision=944
Diffstat (limited to 'gio')
-rw-r--r--gio/ginputstream.override34
-rw-r--r--gio/gio.defs3
-rw-r--r--gio/goutputstream.override25
3 files changed, 61 insertions, 1 deletions
diff --git a/gio/ginputstream.override b/gio/ginputstream.override
index 267ae01..e5791f9 100644
--- a/gio/ginputstream.override
+++ b/gio/ginputstream.override
@@ -285,5 +285,39 @@ _wrap_g_input_stream_close_async(PyGObject *self,
Py_INCREF(Py_None);
return Py_None;
}
+%%
+override g_memory_input_stream_add_data kwargs
+static PyObject *
+_wrap_g_memory_input_stream_add_data(PyGObject *self,
+ PyObject *args,
+ PyObject *kwargs)
+{
+ static char *kwlist[] = { "data", NULL };
+ PyObject *data;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gio.MemoryInputStream.add_data",
+ kwlist, &data))
+ return NULL;
+
+ if (data != Py_None) {
+ char *copy;
+ int length;
+
+ if (!PyString_Check(data)) {
+ PyErr_SetString(PyExc_TypeError, "data must be a string or None");
+ return NULL;
+ }
+
+ length = PyString_Size(data);
+ copy = g_malloc(length);
+ memcpy(copy, PyString_AsString(data), length);
+
+ g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(self->obj),
+ copy, length, (GDestroyNotify) g_free);
+ }
+
+ Py_INCREF(Py_None);
+ return Py_None;
+}
/* GInputStream.read_all: No ArgType for void* */
/* GInputStream.skip_async: No ArgType for GAsyncReadyCallback */
diff --git a/gio/gio.defs b/gio/gio.defs
index 434b748..aa5c8b0 100644
--- a/gio/gio.defs
+++ b/gio/gio.defs
@@ -3667,7 +3667,8 @@
)
)
-(define-method get_data
+;; Note: name clash with gobject.GObject.get_data; renamed.
+(define-method get_contents
(of-object "GMemoryOutputStream")
(c-name "g_memory_output_stream_get_data")
(return-type "gpointer")
diff --git a/gio/goutputstream.override b/gio/goutputstream.override
index 3bcf3ce..03a5da7 100644
--- a/gio/goutputstream.override
+++ b/gio/goutputstream.override
@@ -156,6 +156,31 @@ _wrap_g_output_stream_close_async(PyGObject *self,
Py_INCREF(Py_None);
return Py_None;
}
+%%
+override g_memory_output_stream_new noargs
+static int
+_wrap_g_memory_output_stream_new(PyGObject *self)
+{
+ self->obj = (GObject *)g_memory_output_stream_new(NULL, 0, g_realloc, g_free);
+
+ if (!self->obj) {
+ PyErr_SetString(PyExc_RuntimeError, "could not create gio.MemoryOutputStream object");
+ return -1;
+ }
+
+ pygobject_register_wrapper((PyObject *)self);
+ return 0;
+}
+%%
+override g_memory_output_stream_get_data noargs
+static PyObject *
+_wrap_g_memory_output_stream_get_data(PyGObject *self)
+{
+ GMemoryOutputStream *stream = G_MEMORY_OUTPUT_STREAM(self->obj);
+ return PyString_FromStringAndSize(g_memory_output_stream_get_data(stream),
+ g_seekable_tell(G_SEEKABLE(stream)));
+}
+
/* GOutputStream.write_all: No ArgType for const-void* */
/* GOutputStream.splice_async: No ArgType for GAsyncReadyCallback */
/* GOutputStream.flush_async: No ArgType for GAsyncReadyCallback */