Get buffer(s) to which we can write data.

        When done writing, use :meth:`advance_write_index` to make the
        written data available for reading.

        :param size: The number of elements desired.
        :type size: int

        :returns:
            * The room available to be written or the given *size*,
              whichever is smaller.
            * The first buffer.
            * The second buffer.
        :rtype: (int, buffer, buffer)

def get_write_buffers(self, size):
        """Get buffer(s) to which we can write data.

        When done writing, use :meth:`advance_write_index` to make the
        written data available for reading.

        :param size: The number of elements desired.
        :type size: int

        :returns:
            * The room available to be written or the given *size*,
              whichever is smaller.
            * The first buffer.
            * The second buffer.
        :rtype: (int, buffer, buffer)

        """
        ptr1 = self._ffi.new('void**')
        ptr2 = self._ffi.new('void**')
        size1 = self._ffi.new('ring_buffer_size_t*')
        size2 = self._ffi.new('ring_buffer_size_t*')
        return (self._lib.PaUtil_GetRingBufferWriteRegions(
                    self._ptr, size, ptr1, size1, ptr2, size2),
                self._ffi.buffer(ptr1[0], size1[0] * self.elementsize),
                self._ffi.buffer(ptr2[0], size2[0] * self.elementsize))