# Pickle buffer objects

Added in version 3.8.

A `pickle.PickleBuffer` object wraps a buffer-providing object for out-of-band data transfer with the `pickle` module.

PyTypeObject PyPickleBuffer_Type

  This instance of `PyTypeObject` represents the Python pickle buffer type. This is the same object as `pickle.PickleBuffer` in the Python layer.

int PyPickleBuffer_Check(PyObject *op)

  Return true if op is a pickle buffer instance. This function always succeeds.

PyObject *PyPickleBuffer_FromObject(PyObject *obj)

  Create a pickle buffer from the object obj.

  This function will fail if obj doesn't support the buffer protocol.

  On success, return a new pickle buffer instance. On failure, set an exception and return `NULL`.

  Analogous to calling `pickle.PickleBuffer` with obj in Python.

const Py_buffer *PyPickleBuffer_GetBuffer(PyObject *picklebuf)

  Get a pointer to the underlying `Py_buffer` that the pickle buffer wraps.

  The returned pointer is valid as long as picklebuf is alive and has not been released. The caller must not modify or free the returned `Py_buffer`. If the pickle buffer has been released, raise `ValueError`.

  On success, return a pointer to the buffer view. On failure, set an exception and return `NULL`.

int PyPickleBuffer_Release(PyObject *picklebuf)

  Release the underlying buffer held by the pickle buffer.

  Return `0` on success. On failure, set an exception and return `-1`.

  Analogous to calling `pickle.PickleBuffer.release()` in Python.