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-send-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-send-object.c')
-rw-r--r-- | objects/dcc-send-object.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/objects/dcc-send-object.c b/objects/dcc-send-object.c new file mode 100644 index 0000000..643f741 --- /dev/null +++ b/objects/dcc-send-object.c @@ -0,0 +1,138 @@ +#include <Python.h> +#include "pyirssi_irc.h" +#include "pymodule.h" +#include "dcc-send-object.h" +#include "factory.h" +#include "pycore.h" + +#define DCC_SEND_CAST(rec) ((SEND_DCC_REC *)rec) + +/* inherit destroy and cleanup from Dcc type */ + +/* Getters */ +PyDoc_STRVAR(PyDccSend_size_doc, + "File size" +); +static PyObject *PyDccSend_size_get(PyDccSend *self, void *closure) +{ + RET_NULL_IF_INVALID(self->data); + return PyLong_FromUnsignedLong(DCC_SEND_CAST(self->data)->size); +} + +PyDoc_STRVAR(PyDccSend_skipped_doc, + "Bytes skipped from start (resuming file)" +); +static PyObject *PyDccSend_skipped_get(PyDccSend *self, void *closure) +{ + RET_NULL_IF_INVALID(self->data); + return PyLong_FromUnsignedLong(DCC_SEND_CAST(self->data)->skipped); +} + +PyDoc_STRVAR(PyDccSend_file_quoted_doc, + "True if file name was received quoted (\"file name\")" +); +static PyObject *PyDccSend_file_quoted_get(PyDccSend *self, void *closure) +{ + RET_NULL_IF_INVALID(self->data); + return PyBool_FromLong(DCC_SEND_CAST(self->data)->file_quoted); +} + +PyDoc_STRVAR(PyDccSend_waitforend_doc, + "File is sent, just wait for the replies from the other side" +); +static PyObject *PyDccSend_waitforend_get(PyDccSend *self, void *closure) +{ + RET_NULL_IF_INVALID(self->data); + return PyBool_FromLong(DCC_SEND_CAST(self->data)->waitforend); +} + +PyDoc_STRVAR(PyDccSend_gotalldata_doc, + "Got all acks from the other end" +); +static PyObject *PyDccSend_gotalldata_get(PyDccSend *self, void *closure) +{ + RET_NULL_IF_INVALID(self->data); + return PyBool_FromLong(DCC_SEND_CAST(self->data)->gotalldata); +} + +/* specialized getters/setters */ +static PyGetSetDef PyDccSend_getseters[] = { + {"size", (getter)PyDccSend_size_get, NULL, + PyDccSend_size_doc, NULL}, + {"skipped", (getter)PyDccSend_skipped_get, NULL, + PyDccSend_skipped_doc, NULL}, + {"file_quoted", (getter)PyDccSend_file_quoted_get, NULL, + PyDccSend_file_quoted_doc, NULL}, + {"waitforend", (getter)PyDccSend_waitforend_get, NULL, + PyDccSend_waitforend_doc, NULL}, + {"gotalldata", (getter)PyDccSend_gotalldata_get, NULL, + PyDccSend_gotalldata_doc, NULL}, + {NULL} +}; + +/* Methods */ +/* Methods for object */ +static PyMethodDef PyDccSend_methods[] = { + {NULL} /* Sentinel */ +}; + +PyTypeObject PyDccSendType = { + PyObject_HEAD_INIT(NULL) + 0, /*ob_size*/ + "DccSend", /*tp_name*/ + sizeof(PyDccSend), /*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*/ + "PyDccSend objects", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + PyDccSend_methods, /* tp_methods */ + 0, /* tp_members */ + PyDccSend_getseters, /* tp_getset */ + &PyDccType, /* 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 */ +}; + +PyObject *pydcc_send_new(void *dcc) +{ + static const char *name = "DCC SEND"; + return pydcc_sub_new(dcc, name, &PyDccSendType); +} + +int dcc_send_object_init(void) +{ + g_return_val_if_fail(py_module != NULL, 0); + + if (PyType_Ready(&PyDccSendType) < 0) + return 0; + + Py_INCREF(&PyDccSendType); + PyModule_AddObject(py_module, "DccSend", (PyObject *)&PyDccSendType); + + return 1; +} |