Class AbstractMemoryModel
- All Implemented Interfaces:
MemoryModel
- Direct Known Subclasses:
BufferMemoryModel
,CombinedMemoryModel
,LargeMemoryModel
,SignalMemoryModel
,SimpleMemoryModel
A skeletal implementation of the MemoryModel
interface to minimize
the effort required to implement this interface.
This class implements all concrete newEmptyXxxArray, newXxxArray and newUnresizableXxxArray methods, and also all valueOf methods via trivial calls of corresponding newEmptyArray and newArray methods. This class implements all concrete newXxxMatrix via trivial calls of newMatrix method. It also offers a simple implementation of some other methods: see comments to them.
- Author:
- Daniel Alievsky
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
Returns true if this memory model can create arrays with all element types.abstract boolean
Returns true if this memory model can create arrays with all primitive element types: boolean, char, byte, short, int, long, float, double.abstract boolean
isCreatedBy
(Array array) Returns true if the passed array was created by this (or identical) memory model.abstract boolean
isElementTypeSupported
(Class<?> elementType) Returns true if this memory model can create arrays with this element type.abstract long
maxSupportedLength
(Class<?> elementType) Returnes maximal possible length of arrays with the specified element type supported by this memory model.abstract MutableArray
Allocates a zero-filled resizable array with the specified element type and initial length.newBitArray
(long initialLength) Equivalent to (MutableBitArray)newArray
(boolean.class, initialLength).newBitMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableBitArray.class, boolean.class, dim).newByteArray
(long initialLength) Equivalent to (MutableByteArray)newArray
(byte.class, initialLength).newByteMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableByteArray.class, byte.class, dim).newCharArray
(long initialLength) Equivalent to (MutableCharArray)newArray
(char.class, initialLength).newCharMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableCharArray.class, char.class, dim).newDoubleArray
(long initialLength) Equivalent to (MutableDoubleArray)newArray
(double.class, initialLength).newDoubleMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableDoubleArray.class, double.class, dim).abstract MutableArray
newEmptyArray
(Class<?> elementType) Allocates an empty resizable array with the specified element type and a little initial capacity.abstract MutableArray
newEmptyArray
(Class<?> elementType, long initialCapacity) Allocates an empty resizable array with the specified element type and initial capacity.Equivalent to (MutableBitArray)newEmptyArray
(boolean.class).newEmptyBitArray
(long initialCapacity) Equivalent to (MutableBitArray)newEmptyArray
(boolean.class, initialCapacity).Equivalent to (MutableByteArray)newEmptyArray
(byte.class).newEmptyByteArray
(long initialCapacity) Equivalent to (MutableByteArray)newEmptyArray
(byte.class, initialCapacity).Equivalent to (MutableCharArray)newEmptyArray
(char.class).newEmptyCharArray
(long initialCapacity) Equivalent to (MutableCharArray)newEmptyArray
(char.class, initialCapacity).Equivalent to (MutableDoubleArray)newEmptyArray
(double.class).newEmptyDoubleArray
(long initialCapacity) Equivalent to (MutableDoubleArray)newEmptyArray
(double.class, initialCapacity).Equivalent to (MutableFloatArray)newEmptyArray
(float.class).newEmptyFloatArray
(long initialCapacity) Equivalent to (MutableFloatArray)newEmptyArray
(float.class, initialCapacity).Equivalent to (MutableIntArray)newEmptyArray
(int.class).newEmptyIntArray
(long initialCapacity) Equivalent to (MutableIntArray)newEmptyArray
(int.class, initialCapacity).Equivalent to (MutableLongArray)newEmptyArray
(long.class).newEmptyLongArray
(long initialCapacity) Equivalent to (MutableLongArray)newEmptyArray
(long.class, initialCapacity).<E> MutableObjectArray<E>
newEmptyObjectArray
(Class<E> elementType) Equivalent to (MutableObjectArray<E>)newEmptyArray
(elementType).<E> MutableObjectArray<E>
newEmptyObjectArray
(Class<E> elementType, long initialCapacity) Equivalent to (MutableObjectArray<E>)newEmptyArray
(elementType, initialCapacity).Equivalent to (MutableShortArray)newEmptyArray
(short.class).newEmptyShortArray
(long initialCapacity) Equivalent to (MutableShortArray)newEmptyArray
(short.class, initialCapacity).newFloatArray
(long initialLength) Equivalent to (MutableFloatArray)newArray
(float.class, initialLength).newFloatMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableFloatArray.class, float.class, dim).newIntArray
(long initialLength) Equivalent to (MutableIntArray)newArray
(int.class, initialLength).newIntMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableIntArray.class, int.class, dim).<T extends UpdatableArray>
Matrix<T>newLazyCopy
(Class<T> arraySupertype, Matrix<?> matrix) newLazyCopy
(Array array) This implementation returns usual actual copy of the array.newLongArray
(long initialLength) Equivalent to (MutableLongArray)newArray
(long.class, initialLength).newLongMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableLongArray.class, long.class, dim).<T extends UpdatableArray>
Matrix<T>newMatrix
(long maxSizeAllocatedInJavaMemory, Class<T> arraySupertype, Class<?> elementType, long... dim) This method is fully implemented in this class.<T extends UpdatableArray>
Matrix<T>This method is fully implemented in this class.<T extends UpdatableArray>
Matrix<T><E> MutableObjectArray<E>
newObjectArray
(Class<E> elementType, long initialLength) Equivalent to (MutableObjectArray<E>)newArray
(elementType, initialLength).<E> Matrix<UpdatableObjectArray<E>>
newObjectMatrix
(Class<E> elementType, long... dim) Equivalent tonewMatrix
(UpdatableObjectArray.class, elementType, dim).newShortArray
(long initialLength) Equivalent to (MutableShortArray)newArray
(short.class, initialLength).newShortMatrix
(long... dim) Equivalent tonewMatrix
(UpdatableShortArray.class, short.class, dim).<T extends UpdatableArray>
Matrix<T>newStructuredMatrix
(Class<T> arraySupertype, Matrix<?> matrix) Equivalent tonewMatrix
(arraySupertype, matrix).structureLike
(matrix).abstract UpdatableArray
newUnresizableArray
(Class<?> elementType, long length) Allocates a zero-filled unresizable array with the specified element type and length.newUnresizableArray
(Array array) newUnresizableBitArray
(long initialLength) Equivalent to (UpdatableBitArray)newUnresizableArray
(boolean.class, initialLength).newUnresizableByteArray
(long initialLength) Equivalent to (UpdatableByteArray)newUnresizableArray
(byte.class, initialLength).newUnresizableCharArray
(long initialLength) Equivalent to (UpdatableCharArray)newUnresizableArray
(char.class, initialLength).newUnresizableDoubleArray
(long initialLength) Equivalent to (UpdatableDoubleArray)newUnresizableArray
(double.class, initialLength).newUnresizableFloatArray
(long initialLength) Equivalent to (UpdatableFloatArray)newUnresizableArray
(float.class, initialLength).newUnresizableIntArray
(long initialLength) Equivalent to (UpdatableIntArray)newUnresizableArray
(int.class, initialLength).newUnresizableLazyCopy
(Array array) This implementation returns usual actual copy of the array.newUnresizableLongArray
(long initialLength) Equivalent to (UpdatableLongArray)newUnresizableArray
(long.class, initialLength).<E> UpdatableObjectArray<E>
newUnresizableObjectArray
(Class<E> elementType, long initialLength) Equivalent to (UpdatableObjectArray<E>)newUnresizableArray
(elementType, initialLength).newUnresizableShortArray
(long initialLength) Equivalent to (UpdatableShortArray)newUnresizableArray
(short.class, initialLength).valueOf
(boolean[] array) Equivalent to (UpdatableBitArray)valueOf
((Object)array).valueOf
(boolean[] array, int offset, int count) Equivalent to (UpdatableBitArray)valueOf
((Object)array, offset, count).valueOf
(byte[] array) Equivalent to (UpdatableByteArray)valueOf
((Object)array).valueOf
(byte[] array, int offset, int count) Equivalent to (UpdatableByteArray)valueOf
((Object)array, offset, count).valueOf
(char[] array) Equivalent to (UpdatableCharArray)valueOf
((Object)array).valueOf
(char[] array, int offset, int count) Equivalent to (UpdatableCharArray)valueOf
((Object)array, offset, count).valueOf
(double[] array) Equivalent to (UpdatableDoubleArray)valueOf
((Object)array).valueOf
(double[] array, int offset, int count) Equivalent to (UpdatableDoubleArray)valueOf
((Object)array, offset, count).valueOf
(float[] array) Equivalent to (UpdatableFloatArray)valueOf
((Object)array).valueOf
(float[] array, int offset, int count) Equivalent to (UpdatableFloatArray)valueOf
((Object)array, offset, count).valueOf
(int[] array) Equivalent to (UpdatableIntArray)valueOf
((Object)array).valueOf
(int[] array, int offset, int count) Equivalent to (UpdatableIntArray)valueOf
((Object)array, offset, count).valueOf
(long[] array) Equivalent to (UpdatableLongArray)valueOf
((Object)array).valueOf
(long[] array, int offset, int count) Equivalent to (UpdatableLongArray)valueOf
((Object)array, offset, count).valueOf
(short[] array) Equivalent to (UpdatableShortArray)valueOf
((Object)array).valueOf
(short[] array, int offset, int count) Equivalent to (UpdatableShortArray)valueOf
((Object)array, offset, count).<E> UpdatableObjectArray<E>
valueOf
(E[] array) Equivalent to (UpdatableObjectArray<E>)valueOf
((Object)array).<E> UpdatableObjectArray<E>
valueOf
(E[] array, int offset, int count) Equivalent to (UpdatableObjectArray<E>)valueOf
((Object)array, offset, count).Allocates an unresizable AlgART array containing all elements of the specified Java array: array[0], array[1], ..., array[array.length - 1].Allocates an unresizable AlgART array containing count elements of the specified Java array: array[offset], array[offset + 1], ..., array[offset + count - 1].
-
Constructor Details
-
AbstractMemoryModel
public AbstractMemoryModel()
-
-
Method Details
-
newEmptyArray
Description copied from interface:MemoryModel
Allocates an empty resizable array with the specified element type and a little initial capacity. It is equivalent tonewEmptyArray(elementType, n)
, where n is some little value.Example of usage:
MutableFloatArray a = (MutableFloatArray)memoryModel.newEmptyArray(float.class);
- Specified by:
newEmptyArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.- Returns:
- created AlgART array.
- See Also:
-
newEmptyArray
Description copied from interface:MemoryModel
Allocates an empty resizable array with the specified element type and initial capacity.The element type can be either usual object class (as String.class), or one of the primitive types: boolean.class, byte.class, short.class, int.class, long.class, float.class, double.class, char.class. The element type cannot be void.class.
In a case of primitive types, the created array will implement the corresponding interface
BitArray
,ByteArray
,ShortArray
,IntArray
,LongArray
,FloatArray
,DoubleArray
orCharArray
. In this case, the created array (unlike standard ArrayList) will occupy the same amount of memory as the Java array boolean[initialCapacity], byte[initialCapacity], etc.In a case of non-primitive types (Object inheritors), the created array will implement the
MutableObjectArray
interface.Some element type may be not supported by this memory model. For example, some memory models may support only primitive types, or only one concrete type. In such a case,
UnsupportedElementTypeException
will be thrown.Some too large array capacities may be not supported by this memory model. For example,
SimpleMemoryModel
does not support arrays larger than 0x7FFFFFFF (Integer.MAX_VALUE) elements.Example of usage:
MutableFloatArray a = (MutableFloatArray)memoryModel.newEmptyArray(float.class, 10000);
- Specified by:
newEmptyArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newArray
Description copied from interface:MemoryModel
Allocates a zero-filled resizable array with the specified element type and initial length. The capacity of new array will be equal to its length.This method is equivalent to the following call:
newEmptyArray(elementType, initialLength)
.length(initialLength)
.trim()
.- Specified by:
newArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableArray
Description copied from interface:MemoryModel
Allocates a zero-filled unresizable array with the specified element type and length. The capacity of new array will be equal to its length.The analogous result may be obtained the following call:
newArray(elementType, length)
.asUnresizable()
. However, we don't recommend to use such code. If you are sure that you will not need to change the array length, please always use this method (ornewUnresizableBitArray
,newUnresizableBteArray
, etc.). In some memory models, creating resizable array with the given length may require much more resources that creating unresizable one. For example, in thelarge memory model
every resizable array is stored in the file consisting of integer number of blocks perDataFileModel.recommendedBankSize(true)
bytes.- Specified by:
newUnresizableArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.length
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newArray
Description copied from interface:MemoryModel
- Specified by:
newArray
in interfaceMemoryModel
- Parameters:
array
- the pattern array.- Returns:
- new AlgART array with the same length and element type.
- See Also:
-
newUnresizableArray
Description copied from interface:MemoryModel
- Specified by:
newUnresizableArray
in interfaceMemoryModel
- Parameters:
array
- the pattern array.- Returns:
- new unresizable AlgART array with the same length and element type.
- See Also:
-
newEmptyBitArray
Description copied from interface:MemoryModel
Equivalent to (MutableBitArray)newEmptyArray
(boolean.class).Example of usage:
MutableBitArray a = memoryModel.newEmptyBitArray();
- Specified by:
newEmptyBitArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyBitArray
Description copied from interface:MemoryModel
Equivalent to (MutableBitArray)newEmptyArray
(boolean.class, initialCapacity).Example of usage:
MutableBitArray a = memoryModel.newEmptyBitArray(10000);
- Specified by:
newEmptyBitArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newBitArray
Description copied from interface:MemoryModel
Equivalent to (MutableBitArray)newArray
(boolean.class, initialLength).- Specified by:
newBitArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableBitArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableBitArray)newUnresizableArray
(boolean.class, initialLength).- Specified by:
newUnresizableBitArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyCharArray
Description copied from interface:MemoryModel
Equivalent to (MutableCharArray)newEmptyArray
(char.class).Example of usage:
MutableCharArray a = memoryModel.newEmptyCharArray();
- Specified by:
newEmptyCharArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyCharArray
Description copied from interface:MemoryModel
Equivalent to (MutableCharArray)newEmptyArray
(char.class, initialCapacity).Example of usage:
MutableCharArray a = memoryModel.newEmptyCharArray(10000);
- Specified by:
newEmptyCharArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newCharArray
Description copied from interface:MemoryModel
Equivalent to (MutableCharArray)newArray
(char.class, initialLength).- Specified by:
newCharArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableCharArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableCharArray)newUnresizableArray
(char.class, initialLength).- Specified by:
newUnresizableCharArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyByteArray
Description copied from interface:MemoryModel
Equivalent to (MutableByteArray)newEmptyArray
(byte.class).Example of usage:
MutableByteArray a = memoryModel.newEmptyByteArray();
- Specified by:
newEmptyByteArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyByteArray
Description copied from interface:MemoryModel
Equivalent to (MutableByteArray)newEmptyArray
(byte.class, initialCapacity).Example of usage:
MutableByteArray a = memoryModel.newEmptyByteArray(10000);
- Specified by:
newEmptyByteArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newByteArray
Description copied from interface:MemoryModel
Equivalent to (MutableByteArray)newArray
(byte.class, initialLength).- Specified by:
newByteArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableByteArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableByteArray)newUnresizableArray
(byte.class, initialLength).- Specified by:
newUnresizableByteArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyShortArray
Description copied from interface:MemoryModel
Equivalent to (MutableShortArray)newEmptyArray
(short.class).Example of usage:
MutableShortArray a = memoryModel.newEmptyShortArray();
- Specified by:
newEmptyShortArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyShortArray
Description copied from interface:MemoryModel
Equivalent to (MutableShortArray)newEmptyArray
(short.class, initialCapacity).Example of usage:
MutableShortArray a = memoryModel.newEmptyShortArray(10000);
- Specified by:
newEmptyShortArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newShortArray
Description copied from interface:MemoryModel
Equivalent to (MutableShortArray)newArray
(short.class, initialLength).- Specified by:
newShortArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableShortArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableShortArray)newUnresizableArray
(short.class, initialLength).- Specified by:
newUnresizableShortArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyIntArray
Description copied from interface:MemoryModel
Equivalent to (MutableIntArray)newEmptyArray
(int.class).Example of usage:
MutableIntArray a = memoryModel.newEmptyIntArray();
- Specified by:
newEmptyIntArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyIntArray
Description copied from interface:MemoryModel
Equivalent to (MutableIntArray)newEmptyArray
(int.class, initialCapacity).Example of usage:
MutableIntArray a = memoryModel.newEmptyIntArray(10000);
- Specified by:
newEmptyIntArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newIntArray
Description copied from interface:MemoryModel
Equivalent to (MutableIntArray)newArray
(int.class, initialLength).- Specified by:
newIntArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableIntArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableIntArray)newUnresizableArray
(int.class, initialLength).- Specified by:
newUnresizableIntArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyLongArray
Description copied from interface:MemoryModel
Equivalent to (MutableLongArray)newEmptyArray
(long.class).Example of usage:
MutableLongArray a = memoryModel.newEmptyLongArray();
- Specified by:
newEmptyLongArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyLongArray
Description copied from interface:MemoryModel
Equivalent to (MutableLongArray)newEmptyArray
(long.class, initialCapacity).Example of usage:
MutableLongArray a = memoryModel.newEmptyLongArray(10000);
- Specified by:
newEmptyLongArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newLongArray
Description copied from interface:MemoryModel
Equivalent to (MutableLongArray)newArray
(long.class, initialLength).- Specified by:
newLongArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableLongArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableLongArray)newUnresizableArray
(long.class, initialLength).- Specified by:
newUnresizableLongArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyFloatArray
Description copied from interface:MemoryModel
Equivalent to (MutableFloatArray)newEmptyArray
(float.class).Example of usage:
MutableFloatArray a = memoryModel.newEmptyFloatArray();
- Specified by:
newEmptyFloatArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyFloatArray
Description copied from interface:MemoryModel
Equivalent to (MutableFloatArray)newEmptyArray
(float.class, initialCapacity).Example of usage:
MutableFloatArray a = memoryModel.newEmptyFloatArray(10000);
- Specified by:
newEmptyFloatArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newFloatArray
Description copied from interface:MemoryModel
Equivalent to (MutableFloatArray)newArray
(float.class, initialLength).- Specified by:
newFloatArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableFloatArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableFloatArray)newUnresizableArray
(float.class, initialLength).- Specified by:
newUnresizableFloatArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyDoubleArray
Description copied from interface:MemoryModel
Equivalent to (MutableDoubleArray)newEmptyArray
(double.class).Example of usage:
MutableDoubleArray a = memoryModel.newEmptyDoubleArray();
- Specified by:
newEmptyDoubleArray
in interfaceMemoryModel
- Returns:
- created AlgART array.
- See Also:
-
newEmptyDoubleArray
Description copied from interface:MemoryModel
Equivalent to (MutableDoubleArray)newEmptyArray
(double.class, initialCapacity).Example of usage:
MutableDoubleArray a = memoryModel.newEmptyDoubleArray(10000);
- Specified by:
newEmptyDoubleArray
in interfaceMemoryModel
- Parameters:
initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newDoubleArray
Description copied from interface:MemoryModel
Equivalent to (MutableDoubleArray)newArray
(double.class, initialLength).- Specified by:
newDoubleArray
in interfaceMemoryModel
- Parameters:
initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableDoubleArray
Description copied from interface:MemoryModel
Equivalent to (UpdatableDoubleArray)newUnresizableArray
(double.class, initialLength).- Specified by:
newUnresizableDoubleArray
in interfaceMemoryModel
- Parameters:
initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newEmptyObjectArray
Description copied from interface:MemoryModel
Equivalent to (MutableObjectArray<E>)newEmptyArray
(elementType).Example of usage:
MutableObjectArray<String> a = memoryModel.<String>newEmptyObjectArray(Class elementType);
- Specified by:
newEmptyObjectArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.- Returns:
- created AlgART array.
- See Also:
-
newEmptyObjectArray
Description copied from interface:MemoryModel
Equivalent to (MutableObjectArray<E>)newEmptyArray
(elementType, initialCapacity).Example of usage:
MutableObjectArray<String> a = memoryModel.<String>newEmptyObjectArray(10000);
- Specified by:
newEmptyObjectArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.initialCapacity
- the initial capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newObjectArray
Description copied from interface:MemoryModel
Equivalent to (MutableObjectArray<E>)newArray
(elementType, initialLength).- Specified by:
newObjectArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.initialLength
- the initial length and capacity of the array.- Returns:
- created AlgART array.
- See Also:
-
newUnresizableObjectArray
public <E> UpdatableObjectArray<E> newUnresizableObjectArray(Class<E> elementType, long initialLength) Description copied from interface:MemoryModel
Equivalent to (UpdatableObjectArray<E>)newUnresizableArray
(elementType, initialLength).- Specified by:
newUnresizableObjectArray
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.initialLength
- the length and capacity of the array.- Returns:
- created unresizable AlgART array.
- See Also:
-
newLazyCopy
This implementation returns usual actual copy of the array. More precisely, it is equivalent to the following operator:thisMemoryModel.
newArray
(array.elementType()
, array.length()
).copy
(array);- Specified by:
newLazyCopy
in interfaceMemoryModel
- Parameters:
array
- the source array.- Returns:
- the usual identical copy of the source array.
- Throws:
NullPointerException
- if the argument is null.UnsupportedElementTypeException
- if the element type of the passed array is not supported by this memory model.TooLargeArrayException
- if the length of the passed array is too large for this memory model.
-
newUnresizableLazyCopy
This implementation returns usual actual copy of the array. More precisely, it is equivalent to the following operator:thisMemoryModel.
newUnresizableArray
(array.elementType()
, array.length()
).copy
(array);- Specified by:
newUnresizableLazyCopy
in interfaceMemoryModel
- Parameters:
array
- the source array.- Returns:
- the usual identical unresizable copy of the source array.
- Throws:
NullPointerException
- if the argument is null.UnsupportedElementTypeException
- if the element type of the passed array is not supported by this memory model.TooLargeArrayException
- if the length of the passed array is too large for this memory model.
-
newMatrix
public <T extends UpdatableArray> Matrix<T> newMatrix(Class<T> arraySupertype, Class<?> elementType, long... dim) This method is fully implemented in this class.- Specified by:
newMatrix
in interfaceMemoryModel
- Parameters:
arraySupertype
- the desired type of the underlying array (the generic argument of the matrix type).elementType
- the type of matrix elements.dim
- the dimensions of the matrix.- Returns:
- created matrix.
- Throws:
NullPointerException
- if elementType or dim is null.IllegalArgumentException
- if elementType is void.class, or if arraySupertype isMutableArray
or its subtype, or if the specified dimensions are incorrect: dim.length == 0, dim[n] < 0 for some n, or the product of all specified dimensions is greater than Long.MAX_VALUE.ClassCastException
- if arraySupertype and elementType do not match.UnsupportedElementTypeException
- if elementType is not supported by this memory model.TooLargeArrayException
- if the product of all specified dimensions is too large for this memory model.- See Also:
-
newMatrix
public <T extends UpdatableArray> Matrix<T> newMatrix(long maxSizeAllocatedInJavaMemory, Class<T> arraySupertype, Class<?> elementType, long... dim) This method is fully implemented in this class.- Specified by:
newMatrix
in interfaceMemoryModel
- Parameters:
maxSizeAllocatedInJavaMemory
- the maximal amount of required memory, for which this method just redirects to the same method ofSimpleMemoryModel.getInstance()
arraySupertype
- the desired type of the underlying array (the generic argument of the matrix type).elementType
- the type of matrix elements.dim
- the dimensions of the matrix.- Returns:
- created matrix.
- Throws:
NullPointerException
- if elementType or dim is null.IllegalArgumentException
- if elementType is void.class, or if arraySupertype isMutableArray
or its subtype, or if the specified dimensions are incorrect: dim.length == 0, dim[n] < 0 for some n, or the product of all specified dimensions is greater than Long.MAX_VALUE.ClassCastException
- if arraySupertype and elementType do not match.UnsupportedElementTypeException
- if elementType is not supported by this memory model or, for a matrix smaller than maxSizeAllocatedInJavaMemory, bySimpleMemoryModel
.TooLargeArrayException
- if the product of all specified dimensions is too large for this memory model or, for a matrix smaller than maxSizeAllocatedInJavaMemory, bySimpleMemoryModel
.
-
newMatrix
Description copied from interface:MemoryModel
- Specified by:
newMatrix
in interfaceMemoryModel
- Parameters:
arraySupertype
- the desired type of the underlying array of the new matrix (usually an updatable version of the built-in array of the source matrix).matrix
- the pattern matrix.- Returns:
- new matrix with the same dimensions and element type.
- See Also:
-
newStructuredMatrix
public <T extends UpdatableArray> Matrix<T> newStructuredMatrix(Class<T> arraySupertype, Matrix<?> matrix) Description copied from interface:MemoryModel
Equivalent tonewMatrix
(arraySupertype, matrix).structureLike
(matrix).- Specified by:
newStructuredMatrix
in interfaceMemoryModel
- Parameters:
arraySupertype
- the desired type of the underlying array of the new matrix (usually an updatable version of the built-in array of the source matrix).matrix
- the pattern matrix.- Returns:
- new matrix with the same dimensions, element type and similar ordering elements.
- See Also:
-
newBitMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableBitArray.class, boolean.class, dim).Example of usage:
Matrix<UpdatableBitArray> m = memoryModel.newBitMatrix(100, 100);
- Specified by:
newBitMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newCharMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableCharArray.class, char.class, dim).Example of usage:
Matrix<UpdatableCharArray> m = memoryModel.newCharMatrix(100, 100);
- Specified by:
newCharMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newByteMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableByteArray.class, byte.class, dim).Example of usage:
Matrix<UpdatableByteArray> m = memoryModel.newByteMatrix(100, 100);
- Specified by:
newByteMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newShortMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableShortArray.class, short.class, dim).Example of usage:
Matrix<UpdatableShortArray> m = memoryModel.newShortMatrix(100, 100);
- Specified by:
newShortMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newIntMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableIntArray.class, int.class, dim).Example of usage:
Matrix<UpdatableIntArray> m = memoryModel.newIntMatrix(100, 100);
- Specified by:
newIntMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newLongMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableLongArray.class, long.class, dim).Example of usage:
Matrix<UpdatableLongArray> m = memoryModel.newLongMatrix(100, 100);
- Specified by:
newLongMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newFloatMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableFloatArray.class, float.class, dim).Example of usage:
Matrix<UpdatableFloatArray> m = memoryModel.newFloatMatrix(100, 100);
- Specified by:
newFloatMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newDoubleMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableDoubleArray.class, double.class, dim).Example of usage:
Matrix<UpdatableDoubleArray> m = memoryModel.newDoubleMatrix(100, 100);
- Specified by:
newDoubleMatrix
in interfaceMemoryModel
- Parameters:
dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newObjectMatrix
Description copied from interface:MemoryModel
Equivalent tonewMatrix
(UpdatableObjectArray.class, elementType, dim).Example of usage:
Matrix<UpdatableObjectArray<String>> m = memoryModel.newObjectMatrix(String.class, 100, 100);
- Specified by:
newObjectMatrix
in interfaceMemoryModel
- Parameters:
elementType
- the type of matrix elements.dim
- the dimensions of the matrix.- Returns:
- created matrix.
- See Also:
-
newLazyCopy
Description copied from interface:MemoryModel
- Specified by:
newLazyCopy
in interfaceMemoryModel
- Parameters:
arraySupertype
- the desired type of the underlying array of the new lazy copy (usually an updatable version of the built-in array of the source matrix).matrix
- the source matrix.- Returns:
- the lazy copy of the source matrix, if lazy copying is supported by the memory model, or the usual identical copy of the source matrix in other case.
-
valueOf
Description copied from interface:MemoryModel
Allocates an unresizable AlgART array containing count elements of the specified Java array: array[offset], array[offset + 1], ..., array[offset + count - 1].The returned AlgART array will be "safe" in the sense that no references to the passed Java array are maintained by it. In other words, this method must always allocate a new AlgART array.
This method is equivalent to the following expression:
newUnresizableArray
(elementType, count).setData
(0, array, offset, count), where elementType is the type of array elements (array.getClass().getComponentType()).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Allocates an unresizable AlgART array containing all elements of the specified Java array: array[0], array[1], ..., array[array.length - 1].The returned AlgART array will be "safe" in the sense that no references to the passed Java array are maintained by it. In other words, this method must always allocate a new array.
This method is equivalent to the following expression:
newUnresizableArray
(elementType, len).setData
(0, array), where elementType is the type of array elements (array.getClass().getComponentType()) and len is the length of the passed Java array.- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableBitArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableBitArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableCharArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableCharArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableByteArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableByteArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableShortArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableShortArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableIntArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableIntArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableLongArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableLongArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableFloatArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableFloatArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableDoubleArray)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableDoubleArray)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableObjectArray<E>)valueOf
((Object)array, offset, count).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.offset
- starting position in the source Java array.count
- the length of returned AlgART array.- Returns:
- created unresizable AlgART array.
-
valueOf
Description copied from interface:MemoryModel
Equivalent to (UpdatableObjectArray<E>)valueOf
((Object)array).- Specified by:
valueOf
in interfaceMemoryModel
- Parameters:
array
- the source Java array with elements of constructed AlgART array.- Returns:
- created unresizable AlgART array.
-
isElementTypeSupported
Description copied from interface:MemoryModel
Returns true if this memory model can create arrays with this element type. If it does not support it, creation methods of this memory model will throwUnsupportedElementTypeException
. The result is not defined for void.class.- Specified by:
isElementTypeSupported
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.- Returns:
- true if this memory model supports this element type.
-
areAllPrimitiveElementTypesSupported
public abstract boolean areAllPrimitiveElementTypesSupported()Description copied from interface:MemoryModel
Returns true if this memory model can create arrays with all primitive element types: boolean, char, byte, short, int, long, float, double.- Specified by:
areAllPrimitiveElementTypesSupported
in interfaceMemoryModel
- Returns:
- true if this memory model supports all primitive element types.
- See Also:
-
areAllElementTypesSupported
public abstract boolean areAllElementTypesSupported()Description copied from interface:MemoryModel
Returns true if this memory model can create arrays with all element types. This package offers only one such memory model:SimpleMemoryModel
.- Specified by:
areAllElementTypesSupported
in interfaceMemoryModel
- Returns:
- true if this memory model supports element types.
- See Also:
-
maxSupportedLength
Description copied from interface:MemoryModel
Returnes maximal possible length of arrays with the specified element type supported by this memory model. If the capacity / length passed toMemoryModel.newEmptyArray(Class, long)
/MemoryModel.newArray(Class, long)
methods is greater than the result of this method, they will throwTooLargeArrayException
. The result is not defined it the passed element type is not supported by this memory model (for example, it may be -1).For some memory model, the method may be not enough informative: creation methods may throw
TooLargeArrayException
even if the passed capacity / length is less than the result of this method. Please refer to the documentation of the corresponding memory model to know the precise behavior of this method. In any case, maximal possible array length is restricted by the amount of Java memory.- Specified by:
maxSupportedLength
in interfaceMemoryModel
- Parameters:
elementType
- the type of array elements.- Returns:
- maximal possible length of arrays supported by this memory model.
-
isCreatedBy
Description copied from interface:MemoryModel
Returns true if the passed array was created by this (or identical) memory model.For
SimpleMemoryModel
andBufferMemoryModel
, "identical" means the same memory model.For
LargeMemoryModel
, "identical" means that the memory model is also large and was created with the same instance of thedata file factory
.For
CombinedMemoryModel
, "identical" means that the memory model is also combined and was created with the same instance of thecombiner
.Returns false if the passed argument is null.
- Specified by:
isCreatedBy
in interfaceMemoryModel
- Parameters:
array
- the AlgART array (may be null, than the method returns false).- Returns:
- true if the passed array was created by this memory model.
-