summaryrefslogtreecommitdiff
path: root/gtk/gtkobject-support.c
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2000-07-03 05:46:35 +0000
committerJames Henstridge <jamesh@src.gnome.org>2000-07-03 05:46:35 +0000
commitae90e00cd9004bbe6b1fa9167004e85c5bb8fac9 (patch)
tree183123319b849da13dfc5a3a27bc24975e6c2ce4 /gtk/gtkobject-support.c
parent40e5baa60b9a125a590155d9ccbc06dabf5a02c4 (diff)
downloadpygtk-ae90e00cd9004bbe6b1fa9167004e85c5bb8fac9.tar.gz
handle the null constructor better.
2000-07-03 James Henstridge <james@daa.com.au> * codegen/codegen.py (noconstructor): handle the null constructor better. * gtk/gtk-types.c (_pygtk_register_boxed_types): commented out the object implementations for types that have been converted to GObjects. * gtk/gtkobject-support.c: commented out some of this code to get it to compile again. Also converted some functions over to GObject. * codegen/argtypes.py (EnumArg,FlagsArg): use the version from gobject. * gtk/gtkmodule.c: update * gtk/gtk.override: fix up the overrides for the new gdk.defs stuff. (GTK_TYPE_GDK_*): add some dummy defines to make things compile until the gdk-pixbuf enums are added to * codegen/argtypes.py (ObjectArg.write_param): use PyGObject rather than PyGtk_Object. * pygobject.h (pygobject_check): add check function. Just a wrapper around ExtensionClassSubclassInstance. * codegen/codegen.py: updated to use PyGObject rather than PyGtk_Object. * gtk/gtk.defs: removed most of the stuff here so I can test out the gdk stuff.
Diffstat (limited to 'gtk/gtkobject-support.c')
-rw-r--r--gtk/gtkobject-support.c350
1 files changed, 14 insertions, 336 deletions
diff --git a/gtk/gtkobject-support.c b/gtk/gtkobject-support.c
index 092094a1..aaadbce9 100644
--- a/gtk/gtkobject-support.c
+++ b/gtk/gtkobject-support.c
@@ -80,192 +80,6 @@ pygtk_destroy_notify(gpointer user_data)
}
-static GHashTable *class_hash = NULL;
-
-static const char *pygtk_wrapper_key = "pygtk::wrapper";
-static const char *pygtk_ownedref_key = "pygtk::ownedref";
-
-void
-pygtk_register_class(PyObject *dict, const gchar *class_name,
- PyExtensionClass *ec, PyExtensionClass *parent)
-{
- if (!class_hash)
- class_hash = g_hash_table_new(g_str_hash, g_str_equal);
-
- /* set standard pygtk class functions if they aren't already set */
- if (!ec->tp_dealloc) ec->tp_dealloc = (destructor)pygtk_dealloc;
- if (!ec->tp_getattr) ec->tp_getattr = (getattrfunc)pygtk_getattr;
- if (!ec->tp_setattr) ec->tp_setattr = (setattrfunc)pygtk_setattr;
- if (!ec->tp_compare) ec->tp_compare = (cmpfunc)pygtk_compare;
- if (!ec->tp_repr) ec->tp_repr = (reprfunc)pygtk_repr;
- if (!ec->tp_hash) ec->tp_hash = (hashfunc)pygtk_hash;
-
- if (parent) {
- PyExtensionClass_ExportSubclassSingle(dict, (char *)class_name,
- *ec, *parent);
- } else {
- PyExtensionClass_Export(dict, (char *)class_name, *ec);
- }
-
- g_hash_table_insert(class_hash, g_strdup(class_name), ec);
-}
-
-void
-pygtk_register_wrapper(PyObject *self)
-{
- GtkObject *obj = ((PyGtk_Object *)self)->obj;
-
- gtk_object_ref(obj);
- gtk_object_sink(obj);
- gtk_object_set_data(obj, pygtk_wrapper_key, self);
-
-#if 1
- /*
- ((PyGtk_Object *)self)->inst_dict = PyDict_New();
- */
-#endif
-}
-
-PyObject *
-pygtk_no_constructor(PyObject *self, PyObject *args)
-{
- gchar buf[512];
-
- g_snprintf(buf, sizeof(buf), "%s is an abstract widget", self->ob_type->tp_name);
- PyErr_SetString(PyExc_NotImplementedError, buf);
- return NULL;
-}
-
-static PyExtensionClass *
-pygtk_lookup_class(GtkType type)
-{
- PyExtensionClass *ec;
-
- /* find the python type for this object. If not found, use parent. */
- while ((ec = g_hash_table_lookup(class_hash, gtk_type_name(type))) == NULL
- && type != 0)
- type = gtk_type_parent(type);
- g_assert(ec != NULL);
- return ec;
-}
-
-PyObject *
-PyGtk_New(GtkObject *obj)
-{
- PyGtk_Object *self;
- PyTypeObject *tp;
- GtkType type;
-
- if (obj == NULL) {
- Py_INCREF(Py_None);
- return Py_None;
- }
-
- /* we already have a wrapper for this object -- return it. */
- if ((self = (PyGtk_Object *)gtk_object_get_data(obj, pygtk_wrapper_key))) {
- /* if the gtk object currently owns the wrapper reference ... */
- if (self->hasref) {
- self->hasref = FALSE;
- gtk_object_remove_no_notify(obj, pygtk_ownedref_key);
- gtk_object_ref(obj);
- }
- Py_INCREF(self);
- return (PyObject *)self;
- }
-
- tp = (PyTypeObject *)pygtk_lookup_class(GTK_OBJECT_TYPE(obj));
-
- /* can't use PyObject_NEW, as we want to create a slightly larger struct */
- self = malloc(sizeof(PyGtk_Object));
- if (self == NULL)
- return PyErr_NoMemory();
- self->ob_type = tp;
- _Py_NewReference((PyObject *)self);
-
- self->obj = obj;
- gtk_object_ref(obj);
- /* save the wrapper pointer so we can access it later */
- gtk_object_set_data(obj, pygtk_wrapper_key, self);
-#if 1
- /* set up the class dictionary */
- self->inst_dict = PyDict_New();
-#endif
- return (PyObject *)self;
-}
-
-void
-pygtk_dealloc(PyGtk_Object *self)
-{
- GtkObject *obj = self->obj;
-
- /* this bit of code has been handled in pygtk_subclass_dealloc ... */
- if (obj && !(((PyExtensionClass *)self->ob_type)->class_flags &
- EXTENSIONCLASS_PYSUBCLASS_FLAG)) {
- /* save reference to python wrapper if there are still
- * references to the gtk object in such a way that it will be
- * freed when the gtk object is destroyed, so is the python
- * wrapper, but if a python wrapper can be */
- if (obj->ref_count > 1) {
- Py_INCREF(self); /* grab a reference on the wrapper */
- self->hasref = TRUE;
- gtk_object_set_data_full(obj, pygtk_ownedref_key,
- self, pygtk_destroy_notify);
- gtk_object_unref(obj);
- return;
- }
- if (!self->hasref) /* don't unref the gtk object if it owns us */
- gtk_object_unref(obj);
- }
- /* subclass_dealloc (ExtensionClass.c) does this for us for python
- * subclasses */
- if (self->inst_dict &&
- !(((PyExtensionClass *)self->ob_type)->class_flags &
- EXTENSIONCLASS_PYSUBCLASS_FLAG))
- Py_DECREF(self->inst_dict);
- PyMem_DEL(self);
-}
-
-/* standard getattr method */
-PyObject *
-pygtk_getattr(PyGtk_Object *self, char *attr)
-{
- ExtensionClassImported;
-
- return Py_FindAttrString((PyObject *)self, attr);
-}
-
-int
-pygtk_setattr(PyGtk_Object *self, char *attr, PyObject *value)
-{
- PyDict_SetItemString(INSTANCE_DICT(self), attr, value);
- return 0;
-}
-
-int
-pygtk_compare(PyGtk_Object *self, PyGtk_Object *v)
-{
- if (self->obj == v->obj) return 0;
- if (self->obj > v->obj) return -1;
- return 1;
-}
-
-long
-pygtk_hash(PyGtk_Object *self)
-{
- return (long)self->obj;
-}
-
-PyObject *
-pygtk_repr(PyGtk_Object *self)
-{
- gchar buf[128];
-
- g_snprintf(buf, sizeof(buf), "<%s at %lx>",
- gtk_type_name(GTK_OBJECT_TYPE(self->obj)), (long)self->obj);
- return PyString_FromString(buf);
-}
-
-
/* ------------ stuff for converting from gtk <-> python types --------- */
/* this hash table is used to let these functions know about new boxed
@@ -393,9 +207,9 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
}
Py_DECREF(tmp);
break;
- case GTK_TYPE_OBJECT:
- if (PyGtk_Check(obj, pygtk_lookup_class(arg->type)))
- GTK_VALUE_OBJECT(*arg) = PyGtk_Get(obj);
+ case G_TYPE_OBJECT:
+ if (pygobject_check(obj, pygobject_lookup_class(arg->type)))
+ GTK_VALUE_OBJECT(*arg) = GTK_OBJECT(pygobject_get(obj));
else
return -1;
break;
@@ -405,11 +219,6 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
GTK_VALUE_BOXED(*arg) = PyGtkAccelGroup_Get(obj);
else
return -1;
- } else if (arg->type == GTK_TYPE_STYLE) {
- if (PyGtkStyle_Check(obj))
- GTK_VALUE_BOXED(*arg) = PyGtkStyle_Get(obj);
- else
- return -1;
} else if (arg->type == GTK_TYPE_GDK_EVENT) {
if (PyGdkEvent_Check(obj))
GTK_VALUE_BOXED(*arg) = PyGdkEvent_Get(obj);
@@ -427,13 +236,6 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
GTK_VALUE_BOXED(*arg) = NULL;
else
return -1;
- } else if (arg->type == GTK_TYPE_GDK_WINDOW) {
- if (PyGdkWindow_Check(obj))
- GTK_VALUE_BOXED(*arg) = PyGdkWindow_Get(obj);
- else if (obj == Py_None)
- GTK_VALUE_BOXED(*arg) = NULL;
- else
- return -1;
} else if (arg->type == GTK_TYPE_GDK_VISUAL) {
if (PyGdkVisual_Check(obj))
GTK_VALUE_BOXED(*arg) = PyGdkVisual_Get(obj);
@@ -441,18 +243,6 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
GTK_VALUE_BOXED(*arg) = NULL;
else
return -1;
- } else if (arg->type == GTK_TYPE_GDK_COLORMAP) {
- if (PyGdkColormap_Check(obj))
- GTK_VALUE_BOXED(*arg) = PyGdkColormap_Get(obj);
- else if (obj == Py_None)
- GTK_VALUE_BOXED(*arg) = NULL;
- else
- return -1;
- } else if (arg->type == GTK_TYPE_GDK_DRAG_CONTEXT) {
- if (PyGdkDragContext_Check(obj))
- GTK_VALUE_BOXED(*arg) = PyGdkDragContext_Get(obj);
- else
- return -1;
} else if (arg->type == GTK_TYPE_SELECTION_DATA) {
if (PyGtkSelectionData_Check(obj))
GTK_VALUE_BOXED(*arg) = PyGtkSelectionData_Get(obj);
@@ -482,11 +272,6 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
else
return -1;
break;
- case GTK_TYPE_FOREIGN:
- Py_INCREF(obj);
- GTK_VALUE_FOREIGN(*arg).data = obj;
- GTK_VALUE_FOREIGN(*arg).notify = pygtk_destroy_notify;
- break;
case GTK_TYPE_SIGNAL:
if (PyCallable_Check(obj)) {
Py_INCREF(obj);
@@ -495,21 +280,6 @@ pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj)
} else
return -1;
break;
- case GTK_TYPE_CALLBACK:
- if (PyCallable_Check(obj)) {
- Py_INCREF(obj);
- GTK_VALUE_CALLBACK(*arg).marshal =
- (GtkCallbackMarshal)pygtk_callback_marshal;
- GTK_VALUE_CALLBACK(*arg).data = obj;
- GTK_VALUE_CALLBACK(*arg).notify = pygtk_destroy_notify;
- } else
- return -1;
- break;
- case GTK_TYPE_ARGS:
- case GTK_TYPE_C_CALLBACK:
- fprintf(stderr, "unsupported type");
- g_assert_not_reached();
- return -1;
}
return 0;
}
@@ -550,12 +320,9 @@ pygtk_arg_as_pyobject(GtkArg *arg)
Py_INCREF(Py_None);
return Py_None;
}
- case GTK_TYPE_ARGS:
- return pygtk_args_as_tuple(GTK_VALUE_ARGS(*arg).n_args,
- GTK_VALUE_ARGS(*arg).args);
- case GTK_TYPE_OBJECT:
+ case G_TYPE_OBJECT:
if (GTK_VALUE_OBJECT(*arg) != NULL)
- return PyGtk_New(GTK_VALUE_OBJECT(*arg));
+ return pygobject_new((GObject *)GTK_VALUE_OBJECT(*arg));
else {
Py_INCREF(Py_None);
return Py_None;
@@ -565,22 +332,14 @@ pygtk_arg_as_pyobject(GtkArg *arg)
case GTK_TYPE_BOXED:
if (arg->type == GTK_TYPE_ACCEL_GROUP)
return PyGtkAccelGroup_New(GTK_VALUE_BOXED(*arg));
- else if (arg->type == GTK_TYPE_STYLE)
- return PyGtkStyle_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_EVENT)
return PyGdkEvent_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_FONT)
return PyGdkFont_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_COLOR)
return PyGdkColor_New(GTK_VALUE_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_WINDOW)
- return PyGdkWindow_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_VISUAL)
return PyGdkVisual_New(GTK_VALUE_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_COLORMAP)
- return PyGdkColormap_New(GTK_VALUE_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_DRAG_CONTEXT)
- return PyGdkDragContext_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_SELECTION_DATA)
return PyGtkSelectionData_New(GTK_VALUE_BOXED(*arg));
else if (arg->type == GTK_TYPE_CTREE_NODE) {
@@ -594,12 +353,6 @@ pygtk_arg_as_pyobject(GtkArg *arg)
return fs->fromarg(GTK_VALUE_BOXED(*arg));
return PyCObject_FromVoidPtr(GTK_VALUE_BOXED(*arg), NULL);
}
- case GTK_TYPE_FOREIGN:
- Py_INCREF((PyObject *)GTK_VALUE_FOREIGN(*arg).data);
- return (PyObject *)GTK_VALUE_FOREIGN(*arg).data;
- case GTK_TYPE_CALLBACK:
- Py_INCREF((PyObject *)GTK_VALUE_CALLBACK(*arg).data);
- return (PyObject *)GTK_VALUE_CALLBACK(*arg).data;
case GTK_TYPE_SIGNAL:
Py_INCREF((PyObject *)GTK_VALUE_SIGNAL(*arg).d);
return (PyObject *)GTK_VALUE_SIGNAL(*arg).d;
@@ -714,9 +467,9 @@ pygtk_ret_from_pyobject(GtkArg *ret, PyObject *py_ret)
*GTK_RETLOC_STRING(*ret) = NULL;
}
break;
- case GTK_TYPE_OBJECT:
- if (PyGtk_Check(py_ret, pygtk_lookup_class(ret->type)))
- *GTK_RETLOC_OBJECT(*ret) = PyGtk_Get(py_ret);
+ case G_TYPE_OBJECT:
+ if (pygobject_check(py_ret, pygobject_lookup_class(ret->type)))
+ *GTK_RETLOC_OBJECT(*ret) = GTK_OBJECT(pygobject_get(py_ret));
else
*GTK_RETLOC_OBJECT(*ret) = NULL;
break;
@@ -726,11 +479,6 @@ pygtk_ret_from_pyobject(GtkArg *ret, PyObject *py_ret)
*GTK_RETLOC_BOXED(*ret) = PyGtkAccelGroup_Get(py_ret);
else
*GTK_RETLOC_BOXED(*ret) = NULL;
- } else if (ret->type == GTK_TYPE_STYLE) {
- if (PyGtkStyle_Check(py_ret))
- *GTK_RETLOC_BOXED(*ret) = PyGtkStyle_Get(py_ret);
- else
- *GTK_RETLOC_BOXED(*ret) = NULL;
} else if (ret->type == GTK_TYPE_GDK_EVENT) {
if (PyGdkEvent_Check(py_ret))
*GTK_RETLOC_BOXED(*ret) = PyGdkEvent_Get(py_ret);
@@ -746,26 +494,11 @@ pygtk_ret_from_pyobject(GtkArg *ret, PyObject *py_ret)
*GTK_RETLOC_BOXED(*ret) = PyGdkColor_Get(py_ret);
else
*GTK_RETLOC_BOXED(*ret) = NULL;
- } else if (ret->type == GTK_TYPE_GDK_WINDOW) {
- if (PyGdkWindow_Check(py_ret))
- *GTK_RETLOC_BOXED(*ret) = PyGdkWindow_Get(py_ret);
- else
- *GTK_RETLOC_BOXED(*ret) = NULL;
} else if (ret->type == GTK_TYPE_GDK_VISUAL) {
if (PyGdkVisual_Check(py_ret))
*GTK_RETLOC_BOXED(*ret) = PyGdkVisual_Get(py_ret);
else
*GTK_RETLOC_BOXED(*ret) = NULL;
- } else if (ret->type == GTK_TYPE_GDK_COLORMAP) {
- if (PyGdkColormap_Check(py_ret))
- *GTK_RETLOC_BOXED(*ret) = PyGdkColormap_Get(py_ret);
- else
- *GTK_RETLOC_BOXED(*ret) = NULL;
- } else if (ret->type == GTK_TYPE_GDK_DRAG_CONTEXT) {
- if (PyGdkDragContext_Check(py_ret))
- *GTK_RETLOC_BOXED(*ret) = PyGdkDragContext_Get(py_ret);
- else
- *GTK_RETLOC_BOXED(*ret) = NULL;
} else if (ret->type == GTK_TYPE_SELECTION_DATA) {
if (PyGtkSelectionData_Check(py_ret))
*GTK_RETLOC_BOXED(*ret) = PyGtkSelectionData_Get(py_ret);
@@ -835,31 +568,21 @@ pygtk_ret_as_pyobject(GtkArg *arg)
Py_INCREF(Py_None);
return Py_None;
}
- case GTK_TYPE_ARGS:
- break;
- case GTK_TYPE_OBJECT:
- return PyGtk_New(*GTK_RETLOC_OBJECT(*arg));
+ case G_TYPE_OBJECT:
+ return pygobject_new((GObject *)*GTK_RETLOC_OBJECT(*arg));
case GTK_TYPE_POINTER:
return PyCObject_FromVoidPtr(*GTK_RETLOC_POINTER(*arg), NULL);
case GTK_TYPE_BOXED:
if (arg->type == GTK_TYPE_ACCEL_GROUP)
return PyGtkAccelGroup_New(*GTK_RETLOC_BOXED(*arg));
- else if (arg->type == GTK_TYPE_STYLE)
- return PyGtkStyle_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_EVENT)
return PyGdkEvent_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_FONT)
return PyGdkFont_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_COLOR)
return PyGdkColor_New(*GTK_RETLOC_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_WINDOW)
- return PyGdkWindow_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_GDK_VISUAL)
return PyGdkVisual_New(*GTK_RETLOC_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_COLORMAP)
- return PyGdkColormap_New(*GTK_RETLOC_BOXED(*arg));
- else if (arg->type == GTK_TYPE_GDK_DRAG_CONTEXT)
- return PyGdkDragContext_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_SELECTION_DATA)
return PyGtkSelectionData_New(*GTK_RETLOC_BOXED(*arg));
else if (arg->type == GTK_TYPE_CTREE_NODE) {
@@ -954,7 +677,7 @@ pygtk_callback_marshal(GtkObject *o, gpointer data, guint nargs, GtkArg *args)
} else
func = tuple;
if (!obj && o != NULL)
- obj = PyGtk_New(o);
+ obj = pygobject_new((GObject *)o);
if (obj) {
tuple = PyTuple_New(1);
@@ -996,7 +719,7 @@ pygtk_signal_marshal(GtkObject *object, gpointer user_data,
PyGTK_BLOCK_THREADS
ret = PyTuple_New(1);
- PyTuple_SetItem(ret, 0, PyGtk_New(object));
+ PyTuple_SetItem(ret, 0, pygobject_new((GObject *)object));
arg_list = pygtk_args_as_tuple(nparams, args);
params = PySequence_Concat(ret, arg_list);
Py_DECREF(ret);
@@ -1243,52 +966,7 @@ pygtk_flag_get_value(GtkType flag_type, PyObject *obj, int *val)
/* ------------------- Base GtkObject methods ------------------- */
-static destructor real_subclass_dealloc = NULL;
-
-static void
-pygtk_subclass_dealloc(PyGtk_Object *self)
-{
- GtkObject *obj = self->obj;
-
- if (obj) {
- /* save reference to python wrapper if there are still
- * references to the gtk object in such a way that it will be
- * freed when the gtk object is destroyed, so is the python
- * wrapper, but if a python wrapper can be */
- if (obj->ref_count > 1) {
- Py_INCREF(self); /* grab a reference on the wrapper */
- self->hasref = TRUE;
- gtk_object_set_data_full(obj, pygtk_ownedref_key,
- self, pygtk_destroy_notify);
- gtk_object_unref(obj);
- return;
- }
- if (!self->hasref) /* don't unref the gtk object if it owns us */
- gtk_object_unref(obj);
- }
- if (real_subclass_dealloc)
- (* real_subclass_dealloc)((PyObject *)self);
-}
-
-/* more hackery to stop segfaults caused by multi deallocs on a subclass
- * (which happens quite regularly in pygtk) */
-static PyObject *
-pygtk__class_init__(PyObject *something, PyObject *args)
-{
- PyExtensionClass *subclass;
-
- if (!PyArg_ParseTuple(args, "O:GtkObject.__class_init__", &subclass))
- return NULL;
- g_message("__class_init__ called for %s", subclass->tp_name);
- if ((subclass->class_flags & EXTENSIONCLASS_PYSUBCLASS_FLAG) &&
- subclass->tp_dealloc != (destructor)pygtk_subclass_dealloc) {
- real_subclass_dealloc = subclass->tp_dealloc;
- subclass->tp_dealloc = (destructor)pygtk_subclass_dealloc;
- }
- Py_INCREF(Py_None);
- return Py_None;
-}
-
+#if 0
static PyObject *
_wrap_gtk_signal_connect(PyGtk_Object *self, PyObject *args)
{
@@ -1620,7 +1298,6 @@ _wrap_gtk_object_get_data(PyGtk_Object *self, PyObject *args)
}
static PyMethodDef base_object_methods[] = {
- { "__class_init__", (PyCFunction)pygtk__class_init__, METH_VARARGS|METH_CLASS_METHOD },
{ "connect", (PyCFunction)_wrap_gtk_signal_connect, METH_VARARGS },
{ "connect_after", (PyCFunction)_wrap_gtk_signal_connect_after, METH_VARARGS },
{ "connect_object", (PyCFunction)_wrap_gtk_signal_connect_object, METH_VARARGS },
@@ -1637,3 +1314,4 @@ static PyMethodDef base_object_methods[] = {
};
PyMethodChain base_object_method_chain = METHOD_CHAIN(base_object_methods);
+#endif /* #if 0 */