|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectucar.multiarray.MultiArrayProxy
public class MultiArrayProxy
This MultiArray implementation wraps another MultiArray and an IndexMap to provide a different view of the wrapped MultiArray. Indices passed to access methods are passed through a chain of mappings.
MultiArray
,
IndexMap
Constructor Summary | |
---|---|
MultiArrayProxy(MultiArray delegate,
IndexMap im)
Construct a new proxy. |
Method Summary | |
---|---|
void |
copyin(int[] origin,
MultiArray data)
Aggregate write access. |
MultiArray |
copyout(int[] origin,
int[] shape)
Aggregate read access. |
java.lang.Object |
get(int[] index)
Get (read) the array element at index. |
boolean |
getBoolean(int[] index)
Get the array element at index, as a boolean. |
byte |
getByte(int[] index)
Get the array element at index, as a byte. |
char |
getChar(int[] index)
Get the array element at index, as a char. |
java.lang.Class |
getComponentType()
Returns the Class object representing the component type of the array. |
double |
getDouble(int[] index)
Get the array element at index, as a double. |
float |
getFloat(int[] index)
Get the array element at index, as a float. |
int |
getInt(int[] index)
Get the array element at index, as an int. |
int[] |
getLengths()
Returns the shape of the backing MultiArray as transformed by the dimensionsInverseMap() method of
the IndexMap. |
long |
getLong(int[] index)
Get the array element at index, as a long. |
int |
getRank()
Returns the number of dimensions of the backing MultiArray, as transformed by the rankInverseMap() method of
the IndexMap. |
short |
getShort(int[] index)
Get the array element at index, as a short. |
boolean |
isScalar()
Convenience interface; return true
if and only if the rank is zero. |
boolean |
isUnlimited()
Returns true if and only if the effective dimension
lengths can change. |
static void |
main(java.lang.String[] args)
|
void |
set(int[] index,
java.lang.Object value)
Length of index must equal rank() of this. |
void |
setBoolean(int[] index,
boolean value)
Set the array element at index to the specified boolean value. |
void |
setByte(int[] index,
byte value)
Set the array element at index to the specified byte value. |
void |
setChar(int[] index,
char value)
Set the array element at index to the specified char value. |
void |
setDouble(int[] index,
double value)
Set the array element at index to the specified double value. |
void |
setFloat(int[] index,
float value)
Set the array element at index to the specified float value. |
void |
setInt(int[] index,
int value)
Set the array element at index to the specified int value. |
void |
setLong(int[] index,
long value)
Set the array element at index to the specified long value. |
void |
setShort(int[] index,
short value)
Set the array element at index to the specified short value. |
java.lang.Object |
toArray()
Returns a new array containing all of the elements in this MultiArray. |
java.lang.Object |
toArray(java.lang.Object dst,
int[] origin,
int[] shape)
Returns an array containing elements of this MultiArray specified by origin and shape, possibly converting the component type. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public MultiArrayProxy(MultiArray delegate, IndexMap im)
delegate
- MultiArray backing the proxy view provided.im
- IndexMap defining the proxy view.Method Detail |
---|
public java.lang.Class getComponentType()
getComponentType
in interface MultiArrayInfo
Class.getComponentType()
public int getRank()
rankInverseMap()
method of
the IndexMap.
getRank
in interface MultiArrayInfo
public int[] getLengths()
dimensionsInverseMap()
method of
the IndexMap.
getLengths
in interface MultiArrayInfo
public boolean isUnlimited()
true
if and only if the effective dimension
lengths can change.
isUnlimited
in interface MultiArrayInfo
true
iff this can growpublic boolean isScalar()
true
if and only if the rank is zero.
isScalar
in interface MultiArrayInfo
true
iff rank == 0public java.lang.Object get(int[] index) throws java.io.IOException
Accessor
get
in interface Accessor
index
- MultiArray index
index
Length of index must equal rank() of this.
Values of index components must be less than corresponding
values from getLengths().
java.io.IOException
public boolean getBoolean(int[] index) throws java.io.IOException
Accessor
getBoolean
in interface Accessor
java.io.IOException
Accessor.get(int[])
public char getChar(int[] index) throws java.io.IOException
Accessor
getChar
in interface Accessor
java.io.IOException
Accessor.get(int[])
public byte getByte(int[] index) throws java.io.IOException
Accessor
getByte
in interface Accessor
java.io.IOException
Accessor.get(int[])
public short getShort(int[] index) throws java.io.IOException
Accessor
getShort
in interface Accessor
java.io.IOException
Accessor.get(int[])
public int getInt(int[] index) throws java.io.IOException
Accessor
getInt
in interface Accessor
java.io.IOException
Accessor.get(int[])
public long getLong(int[] index) throws java.io.IOException
Accessor
getLong
in interface Accessor
java.io.IOException
Accessor.get(int[])
public float getFloat(int[] index) throws java.io.IOException
Accessor
getFloat
in interface Accessor
java.io.IOException
Accessor.get(int[])
public double getDouble(int[] index) throws java.io.IOException
Accessor
getDouble
in interface Accessor
java.io.IOException
Accessor.get(int[])
public void set(int[] index, java.lang.Object value) throws java.io.IOException
set
in interface Accessor
index
- MultiArray indexvalue
- the new value.
java.io.IOException
public void setBoolean(int[] index, boolean value) throws java.io.IOException
Accessor
setBoolean
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setChar(int[] index, char value) throws java.io.IOException
Accessor
setChar
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setByte(int[] index, byte value) throws java.io.IOException
Accessor
setByte
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setShort(int[] index, short value) throws java.io.IOException
Accessor
setShort
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setInt(int[] index, int value) throws java.io.IOException
Accessor
setInt
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setLong(int[] index, long value) throws java.io.IOException
Accessor
setLong
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setFloat(int[] index, float value) throws java.io.IOException
Accessor
setFloat
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public void setDouble(int[] index, double value) throws java.io.IOException
Accessor
setDouble
in interface Accessor
java.io.IOException
Accessor.set(int[], java.lang.Object)
public MultiArray copyout(int[] origin, int[] shape) throws java.io.IOException
Accessor
It is easier to implement than to specify :-).
The main reason to implement this instead of using the equivalent proxy is for remote or file access.
assert(origin[ii] + shape[ii] <= lengths[ii]);
copyout
in interface Accessor
origin
- int array specifying the starting index.shape
- int array specifying the extents in each
dimension. This becomes the shape of the return.
java.io.IOException
Accessor.copyout(int[], int[])
public void copyin(int[] origin, MultiArray data) throws java.io.IOException
Accessor
Hopefully this member can be optimized in various situations.
assert(origin[ii] + (source.getLengths())[ii]
<= (getLengths())[ii]);
copyin
in interface Accessor
origin
- int array specifying the starting index.data
- MultiArray with the same componentType as
this and shape smaller than
this.getLengths() - origin
java.io.IOException
Accessor.copyin(int[], ucar.multiarray.MultiArray)
public java.lang.Object toArray() throws java.io.IOException
Accessor
This method acts as bridge between array-based and MultiArray-based APIs.
This method is functionally equivalent to
Object anArray = Array.newInstance(getComponentType(), 1); int [] origin = new int[getRank()] int [] shape = getDimensions(); return toArray(anArray, origin, shape);
toArray
in interface Accessor
java.io.IOException
TODO: optimize?
public java.lang.Object toArray(java.lang.Object dst, int[] origin, int[] shape) throws java.io.IOException
Accessor
The anArray argument should be an array. If it is large enough to contain the output, it is used and no new storage is allocated. Otherwise, new storage is allocated with the same component type as the argument, and the data is copied into it.
This method acts as bridge between array-based and MultiArray-based APIs.
This method is similar to copyout(origin, shape).toArray(), but avoids a copy operation and (potentially) an allocation.
NOTE: Implementation of type conversion is deferred until
JDK 1.2. Currently, the componentType of anArray
must be the same as this
toArray
in interface Accessor
java.io.IOException
TODO: optimize?
public static void main(java.lang.String[] args)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |