diff options
Diffstat (limited to 'glib/pygiochannel.c')
-rw-r--r-- | glib/pygiochannel.c | 106 |
1 files changed, 35 insertions, 71 deletions
diff --git a/glib/pygiochannel.c b/glib/pygiochannel.c index 697f91e..118bb7a 100644 --- a/glib/pygiochannel.c +++ b/glib/pygiochannel.c @@ -17,6 +17,8 @@ typedef struct { int softspace; /* to make print >> chan, "foo" ... work */ } PyGIOChannel; +PYGLIB_DEFINE_TYPE("gobject.IOChannel", PyGIOChannel_Type, PyGIOChannel) + static PyObject* py_io_channel_next(PyGIOChannel *self) { @@ -36,10 +38,9 @@ py_io_channel_next(PyGIOChannel *self) return NULL; } - ret_obj = PyString_FromStringAndSize(str_return, length); + ret_obj = _PyUnicode_FromStringAndSize(str_return, length); g_free(str_return); return ret_obj; - } static int @@ -86,7 +87,7 @@ py_io_channel_shutdown(PyGIOChannel* self, PyObject *args, PyObject *kwargs) if (pyglib_error_check(&error)) return NULL; - return PyInt_FromLong(ret); + return _PyLong_FromLong(ret); } /* character encoding conversion involved functions. @@ -118,7 +119,7 @@ py_io_channel_get_buffer_size(PyGIOChannel* self, PyObject *args, PyObject *kwar size = g_io_channel_get_buffer_size(self->channel); - return PyInt_FromLong(size); + return _PyLong_FromLong(size); } static PyObject* @@ -147,7 +148,7 @@ py_io_channel_get_buffered(PyGIOChannel* self, PyObject *args, PyObject *kwargs) buffered = g_io_channel_get_buffered(self->channel); - return PyInt_FromLong(buffered); + return _PyLong_FromLong(buffered); } static PyObject* @@ -184,7 +185,7 @@ py_io_channel_get_encoding(PyGIOChannel* self, PyObject *args, PyObject *kwargs) return Py_None; } - return PyString_FromString(encoding); + return _PyUnicode_FromString(encoding); } #define CHUNK_SIZE (8 * 1024) @@ -203,7 +204,7 @@ py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs) return NULL; if (max_count == 0) - return PyString_FromString(""); + return _PyUnicode_FromString(""); while (status == G_IO_STATUS_NORMAL && (max_count == -1 || total_read < max_count)) { @@ -220,16 +221,16 @@ py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs) } if ( ret_obj == NULL ) { - ret_obj = PyString_FromStringAndSize((char *)NULL, buf_size); + ret_obj = _PyUnicode_FromStringAndSize((char *)NULL, buf_size); if (ret_obj == NULL) goto failure; } - else if (buf_size + total_read > PyString_GET_SIZE(ret_obj)) { - if (_PyString_Resize(&ret_obj, buf_size + total_read) == -1) + else if (buf_size + total_read > _PyUnicode_GET_SIZE(ret_obj)) { + if (_PyUnicode_Resize(&ret_obj, buf_size + total_read) == -1) goto failure; } - buf = PyString_AS_STRING(ret_obj) + total_read; + buf = _PyUnicode_AS_STRING(ret_obj) + total_read; pyglib_unblock_threads(); status = g_io_channel_read_chars(self->channel, buf, buf_size, @@ -241,8 +242,8 @@ py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs) total_read += single_read; } - if ( total_read != PyString_GET_SIZE(ret_obj) ) { - if (_PyString_Resize(&ret_obj, total_read) == -1) + if ( total_read != _PyUnicode_GET_SIZE(ret_obj) ) { + if (_PyUnicode_Resize(&ret_obj, total_read) == -1) goto failure; } return ret_obj; @@ -272,7 +273,7 @@ py_io_channel_write_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs) if (pyglib_error_check(&error)) return NULL; - return PyInt_FromLong(count); + return _PyLong_FromLong(count); } static PyObject* @@ -298,13 +299,13 @@ py_io_channel_write_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs) PyErr_Clear(); goto normal_exit; } - if (!PyString_Check(value)) { + if (!_PyUnicode_Check(value)) { PyErr_SetString(PyExc_TypeError, "gobject.IOChannel.writelines must" " be sequence/iterator of strings"); Py_DECREF(iter); return NULL; } - PyString_AsStringAndSize(value, &buf, &buf_len); + _PyUnicode_AsStringAndSize(value, &buf, &buf_len); pyglib_unblock_threads(); status = g_io_channel_write_chars(self->channel, buf, buf_len, &count, &error); pyglib_unblock_threads(); @@ -337,7 +338,7 @@ py_io_channel_flush(PyGIOChannel* self, PyObject *args, PyObject *kwargs) if (pyglib_error_check(&error)) return NULL; - return PyInt_FromLong(status); + return _PyLong_FromLong(status); } static PyObject* @@ -356,7 +357,7 @@ py_io_channel_set_flags(PyGIOChannel* self, PyObject *args, PyObject *kwargs) if (pyglib_error_check(&error)) return NULL; - return PyInt_FromLong(status); + return _PyLong_FromLong(status); } static PyObject* @@ -370,7 +371,7 @@ py_io_channel_get_flags(PyGIOChannel* self, PyObject *args, PyObject *kwargs) return NULL; flags = g_io_channel_get_flags(self->channel); - return PyInt_FromLong(flags); + return _PyLong_FromLong(flags); } static PyObject* @@ -384,7 +385,7 @@ py_io_channel_get_buffer_condition(PyGIOChannel* self, PyObject *args, PyObject return NULL; cond = g_io_channel_get_buffer_condition(self->channel); - return PyInt_FromLong(cond); + return _PyLong_FromLong(cond); } static PyObject* @@ -535,7 +536,7 @@ py_io_channel_win32_poll(PyObject *self, PyObject *args, PyObject *kwargs) pyfd = PyList_GET_ITEM(pyfds, i); ((PyGPollFD *) pyfd)->pollfd = pollfd[i]; } - return PyInt_FromLong(result); + return _PyLong_FromLong(result); } static PyObject * @@ -579,7 +580,7 @@ py_io_channel_read_line(PyGIOChannel* self, PyObject *args, PyObject *kwargs) &terminator_pos, &error); if (pyglib_error_check(&error)) return NULL; - ret_obj = PyString_FromStringAndSize(str_return, length); + ret_obj = _PyUnicode_FromStringAndSize(str_return, length); g_free(str_return); return ret_obj; } @@ -608,7 +609,7 @@ py_io_channel_read_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs) Py_DECREF(line); return NULL; } - line = PyString_FromStringAndSize(str_return, length); + line = _PyUnicode_FromStringAndSize(str_return, length); g_free(str_return); if (PyList_Append(list, line)) { Py_DECREF(line); @@ -649,7 +650,7 @@ py_io_channel_seek(PyGIOChannel* self, PyObject *args, PyObject *kwargs) if (pyglib_error_check(&error)) return NULL; - return PyInt_FromLong(status); + return _PyLong_FromLong(status); } #if 0 // Not wrapped @@ -764,55 +765,18 @@ py_io_channel_init(PyGIOChannel *self, PyObject *args, PyObject *kwargs) return 0; } - -PyTypeObject PyGIOChannel_Type = { - PyObject_HEAD_INIT(NULL) - 0, /* ob_size */ - "gobject.IOChannel", /* tp_name */ - sizeof(PyGIOChannel), /* tp_basicsize */ - 0, /* tp_itemsize */ - /* methods */ - (destructor)py_io_channel_dealloc, /* tp_dealloc */ - (printfunc)0, /* tp_print */ - (getattrfunc)NULL, /* tp_getattr */ - (setattrfunc)0, /* tp_setattr */ - (cmpfunc)py_io_channel_compare, /* tp_compare */ - (reprfunc)0, /* tp_repr */ - 0, /* tp_as_number */ - 0, /* tp_as_sequence */ - 0, /* tp_as_mapping */ - (hashfunc)py_io_channel_hash, /* tp_hash */ - (ternaryfunc)0, /* tp_call */ - (reprfunc)0, /* tp_str */ - (getattrofunc)0, /* tp_getattro */ - (setattrofunc)0, /* tp_setattro */ - 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ - NULL, /* Documentation string */ - (traverseproc)0, /* tp_traverse */ - (inquiry)0, /* tp_clear */ - (richcmpfunc)0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - (getiterfunc)py_io_channel_get_iter,/* tp_iter */ - (iternextfunc)py_io_channel_next, /* tp_iternext */ - py_io_channel_methods, /* tp_methods */ - py_io_channel_members, /* tp_members */ - NULL, /* tp_getset */ - (PyTypeObject *)0, /* tp_base */ - (PyObject *)0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - (initproc)py_io_channel_init, /* tp_init */ - (allocfunc)0, /* tp_alloc */ - (newfunc)0, /* tp_new */ - 0, /* tp_free */ - (inquiry)0, /* tp_is_gc */ - (PyObject *)0, /* tp_bases */ -}; - void pyglib_iochannel_register_types(PyObject *d) { + PyGIOChannel_Type.tp_init = (initproc)py_io_channel_init; + PyGIOChannel_Type.tp_dealloc = (destructor)py_io_channel_dealloc; + PyGIOChannel_Type.tp_flags = Py_TPFLAGS_DEFAULT; + PyGIOChannel_Type.tp_members = py_io_channel_members; + PyGIOChannel_Type.tp_methods = py_io_channel_methods; + PyGIOChannel_Type.tp_hash = (hashfunc)py_io_channel_hash; + PyGIOChannel_Type.tp_compare = (cmpfunc)py_io_channel_compare; + PyGIOChannel_Type.tp_iter = (getiterfunc)py_io_channel_get_iter; + PyGIOChannel_Type.tp_iternext = (iternextfunc)py_io_channel_next; + PYGLIB_REGISTER_TYPE(d, PyGIOChannel_Type, "IOChannel"); } |