diff options
author | Johan Dahlin <johan@src.gnome.org> | 2005-07-01 15:07:14 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2005-07-01 15:07:14 +0000 |
commit | b0070d4912b45a3dc61b5ce94f6dd5ee5a148031 (patch) | |
tree | dcfe9c2073c6d191653814db2003766a4761bd99 | |
parent | 9efdc381329d8e656fe0b3a49f76af9647b18bbb (diff) | |
download | pygobject-b0070d4912b45a3dc61b5ce94f6dd5ee5a148031.tar.gz pygobject-b0070d4912b45a3dc61b5ce94f6dd5ee5a148031.tar.xz pygobject-b0070d4912b45a3dc61b5ce94f6dd5ee5a148031.zip |
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.
-rw-r--r-- | gobject/gobjectmodule.c | 2 | ||||
-rw-r--r-- | 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 }; /** |