]> jfr.im git - irc/evilnet/x3.git/commitdiff
mod-python: add emb_get_servers function
authorhstuart <redacted>
Tue, 6 Oct 2009 08:24:36 +0000 (08:24 +0000)
committerhstuart <redacted>
Tue, 6 Oct 2009 08:24:36 +0000 (08:24 +0000)
ChangeLog
src/mod-python.c

index 4b49801f0d85059f25c9ce1e57c0456d8443abac..077964f594f3857cdc1841ae959c7fc906a5b15d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,10 @@
 /***********************************************************************
 X3 ChangeLog
 
+2009-10-06  Henrik Stuart <evilnet@hstuart.dk>
+
+       * src/mod-python.c: add emb_get_servers function.
+
 2009-10-06  Henrik Stuart <evilnet@hstuart.dk>
 
        * src/mod-python.c: fix a bunch of typos
index 5f1bab7bec8e61c5eb81e76f880fcdad71dbf132..bab66b052e90a6effe44aa5127f02380633eb473 100644 (file)
@@ -98,6 +98,15 @@ static int _dict_iter_get_channels(char const* key, UNUSED_ARG(void* data), void
     return 0;
 }
 
+static int _dict_iter_get_servers(char const* key, UNUSED_ARG(void* data), void* extra) {
+    struct _tuple_dict_extra* real_extra = (struct _tuple_dict_extra*)extra;
+
+    PyTuple_SetItem(real_extra->data, *(int*)real_extra->extra,
+            PyString_FromString(key));
+    *real_extra->extra = *real_extra->extra + 1;
+    return 0;
+}
+
 /* get a tuple with all users in it */
 static PyObject*
 emb_get_users(UNUSED_ARG(PyObject *self), PyObject *args) {
@@ -140,6 +149,25 @@ emb_get_channels(UNUSED_ARG(PyObject* self), PyObject* args) {
     return retval;
 }
 
+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));
+
+    extra.extra = &n;
+    extra.data = retval;
+
+    dict_foreach(servers, _dict_iter_get_servers, (void*)&extra);
+
+    return retval;
+}
+
 static PyObject*
 emb_dump(UNUSED_ARG(PyObject *self), PyObject *args)
 {
@@ -475,6 +503,7 @@ static PyMethodDef EmbMethods[] = {
     {"get_users", emb_get_users, METH_VARARGS, "Get all connected users"},
     {"get_channel", emb_get_channel, METH_VARARGS, "Get details about a channel"},
     {"get_channels", emb_get_channels, METH_VARARGS, "Get all channels"},
+    {"get_servers", emb_get_servers, METH_VARARGS, "Get all server names"},
     {"get_account", emb_get_account, METH_VARARGS, "Get details about an account"},
     {"get_info", emb_get_info, METH_VARARGS, "Get various misc info about x3"},
     /* null terminator */