From: hstuart Date: Wed, 7 Oct 2009 09:20:17 +0000 (+0000) Subject: mod-python: refactor dict_t construction logic X-Git-Tag: 1.9~156 X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/commitdiff_plain/b39754f763284af8fc45de2d5b734b2ce072b8c7?ds=inline mod-python: refactor dict_t construction logic --- diff --git a/ChangeLog b/ChangeLog index 2a5b9a5..9f0ed80 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,10 @@ /*********************************************************************** X3 ChangeLog +1009-10-07 Henrik Stuart + + * src/mod-python.c: refactor dict_t construction logic. + 2009-10-07 Henrik Stuart * src/mod-python.c: improve error logic for emb_get_channel. diff --git a/src/mod-python.c b/src/mod-python.c index 97b74df..80c9401 100644 --- a/src/mod-python.c +++ b/src/mod-python.c @@ -112,25 +112,19 @@ static int _dict_iter_fill_tuple(char const* key, UNUSED_ARG(void* data), void* return 0; } -/* get a tuple with all users in it */ static PyObject* -emb_get_users(UNUSED_ARG(PyObject *self), PyObject *args) { +pyobj_from_dict_t(dict_t d) { PyObject* retval; - size_t num_clients, n = 0; + size_t n = 0; struct _tuple_dict_extra extra; - if (!PyArg_ParseTuple(args, "")) - return NULL; - - num_clients = dict_size(clients); - retval = PyTuple_New(num_clients); - if (retval == NULL) + if ((retval = PyTuple_New(dict_size(d))) == NULL) return NULL; extra.extra = &n; extra.data = retval; - if (dict_foreach(clients, _dict_iter_fill_tuple, (void*)&extra) != NULL) { + if (dict_foreach(d, _dict_iter_fill_tuple, (void*)&extra) != NULL) { pyobj_release_tuple(retval, n); return NULL; } @@ -138,78 +132,38 @@ emb_get_users(UNUSED_ARG(PyObject *self), PyObject *args) { return retval; } -/* get a tuple with all channels in it */ +/* get a tuple with all users in it */ static PyObject* -emb_get_channels(UNUSED_ARG(PyObject* self), PyObject* args) { - PyObject* retval; - size_t num_channels, n = 0; - struct _tuple_dict_extra extra; - +emb_get_users(UNUSED_ARG(PyObject *self), PyObject *args) { if (!PyArg_ParseTuple(args, "")) return NULL; - num_channels = dict_size(channels); - retval = PyTuple_New(num_channels); - if (retval == NULL) - return NULL; - - extra.extra = &n; - extra.data = retval; + return pyobj_from_dict_t(clients); +} - if (dict_foreach(channels, _dict_iter_fill_tuple, (void*)&extra) != NULL) { - pyobj_release_tuple(retval, n); +/* get a tuple with all channels in it */ +static PyObject* +emb_get_channels(UNUSED_ARG(PyObject* self), PyObject* args) { + if (!PyArg_ParseTuple(args, "")) return NULL; - } - return retval; + return pyobj_from_dict_t(channels); } static PyObject* emb_get_servers(UNUSED_ARG(PyObject* self), PyObject* args) { - PyObject* retval; - size_t n = 0; - struct _tuple_dict_extra extra; - if (!PyArg_ParseTuple(args, "")) return NULL; - retval = PyTuple_New(dict_size(servers)); - if (retval == NULL) - return NULL; - - extra.extra = &n; - extra.data = retval; - - if (dict_foreach(servers, _dict_iter_fill_tuple, (void*)&extra) != NULL) { - pyobj_release_tuple(retval, n); - return NULL; - } - - return retval; + return pyobj_from_dict_t(servers); } static PyObject* emb_get_accounts(UNUSED_ARG(PyObject* self), PyObject* args) { - PyObject* retval; - size_t n = 0; - struct _tuple_dict_extra extra; - if (!PyArg_ParseTuple(args, "")) return NULL; - retval = PyTuple_New(dict_size(nickserv_handle_dict)); - if (retval == NULL) - return NULL; - - extra.extra = &n; - extra.data = retval; - - if (dict_foreach(nickserv_handle_dict, _dict_iter_fill_tuple, (void*)&extra) != NULL) { - pyobj_release_tuple(retval, n); - return NULL; - } - - return retval; + return pyobj_from_dict_t(nickserv_handle_dict); } static PyObject*