public class SimpleWritableBuffer extends SimpleBuffer
PyBuffer.Pointer
ANY_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, toString
byteIndex, copyFrom, copyFrom, copyTo, getBuf
isContiguous
byteAt, byteAt, close, copyTo, getBuffer, getBufferAgain, getFormat, getItemsize, getNdim, getNIOByteBuffer, getObj, getShape, getStrides, getSuboffsets, hasArray, intAt, intAt, isReleased, release, storeAt, storeAt
public SimpleWritableBuffer(int flags, BufferProtocol obj, byte[] storage, int index0, int size) throws PyException, java.lang.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 typejava.lang.NullPointerException
public SimpleWritableBuffer(int flags, BufferProtocol obj, byte[] storage) throws PyException, java.lang.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 typejava.lang.NullPointerException
public final boolean isReadonly()
Declared final
returning true
in SimpleWritableBuffer
to make checks unnecessary.
isReadonly
in interface PyBUF
isReadonly
in class BaseBuffer
public 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 PyBuffer
getBufferSlice
in class SimpleBuffer
flags
- 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 PyBuffer
getBufferSlice
in class SimpleBuffer
flags
- 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