diff options
author | Christopher Davis <loafier@gmail.com> | 2006-06-21 00:22:03 +0000 |
---|---|---|
committer | Christopher Davis <loafier@gmail.com> | 2006-06-21 00:22:03 +0000 |
commit | 7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7 (patch) | |
tree | cc0ceff989c10739bcb18ae0743579bfb5074c3a /objects/dcc-object.c | |
parent | bb48c914c6239ed1dbcb29eb62d33d3ab91e7215 (diff) | |
download | irssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.tar.gz irssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.tar.xz irssi-python-7ddcc3b268c8c55b2d6fe80e87e090181fbc1bf7.zip |
Added a lot of object wrappers. Most are untested.
Will finish up the rest of the object wrappers perhaps
tonight or tomorrow. Signal handling will need to be
addressed ASAP. There are quite a lot of other global
module functions remaining to be wraped, as well.
git-svn-id: http://svn.irssi.org/repos/irssi-python@4286 dbcabf3a-b0e7-0310-adc4-f8d773084564
Diffstat (limited to 'objects/dcc-object.c')
-rw-r--r-- | objects/dcc-object.c | 112 |
1 files changed, 63 insertions, 49 deletions
diff --git a/objects/dcc-object.c b/objects/dcc-object.c index 772c011..62b5915 100644 --- a/objects/dcc-object.c +++ b/objects/dcc-object.c @@ -5,6 +5,7 @@ #include "factory.h" #include "pycore.h" + /* monitor "dcc destroyed signal" */ static void dcc_cleanup(DCC_REC *dcc) { @@ -35,12 +36,11 @@ PyDoc_STRVAR(PyDcc_orig_type_doc, ); static PyObject *PyDcc_orig_type_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; const char *type; - RET_NULL_IF_INVALID(data); + RET_NULL_IF_INVALID(self->data); - type = module_find_id_str("DCC", data->orig_type); + type = module_find_id_str("DCC", DCC(self->data)->orig_type); RET_AS_STRING_OR_NONE(type); } @@ -49,10 +49,8 @@ PyDoc_STRVAR(PyDcc_created_doc, ); static PyObject *PyDcc_created_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - return PyLong_FromUnsignedLong(data->created); + RET_NULL_IF_INVALID(self->data); + return PyLong_FromUnsignedLong(DCC(self->data)->created); } PyDoc_STRVAR(PyDcc_server_doc, @@ -60,9 +58,7 @@ PyDoc_STRVAR(PyDcc_server_doc, ); static PyObject *PyDcc_server_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); + RET_NULL_IF_INVALID(self->data); RET_AS_OBJ_OR_NONE(self->server); } @@ -71,10 +67,8 @@ PyDoc_STRVAR(PyDcc_servertag_doc, ); static PyObject *PyDcc_servertag_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->servertag); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->servertag); } PyDoc_STRVAR(PyDcc_mynick_doc, @@ -82,10 +76,8 @@ PyDoc_STRVAR(PyDcc_mynick_doc, ); static PyObject *PyDcc_mynick_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->mynick); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->mynick); } PyDoc_STRVAR(PyDcc_nick_doc, @@ -93,10 +85,8 @@ PyDoc_STRVAR(PyDcc_nick_doc, ); static PyObject *PyDcc_nick_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->nick); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->nick); } PyDoc_STRVAR(PyDcc_chat_doc, @@ -104,9 +94,7 @@ PyDoc_STRVAR(PyDcc_chat_doc, ); static PyObject *PyDcc_chat_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); + RET_NULL_IF_INVALID(self->data); RET_AS_OBJ_OR_NONE(self->chat); } @@ -115,10 +103,8 @@ PyDoc_STRVAR(PyDcc_target_doc, ); static PyObject *PyDcc_target_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->target); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->target); } PyDoc_STRVAR(PyDcc_arg_doc, @@ -126,10 +112,8 @@ PyDoc_STRVAR(PyDcc_arg_doc, ); static PyObject *PyDcc_arg_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->arg); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->arg); } PyDoc_STRVAR(PyDcc_addr_doc, @@ -137,10 +121,8 @@ PyDoc_STRVAR(PyDcc_addr_doc, ); static PyObject *PyDcc_addr_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - RET_AS_STRING_OR_NONE(data->addrstr); + RET_NULL_IF_INVALID(self->data); + RET_AS_STRING_OR_NONE(DCC(self->data)->addrstr); } PyDoc_STRVAR(PyDcc_port_doc, @@ -148,10 +130,8 @@ PyDoc_STRVAR(PyDcc_port_doc, ); static PyObject *PyDcc_port_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - return PyInt_FromLong(data->port); + RET_NULL_IF_INVALID(self->data); + return PyInt_FromLong(DCC(self->data)->port); } PyDoc_STRVAR(PyDcc_starttime_doc, @@ -159,10 +139,8 @@ PyDoc_STRVAR(PyDcc_starttime_doc, ); static PyObject *PyDcc_starttime_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - return PyLong_FromUnsignedLong(data->starttime); + RET_NULL_IF_INVALID(self->data); + return PyLong_FromUnsignedLong(DCC(self->data)->starttime); } PyDoc_STRVAR(PyDcc_transfd_doc, @@ -170,10 +148,8 @@ PyDoc_STRVAR(PyDcc_transfd_doc, ); static PyObject *PyDcc_transfd_get(PyDcc *self, void *closure) { - DCC_REC *data = self->data; - - RET_NULL_IF_INVALID(data); - return PyLong_FromUnsignedLong(data->transfd); + RET_NULL_IF_INVALID(self->data); + return PyLong_FromUnsignedLong(DCC(self->data)->transfd); } /* specialized getters/setters */ @@ -220,10 +196,48 @@ static PyObject *PyDcc_destroy(PyDcc *self, PyObject *args) Py_RETURN_NONE; } +PyDoc_STRVAR(PyDcc_reject_doc, + "?" +); +static PyObject *PyDcc_reject(PyDcc *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = {"server", NULL}; + PyObject *server = NULL; + + RET_NULL_IF_INVALID(self->data); + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", kwlist, + &server)) + return NULL; + + if (!pyirc_server_check(server)) + return PyErr_Format(PyExc_TypeError, "arg must be IRC server object"); + + dcc_reject(self->data, ((PyIrcServer*)server)->data); + + Py_RETURN_NONE; +} + +PyDoc_STRVAR(PyDcc_close_doc, + "Close and destroy DCC connection" +); +static PyObject *PyDcc_close(PyDcc *self, PyObject *args) +{ + RET_NULL_IF_INVALID(self->data); + + dcc_close(self->data); + + Py_RETURN_NONE; +} + /* Methods for object */ static PyMethodDef PyDcc_methods[] = { {"destroy", (PyCFunction)PyDcc_destroy, METH_NOARGS, PyDcc_destroy_doc}, + {"reject", (PyCFunction)PyDcc_reject, METH_VARARGS | METH_KEYWORDS, + PyDcc_reject_doc}, + {"close", (PyCFunction)PyDcc_close, METH_NOARGS, + PyDcc_close_doc}, {NULL} /* Sentinel */ }; |