From b0070d4912b45a3dc61b5ce94f6dd5ee5a148031 Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Fri, 1 Jul 2005 15:07:14 +0000 Subject: Extend to add some new fields, add a getter for GType.type, which points * gobject/pygtype.c: Extend to add some new fields, add a getter for GType.type, which points to the python registered type of a PyGTypeWrapper. * gobject/gobjectmodule.c (initgobject): And register PyGTypeWrapper, a side effect is that dir(gtype) also works now. --- gobject/gobjectmodule.c | 2 ++ gobject/pygtype.c | 31 +++++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index 061e591..8882c0c 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -2519,6 +2519,8 @@ initgobject(void) pyginterface_info_key = g_quark_from_static_string("PyGInterface::info"); pygpointer_class_key = g_quark_from_static_string("PyGPointer::class"); + PyType_Ready(&PyGTypeWrapper_Type); + PY_TYPE_OBJECT = g_boxed_type_register_static("PyObject", pyobject_copy, pyobject_free); diff --git a/gobject/pygtype.c b/gobject/pygtype.c index 73140a6..9b7816e 100644 --- a/gobject/pygtype.c +++ b/gobject/pygtype.c @@ -60,6 +60,21 @@ pyg_type_wrapper_dealloc(PyGTypeWrapper *self) PyObject_DEL(self); } +static PyObject * +_wrap_g_type_wrapper__get_pytype(PyGTypeWrapper *self, void *closure) +{ + PyObject *py_type = Py_None; + + py_type = g_type_get_qdata(self->type, pygobject_class_key); + Py_INCREF(py_type); + return py_type; +} + +static PyGetSetDef _PyGTypeWrapper_getsets[] = { + { "pytype", (getter)_wrap_g_type_wrapper__get_pytype, (setter)0 }, + { NULL, 0, 0 }, +}; + PyTypeObject PyGTypeWrapper_Type = { PyObject_HEAD_INIT(NULL) 0, @@ -78,8 +93,20 @@ PyTypeObject PyGTypeWrapper_Type = { (hashfunc)pyg_type_wrapper_hash, (ternaryfunc)0, (reprfunc)0, - 0L,0L,0L,0L, - NULL + (getattrofunc)0, + (setattrofunc)0, + 0, + Py_TPFLAGS_DEFAULT, + NULL, + (traverseproc)0, + (inquiry)0, + (richcmpfunc)0, + 0, + (getiterfunc)0, + (iternextfunc)0, + 0, + 0, + _PyGTypeWrapper_getsets }; /** -- cgit