diff options
Diffstat (limited to 'objects/irc-channel-object.c')
| -rw-r--r-- | objects/irc-channel-object.c | 173 |
1 files changed, 0 insertions, 173 deletions
diff --git a/objects/irc-channel-object.c b/objects/irc-channel-object.c deleted file mode 100644 index 5e9531d..0000000 --- a/objects/irc-channel-object.c +++ /dev/null @@ -1,173 +0,0 @@ -#include <Python.h> -#include "pyirssi_irc.h" -#include "pymodule.h" -#include "pycore.h" -#include "irc-channel-object.h" -#include "factory.h" - -/* PyIrcChannel destructor is inherited from PyChannel */ - -/* specialized getters/setters */ -static PyGetSetDef PyIrcChannel_getseters[] = { - {NULL} -}; - -/* Methods */ -PyDoc_STRVAR(bans_doc, - "bans() -> list of Ban objects\n" - "\n" - "Returns a list of bans in the channel.\n" -); -static PyObject *PyIrcChannel_bans(PyIrcChannel *self, PyObject *args) -{ - RET_NULL_IF_INVALID(self->data); - - return py_irssi_objlist_new(self->data->banlist, 1, (InitFunc)pyban_new); -} - -PyDoc_STRVAR(ban_get_mask_doc, - "ban_get_mask(nick, ban_type=0) -> str\n" - "\n" - "Get ban mask for 'nick'.\n" -); -static PyObject *PyIrcChannel_ban_get_mask(PyIrcChannel *self, PyObject *args, PyObject *kwds) -{ - static char *kwlist[] = {"nick", "ban_type", NULL}; - char *nick, *str; - int ban_type = 0; - PyObject *ret; - - RET_NULL_IF_INVALID(self->data); - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "s|i", kwlist, &nick, &ban_type)) - return NULL; - - str = ban_get_mask(self->data, nick, ban_type); - if (!str) - Py_RETURN_NONE; - - ret = PyString_FromString(str); - g_free(str); - - return ret; -} - -PyDoc_STRVAR(banlist_add_doc, - "banlist_add(ban, nick, time) -> Ban object or None\n" - "\n" - "Add a new ban to channel. Return None if duplicate." -); -static PyObject *PyIrcChannel_banlist_add(PyIrcChannel *self, PyObject *args, PyObject *kwds) -{ - static char *kwlist[] = {"ban", "nick", "time", NULL}; - char *ban, *nick; - time_t btime; - BAN_REC *newban; - - RET_NULL_IF_INVALID(self->data); - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "ssk", kwlist, &ban, &nick, &btime)) - return NULL; - - newban = banlist_add(self->data, ban, nick, btime); - /* XXX: return none or throw error? */ - if (!newban) - Py_RETURN_NONE; - - return pyban_new(newban); -} - -PyDoc_STRVAR(banlist_remove_doc, - "banlist_remove(ban, nick) -> None\n" - "\n" - "Remove a new ban from channel.\n" -); -static PyObject *PyIrcChannel_banlist_remove(PyIrcChannel *self, PyObject *args, PyObject *kwds) -{ - static char *kwlist[] = {"ban", "nick", NULL}; - char *ban, *nick; - - RET_NULL_IF_INVALID(self->data); - - if (!PyArg_ParseTupleAndKeywords(args, kwds, "ss", kwlist, &ban, &nick)) - return NULL; - - banlist_remove(self->data, ban, nick); - Py_RETURN_NONE; -} - -/* Methods for object */ -static PyMethodDef PyIrcChannel_methods[] = { - {"bans", (PyCFunction)PyIrcChannel_bans, METH_NOARGS, - bans_doc}, - {"ban_get_mask", (PyCFunction)PyIrcChannel_ban_get_mask, METH_VARARGS | METH_KEYWORDS, - ban_get_mask_doc}, - {"banlist_add", (PyCFunction)PyIrcChannel_banlist_add, METH_VARARGS | METH_KEYWORDS, - banlist_add_doc}, - {"banlist_remove", (PyCFunction)PyIrcChannel_banlist_remove, METH_VARARGS | METH_KEYWORDS, - banlist_remove_doc}, - {NULL} /* Sentinel */ -}; - -PyTypeObject PyIrcChannelType = { - PyObject_HEAD_INIT(NULL) - 0, /*ob_size*/ - "IrcChannel", /*tp_name*/ - sizeof(PyIrcChannel), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - 0, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - "PyIrcChannel objects", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - PyIrcChannel_methods, /* tp_methods */ - 0, /* tp_members */ - PyIrcChannel_getseters, /* tp_getset */ - &PyChannelType, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - 0, /* tp_init */ - 0, /* tp_alloc */ - 0, /* tp_new */ -}; - - -/* irc channel factory function */ -PyObject *pyirc_channel_new(void *chan) -{ - static const char *BASE_NAME = "CHANNEL"; - return pychannel_sub_new(chan, BASE_NAME, &PyIrcChannelType); -} - -int irc_channel_object_init(void) -{ - g_return_val_if_fail(py_module != NULL, 0); - - if (PyType_Ready(&PyIrcChannelType) < 0) - return 0; - - Py_INCREF(&PyIrcChannelType); - PyModule_AddObject(py_module, "IrcChannel", (PyObject *)&PyIrcChannelType); - - return 1; -} |
