[Python-checkins] cpython: Relax _PyBytesWriter API

victor.stinner python-checkins at python.org
Mon Oct 12 07:30:36 EDT 2015


https://hg.python.org/cpython/rev/34566b4fe187
changeset: 98711:34566b4fe187
user: Victor Stinner <victor.stinner at gmail.com>
date: Mon Oct 12 13:12:54 2015 +0200
summary:
 Relax _PyBytesWriter API
Don't require _PyBytesWriter pointer to be a "char *". Same change for
_PyBytesWriter_WriteBytes() parameter.
For example, binascii uses "unsigned char*".
files:
 Include/bytesobject.h | 14 +++++++-------
 Objects/bytesobject.c | 15 +++++++--------
 2 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/Include/bytesobject.h b/Include/bytesobject.h
--- a/Include/bytesobject.h
+++ b/Include/bytesobject.h
@@ -156,7 +156,7 @@
 Return a bytes object.
 Raise an exception and return NULL on error. */
 PyAPI_FUNC(PyObject *) _PyBytesWriter_Finish(_PyBytesWriter *writer,
- char *str);
+ void *str);
 
 /* Deallocate memory of a writer (clear its internal buffer). */
 PyAPI_FUNC(void) _PyBytesWriter_Dealloc(_PyBytesWriter *writer);
@@ -164,22 +164,22 @@
 /* Allocate the buffer to write size bytes.
 Return the pointer to the beginning of buffer data.
 Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
+PyAPI_FUNC(void*) _PyBytesWriter_Alloc(_PyBytesWriter *writer,
 Py_ssize_t size);
 
 /* Add *size* bytes to the buffer.
 str is the current pointer inside the buffer.
 Return the updated current pointer inside the buffer.
 Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
- char *str,
+PyAPI_FUNC(void*) _PyBytesWriter_Prepare(_PyBytesWriter *writer,
+ void *str,
 Py_ssize_t size);
 
 /* Write bytes.
 Raise an exception and return NULL on error. */
-PyAPI_FUNC(char*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
- char *str,
- char *bytes,
+PyAPI_FUNC(void*) _PyBytesWriter_WriteBytes(_PyBytesWriter *writer,
+ void *str,
+ const void *bytes,
 Py_ssize_t size);
 #endif /* Py_LIMITED_API */
 
diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c
--- a/Objects/bytesobject.c
+++ b/Objects/bytesobject.c
@@ -3923,8 +3923,8 @@
 #endif
 }
 
-char*
-_PyBytesWriter_Prepare(_PyBytesWriter *writer, char *str, Py_ssize_t size)
+void*
+_PyBytesWriter_Prepare(_PyBytesWriter *writer, void *str, Py_ssize_t size)
 {
 Py_ssize_t allocated, pos;
 
@@ -3992,7 +3992,7 @@
 /* Allocate the buffer to write size bytes.
 Return the pointer to the beginning of buffer data.
 Raise an exception and return NULL on error. */
-char*
+void*
 _PyBytesWriter_Alloc(_PyBytesWriter *writer, Py_ssize_t size)
 {
 /* ensure that _PyBytesWriter_Alloc() is only called once */
@@ -4011,7 +4011,7 @@
 }
 
 PyObject *
-_PyBytesWriter_Finish(_PyBytesWriter *writer, char *str)
+_PyBytesWriter_Finish(_PyBytesWriter *writer, void *str)
 {
 Py_ssize_t pos;
 PyObject *result;
@@ -4033,13 +4033,12 @@
 else {
 result = PyBytes_FromStringAndSize(writer->small_buffer, pos);
 }
-
 return result;
 }
 
-char*
-_PyBytesWriter_WriteBytes(_PyBytesWriter *writer, char *str,
- char *bytes, Py_ssize_t size)
+void*
+_PyBytesWriter_WriteBytes(_PyBytesWriter *writer, void *str,
+ const void *bytes, Py_ssize_t size)
 {
 str = _PyBytesWriter_Prepare(writer, str, size);
 if (str == NULL)
-- 
Repository URL: https://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /