summaryrefslogtreecommitdiffstats
path: root/src/objects/irc-connect-object.c
blob: 9edc5aeca022961f7c4e737e1a6b45cf4e4be664 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <Python.h>
#include "pymodule.h"
#include "base-objects.h"
#include "irc-connect-object.h"
#include "pyirssi_irc.h"
#include "pycore.h"
#include "pyutils.h"

/* cleanup and deallocation handled by Connect base */

/* Getters */
PyDoc_STRVAR(PyIrcConnect_alternate_nick_doc,
    "Alternate nick to use if default nick is taken"
);
static PyObject *PyIrcConnect_alternate_nick_get(PyIrcConnect *self, void *closure)
{
    RET_NULL_IF_INVALID(self->data);
    RET_AS_STRING_OR_NONE(self->data->alternate_nick);
}

/* Get/Set */
static PyGetSetDef PyIrcConnect_getseters[] = {
    {"alternate_nick", (getter)PyIrcConnect_alternate_nick_get, NULL,
        PyIrcConnect_alternate_nick_doc, NULL},
    {NULL}
};

PyTypeObject PyIrcConnectType = {
    PyObject_HEAD_INIT(NULL)
    0,                         /*ob_size*/
    "irssi.IrcConnect",            /*tp_name*/
    sizeof(PyIrcConnect),             /*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*/
    "PyIrcConnect objects",           /* tp_doc */
    0,		               /* tp_traverse */
    0,		               /* tp_clear */
    0,		               /* tp_richcompare */
    0,		               /* tp_weaklistoffset */
    0,		               /* tp_iter */
    0,		               /* tp_iternext */
    0,                      /* tp_methods */
    0,                      /* tp_members */
    PyIrcConnect_getseters,        /* tp_getset */
    &PyConnectType,          /* 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 *pyirc_connect_new(void *connect, int managed)
{
    return pyconnect_sub_new(connect, &PyIrcConnectType, managed);
}

int irc_connect_object_init(void) 
{
    g_return_val_if_fail(py_module != NULL, 0);

    if (PyType_Ready(&PyIrcConnectType) < 0)
        return 0;
    
    Py_INCREF(&PyIrcConnectType);
    PyModule_AddObject(py_module, "IrcConnect", (PyObject *)&PyIrcConnectType);

    return 1;
}