Home | History | Annotate | Download | only in cpython
      1 # Legacy Python 2 buffer interface.
      2 #
      3 # These functions are no longer available in Python 3, use the new
      4 # buffer interface instead.
      5 
      6 cdef extern from "Python.h":
      7     cdef enum _:
      8         Py_END_OF_BUFFER
      9     #    This constant may be passed as the size parameter to
     10     #    PyBuffer_FromObject() or PyBuffer_FromReadWriteObject(). It
     11     #    indicates that the new PyBufferObject should refer to base object
     12     #    from the specified offset to the end of its exported
     13     #    buffer. Using this enables the caller to avoid querying the base
     14     #    object for its length.
     15 
     16     bint PyBuffer_Check(object p)
     17     #    Return true if the argument has type PyBuffer_Type.
     18 
     19     object PyBuffer_FromObject(object base, Py_ssize_t offset, Py_ssize_t size)
     20     #    Return value: New reference.
     21     #
     22     #    Return a new read-only buffer object. This raises TypeError if
     23     #    base doesn't support the read-only buffer protocol or doesn't
     24     #    provide exactly one buffer segment, or it raises ValueError if
     25     #    offset is less than zero. The buffer will hold a reference to the
     26     #    base object, and the buffer's contents will refer to the base
     27     #    object's buffer interface, starting as position offset and
     28     #    extending for size bytes. If size is Py_END_OF_BUFFER, then the
     29     #    new buffer's contents extend to the length of the base object's
     30     #    exported buffer data.
     31 
     32     object PyBuffer_FromReadWriteObject(object base, Py_ssize_t offset, Py_ssize_t size)
     33     #    Return value: New reference.
     34     #
     35     #    Return a new writable buffer object. Parameters and exceptions
     36     #    are similar to those for PyBuffer_FromObject(). If the base
     37     #    object does not export the writeable buffer protocol, then
     38     #    TypeError is raised.
     39 
     40     object PyBuffer_FromMemory(void *ptr, Py_ssize_t size)
     41     #    Return value: New reference.
     42     #
     43     #    Return a new read-only buffer object that reads from a specified
     44     #    location in memory, with a specified size. The caller is
     45     #    responsible for ensuring that the memory buffer, passed in as
     46     #    ptr, is not deallocated while the returned buffer object
     47     #    exists. Raises ValueError if size is less than zero. Note that
     48     #    Py_END_OF_BUFFER may not be passed for the size parameter;
     49     #    ValueError will be raised in that case.
     50 
     51     object PyBuffer_FromReadWriteMemory(void *ptr, Py_ssize_t size)
     52     #    Return value: New reference.
     53     #
     54     #    Similar to PyBuffer_FromMemory(), but the returned buffer is
     55     #    writable.
     56 
     57     object PyBuffer_New(Py_ssize_t size)
     58     #    Return value: New reference.
     59     #
     60     #    Return a new writable buffer object that maintains its own memory
     61     #    buffer of size bytes. ValueError is returned if size is not zero
     62     #    or positive. Note that the memory buffer (as returned by
     63     #    PyObject_AsWriteBuffer()) is not specifically aligned.
     64