Package org.python.core
Class Py2kBuffer
java.lang.Object
org.python.core.PyObject
org.python.core.PySequence
org.python.core.Py2kBuffer
- All Implemented Interfaces:
Serializable
,BufferProtocol
Implementation of the Python
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.
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
-
Field Summary
FieldsFields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
Constructor Summary
ConstructorsConstructorDescriptionPy2kBuffer
(BufferProtocol object, int offset, int size) Construct a Py2kBuffer from an object supporting theBufferProtocol
. -
Method Summary
Modifier and TypeMethodDescriptionEquivalent to the standard Python __add__ method.int
__len__()
Equivalent to the standard Python __len__ method.Equivalent to the standard Python __mul__ method.__repr__()
Equivalent to the standard Python__repr__
method.Equivalent to the standard Python __rmul__ method.__str__()
Equivalent to the standard Python __str__ method.getBuffer
(int flags) Method by which the consumer requests the buffer from the exporter.void
Sets the indexed element of thebuffer
to the given value, treating the operation as assignment to a slice of length one.toString()
Methods inherited from class org.python.core.PySequence
__delitem__, __delslice__, __eq__, __finditem__, __finditem__, __ge__, __getitem__, __getslice__, __gt__, __iter__, __le__, __lt__, __ne__, __nonzero__, __setitem__, __setitem__, __setslice__, __tojava__, isMappingType, isNumberType, isSequenceType
Methods inherited from class org.python.core.PyObject
__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__, __ensure_finalizer__, __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, isInteger, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType
-
Field Details
-
TYPE
-
-
Constructor Details
-
Py2kBuffer
Construct a Py2kBuffer from an object supporting theBufferProtocol
. Thebuffer
takes no lease on thePyBuffer
at present, but for each action performed obtains a new one and releases it. (Major difference frommemoryview
.) Note that whensize=-1
is given, the buffer reflects the changing size of the underlying object.- Parameters:
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.
-
-
Method Details
-
__len__
public int __len__()Description copied from class:PyObject
Equivalent to the standard Python __len__ method. Part of the mapping discipline. -
__repr__
Description copied from class:PyObject
Equivalent to the standard Python__repr__
method. Each sub-class ofPyObject
is likely to re-define this method to provide for its own reproduction. -
__str__
Description copied from class:PyObject
Equivalent to the standard Python __str__ method. The default implementation (inPyObject
) callsPyObject.__repr__()
, making it unnecessary to override__str__
in sub-classes ofPyObject
where both forms are the same. A common choice is to provide the same implementation to__str__
andtoString
, for consistency in the printed form of objects between Python and Java. -
toString
-
__add__
Equivalent to the standard Python __add__ method. Abuffer
implements this as concatenation and returns astr
(PyString
) result. -
__mul__
Equivalent to the standard Python __mul__ method. On abuffer
it returns astr
containing the buffer contentsn
times. -
__rmul__
Equivalent to the standard Python __rmul__ method. On abuffer
it returns astr
containing the buffer contentsn
times. -
getBuffer
Method by which the consumer requests the buffer from the exporter. The consumer provides information on its ability to understand buffer navigation. Each consumer requesting a buffer in this way, when it has finished using it, should make a corresponding call toPyBuffer.release()
on the buffer it obtained, orPyBuffer.close()
using try-with-resources, 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.- Specified by:
getBuffer
in interfaceBufferProtocol
- Parameters:
flags
- specifying features demanded and the navigational capabilities of the consumer- Returns:
- exported buffer
-
pyset
Sets the indexed element of thebuffer
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 ofPySequence.__setitem__(int, org.python.core.PyObject)
It is guaranteed by PySequence that the index is within the bounds of thebuffer
. Any other clients calling pyset(int, PyObject) must make the same guarantee.- Parameters:
index
- index of the element to set.value
- to set this element to, regarded as a buffer of length one unit.- Throws:
PyException
-AttributeError
if value cannot be converted to an integerPyException
-ValueError
if value<0 or value%gt;255
-