Class PyArray
- java.lang.Object
-
- org.python.core.PyObject
-
- org.python.core.PySequence
-
- org.python.core.PyArray
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,BufferProtocol,Traverseproc
- Direct Known Subclasses:
PyArrayDerived
public class PyArray extends PySequence implements java.lang.Cloneable, BufferProtocol, Traverseproc
A wrapper class around native java arrays. Instances of PyArray are created either by java functions or directly by the jarray module.See also the jarray module.
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.python.core.PyObject
PyObject.ConversionException
-
-
Field Summary
Fields Modifier and Type Field Description static PyTypeTYPE-
Fields inherited from class org.python.core.PyObject
gcMonitorGlobal
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description PyObject__add__(PyObject other)Equivalent to the standard Python __add__ method.PyObject__iadd__(PyObject other)Equivalent to the standard Python __iadd__ method.PyObject__imul__(PyObject o)Equivalent to the standard Python __imul__ method.int__len__()Length of the arrayPyObject__mul__(PyObject o)Equivalent to the standard Python __mul__ method.PyObject__reduce__()Used for pickling.PyObject__rmul__(PyObject o)Equivalent to the standard Python __rmul__ method.java.lang.Object__tojava__(java.lang.Class<?> c)Equivalent to the Jython __tojava__ method.voidappend(PyObject value)Append new value x to the end of the array.static PyArrayarray(PyObject seq, char typecode)static PyArrayarray(PyObject init, java.lang.Class<?> ctype)Create a PyArray storingctypetypes and being initialised withinit.PyObjectarray___iter__()voidarray_append(PyObject value)voidarray_byteswap()static java.lang.Class<?>array_class(java.lang.Class<?> type)intarray_count(PyObject value)voidarray_extend(PyObject iterable)voidarray_fromfile(PyObject f, int count)voidarray_fromlist(PyObject obj)intarray_index(PyObject value)voidarray_insert(int index, PyObject value)PyObjectarray_pop(int i)Removes the item at the indexifrom the array and returns it.voidarray_remove(PyObject value)voidarray_reverse()voidarray_tofile(PyObject f)PyObjectarray_tolist()PyObjectarray_tostring()PyObjectarray_tounicode()voidarray_write(PyObject f)voidbyteswap()"Byteswap" all items of the array.static java.lang.Class<?>char2class(char type)Converts a character code for the array type to a JavaClass.java.lang.Objectclone()Implementation ofCloneableinterface.PyIntegercount(PyObject value)Return the number of occurrences of x in the array.voidextend(PyObject iterable)Append items fromiterableto the end of the array.intfillFromStream(java.io.InputStream is)Read primitive values from a stream into the array without resizing.voidfromfile(PyObject f, int count)Readcountitems (as machine values) from the file objectfand append them to the end of the array.voidfromlist(PyObject obj)Append items from the list.voidfromstring(java.lang.String input)Appends items from the string, interpreting the string as an array of machine values (as if it had been read from a file using thefromfile()method).voidfromstring(PyObject input)Appends items from the object, which is a byte string of some kind (PyString or object with the buffer interface providing bytes) The string of bytes is interpreted as an array of machine values (as if it had been read from a file using thefromfile()method).voidfromunicode(PyUnicode input)java.lang.ObjectgetArray()Return the internal Java array storage of the PyArray instancePyBuffergetBuffer(int flags)Method by which the consumer requests the buffer from the exporter.intgetItemsize()Getter for the storage size of the array's type.intgetStorageSize()java.lang.StringgetTypecode()Getter for the type code of the array.inthashCode()PyObjectindex(PyObject value)Return the smallest i such that i is the index of the first occurrence ofvaluein the array.voidinsert(int index, PyObject value)Insert a new item with valuevaluein the array before positionindex.PyObjectpop()Removes the last item from the array and return it.PyObjectpop(int index)Removes the item with the indexindexfrom the array and returns it.booleanrefersDirectlyTo(PyObject ob)Optional operation.voidremove(PyObject value)Remove the first occurrence ofvaluefrom the array.voidreverse()Reverse the elements in the arrayvoidset(int i, char value)voidset(int i, int value)voidset(int i, PyObject value)Set an element in the array - the index needs to exist, this method does not automatically extend the array.voidtofile(PyObject f)Write all items (as machine values) to the file objectf.PyObjecttolist()Convert the array to an ordinary list with the same items.inttoStream(java.io.OutputStream os)Generic stream writer to write the entire contents of the array to the stream as primitive types.java.lang.Stringtostring()Convert the array to an array of machine values and return the string representation (the same sequence of bytes that would be written to a file by thetofile()method.)java.lang.StringtoString()java.lang.Stringtounicode()inttraverse(Visitproc visit, java.lang.Object arg)Traverses all directly containedPyObjects.static PyArrayzeros(int n, char typecode)static PyArrayzeros(int n, java.lang.Class<?> ctype)-
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__, 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__, __iand__, __idiv__, __idivmod__, __ifloordiv__, __ilshift__, __imod__, __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_ex__, __reduce_ex__, __repr__, __rfloordiv__, __rlshift__, __rmod__, __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, _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, implementsDescrDelete, implementsDescrGet, implementsDescrSet, invoke, invoke, invoke, invoke, invoke, invoke, isCallable, isDataDescr, isIndex, isInteger, noAttributeError, object___subclasshook__, readonlyAttributeError, setDict, setType
-
-
-
-
Field Detail
-
TYPE
public static final PyType TYPE
-
-
Method Detail
-
zeros
public static PyArray zeros(int n, char typecode)
-
zeros
public static PyArray zeros(int n, java.lang.Class<?> ctype)
-
array_class
public static java.lang.Class<?> array_class(java.lang.Class<?> type)
-
array
public static PyArray array(PyObject init, java.lang.Class<?> ctype)
Create a PyArray storingctypetypes and being initialised withinit.- Parameters:
init- an initialiser for the array - can be PyString or PySequence (including PyArray) or iterable type.ctype-Classtype of the elements stored in the array.- Returns:
- a new PyArray
-
array___iter__
public PyObject array___iter__()
-
__imul__
public PyObject __imul__(PyObject o)
Description copied from class:PyObjectEquivalent to the standard Python __imul__ method.
-
__mul__
public PyObject __mul__(PyObject o)
Description copied from class:PyObjectEquivalent to the standard Python __mul__ method.
-
__rmul__
public PyObject __rmul__(PyObject o)
Description copied from class:PyObjectEquivalent to the standard Python __rmul__ method.
-
__iadd__
public PyObject __iadd__(PyObject other)
Description copied from class:PyObjectEquivalent to the standard Python __iadd__ method.
-
__add__
public PyObject __add__(PyObject other)
Description copied from class:PyObjectEquivalent to the standard Python __add__ method.
-
__len__
public int __len__()
Length of the array
-
__reduce__
public PyObject __reduce__()
Description copied from class:PyObjectUsed for pickling. Default implementation calls object___reduce__.- Overrides:
__reduce__in classPyObject- Returns:
- a tuple of (class, tuple)
-
__tojava__
public java.lang.Object __tojava__(java.lang.Class<?> c)
Description copied from class:PyObjectEquivalent to the Jython __tojava__ method. Tries to coerce this object to an instance of the requested Java class. Returns the special objectPy.NoConversionif thisPyObjectcan not be converted to the desired Java class.- Overrides:
__tojava__in classPySequence- Parameters:
c- targetClassfor the conversion- Returns:
- Java object converted to required class type if possible.
-
array_append
public final void array_append(PyObject value)
-
append
public void append(PyObject value)
Append new value x to the end of the array.- Parameters:
value- item to be appended to the array
-
array_byteswap
public void array_byteswap()
-
byteswap
public void byteswap()
"Byteswap" all items of the array. This is only supported for values which are 1, 2, 4, or 8 bytes in size; for other types of values, RuntimeError is raised. It is useful when reading data from a file written on a machine with a different byte order.
-
clone
public java.lang.Object clone()
Implementation ofCloneableinterface.- Returns:
- copy of current PyArray
-
char2class
public static java.lang.Class<?> char2class(char type) throws PyIgnoreMethodTagConverts a character code for the array type to a JavaClass.The following character codes and their native types are supported:
Type code native type z booleanc charb byteh shorti intl longf floatd double- Parameters:
type- character code for the array type- Returns:
Classof the native type- Throws:
PyIgnoreMethodTag
-
array_count
public final int array_count(PyObject value)
-
count
public PyInteger count(PyObject value)
Return the number of occurrences of x in the array.- Parameters:
value- instances of the value to be counted- Returns:
- number of time value was found in the array.
-
array_extend
public final void array_extend(PyObject iterable)
-
extend
public void extend(PyObject iterable)
Append items fromiterableto the end of the array. If iterable is another array, it must have exactly the same type code; if not, TypeError will be raised. If iterable is not an array, it must be iterable and its elements must be the right type to be appended to the array.- Parameters:
iterable- iterable object used to extend the array
-
array_fromfile
public final void array_fromfile(PyObject f, int count)
-
fromfile
public void fromfile(PyObject f, int count)
Readcountitems (as machine values) from the file objectfand append them to the end of the array. If less thancountitems are available, EOFError is raised, but the items that were available are still inserted into the array.fmust be a real built-in file object; something else with a read() method won't do.- Parameters:
f- Python builtin file object to retrieve datacount- number of array elements to read
-
array_fromlist
public final void array_fromlist(PyObject obj)
-
fromlist
public void fromlist(PyObject obj)
Append items from the list. This is equivalent to "for x in list: a.append(x)" except that if there is a type error, the array is unchanged.- Parameters:
obj- input list object that will be appended to the array
-
fillFromStream
public int fillFromStream(java.io.InputStream is) throws java.io.IOExceptionRead primitive values from a stream into the array without resizing. Data is read until the array is filled or the stream runs out. If the stream does not contain a whole number of items (possible if the item size is not one byte), the behaviour in respect of the final partial item and straem position is not defined.- Parameters:
is- InputStream to source the data from- Returns:
- number of primitives successfully read
- Throws:
java.io.IOException- reflecting I/O errors during reading
-
fromstring
public void fromstring(PyObject input)
Appends items from the object, which is a byte string of some kind (PyString or object with the buffer interface providing bytes) The string of bytes is interpreted as an array of machine values (as if it had been read from a file using thefromfile()method).- Parameters:
input- string of bytes containing array data
-
fromstring
public void fromstring(java.lang.String input)
Appends items from the string, interpreting the string as an array of machine values (as if it had been read from a file using thefromfile()method).- Parameters:
input- string of bytes containing array data
-
fromunicode
public void fromunicode(PyUnicode input)
-
getArray
public java.lang.Object getArray() throws PyIgnoreMethodTagReturn the internal Java array storage of the PyArray instance- Returns:
- the
Arraystore. - Throws:
PyIgnoreMethodTag
-
getItemsize
public int getItemsize()
Getter for the storage size of the array's type.The sizes returned by this method represent the number of bytes used to store the type. In the case of streams, this is the number of bytes written to, or read from a stream. For memory this value is the minimum number of bytes required to store the type.
This method is used by other methods to define read/write quanta from strings and streams.
Values returned are:
Type Size boolean1 byte1 char1 short2 int4 long8 float4 double8 - Returns:
- number of bytes used to store array type.
-
getStorageSize
public int getStorageSize()
-
getTypecode
public java.lang.String getTypecode()
Getter for the type code of the array.char2classdescribes the possible type codes and their meaning.- Returns:
- single character type code for the array
-
array_index
public final int array_index(PyObject value)
-
index
public PyObject index(PyObject value)
Return the smallest i such that i is the index of the first occurrence ofvaluein the array.- Parameters:
value- value to find the index of- Returns:
- index of the first occurrence of
value
-
array_insert
public final void array_insert(int index, PyObject value)
-
insert
public void insert(int index, PyObject value)Insert a new item with valuevaluein the array before positionindex. Negative values are treated as being relative to the end of the array.- Parameters:
index- insert positionvalue- value to be inserted into array
-
array_pop
public final PyObject array_pop(int i)
Removes the item at the indexifrom the array and returns it. The optional argument defaults to -1, so that by default the last item is removed and returned.
-
pop
public PyObject pop()
Removes the last item from the array and return it.
-
pop
public PyObject pop(int index)
Removes the item with the indexindexfrom the array and returns it.- Parameters:
index- array location to be popped from the array- Returns:
- array element popped from index
-
array_remove
public final void array_remove(PyObject value)
-
remove
public void remove(PyObject value)
Remove the first occurrence ofvaluefrom the array.- Parameters:
value- array value to be removed
-
array_reverse
public final void array_reverse()
-
reverse
public void reverse()
Reverse the elements in the array
-
set
public void set(int i, PyObject value)Set an element in the array - the index needs to exist, this method does not automatically extend the array. SeeAbstractArray.setSize()orAbstractArray.ensureCapacity()for ways to extend capacity.This code specifically checks for overflows of the integral types: byte, short, int and long.
- Parameters:
i- index of the element to be setvalue- value to set the element to
-
set
public void set(int i, int value)
-
set
public void set(int i, char value)
-
array_tofile
public final void array_tofile(PyObject f)
-
array_write
public void array_write(PyObject f)
-
tofile
public void tofile(PyObject f)
Write all items (as machine values) to the file objectf.- Parameters:
f- Python builtin file object to write data
-
array_tolist
public final PyObject array_tolist()
-
tolist
public PyObject tolist()
Convert the array to an ordinary list with the same items.- Returns:
- array contents as a list
-
toStream
public int toStream(java.io.OutputStream os) throws java.io.IOExceptionGeneric stream writer to write the entire contents of the array to the stream as primitive types.- Parameters:
os- OutputStream to sink the array data to- Returns:
- number of bytes successfully written
- Throws:
java.io.IOException
-
array_tostring
public final PyObject array_tostring()
-
tostring
public java.lang.String tostring()
Convert the array to an array of machine values and return the string representation (the same sequence of bytes that would be written to a file by thetofile()method.)
-
tounicode
public java.lang.String tounicode()
-
array_tounicode
public final PyObject array_tounicode()
-
getBuffer
public PyBuffer getBuffer(int flags)
Method by which the consumer requests the buffer from the exporter. The consumer provides information on its intended method of navigation and the features the buffer object is asked (or assumed) to provide. 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, since some objects alter their behaviour while buffers are exported.The
PyBufferreturned from this method is a one-dimensional array of single byte items that allows modification of the object state. The existence of this export prohibits resizing the byte array. This prohibition is not only on the consumer of the view but extends to any other operations, such as any kind or insertion or deletion.- Specified by:
getBufferin interfaceBufferProtocol- Parameters:
flags- specifying features demanded and the navigational capabilities of the consumer- Returns:
- exported buffer
-
traverse
public int traverse(Visitproc visit, java.lang.Object arg)
Description copied from interface:TraverseprocTraverses all directly containedPyObjects. Like in CPython,argmust be passed unmodified tovisitas its second parameter. IfVisitproc.visit(PyObject, Object)returns nonzero, this return value must be returned immediately by traverse.Visitproc.visit(PyObject, Object)must not be called with anullPyObject-argument.- Specified by:
traversein interfaceTraverseproc
-
refersDirectlyTo
public boolean refersDirectlyTo(PyObject ob) throws java.lang.UnsupportedOperationException
Description copied from interface:TraverseprocOptional operation. Should only be implemented if it is more efficient than callingTraverseproc.traverse(Visitproc, Object)with a visitproc that just watches out forob. Must returnfalseifobisnull.- Specified by:
refersDirectlyToin interfaceTraverseproc- Throws:
java.lang.UnsupportedOperationException
-
-