summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohan Dahlin <johan@src.gnome.org>2005-07-01 15:07:14 +0000
committerJohan Dahlin <johan@src.gnome.org>2005-07-01 15:07:14 +0000
commitb0070d4912b45a3dc61b5ce94f6dd5ee5a148031 (patch)
treedcfe9c2073c6d191653814db2003766a4761bd99
parent9efdc381329d8e656fe0b3a49f76af9647b18bbb (diff)
downloadpygobject-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.c2
-rw-r--r--gobject/pygtype.c31
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
};
/**