summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/res/Resmodule.c
diff options
context:
space:
mode:
authorJack Jansen <jack.jansen@cwi.nl>1999-12-12 22:57:29 (GMT)
committerJack Jansen <jack.jansen@cwi.nl>1999-12-12 22:57:29 (GMT)
commit2d76c25f596538727ac409114d0ebae0279ac716 (patch)
tree0c085430784e02a0c19faee726072714ca6a6e47 /Mac/Modules/res/Resmodule.c
parentc5d0959a22425d9f82fc8cdd900cff866ea6c6be (diff)
downloadcpython-2d76c25f596538727ac409114d0ebae0279ac716.zip
cpython-2d76c25f596538727ac409114d0ebae0279ac716.tar.gz
cpython-2d76c25f596538727ac409114d0ebae0279ac716.tar.bz2
In places where a ResObj is expected for PyArg_Parse and the object passed in isn't but it does have an as_Resource method use that. This makes life a lot easier
for appearance portability (and was needed anyway).
Diffstat (limited to 'Mac/Modules/res/Resmodule.c')
-rw-r--r--Mac/Modules/res/Resmodule.c30
1 files changed, 25 insertions, 5 deletions
diff --git a/Mac/Modules/res/Resmodule.c b/Mac/Modules/res/Resmodule.c
index b5857e7..4f0f3c8 100644
--- a/Mac/Modules/res/Resmodule.c
+++ b/Mac/Modules/res/Resmodule.c
@@ -76,6 +76,17 @@ ResObj_Convert(v, p_itself)
{
if (!ResObj_Check(v))
{
+ PyObject *tmp;
+ if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )
+ {
+ *p_itself = ((ResourceObject *)tmp)->ob_itself;
+ Py_DECREF(tmp);
+ return 1;
+ }
+ PyErr_Clear();
+ }
+ if (!ResObj_Check(v))
+ {
PyErr_SetString(PyExc_TypeError, "Resource required");
return 0;
}
@@ -1388,17 +1399,26 @@ OptResObj_Convert(v, p_itself)
PyObject *v;
Handle *p_itself;
{
+ PyObject *tmp;
+
if ( v == Py_None ) {
*p_itself = NULL;
return 1;
}
- if (!ResObj_Check(v))
+ if (ResObj_Check(v))
{
- PyErr_SetString(PyExc_TypeError, "Resource required");
- return 0;
+ *p_itself = ((ResourceObject *)v)->ob_itself;
+ return 1;
}
- *p_itself = ((ResourceObject *)v)->ob_itself;
- return 1;
+ /* If it isn't a resource yet see whether it is convertible */
+ if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) ) {
+ *p_itself = ((ResourceObject *)tmp)->ob_itself;
+ Py_DECREF(tmp);
+ return 1;
+ }
+ PyErr_Clear();
+ PyErr_SetString(PyExc_TypeError, "Resource required");
+ return 0;
}