--- /dev/null
+# Legacy Python 2 buffer interface.
+#
+# These functions are no longer available in Python 3, use the new
+# buffer interface instead.
+
+cdef extern from "Python.h":
+ cdef enum _:
+ Py_END_OF_BUFFER
+ # This constant may be passed as the size parameter to
+ # PyBuffer_FromObject() or PyBuffer_FromReadWriteObject(). It
+ # indicates that the new PyBufferObject should refer to base object
+ # from the specified offset to the end of its exported
+ # buffer. Using this enables the caller to avoid querying the base
+ # object for its length.
+
+ bint PyBuffer_Check(object p)
+ # Return true if the argument has type PyBuffer_Type.
+
+ object PyBuffer_FromObject(object base, Py_ssize_t offset, Py_ssize_t size)
+ # Return value: New reference.
+ #
+ # Return a new read-only buffer object. This raises TypeError if
+ # base doesn't support the read-only buffer protocol or doesn't
+ # provide exactly one buffer segment, or it raises ValueError if
+ # offset is less than zero. The buffer will hold a reference to the
+ # base object, and the buffer's contents will refer to the base
+ # object's buffer interface, starting as position offset and
+ # extending for size bytes. If size is Py_END_OF_BUFFER, then the
+ # new buffer's contents extend to the length of the base object's
+ # exported buffer data.
+
+ object PyBuffer_FromReadWriteObject(object base, Py_ssize_t offset, Py_ssize_t size)
+ # Return value: New reference.
+ #
+ # Return a new writable buffer object. Parameters and exceptions
+ # are similar to those for PyBuffer_FromObject(). If the base
+ # object does not export the writeable buffer protocol, then
+ # TypeError is raised.
+
+ object PyBuffer_FromMemory(void *ptr, Py_ssize_t size)
+ # Return value: New reference.
+ #
+ # Return a new read-only buffer object that reads from a specified
+ # location in memory, with a specified size. The caller is
+ # responsible for ensuring that the memory buffer, passed in as
+ # ptr, is not deallocated while the returned buffer object
+ # exists. Raises ValueError if size is less than zero. Note that
+ # Py_END_OF_BUFFER may not be passed for the size parameter;
+ # ValueError will be raised in that case.
+
+ object PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size)
+ # Return value: New reference.
+ #
+ # Similar to PyBuffer_FromMemory(), but the returned buffer is
+ # writable.
+
+ object PyBuffer_New(Py_ssize_t size)
+ # Return value: New reference.
+ #
+ # Return a new writable buffer object that maintains its own memory
+ # buffer of size bytes. ValueError is returned if size is not zero
+ # or positive. Note that the memory buffer (as returned by
+ # PyObject_AsWriteBuffer()) is not specifically aligned.