diff options
Diffstat (limited to 'gobject/gobjectmodule.c')
| -rw-r--r-- | gobject/gobjectmodule.c | 18 |
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; } |
