]> icculus.org git repositories - mikachu/openbox.git/blob - src/python_client.cc
more typesafety
[mikachu/openbox.git] / src / python_client.cc
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2
3 #ifdef HAVE_CONFIG_H
4 # include "../config.h"
5 #endif
6
7 #include "python_client.hh"
8 #include "openbox.hh"
9
10 namespace ob {
11
12 extern "C" {
13
14 PyObject *get_client_dict(PyObject* self, PyObject* args)
15 {
16   if (!PyArg_ParseTuple(args, ":get_client_dict"))
17     return NULL;
18   return PyDictProxy_New((PyObject*)Openbox::instance->pyclients());
19 }
20
21
22
23 PyObject *getWindow(PyObject* self, PyObject* args)
24 {
25   if (!PyArg_ParseTuple(args, ":getWindow"))
26     return NULL;
27   return PyLong_FromLong(((PyClientObject*)self)->window);
28 }
29
30
31
32 static PyMethodDef attr_methods[] = {
33   {"getWindow", getWindow, METH_VARARGS,
34    "Return the window id."},
35   {NULL, NULL, 0, NULL}           /* sentinel */
36 };
37
38 static PyObject *getattr(PyObject *obj, char *name)
39 {
40   return Py_FindMethod(attr_methods, obj, name);
41 }
42
43
44
45 static void client_dealloc(PyObject* self)
46 {
47   PyObject_Del(self);
48 }
49
50 PyTypeObject PyClient_Type = {
51   PyObject_HEAD_INIT(NULL)
52   0,
53   "Client",
54   sizeof(PyClientObject),
55   0,
56   client_dealloc, /*tp_dealloc*/
57   0,          /*tp_print*/
58   getattr,    /*tp_getattr*/
59   0,          /*tp_setattr*/
60   0,          /*tp_compare*/
61   0,          /*tp_repr*/
62   0,          /*tp_as_number*/
63   0,          /*tp_as_sequence*/
64   0,          /*tp_as_mapping*/
65   0,          /*tp_hash */
66 };
67
68 }
69 }