mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
This patch adds a new Python C API called PyString_AsStringAndSize()
which implements the automatic conversion from Unicode to a string object using the default encoding. The new API is then put to use to have eval() and exec accept Unicode objects as code parameter. This closes bugs #110924 and #113890. As side-effect, the traditional C APIs PyString_Size() and PyString_AsString() will also accept Unicode objects as parameters.
This commit is contained in:
parent
f8d071332a
commit
d1ba443206
8 changed files with 127 additions and 20 deletions
|
@ -2105,6 +2105,23 @@ Macro form of \cfunction{PyString_AsString()} but without error
|
|||
checking.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{int}{PyString_AsStringAndSize}{PyObject *obj,
|
||||
char **buffer,
|
||||
int *length}
|
||||
Returns a null-terminated representation of the contents of the object
|
||||
\var{obj} through the output variables \var{buffer} and \var{length}.
|
||||
|
||||
The function accepts both string and Unicode objects as input. For
|
||||
Unicode objects it returns the default encoded version of the object.
|
||||
If \var{length} is set to \NULL{}, the resulting buffer may not contain
|
||||
null characters; if it does, the function returns -1 and a
|
||||
TypeError is raised.
|
||||
|
||||
The buffer refers to an internal string buffer of \var{obj}, not a
|
||||
copy. The data must not be modified in any way. It must not be
|
||||
de-allocated.
|
||||
\end{cfuncdesc}
|
||||
|
||||
\begin{cfuncdesc}{void}{PyString_Concat}{PyObject **string,
|
||||
PyObject *newpart}
|
||||
Creates a new string object in \var{*string} containing the
|
||||
|
|
|
@ -760,6 +760,11 @@ PyString_AS_STRING:PyObject*:string:0:
|
|||
PyString_AsString:char*:::
|
||||
PyString_AsString:PyObject*:string:0:
|
||||
|
||||
PyString_AsStringAndSize:int:::
|
||||
PyString_AsStringAndSize:PyObject*:obj:0:
|
||||
PyString_AsStringAndSize:char**:buffer::
|
||||
PyString_AsStringAndSize:int*:length::
|
||||
|
||||
PyString_Check:int:::
|
||||
PyString_Check:PyObject*:o:0:
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue