summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--codegen/codegen.py2
-rw-r--r--gobject/gobjectmodule.c21
-rw-r--r--gobjectmodule.c21
4 files changed, 46 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 4e7b4ac9..13c2b4b6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2001-09-25 James Henstridge <james@daa.com.au>
+ * gobjectmodule.c (pygobject_get_dict): getter for __dict__ on
+ GObject wrappers.
+ (PyGObject_Type): include getsets list.
+
+ * codegen/codegen.py (write_getsets): change "struct getsets" to
+ PyGetSetDef to match recent changes in python.
+
* gtk/gdk.override (_wrap_gdk_device__get_axes): change to getter.
(_wrap_gdk_device__get_keys): turn into a getter.
(_wrap_gdk_drag_context__get_targets): same here.
diff --git a/codegen/codegen.py b/codegen/codegen.py
index 00e392be..4a5c28b3 100644
--- a/codegen/codegen.py
+++ b/codegen/codegen.py
@@ -392,7 +392,7 @@ def write_getsets(parser, objobj, castmacro, overrides, fp=sys.stdout):
#traceback.print_exc()
if not getsets:
return '0'
- fp.write('static struct getsetlist %s[] = {\n' % getsets_name)
+ fp.write('static PyGetSetDef %s[] = {\n' % getsets_name)
for getset in getsets:
fp.write(getset)
fp.write(' { NULL, (getter)0, (setter)0 },\n')
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 070dcbc7..14fe42ee 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -1472,6 +1472,23 @@ static PyMethodDef pygobject_methods[] = {
{ NULL, NULL, 0 }
};
+static PyObject *
+pygobject_get_dict(PyGObject *self, void *closure)
+{
+ if (self->inst_dict == NULL) {
+ self->inst_dict = PyDict_New();
+ if (self->inst_dict == NULL)
+ return NULL;
+ }
+ Py_INCREF(self->inst_dict);
+ return self->inst_dict;
+}
+
+static PyGetSetDef pygobject_getsets[] = {
+ { "__dict__", (getter)pygobject_get_dict, (setter)0 },
+ { NULL, 0, 0 }
+};
+
static PyTypeObject PyGObject_Type = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
@@ -1505,13 +1522,13 @@ static PyTypeObject PyGObject_Type = {
(iternextfunc)0, /* tp_iternext */
pygobject_methods, /* tp_methods */
0, /* tp_members */
- 0, /* tp_getset */
+ pygobject_getsets, /* tp_getset */
(PyTypeObject *)0, /* tp_base */
(PyObject *)0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
offsetof(PyGObject, inst_dict), /* tp_dictoffset */
- (initproc)pygobject_init, /* tp_init */
+ (initproc)pygobject_init, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */
PyType_GenericNew, /* tp_new */
object_gc_free, /* tp_free */
diff --git a/gobjectmodule.c b/gobjectmodule.c
index 070dcbc7..14fe42ee 100644
--- a/gobjectmodule.c
+++ b/gobjectmodule.c
@@ -1472,6 +1472,23 @@ static PyMethodDef pygobject_methods[] = {
{ NULL, NULL, 0 }
};
+static PyObject *
+pygobject_get_dict(PyGObject *self, void *closure)
+{
+ if (self->inst_dict == NULL) {
+ self->inst_dict = PyDict_New();
+ if (self->inst_dict == NULL)
+ return NULL;
+ }
+ Py_INCREF(self->inst_dict);
+ return self->inst_dict;
+}
+
+static PyGetSetDef pygobject_getsets[] = {
+ { "__dict__", (getter)pygobject_get_dict, (setter)0 },
+ { NULL, 0, 0 }
+};
+
static PyTypeObject PyGObject_Type = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
@@ -1505,13 +1522,13 @@ static PyTypeObject PyGObject_Type = {
(iternextfunc)0, /* tp_iternext */
pygobject_methods, /* tp_methods */
0, /* tp_members */
- 0, /* tp_getset */
+ pygobject_getsets, /* tp_getset */
(PyTypeObject *)0, /* tp_base */
(PyObject *)0, /* tp_dict */
0, /* tp_descr_get */
0, /* tp_descr_set */
offsetof(PyGObject, inst_dict), /* tp_dictoffset */
- (initproc)pygobject_init, /* tp_init */
+ (initproc)pygobject_init, /* tp_init */
PyType_GenericAlloc, /* tp_alloc */
PyType_GenericNew, /* tp_new */
object_gc_free, /* tp_free */