Add functions PyUnicode_Append() and PyUnicode_AppendAndDel() that mirror

PyString_Concat() and PyString_ConcatAndDel() (the name PyUnicode_Concat()
was already taken).

Change PyObject_Repr() to always return a unicode object.

Update all repr implementations to return unicode objects.

Add a function PyObject_ReprStr8() that calls PyObject_Repr() and converts
the result to an 8bit string.

Use PyObject_ReprStr8() where using PyObject_Repr() can't be done
straightforward.
This commit is contained in:
Walter Dörwald 2007-05-18 17:15:44 +00:00
parent 14176a56d3
commit 1ab8330827
49 changed files with 385 additions and 255 deletions

View file

@ -258,23 +258,15 @@ method_repr(PyMethodObject *a)
sklassname = PyString_AS_STRING(klassname);
}
if (self == NULL)
result = PyString_FromFormat("<unbound method %s.%s>",
result = PyUnicode_FromFormat("<unbound method %s.%s>",
sklassname, sfuncname);
else {
result = PyUnicode_FromFormat("<bound method %s.%s of ",
sklassname, sfuncname);
/* XXX Shouldn't use repr() here! */
PyObject *selfrepr = PyObject_Repr(self);
if (selfrepr == NULL)
goto fail;
if (!PyString_Check(selfrepr)) {
Py_DECREF(selfrepr);
goto fail;
}
result = PyString_FromFormat("<bound method %s.%s of %s>",
sklassname, sfuncname,
PyString_AS_STRING(selfrepr));
Py_DECREF(selfrepr);
PyUnicode_AppendAndDel(&result, PyObject_Repr(self));
PyUnicode_AppendAndDel(&result, PyUnicode_FromString(">"));
}
fail:
Py_XDECREF(funcname);
Py_XDECREF(klassname);
return result;