diff options
author | Paul Pogonyshev <pogonyshev@gmx.net> | 2009-05-30 16:57:49 +0300 |
---|---|---|
committer | Paul Pogonyshev <pogonyshev@gmx.net> | 2009-05-31 17:20:29 +0300 |
commit | 833d4da202bcfcb01a414f8aec4b751ec8e1ccb2 (patch) | |
tree | e8ed82611d46cdc090f41cac0f21777e4e75a36d /gio | |
parent | 2cb569c0ced49f9ed5ca83292d5f15c837066688 (diff) | |
download | pygobject-833d4da202bcfcb01a414f8aec4b751ec8e1ccb2.tar.gz pygobject-833d4da202bcfcb01a414f8aec4b751ec8e1ccb2.tar.xz pygobject-833d4da202bcfcb01a414f8aec4b751ec8e1ccb2.zip |
Wrap gio.DataInputStream.read_line_async and read_until_async
Wrap the functions and their corresponding *_finish() functions.
Create 'gdatainputstream.override' for these and move two existing
functions there. Add unit tests. Re-enable synchronous read_line
unit test and adjust it for new official GIO behavior. Bug #584285.
Diffstat (limited to 'gio')
-rw-r--r-- | gio/Makefile.am | 1 | ||||
-rw-r--r-- | gio/gdatainputstream.override | 250 | ||||
-rw-r--r-- | gio/ginputstream.override | 65 | ||||
-rw-r--r-- | gio/gio.defs | 4 | ||||
-rw-r--r-- | gio/gio.override | 1 |
5 files changed, 254 insertions, 67 deletions
diff --git a/gio/Makefile.am b/gio/Makefile.am index b430b8e..7a2fe58 100644 --- a/gio/Makefile.am +++ b/gio/Makefile.am @@ -38,6 +38,7 @@ GIO_OVERRIDES = \ gio.override \ gappinfo.override \ gapplaunchcontext.override \ + gdatainputstream.override \ gdrive.override \ gfile.override \ gfileattribute.override \ diff --git a/gio/gdatainputstream.override b/gio/gdatainputstream.override new file mode 100644 index 0000000..92b0f99 --- /dev/null +++ b/gio/gdatainputstream.override @@ -0,0 +1,250 @@ +/* -*- Mode: C; c-basic-offset: 4 -*- + * pygobject - Python bindings for GObject + * Copyright (C) 2008 Johan Dahlin + * Copyright (C) 2009 Paul Pogonyshev + * + * gdatainputstream.override: module overrides for GDataInputStream + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + */ + +%% +override g_data_input_stream_read_line kwargs +static PyObject * +_wrap_g_data_input_stream_read_line(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "cancellable", NULL }; + PyGObject *pycancellable = NULL; + GCancellable *cancellable; + char *line; + gsize length; + PyObject *py_line; + GError *error = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "|O:gio.DataInputStream.read_line", + kwlist, &pycancellable)) + return NULL; + + if (!pygio_check_cancellable(pycancellable, &cancellable)) + return NULL; + + line = g_data_input_stream_read_line(G_DATA_INPUT_STREAM(self->obj), + &length, cancellable, &error); + if (pyg_error_check(&error)) + return NULL; + + py_line = PyString_FromStringAndSize(line, length); + g_free(line); + return py_line; +} + +%% +override g_data_input_stream_read_line_async kwargs +static PyObject * +_wrap_g_data_input_stream_read_line_async(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "callback", "io_priority", + "cancellable", "user_data", NULL }; + int io_priority = G_PRIORITY_DEFAULT; + PyGObject *pycancellable = NULL; + GCancellable *cancellable; + PyGIONotify *notify; + + notify = pygio_notify_new(); + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O|iOO:gio.DataInputStream.read_line_async", + kwlist, + ¬ify->callback, + &io_priority, + &pycancellable, + ¬ify->data)) + goto error; + + if (!pygio_notify_callback_is_valid(notify)) + goto error; + + if (!pygio_check_cancellable(pycancellable, &cancellable)) + goto error; + + pygio_notify_reference_callback(notify); + + g_data_input_stream_read_line_async(G_DATA_INPUT_STREAM(self->obj), + io_priority, + cancellable, + (GAsyncReadyCallback) async_result_callback_marshal, + notify); + + Py_INCREF(Py_None); + return Py_None; + + error: + pygio_notify_free(notify); + return NULL; +} + +%% +override g_data_input_stream_read_line_finish kwargs +static PyObject * +_wrap_g_data_input_stream_read_line_finish(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "result", NULL }; + PyGObject *result; + GError *error = NULL; + gchar *line; + gsize length; + PyObject *py_line; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:gio.DataInputStream.read_line_finish", + kwlist, &PyGAsyncResult_Type, &result)) + return NULL; + + line = g_data_input_stream_read_line_finish(G_DATA_INPUT_STREAM(self->obj), + G_ASYNC_RESULT(result->obj), + &length, + &error); + + if (pyg_error_check(&error)) + return NULL; + + py_line = PyString_FromStringAndSize(line, length); + g_free(line); + return py_line; +} + +%% +override g_data_input_stream_read_until kwargs +static PyObject * +_wrap_g_data_input_stream_read_until(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "stop_chars", "cancellable", NULL }; + const char *stop_chars; + PyGObject *pycancellable = NULL; + GCancellable *cancellable; + char *line; + gsize length; + PyObject *py_line; + GError *error = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "s|O:gio.DataInputStream.read_line", + kwlist, &stop_chars, &pycancellable)) + return NULL; + + if (!pygio_check_cancellable(pycancellable, &cancellable)) + return NULL; + + line = g_data_input_stream_read_until(G_DATA_INPUT_STREAM(self->obj), + stop_chars, &length, cancellable, &error); + if (pyg_error_check(&error)) + return NULL; + + py_line = PyString_FromStringAndSize(line, length); + g_free(line); + return py_line; +} + +%% +override g_data_input_stream_read_until_async kwargs +static PyObject * +_wrap_g_data_input_stream_read_until_async(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "stop_chars", "callback", "io_priority", + "cancellable", "user_data", NULL }; + const char *stop_chars; + int io_priority = G_PRIORITY_DEFAULT; + PyGObject *pycancellable = NULL; + GCancellable *cancellable; + PyGIONotify *notify; + + notify = pygio_notify_new(); + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "sO|iOO:gio.DataInputStream.read_until_async", + kwlist, + &stop_chars, + ¬ify->callback, + &io_priority, + &pycancellable, + ¬ify->data)) + goto error; + + if (!pygio_notify_callback_is_valid(notify)) + goto error; + + if (!pygio_check_cancellable(pycancellable, &cancellable)) + goto error; + + pygio_notify_reference_callback(notify); + + g_data_input_stream_read_until_async(G_DATA_INPUT_STREAM(self->obj), + stop_chars, + io_priority, + cancellable, + (GAsyncReadyCallback) async_result_callback_marshal, + notify); + + Py_INCREF(Py_None); + return Py_None; + + error: + pygio_notify_free(notify); + return NULL; +} + +%% +override g_data_input_stream_read_until_finish kwargs +static PyObject * +_wrap_g_data_input_stream_read_until_finish(PyGObject *self, + PyObject *args, + PyObject *kwargs) +{ + static char *kwlist[] = { "result", NULL }; + PyGObject *result; + GError *error = NULL; + gchar *line; + gsize length; + PyObject *py_line; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, + "O!:gio.DataInputStream.read_until_finish", + kwlist, &PyGAsyncResult_Type, &result)) + return NULL; + + line = g_data_input_stream_read_until_finish(G_DATA_INPUT_STREAM(self->obj), + G_ASYNC_RESULT(result->obj), + &length, + &error); + + if (pyg_error_check(&error)) + return NULL; + + py_line = PyString_FromStringAndSize(line, length); + g_free(line); + return py_line; +} diff --git a/gio/ginputstream.override b/gio/ginputstream.override index 7518b3f..075a20c 100644 --- a/gio/ginputstream.override +++ b/gio/ginputstream.override @@ -293,71 +293,6 @@ _wrap_g_input_stream_close_async(PyGObject *self, return NULL; } %% -override g_data_input_stream_read_line kwargs -static PyObject * -_wrap_g_data_input_stream_read_line(PyGObject *self, - PyObject *args, - PyObject *kwargs) -{ - static char *kwlist[] = { "cancellable", NULL }; - PyGObject *pycancellable = NULL; - GCancellable *cancellable; - char *line; - gsize length; - PyObject *py_line; - GError *error = NULL; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "|O:gio.DataInputStream.read_line", - kwlist, &pycancellable)) - return NULL; - - if (!pygio_check_cancellable(pycancellable, &cancellable)) - return NULL; - - line = g_data_input_stream_read_line(G_DATA_INPUT_STREAM(self->obj), - &length, cancellable, &error); - if (pyg_error_check(&error)) - return NULL; - - py_line = PyString_FromStringAndSize(line, length); - g_free(line); - return py_line; -} -%% -override g_data_input_stream_read_until kwargs -static PyObject * -_wrap_g_data_input_stream_read_until(PyGObject *self, - PyObject *args, - PyObject *kwargs) -{ - static char *kwlist[] = { "stop_chars", "cancellable", NULL }; - const char *stop_chars; - PyGObject *pycancellable = NULL; - GCancellable *cancellable; - char *line; - gsize length; - PyObject *py_line; - GError *error = NULL; - - if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "s|O:gio.DataInputStream.read_line", - kwlist, &stop_chars, &pycancellable)) - return NULL; - - if (!pygio_check_cancellable(pycancellable, &cancellable)) - return NULL; - - line = g_data_input_stream_read_until(G_DATA_INPUT_STREAM(self->obj), - stop_chars, &length, cancellable, &error); - if (pyg_error_check(&error)) - return NULL; - - py_line = PyString_FromStringAndSize(line, length); - g_free(line); - return py_line; -} -%% override g_memory_input_stream_add_data kwargs static PyObject * _wrap_g_memory_input_stream_add_data(PyGObject *self, diff --git a/gio/gio.defs b/gio/gio.defs index ed22d88..715e392 100644 --- a/gio/gio.defs +++ b/gio/gio.defs @@ -790,7 +790,7 @@ ) ;; -;; wrapped in ginputstream.override +;; wrapped in gdatainputstream.override ;; (define-method read_line (of-object "GDataInputStream") @@ -808,7 +808,7 @@ ) ;; -;; wrapped in ginputstream.override +;; wrapped in gdatainputstream.override ;; (define-method read_until (of-object "GDataInputStream") diff --git a/gio/gio.override b/gio/gio.override index ea4c4ec..e68f725 100644 --- a/gio/gio.override +++ b/gio/gio.override @@ -230,6 +230,7 @@ async_result_callback_marshal(GObject *source_object, include gappinfo.override gapplaunchcontext.override + gdatainputstream.override gdrive.override gfile.override gfileattribute.override |