summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2002-01-12 06:49:46 +0000
committerJames Henstridge <jamesh@src.gnome.org>2002-01-12 06:49:46 +0000
commit1b41a8ab0e347c30104e6c15195fa01416ebbdce (patch)
treedf013fe4e4eb50abe9d0704181b13446c7ef8a8c
parentd46539dd8f3db516cfe74f9bdfa2d4743a372259 (diff)
downloadpygobject-1b41a8ab0e347c30104e6c15195fa01416ebbdce.tar.gz
pygobject-1b41a8ab0e347c30104e6c15195fa01416ebbdce.tar.xz
pygobject-1b41a8ab0e347c30104e6c15195fa01416ebbdce.zip
convert None, int, long, float, str and object to GTypes.
2002-01-12 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_type_from_object): convert None, int, long, float, str and object to GTypes. * gtk/gtkmodule.c (init_gtk): only raise a runtime error if we can't initialise gtk.
-rw-r--r--gobject/gobjectmodule.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index 2532709..1fddfea 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -676,6 +676,24 @@ pyg_type_from_object(PyObject *obj)
return 0;
}
+ /* map some standard types to primitive GTypes ... */
+ if (obj == Py_None)
+ return G_TYPE_NONE;
+ if (PyType_Check(obj)) {
+ PyTypeObject *tp = (PyTypeObject *)obj;
+
+ if (tp == &PyInt_Type)
+ return G_TYPE_INT;
+ else if (tp == &PyLong_Type)
+ return G_TYPE_LONG;
+ else if (tp == &PyFloat_Type)
+ return G_TYPE_DOUBLE;
+ else if (tp == &PyString_Type)
+ return G_TYPE_STRING;
+ else if (tp == &PyBaseObject_Type)
+ return PY_TYPE_OBJECT;
+ }
+
if (obj->ob_type == &PyGTypeWrapper_Type) {
return ((PyGTypeWrapper *)obj)->type;
}