DPJRuntime
Class DPJArrayDouble<region R>

java.lang.Object
  extended by DPJRuntime.DPJArrayDouble<region R>
Type Parameters:
R - The region of a cell of this DPJArrayDouble

public class DPJArrayDouble<region R>
extends java.lang.Object

The DPJArray class, specialized to double.

The DPJArrayDouble class wraps and provides a "view" of an ordinary Java array of double. In addition to array-element access, the DPJArrayDouble class supports the creation of a subarray, which is a contiguous slice of the original array. The subarray itself is a new DPJArrayDouble object. Both the original DPJArrayDouble and the subarray wrap the same underlying Java array.

A DPJArrayDouble stores a start position (indexed into the underlying array) and a length. Accesses to the DPJArrayDouble are translated into accesses into the underlying array, offset by the start position. They are bounds-checked against the length of the DPJArrayDouble. For example:

 // Create a Java array a of 10 double
 double[] a = new double[10];
 // Wrap a in a DPJArrayDouble
 DPJArrayDouble A = new DPJArrayDouble(a);
 // Create a subarray of A
 DPJArrayDouble B = A.subarray(5,2);
 // Store value 1 into position 5 of a
 B.put(0,1);
 // Error:  Out of bounds
 B.put(3,5);
 


Field Summary
 int length
          The number of elements in the DPJArrayDouble
 int start
          The start index for indexing into the underlying array
 
Constructor Summary
DPJArrayDouble(double[]<R> elts)
          Creates a DPJArrayDouble that wraps the given Java array.
DPJArrayDouble(int length)
          Creates a DPJArrayDouble of the specified length, wrapping a freshly created Java array with the same length.
 
Method Summary
 double get(int idx)
          Returns the value stored at index idx of this DPJArrayDouble.
 void put(int idx, double val)
          Replaces the value at index idx of this DPJArrayDouble with value val.
 DPJArrayDouble<R> subarray(int start, int length)
          Creates and returns a new DPJArrayDouble starting at index start with length length that wraps the same underlying array as this DPJArrayDouble.
 void swap(int i, int j)
          Swaps the values at indices i and j of this DPJArrayDouble.
 double[]<R> toArray()
          Returns the underlying Java array for this DPJArrayDouble.
 java.lang.String toString()
          Returns a string representation of this DPJArrayDouble.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

start

public final int start
The start index for indexing into the underlying array


length

public final int length
The number of elements in the DPJArrayDouble

Constructor Detail

DPJArrayDouble

public DPJArrayDouble(int length)
               pure
Creates a DPJArrayDouble of the specified length, wrapping a freshly created Java array with the same length.

Parameters:
length - The length of the DPJArrayDouble

DPJArrayDouble

public DPJArrayDouble(double[]<R> elts)
               pure
Creates a DPJArrayDouble that wraps the given Java array.

Parameters:
elts - The Java array to wrap
Method Detail

get

public double get(int idx)
           reads  R
Returns the value stored at index idx of this DPJArrayDouble.

Throws ArrayIndexOutOfBoundsException if idx is outside the bounds of this DPJArrayDouble (even if it is in bounds for the underlying array).

Parameters:
idx - Index of value to return
return - Value stored at idx

put

public void put(int idx,
                double val)
         writes R
Replaces the value at index idx of this DPJArrayDouble with value val.

Throws ArrayIndexOutOfBoundsException if idx is outside the bounds of this DPJArrayDouble (even if it is in bounds for the underlying array).

Parameters:
idx - Index of value to replace
val - New value

subarray

public DPJArrayDouble<R> subarray(int start,
                                  int length)
                           pure
Creates and returns a new DPJArrayDouble starting at index start with length length that wraps the same underlying array as this DPJArrayDouble. Index i of the new DPJArrayDouble refers to the same cell of the underlying array as index start+i of this.

Throws ArrayIndexOutOfBoundsException if the interval start,start+length-1] is not in bounds for this DPJArrayDouble.

Parameters:
start - Start index for the subarray
length - Length of the subarray
Returns:
Subarray of this DPJArrayDouble defined by start and length

toArray

public double[]<R> toArray()
                          pure
Returns the underlying Java array for this DPJArrayDouble.

Returns:
The underlying Java array

toString

public java.lang.String toString()
                          reads  R
Returns a string representation of this DPJArrayDouble.

Overrides:
toString in class java.lang.Object
Returns:
A string representation

swap

public void swap(int i,
                 int j)
          writes R
Swaps the values at indices i and j of this DPJArrayDouble.

Parameters:
i - First index to swap
j - Second index to swap