Kaydet (Commit) 2d76c25f authored tarafından Jack Jansen's avatar Jack Jansen

In places where a ResObj is expected for PyArg_Parse and the object passed in…

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).
üst c5d0959a
......@@ -74,6 +74,17 @@ ResObj_Convert(v, p_itself)
PyObject *v;
Handle *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");
......@@ -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;
}
......
......@@ -44,17 +44,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;
}
"""
......@@ -115,6 +124,20 @@ class ResDefiniton(GlobalObjectDefinition):
def outputCheckNewArg(self):
Output("if (itself == NULL) return PyMac_Error(resNotFound);")
def outputCheckConvertArg(self):
# if it isn't a resource we may be able to coerce it
Output("if (!%s_Check(v))", self.prefix)
OutLbrace()
Output("PyObject *tmp;")
Output('if ( (tmp=PyObject_CallMethod(v, "as_Resource", "")) )')
OutLbrace()
Output("*p_itself = ((ResourceObject *)tmp)->ob_itself;")
Output("Py_DECREF(tmp);")
Output("return 1;")
OutRbrace()
Output("PyErr_Clear();")
OutRbrace()
def outputGetattrHook(self):
Output(getattrHookCode)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment