public class Py2kBuffer extends PySequence implements BufferProtocol
buffer
type. buffer
is being superseded in
Python 2.7 by memoryview
, and is provided here to support legacy Python code. Use
memoryview
if you can.
buffer
and memoryview
both wrap the same Jython buffer API:
that designed for memoryview
. In CPython, a new C API (which Jython's resembles) was
introduced with memoryview
. Because of this, buffer
and
memoryview
may be supplied as arguments in the same places, and will accept as
arguments the same (one-dimensional byte-array) types. Their behaviour differs as detailed in the
documentation.
PyObject.ConversionException
Constructor and Description |
---|
Py2kBuffer(BufferProtocol object,
int offset,
int size)
Construct a Py2kBuffer from an object supporting the
BufferProtocol . |
Modifier and Type | Method and Description |
---|---|
PyObject |
__add__(PyObject other)
Equivalent to the standard Python __add__ method.
|
int |
__len__()
Equivalent to the standard Python __len__ method.
|
PyObject |
__mul__(PyObject o)
Equivalent to the standard Python __mul__ method.
|
PyString |
__repr__()
Equivalent to the standard Python __repr__ method.
|
PyObject |
__rmul__(PyObject o)
Equivalent to the standard Python __rmul__ method.
|
PyString |
__str__()
Equivalent to the standard Python __str__ method.
|
PyBuffer |
getBuffer(int flags)
Method by which the consumer requests the buffer from the exporter.
|
void |
pyset(int index,
PyObject value)
Sets the indexed element of the
buffer to the given value, treating the
operation as assignment to a slice of length one. |
__delitem__, __delslice__, __eq__, __finditem__, __finditem__, __ge__, __getitem__, __getslice__, __gt__, __iter__, __le__, __lt__, __ne__, __nonzero__, __setitem__, __setitem__, __setslice__, __tojava__, isMappingType, isNumberType, isSequenceType
__abs__, __and__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __call__, __cmp__, __coerce__, __coerce_ex__, __complex__, __contains__, __delattr__, __delattr__, __delete__, __delitem__, __delslice__, __dir__, __div__, __divmod__, __findattr__, __findattr__, __findattr_ex__, __finditem__, __float__, __floordiv__, __format__, __get__, __getattr__, __getattr__, __getitem__, __getnewargs__, __getslice__, __hash__, __hex__, __iadd__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __imul__, __index__, __int__, __invert__, __ior__, __ipow__, __irshift__, __isub__, __iternext__, __itruediv__, __ixor__, __long__, __lshift__, __mod__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __rfloordiv__, __rlshift__, __rmod__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __sub__, __truediv__, __trunc__, __unicode__, __xor__, _add, _and, _callextra, _cmp, _div, _divmod, _doget, _doget, _doset, _eq, _floordiv, _ge, _gt, _iadd, _iand, _idiv, _idivmod, _ifloordiv, _ilshift, _imod, _imul, _in, _ior, _ipow, _irshift, _is, _isnot, _isub, _itruediv, _ixor, _jcall, _jcallexc, _jthrow, _le, _lshift, _lt, _mod, _mul, _ne, _notin, _or, _pow, _rshift, _sub, _truediv, _xor, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, getDict, getType, hashCode, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType, toString
public static final PyType TYPE
public Py2kBuffer(BufferProtocol object, int offset, int size)
BufferProtocol
. The
buffer
takes no lease on the PyBuffer
at present, but for each
action performed obtains a new one and releases it. (Major difference from
memoryview
.) Note that when size=-1
is given, the buffer reflects
the changing size of the underlying object.object
- the object on which this is to be a buffer.offset
- into the array exposed by the object (0 for start).size
- of the slice or -1 for all of the object.public int __len__()
PyObject
public PyString __repr__()
PyObject
PyObject
is to
override the standard Java toString
method.public PyString __str__()
PyObject
PyObject
is to
override the standard Java toString
method.public PyObject __add__(PyObject other)
buffer
implements this as concatenation and returns a
str
(PyString
) result.public PyObject __mul__(PyObject o)
buffer
it returns a str
containing the buffer
contents n
times.public PyObject __rmul__(PyObject o)
buffer
it returns a str
containing the buffer
contents n
times.public PyBuffer getBuffer(int flags)
PyBuffer.release()
on the buffer it
obtained, since some objects alter their behaviour while buffers are exported.
The PyBuffer
returned from this method is provided directly by the underlying object
on which this buffer was constructed, taking account of the slicing arguments (offset and
size), if these were given when the buffer was constructed.
getBuffer
in interface BufferProtocol
flags
- specifying features demanded and the navigational capabilities of the consumerpublic void pyset(int index, PyObject value) throws PyException
buffer
to the given value, treating the
operation as assignment to a slice of length one. This is different from the same operation
on a byte array, where the assigned value must be an int: here it must have the buffer API
and length one. This is an extension point called by PySequence in its implementation of
PySequence.__setitem__(int, org.python.core.PyObject)
It is guaranteed by PySequence that the index is within the bounds of
the buffer
. Any other clients calling pyset(int, PyObject) must make
the same guarantee.index
- index of the element to set.value
- to set this element to, regarded as a buffer of length one unit.PyException(AttributeError)
- if value cannot be converted to an integerPyException(ValueError)
- if value<0 or value>255PyException