public class PyMemoryView extends PySequence implements BufferProtocol, Traverseproc
memoryview
type. It provides a wrapper around the
Jython buffer API.PySequence.DefaultIndexDelegate
PyObject.ConversionException
Modifier and Type | Field and Description |
---|---|
static PyType |
TYPE |
delegator
attributes, gcMonitorGlobal, objtype
Constructor and Description |
---|
PyMemoryView(BufferProtocol pybuf)
Construct a
PyMemoryView from an object bearing the BufferProtocol
interface. |
Modifier and Type | Method and Description |
---|---|
PyObject |
__enter__()
Called at the start of a context-managed suite (supporting the
with clause). |
PyObject |
__eq__(PyObject other)
Equivalent to the standard Python __eq__ method.
|
boolean |
__exit__(PyObject type,
PyObject value,
PyObject traceback)
Called at the end of a context-managed suite (supporting the
with clause), and
will release the memoryview . |
PyObject |
__ge__(PyObject other)
Equivalent to the standard Python __ge__ method.
|
PyObject |
__gt__(PyObject other)
Equivalent to the standard Python __gt__ method.
|
PyObject |
__le__(PyObject other)
Equivalent to the standard Python __le__ method.
|
int |
__len__()
Equivalent to the standard Python __len__ method.
|
PyObject |
__lt__(PyObject other)
Equivalent to the standard Python __lt__ method.
|
PyObject |
__ne__(PyObject other)
Equivalent to the standard Python __ne__ method.
|
java.lang.Object |
__tojava__(java.lang.Class<?> c)
Equivalent to the Jython __tojava__ method.
|
protected void |
checkNotReleased()
Check that the memoryview is not released and raise a ValueError if it is.
|
java.lang.String |
format() |
PyBuffer |
getBuffer(int flags)
Method by which the consumer requests the buffer from the exporter.
|
protected PyMemoryView |
getslice(int start,
int stop,
int step)
Returns a slice of elements from this sequence as a PyMemoryView.
|
int |
hashCode() |
int |
itemsize() |
void |
memoryview_release() |
int |
ndim() |
PyObject |
obj() |
protected PyString |
pyget(int index)
Gets the indexed element of the memoryview as a one byte string.
|
void |
pyset(int index,
PyObject value)
Sets the indexed element of the memoryview to the given value, treating the operation as
assignment to a slice of length one.
|
boolean |
readonly() |
boolean |
refersDirectlyTo(PyObject ob)
Optional operation.
|
void |
release()
Request a release of the underlying buffer exposed by the
memoryview object. |
protected PyMemoryView |
repeat(int count)
memoryview*int is not implemented in Python, so this should never be called.
|
protected void |
setslice(int start,
int stop,
int step,
PyObject value)
Sets the given range of elements according to Python slice assignment semantics.
|
PyObject |
shape() |
PyObject |
strides() |
PyObject |
suboffsets() |
PyString |
tobytes()
Implementation of Python
tobytes() . |
PyList |
tolist()
Implementation of Python
tolist() . |
int |
traverse(Visitproc visit,
java.lang.Object arg)
Traverses all directly contained
PyObject s. |
__delitem__, __delslice__, __finditem__, __finditem__, __getitem__, __getslice__, __iter__, __nonzero__, __setitem__, __setitem__, __setslice__, boundToSequence, cmp, del, delRange, delslice, fastSequence, isMappingType, isNumberType, isSequenceType, isSubType, runsupportedopMessage, sliceLength, unsupportedopMessage
__abs__, __add__, __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__, __mul__, __neg__, __not__, __oct__, __or__, __pos__, __pow__, __pow__, __radd__, __rand__, __rawdir__, __rdiv__, __rdivmod__, __reduce__, __reduce_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __rmul__, __ror__, __rpow__, __rrshift__, __rshift__, __rsub__, __rtruediv__, __rxor__, __set__, __setattr__, __setattr__, __setitem__, __setslice__, __str__, __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, _unsupportedop, _xor, adaptToCoerceTuple, asDouble, asIndex, asIndex, asInt, asInt, asIterable, asLong, asLong, asName, asName, asString, asString, asStringOrNull, asStringOrNull, bit_length, conjugate, delDict, delType, dispatch__init__, equals, fastGetClass, fastGetDict, finalize, getDict, getJavaProxy, getType, impAttr, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, mergeClassDict, mergeDictAttr, mergeListAttr, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType, toString
public static final PyType TYPE
public PyMemoryView(BufferProtocol pybuf) throws java.lang.ClassCastException
PyMemoryView
from an object bearing the BufferProtocol
interface. If this object is already an exported buffer, the memoryview
takes a
new lease on it. The buffer so obtained will be writable if the underlying object permits it.pybuf
- buffer exported by some underlying objectjava.lang.ClassCastException
- in cases where pybuf.getBuffer
does so.public java.lang.Object __tojava__(java.lang.Class<?> c)
PyObject
Py.NoConversion
if this
PyObject
can not be converted to the desired Java class.__tojava__
in class PySequence
c
- the Class to convert this PyObject
to.public PyObject obj()
public java.lang.String format()
public int itemsize()
public PyObject shape()
public int ndim()
public PyObject strides()
public PyObject suboffsets()
public boolean readonly()
public PyString tobytes()
tobytes()
. Return the data in the buffer as a byte
string (an object of class str
).public PyList tolist()
tolist()
. Return the data in the buffer as a
list
where the elements are an appropriate type (int
in the case of
a byte-oriented buffer, which is the only case presently supported).public int __len__()
PyObject
public PyObject __eq__(PyObject other)
PyObject
__eq__
in class PySequence
other
- the object to compare this with.public PyObject __ne__(PyObject other)
PyObject
__ne__
in class PySequence
other
- the object to compare this with.public PyObject __lt__(PyObject other)
PyObject
__lt__
in class PySequence
other
- the object to compare this with.public PyObject __le__(PyObject other)
PyObject
__le__
in class PySequence
other
- the object to compare this with.public PyObject __ge__(PyObject other)
PyObject
__ge__
in class PySequence
other
- the object to compare this with.public PyObject __gt__(PyObject other)
PyObject
__gt__
in class PySequence
other
- the object to compare this with.public PyObject __enter__()
with
clause).public boolean __exit__(PyObject type, PyObject value, PyObject traceback)
with
clause), and
will release the memoryview
.public PyBuffer getBuffer(int flags)
PyBuffer.release()
on the buffer it obtained, or PyBuffer.close()
using
try-with-resources, since some objects alter their behaviour while buffers are exported.
The PyBuffer
returned from this method is just the one on which the
memoryview
was first constructed. The Jython buffer API is such that sharing
directly is safe (as long as the get-release discipline is observed).
getBuffer
in interface BufferProtocol
flags
- specifying features demanded and the navigational capabilities of the consumerpublic void release()
memoryview
object.
Many objects take special actions when a view is held on them (for example, a
bytearray
would temporarily forbid resizing); therefore, calling
release()
is handy to remove these restrictions (and free any dangling
resources) as soon as possible.
After this method has been called, any further operation on the view raises a
ValueError
(except release()
itself which can be called multiple
times with the same effect as just one call).
This becomes an exposed method in CPython from 3.2. The Jython implementation of
memoryview
follows the Python 3.3 design internally and therefore safely
anticipates Python 3 in exposing memoryview.release
along with the related
context-management behaviour.
public final void memoryview_release()
protected void checkNotReleased()
protected PyString pyget(int index)
PySequence.__getitem__(org.python.core.PyObject)
. It is guaranteed by
PySequence that the index is within the bounds of the memoryview.pyget
in class PySequence
index
- index of the element to get.protected PyMemoryView getslice(int start, int stop, int step)
getslice
in class PySequence
start
- the position of the first element.stop
- one more than the position of the last element.step
- the step size.protected PyMemoryView repeat(int count) throws PyException
repeat
in class PySequence
count
- the number of times to repeat this.PyException
- NotImplemented
alwayspublic void pyset(int index, PyObject value) throws PyException
PySequence.__setitem__(int, org.python.core.PyObject)
It is guaranteed by PySequence that the index is within the bounds of
the memoryview. Any other clients calling pyset(int, PyObject) must make the same
guarantee.pyset
in class PySequence
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>255protected void setslice(int start, int stop, int step, PyObject value)
a = bytearray(b'abcdefghijklmnopqrst') m = memoryview(a) m[2:7] = "ABCDE"Results in
a=bytearray(b'abABCDEhijklmnopqrst')
.
If the step size is one, but stop-start does not match the length of the right-hand-side a ValueError is thrown.
If the step size is not one, and start!=stop, the slice defines a certain number of elements to be replaced. This function is not available in Python 2.7 (but it is in Python 3.3).
a = bytearray(b'abcdefghijklmnopqrst') a[2:12:2] = iter( [65, 66, 67, long(68), "E"] )Results in
a=bytearray(b'abAdBfChDjElmnopqrst')
in Python 3.3.setslice
in class PySequence
start
- the position of the first element.stop
- one more than the position of the last element.step
- the step size.value
- an object consistent with the slice assignmentpublic int traverse(Visitproc visit, java.lang.Object arg)
Traverseproc
PyObject
s.
Like in CPython, arg
must be passed
unmodified to visit
as its second parameter.
If Visitproc.visit(PyObject, Object)
returns
nonzero, this return value
must be returned immediately by traverse.
Visitproc.visit(PyObject, Object)
must not be
called with a null
PyObject-argument.traverse
in interface Traverseproc
public boolean refersDirectlyTo(PyObject ob)
Traverseproc
Traverseproc.traverse(Visitproc, Object)
with
a visitproc that just watches out for ob
.
Must return false
if ob
is null
.refersDirectlyTo
in interface Traverseproc