DPJRuntime
Class DPJArray<type T,region R>

java.lang.Object
  extended by DPJRuntime.DPJArray<type T,region R>
Type Parameters:
T - The type of an element of this DPJArray
R - The region of a cell of this DPJArray

public class DPJArray<type T,region R>
extends java.lang.Object

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

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

 // Create a Java array a of 10 Integers
 Integer[] a = new Integer[10];
 // Wrap a in a DPJArray
 DPJArray<Integer> A = new DPJArray<Integer>(a)
 // Create a subarray of A
 DPJArray<Integer> 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 DPJArray
 int start
          The start index for indexing into the underlying array
 
Constructor Summary
DPJArray(int length)
          Creates a DPJArray of the specified length, wrapping a freshly created Java array with the same length.
DPJArray(T[]<R> elts)
          Creates a DPJArray that wraps the given Java array.
 
Method Summary
 T get(int idx)
          Returns the value stored at index idx of this DPJArray.
 void put(int idx, T val)
          Replaces the value at index idx of this DPJArray with value val.
 DPJArray<T,R> subarray(int start, int length)
          Creates and returns a new DPJArray starting at index start with length length that wraps the same underlying array as this DPJArray.
 void swap(int i, int j)
          Swaps the values at indices i and j of this DPJArray.
 T[]<R> toArray()
          Returns the underlying Java array for this DPJArray.
 java.lang.String toString()
          Returns a string representation of this DPJArray.
 
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 DPJArray

Constructor Detail

DPJArray

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

Parameters:
length - The length of the DPJArray

DPJArray

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

Parameters:
elts - The Java array to wrap
Method Detail

get

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

Throws ArrayIndexOutOfBoundsException if idx is outside the bounds of this DPJArray (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,
                T val)
         writes R
Replaces the value at index idx of this DPJArray with value val.

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

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

subarray

public DPJArray<T,R> subarray(int start,
                              int length)
                       pure
Creates and returns a new DPJArray starting at index start with length length that wraps the same underlying array as this DPJArray. Index i of the new DPJArray 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 DPJArray.

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

toArray

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

Returns:
The underlying Java array

toString

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

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 DPJArray.

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