mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Updated patch #487906: Revise inline docs.
This commit is contained in:
parent
fdc8d758ad
commit
1f803f782c
1 changed files with 22 additions and 25 deletions
|
@ -19,32 +19,29 @@ static PyStringObject *nullstring;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
PyString_FromStringAndSize() and PyString_FromString() try in certain cases
|
For both PyString_FromString() and PyString_FromStringAndSize(), the
|
||||||
to share string objects. When the size of the string is zero, these
|
parameter `size' denotes number of characters to allocate, not counting any
|
||||||
routines always return a pointer to the same string object; when the size
|
null terminating character.
|
||||||
is one, they return a pointer to an already existing object if the contents
|
|
||||||
of the string is known. For PyString_FromString() this is always the case,
|
|
||||||
for PyString_FromStringAndSize() this is the case when the first argument
|
|
||||||
in not NULL.
|
|
||||||
|
|
||||||
A common practice of allocating a string and then filling it in or changing
|
For PyString_FromString(), the parameter `str' points to a null-terminated
|
||||||
it must be done carefully. It is only allowed to change the contents of
|
string containing exactly `size' bytes.
|
||||||
the string if the object was gotten from PyString_FromStringAndSize() with
|
|
||||||
a NULL first argument, because in the future these routines may try to do
|
|
||||||
even more sharing of objects.
|
|
||||||
|
|
||||||
The string in the `str' parameter does not have to be null-character
|
For PyString_FromStringAndSize(), the parameter the parameter `str' is
|
||||||
terminated. (Therefore it is safe to construct a substring by using
|
either NULL or else points to a string containing at least `size' bytes. For
|
||||||
`PyString_FromStringAndSize(origstring, substrlen)'.)
|
PyString_FromStringAndSize(), the string in the `str' parameter does not
|
||||||
|
have to be null-terminated. (Therefore it is safe to construct a substring
|
||||||
|
by calling `PyString_FromStringAndSize(origstring, substrlen)'.) If `str'
|
||||||
|
is NULL then PyString_FromStringAndSize() will allocate `size+1' bytes
|
||||||
|
(setting the last byte to the null terminating character) and you can fill in
|
||||||
|
the data yourself. If `str' is non-NULL then the resulting PyString object
|
||||||
|
must be treated as immutable and you must not fill in nor alter the data
|
||||||
|
yourself, since the strings may be shared.
|
||||||
|
|
||||||
The parameter `size' denotes number of characters to allocate, not
|
The PyObject member `op->ob_size', which denotes the number of "extra items"
|
||||||
counting the null terminating character. If the `str' argument is
|
in a variable-size object, will contain the number of bytes allocated for
|
||||||
not NULL, then it points to a of length `size'. For
|
string data, not counting the null terminating character. It is therefore
|
||||||
PyString_FromString, this string must be null-terminated.
|
equal to the equal to the `size' parameter (for PyString_FromStringAndSize())
|
||||||
|
or the length of the string in the `str' parameter (for PyString_FromString()).
|
||||||
The member `op->ob_size' denotes the number of bytes of data in the string,
|
|
||||||
not counting the null terminating character, and is therefore equal to the
|
|
||||||
`size' parameter.
|
|
||||||
*/
|
*/
|
||||||
PyObject *
|
PyObject *
|
||||||
PyString_FromStringAndSize(const char *str, int size)
|
PyString_FromStringAndSize(const char *str, int size)
|
||||||
|
@ -605,7 +602,7 @@ string_print(PyStringObject *op, FILE *fp, int flags)
|
||||||
|
|
||||||
/* figure out which quote to use; single is preferred */
|
/* figure out which quote to use; single is preferred */
|
||||||
quote = '\'';
|
quote = '\'';
|
||||||
if (strchr(op->ob_sval, '\'') && !strchr(op->ob_sval, '"'))
|
if (memchr(op->ob_sval, '\'', op->ob_size) && !memchr(op->ob_sval, '"', op->ob_size))
|
||||||
quote = '"';
|
quote = '"';
|
||||||
|
|
||||||
fputc(quote, fp);
|
fputc(quote, fp);
|
||||||
|
@ -649,7 +646,7 @@ string_repr(register PyStringObject *op)
|
||||||
|
|
||||||
/* figure out which quote to use; single is preferred */
|
/* figure out which quote to use; single is preferred */
|
||||||
quote = '\'';
|
quote = '\'';
|
||||||
if (strchr(op->ob_sval, '\'') && !strchr(op->ob_sval, '"'))
|
if (memchr(op->ob_sval, '\'', op->ob_size) && !memchr(op->ob_sval, '"', op->ob_size))
|
||||||
quote = '"';
|
quote = '"';
|
||||||
|
|
||||||
p = PyString_AS_STRING(v);
|
p = PyString_AS_STRING(v);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue