public class SimpleWritableBuffer extends SimpleBuffer
PyBuffer.PointerANY_CONTIGUOUS, AS_ARRAY, C_CONTIGUOUS, CONTIG, CONTIG_RO, CONTIGUITY, F_CONTIGUOUS, FORMAT, FULL, FULL_RO, INDIRECT, IS_C_CONTIGUOUS, IS_F_CONTIGUOUS, MAX_NDIM, NAVIGATION, ND, RECORDS, RECORDS_RO, SIMPLE, STRIDED, STRIDED_RO, STRIDES, WRITABLE| Constructor and Description |
|---|
SimpleWritableBuffer(int flags,
BufferProtocol obj,
byte[] storage)
Provide an instance of
SimpleWritableBuffer, on the entirety of a byte array,
meeting the consumer's expectations as expressed in the flags argument, which is
checked against the capabilities of the buffer type. |
SimpleWritableBuffer(int flags,
BufferProtocol obj,
byte[] storage,
int index0,
int size)
Provide an instance of
SimpleWritableBuffer, on a slice of a byte array, meeting
the consumer's expectations as expressed in the flags argument, which is checked
against the capabilities of the buffer type. |
| Modifier and Type | Method and Description |
|---|---|
PyBuffer |
getBufferSlice(int flags,
int start,
int count)
Equivalent to
PyBuffer.getBufferSlice(int, int, int, int) with stride 1. |
PyBuffer |
getBufferSlice(int flags,
int start,
int count,
int stride)
Get a
PyBuffer that represents a slice of the current one described in terms of
a start index, number of items to include in the slice, and the stride in the current buffer. |
boolean |
isReadonly()
Determine whether the consumer is entitled to write to the exported storage.
|
byteIndex, getLen, getPointer, getPointer, toStringbyteIndex, copyFrom, copyFrom, copyTo, getBufisContiguousbyteAt, byteAt, close, copyTo, getBuffer, getBufferAgain, getFormat, getItemsize, getNdim, getNIOByteBuffer, getObj, getShape, getStrides, getSuboffsets, hasArray, intAt, intAt, isReleased, release, storeAt, storeAtpublic SimpleWritableBuffer(int flags,
BufferProtocol obj,
byte[] storage,
int index0,
int size)
throws PyException,
NullPointerException
SimpleWritableBuffer, on a slice of a byte array, meeting
the consumer's expectations as expressed in the flags argument, which is checked
against the capabilities of the buffer type.flags - consumer requirementsobj - exporting object (or null)storage - the array of bytes storing the implementation of the exporting objectindex0 - offset where the data starts in that array (item[0])size - the number of bytes occupiedPyException - (BufferError) when expectations do not correspond with the typeNullPointerExceptionpublic SimpleWritableBuffer(int flags,
BufferProtocol obj,
byte[] storage)
throws PyException,
NullPointerException
SimpleWritableBuffer, on the entirety of a byte array,
meeting the consumer's expectations as expressed in the flags argument, which is
checked against the capabilities of the buffer type.flags - consumer requirementsobj - exporting object (or null)storage - the array of bytes storing the implementation of the exporting objectPyException - (BufferError) when expectations do not correspond with the typeNullPointerExceptionpublic final boolean isReadonly()
Declared final returning true in SimpleWritableBuffer
to make checks unnecessary.
isReadonly in interface PyBUFisReadonly in class BaseBufferpublic PyBuffer getBufferSlice(int flags, int start, int count)
PyBuffer.getBufferSlice(int, int, int, int) with stride 1.
SimpleWritableBuffer provides an implementation ensuring the returned slice is
writable.
getBufferSlice in interface PyBuffergetBufferSlice in class SimpleBufferflags - specifying features demanded and the navigational capabilities of the consumerstart - index in the current buffercount - number of items in the required slicepublic PyBuffer getBufferSlice(int flags, int start, int count, int stride)
PyBuffer that represents a slice of the current one described in terms of
a start index, number of items to include in the slice, and the stride in the current buffer.
A consumer that obtains a PyBuffer with getBufferSlice must release
it with PyBuffer.release() just as if it had been obtained with
PyBuffer.getBuffer(int)
Suppose that x(i) denotes the ith element of the current buffer, that is, the
byte retrieved by this.byteAt(i) or the unit indicated by
this.getPointer(i). A request for a slice where start = s,
count = N and stride = m, results in a buffer
y such that y(k) = x(s+km) where k=0..(N-1). In Python terms, this is
the slice x[s : s+(N-1)m+1 : m] (if m>0) or the slice x[s : s+(N-1)m-1 :
m] (if m<0). Implementations should check that this range is entirely within
the current buffer.
In a simple buffer backed by a contiguous byte array, the result is a strided PyBuffer on the
same storage but where the offset is adjusted by s and the stride is as supplied. If
the current buffer is already strided and/or has an item size larger than single bytes, the
new start index, count and stride will be translated
from the arguments given, through this buffer's stride and item size. The caller always
expresses start and strides in terms of the abstract view of this
buffer.
SimpleBuffer provides an implementation for slicing contiguous bytes in one
dimension. In that case, x(i) = u(r+i) for i = 0..L-1 where u is the underlying
buffer, and r and L are the start and count with which x was created
from u. Thus y(k) = u(r+s+km), that is, the composite offset is r+s and
the stride is m.
SimpleWritableBuffer provides an implementation ensuring the returned slice is
writable.
getBufferSlice in interface PyBuffergetBufferSlice in class SimpleBufferflags - specifying features demanded and the navigational capabilities of the consumerstart - index in the current buffercount - number of items in the required slicestride - index-distance in the current buffer between consecutive items in the slice