ptolemy.data
Class LongMatrixToken

java.lang.Object
  extended by ptolemy.data.Token
      extended by ptolemy.data.MatrixToken
          extended by ptolemy.data.LongMatrixToken
All Implemented Interfaces:
java.io.Serializable

public class LongMatrixToken
extends MatrixToken

A token that contains a 2-D long matrix.

Since:
Ptolemy II 0.2
Version:
$Id: LongMatrixToken.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Yuhong Xiong, Steve Neuendorffer
See Also:
Serialized Form
Accepted Rating:
Yellow (cxh)
Proposed Rating:
Green (neuendor)

Field Summary
private  int _columnCount
           
private  int _rowCount
           
private  long[] _value
           
 
Fields inherited from class ptolemy.data.MatrixToken
_nils, DO_COPY, DO_NOT_COPY
 
Fields inherited from class ptolemy.data.Token
NIL
 
Constructor Summary
LongMatrixToken()
          Construct an LongMatrixToken with a one by one matrix.
LongMatrixToken(long[][] value)
          Construct a LongMatrixToken with the specified 2-D matrix.
LongMatrixToken(long[][] value, int copy)
          Construct a LongMatrixToken with the specified 2-D matrix.
LongMatrixToken(long[] value, int rows, int columns)
          Construct a LongMatrixToken with the specified 1-D matrix.
LongMatrixToken(long[] value, int rows, int columns, int copy)
          Construct a LongMatrixToken with the specified 1-D matrix.
LongMatrixToken(java.lang.String init)
          Construct a LongMatrixToken from the specified string.
LongMatrixToken(Token[] tokens, int rows, int columns)
          Construct an LongMatrixToken from the specified array of tokens.
 
Method Summary
protected  MatrixToken _add(MatrixToken rightArgument)
          Return a new token whose value is the value of the argument Token added to the value of this Token.
protected  MatrixToken _addElement(Token rightArgument)
          Return a new token whose value is the value of the argument Token added to the value of each element of this Token.
protected  MatrixToken _divideElement(Token rightArgument)
          Return a new token whose elements are the result of dividing the elements of this token by the argument.
protected  long[] _getInternalLongArray()
          Return a reference to the internal 2-D matrix of longs that represents this Token.
private  void _initialize(long[][] value, int copy)
           
protected  MatrixToken _moduloElement(Token rightArgument)
          Return a new token whose elements are the remainders of the elements of this token when divided by the argument.
protected  MatrixToken _multiply(MatrixToken rightArgument)
          Return a new token whose value is the value of this token multiplied by the value of the argument token.
protected  MatrixToken _multiplyElement(Token rightArgument)
          Return a new token whose value is the value of this token multiplied by the value of the argument scalar token.
protected  MatrixToken _subtract(MatrixToken rightArgument)
          Return a new token whose value is the value of the argument token subtracted from the value of this token.
protected  MatrixToken _subtractElement(Token rightArgument)
          Return a new token whose value is the value of the argument Token subtracted from the value of each element of this Token.
protected  MatrixToken _subtractElementReverse(Token rightArgument)
          Return a new token whose value is the value of the argument Token subtracted from the value of each element of this Token.
static Token convert(ScalarToken token, int size)
          Convert the specified scalar token into an instance of LongMatrixToken.
static LongMatrixToken convert(Token token)
          Convert the specified token into an instance of LongMatrixToken.
 MatrixToken crop(int rowStart, int colStart, int rowSpan, int colSpan)
          Return a new matrix that is a sub-matrix of this matrix.
 boolean equals(java.lang.Object object)
          Return true if the argument is an instance of LongMatrixToken of the same dimensions and the corresponding elements of the matrices are equal.
 int getColumnCount()
          Return the number of columns in the matrix.
 Token getElementAsToken(int row, int column)
          Return the element of the matrix at the specified row and column in a LongToken.
 long getElementAt(int row, int column)
          Return the element of the contained matrix at the specified row and column.
 Type getElementType()
          Return the Type of the tokens contained in this matrix token.
 int getRowCount()
          Return the number of rows in the matrix.
 Type getType()
          Return the type of this token.
 int hashCode()
          Return a hash code value for this token.
 MatrixToken join(MatrixToken[][] matrices)
          Join a matrix of matrices into a single matrix by tiling.
 long[][] longMatrix()
          Return the content in the token as a 2-D long matrix.
 Token one()
          Return a new Token representing the left multiplicative identity.
 Token oneRight()
          Return a new Token representing the right multiplicative identity.
 MatrixToken[][] split(int[] rows, int[] columns)
          Split this matrix into multiple matrices.
 Token zero()
          Return a new Token representing the additive identity.
 
Methods inherited from class ptolemy.data.MatrixToken
_elementIsNil, _isCloseTo, _isEqualTo, add, addReverse, arrayToMatrix, arrayToMatrix, arrayToMatrixReturnType, booleanMatrix, complexMatrix, create, createSequence, createSequenceReturnType, createTokenSequence, determineSequenceLength, divide, divideReverse, doubleMatrix, fixMatrix, intMatrix, isCloseTo, isEqualTo, matrixToArray, matrixToArrayReturnType, modulo, moduloReverse, multiply, multiplyReverse, subtract, subtractReverse, toArray, toArrayColumnMajor, toArrayReturnType, toString
 
Methods inherited from class ptolemy.data.Token
isCloseTo, isNil, notSupportedConversionMessage, notSupportedIncomparableConversionMessage, notSupportedIncomparableMessage, notSupportedMessage, notSupportedNullNilStringMessage, pow, zeroReturnType
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

_value

private long[] _value

_rowCount

private int _rowCount

_columnCount

private int _columnCount
Constructor Detail

LongMatrixToken

public LongMatrixToken()
Construct an LongMatrixToken with a one by one matrix. The only element in the matrix has value 0


LongMatrixToken

public LongMatrixToken(long[] value,
                       int rows,
                       int columns)
                throws IllegalActionException
Construct a LongMatrixToken with the specified 1-D matrix. Make a copy of the matrix and store the copy, so that changes on the specified matrix after this token is constructed will not affect the content of this token.

Parameters:
value - The 1-D matrix.
rows - The number of rows.
columns - The number of columns.
Throws:
IllegalActionException - If the specified matrix is null.

LongMatrixToken

public LongMatrixToken(long[] value,
                       int rows,
                       int columns,
                       int copy)
                throws IllegalActionException
Construct a LongMatrixToken with the specified 1-D matrix. If copy is DO_COPY, make a copy of the matrix and store the copy, so that changes on the specified matrix after this token is constructed will not affect the content of this token. If copy is DO_NOT_COPY, just reference the matrix (do not copy its contents). This saves some time and memory. The argument matrix should NOT be modified after this constructor is called to preserve immutability.

Parameters:
value - The 1-D matrix.
rows - The number of rows.
columns - The number of columns.
copy - If this parameter is MatrixToken.DO_COPY, then the value matrix is copied. If this parameter is MatrixToken.DO_NOT_COPY, then the value matrix is NOT copied and should not be modified after construction of this object.
Throws:
IllegalActionException - If the specified matrix is null.

LongMatrixToken

public LongMatrixToken(long[][] value)
                throws IllegalActionException
Construct a LongMatrixToken with the specified 2-D matrix. This method makes a copy of the matrix and stores the copy, so changes on the specified matrix after this token is constructed will not affect the content of this token.

Parameters:
value - The 2-D matrix used to initialize this object.
Throws:
IllegalActionException - If the specified matrix is null.

LongMatrixToken

public LongMatrixToken(long[][] value,
                       int copy)
                throws IllegalActionException
Construct a LongMatrixToken with the specified 2-D matrix. If copy is DO_COPY, make a copy of the matrix and store the copy, so that changes on the specified matrix after this token is constructed will not affect the content of this token. If copy is DO_NOT_COPY, just reference the matrix (do not copy its contents). This saves some time and memory. The argument matrix should NOT be modified after this constructor is called to preserve immutability.

Since the DO_NOT_COPY option requires some care, this constructor should be protected.

Parameters:
value - The 2-D matrix used to initialize this object.
copy - If this parameter is MatrixToken.DO_COPY, then the value matrix is copied. If this parameter is MatrixToken.DO_NOT_COPY, then the value matrix is NOT copied and should not be modified after construction of this object.
Throws:
IllegalActionException - If the specified matrix is null.

LongMatrixToken

public LongMatrixToken(java.lang.String init)
                throws IllegalActionException
Construct a LongMatrixToken from the specified string.

Parameters:
init - A string expression of a 2-D long matrix.
Throws:
IllegalActionException - If the string does not contain a parsable 2-D long matrix.

LongMatrixToken

public LongMatrixToken(Token[] tokens,
                       int rows,
                       int columns)
                throws IllegalActionException
Construct an LongMatrixToken from the specified array of tokens. The tokens in the array must be scalar tokens convertible into integers.

Parameters:
tokens - The array of tokens, which must contains rows*columns ScalarTokens.
rows - The number of rows in the matrix to be created.
columns - The number of columns in the matrix to be created.
Throws:
IllegalActionException - If the array of tokens is null, or the length of the array is not correct, or if one of the elements of the array is null, or if one of the elements of the array cannot be losslessly converted to a long.
Method Detail

convert

public static LongMatrixToken convert(Token token)
                               throws IllegalActionException
Convert the specified token into an instance of LongMatrixToken. This method does lossless conversion. If the argument is already an instance of LongMatrixToken, it is returned without any change. Otherwise, if the argument is below LongMatrixToken in the type hierarchy, it is converted to an instance of LongMatrixToken or one of the subclasses of LongMatrixToken and returned. If none of the above condition is met, an exception is thrown.

Parameters:
token - The token to be converted to a LongMatrixToken.
Returns:
A LongMatrixToken
Throws:
IllegalActionException - If the conversion cannot be carried out.

convert

public static Token convert(ScalarToken token,
                            int size)
                     throws IllegalActionException
Convert the specified scalar token into an instance of LongMatrixToken. The resulting matrix will be square, with the number of rows and columns equal to the given size. This method does lossless conversion.

Parameters:
token - The token to be converted to a LongMatrixToken.
size - The number of rows and columns of the resulting matrix.
Returns:
A LongMatrixToken
Throws:
IllegalActionException - If the conversion cannot be carried out.

crop

public MatrixToken crop(int rowStart,
                        int colStart,
                        int rowSpan,
                        int colSpan)
                 throws IllegalActionException
Return a new matrix that is a sub-matrix of this matrix.

Overrides:
crop in class MatrixToken
Parameters:
rowStart - The row to start on.
colStart - The column to start on.
rowSpan - The number of rows to copy.
colSpan - The number of columns to copy.
Returns:
a sub-matrix of this matrix.
Throws:
IllegalActionException - If the returned matrix is empty or if the specified parameters result in out of bounds accesses.

equals

public boolean equals(java.lang.Object object)
Return true if the argument is an instance of LongMatrixToken of the same dimensions and the corresponding elements of the matrices are equal.

Overrides:
equals in class java.lang.Object
Parameters:
object - An instance of Object.
Returns:
True if the argument is an instance of LongMatrixToken of the same dimensions and the corresponding elements of the matrices are equal.

getColumnCount

public int getColumnCount()
Return the number of columns in the matrix.

Specified by:
getColumnCount in class MatrixToken
Returns:
The number of columns in the matrix.

getElementAsToken

public Token getElementAsToken(int row,
                               int column)
                        throws java.lang.ArrayIndexOutOfBoundsException
Return the element of the matrix at the specified row and column in a LongToken.

Specified by:
getElementAsToken in class MatrixToken
Parameters:
row - The row index of the desired element.
column - The column index of the desired element.
Returns:
A LongToken containing the matrix element.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified row or column number is outside the range of the matrix.

getElementAt

public long getElementAt(int row,
                         int column)
Return the element of the contained matrix at the specified row and column.

Parameters:
row - The row index of the desired element.
column - The column index of the desired element.
Returns:
The long at the specified matrix entry.
Throws:
java.lang.ArrayIndexOutOfBoundsException - If the specified row or column number is outside the range of the matrix.

getElementType

public Type getElementType()
Return the Type of the tokens contained in this matrix token. This must be a type representing a scalar token.

Specified by:
getElementType in class MatrixToken
Returns:
BaseType.LONG.

getRowCount

public int getRowCount()
Return the number of rows in the matrix.

Specified by:
getRowCount in class MatrixToken
Returns:
The number of rows in the matrix.

getType

public Type getType()
Return the type of this token.

Overrides:
getType in class Token
Returns:
BaseType.LONG_MATRIX

hashCode

public int hashCode()
Return a hash code value for this token. This method returns the sum of the elements, casted to integer.

Overrides:
hashCode in class java.lang.Object
Returns:
A hash code value for this token.

join

public MatrixToken join(MatrixToken[][] matrices)
                 throws IllegalActionException
Join a matrix of matrices into a single matrix by tiling. All matrices in the matrix must be of the same type, the same type as this matrix. But none of them needs to actually be this matrix. This base class simply throws an exception. Derived classes provide the implementation. The number of columns in the resulting matrix is the sum of the number of columns in the first row of the argument. The number of rows in the resulting matrix is the sum of the number of rows in the first column of the argument. The matrices are copied into the result starting at the position determined by the first row or column. If the matrices overlap, then while copying left to right, top-to-bottom, data will be overwritten. If there are gaps, the resulting matrix will be filled with zeros.

Overrides:
join in class MatrixToken
Parameters:
matrices - A two-dimensional array of matrix tokens.
Returns:
A new matrix token of the same type as the elements in the input matrix of matrix tokens.
Throws:
IllegalActionException - If the types of the matrices in the input are not all the same, or if tiling fails due to size incompatibilities, or if the input matrix has no tokens.

longMatrix

public long[][] longMatrix()
Return the content in the token as a 2-D long matrix. The returned matrix is a copy so the caller is free to modify it.

Overrides:
longMatrix in class MatrixToken
Returns:
A 2-D long matrix.

one

public Token one()
Return a new Token representing the left multiplicative identity. The returned token contains an identity matrix whose dimensions are the same as the number of rows of the matrix contained in this token.

Overrides:
one in class Token
Returns:
A new LongMatrixToken containing the left multiplicative identity.

oneRight

public Token oneRight()
Return a new Token representing the right multiplicative identity. The returned token contains an identity matrix whose dimensions are the same as the number of columns of the matrix contained in this token.

Overrides:
oneRight in class MatrixToken
Returns:
A new LongMatrixToken containing the right multiplicative identity.

split

public MatrixToken[][] split(int[] rows,
                             int[] columns)
Split this matrix into multiple matrices. See the base class for documentation.

Overrides:
split in class MatrixToken
Parameters:
rows - The number of rows per submatrix.
columns - The number of columns per submatrix.
Returns:
An array of matrix tokens.

zero

public Token zero()
Return a new Token representing the additive identity. The returned token contains a matrix whose elements are all zero, and the size of the matrix is the same as the matrix contained in this token.

Overrides:
zero in class Token
Returns:
A new LongMatrixToken containing the additive identity.

_add

protected MatrixToken _add(MatrixToken rightArgument)
                    throws IllegalActionException
Return a new token whose value is the value of the argument Token added to the value of this Token. It is assumed that the type of the argument is LongMatrixToken.

Overrides:
_add in class MatrixToken
Parameters:
rightArgument - The token to add to this token.
Returns:
A new LongMatrixToken containing the result.
Throws:
IllegalActionException - If the units are not compatible, or this operation is not supported by the derived class.

_addElement

protected MatrixToken _addElement(Token rightArgument)
                           throws IllegalActionException
Return a new token whose value is the value of the argument Token added to the value of each element of this Token. It is assumed that the type of the argument is the same as the type of each element of this class or is a matrix with one element.

Overrides:
_addElement in class MatrixToken
Parameters:
rightArgument - The token to add to this token.
Returns:
A new Token containing the result.
Throws:
IllegalActionException - If this operation is not supported by the derived class.

_divideElement

protected MatrixToken _divideElement(Token rightArgument)
                              throws IllegalActionException
Return a new token whose elements are the result of dividing the elements of this token by the argument. It is assumed that the type of the argument is the same as the type of each element of this class or is a matrix with one element.

Overrides:
_divideElement in class MatrixToken
Parameters:
rightArgument - The token that divides this token.
Returns:
A new Token containing the result.
Throws:
IllegalActionException - If this operation is not supported by the derived class.

_getInternalLongArray

protected long[] _getInternalLongArray()
Return a reference to the internal 2-D matrix of longs that represents this Token. Because no copying is done, the contents must NOT be modified to preserve the immutability of Token.

Returns:
A 2-D long matrix.

_moduloElement

protected MatrixToken _moduloElement(Token rightArgument)
                              throws IllegalActionException
Return a new token whose elements are the remainders of the elements of this token when divided by the argument. It is guaranteed by the caller that the type of the argument is the same as the type of each element of this class or is a matrix with one element.

Overrides:
_moduloElement in class MatrixToken
Parameters:
rightArgument - The token that performs modulo on this token.
Returns:
A new Token containing the result.
Throws:
IllegalActionException - If this operation is not supported by the derived class.

_multiply

protected MatrixToken _multiply(MatrixToken rightArgument)
                         throws IllegalActionException
Return a new token whose value is the value of this token multiplied by the value of the argument token. It is assumed that the type of the argument is LongMatrixToken.

Overrides:
_multiply in class MatrixToken
Parameters:
rightArgument - The token to multiply this token by.
Returns:
A new LongMatrixToken containing the result.
Throws:
IllegalActionException - If the units are not compatible, or this operation is not supported by the derived class.

_multiplyElement

protected MatrixToken _multiplyElement(Token rightArgument)
                                throws IllegalActionException
Return a new token whose value is the value of this token multiplied by the value of the argument scalar token.

Overrides:
_multiplyElement in class MatrixToken
Parameters:
rightArgument - The token to multiply this token by.
Returns:
A new LongMatrixToken containing the result.
Throws:
IllegalActionException - If this method is not supported by the derived class.

_subtract

protected MatrixToken _subtract(MatrixToken rightArgument)
                         throws IllegalActionException
Return a new token whose value is the value of the argument token subtracted from the value of this token. It is assumed that the type of the argument is LongMatrixToken.

Overrides:
_subtract in class MatrixToken
Parameters:
rightArgument - The token to subtract from this token.
Returns:
A new LongMatrixToken containing the result.
Throws:
IllegalActionException - If the units are not compatible, or this operation is not supported by the derived class.

_subtractElement

protected MatrixToken _subtractElement(Token rightArgument)
                                throws IllegalActionException
Return a new token whose value is the value of the argument Token subtracted from the value of each element of this Token. It is assumed that the type of the argument is the same as the type of each element of this class or is a matrix with one element.

Overrides:
_subtractElement in class MatrixToken
Parameters:
rightArgument - The token to subtract from this token.
Returns:
A new Token containing the result.
Throws:
IllegalActionException - If this operation is not supported by the derived class.

_subtractElementReverse

protected MatrixToken _subtractElementReverse(Token rightArgument)
                                       throws IllegalActionException
Return a new token whose value is the value of the argument Token subtracted from the value of each element of this Token. It is assumed that the type of the argument is the same as the type of each element of this class or is a matrix with one element.

Overrides:
_subtractElementReverse in class MatrixToken
Parameters:
rightArgument - The token to subtract from this token.
Returns:
A new Token containing the result.
Throws:
IllegalActionException - If this operation is not supported by the derived class.

_initialize

private void _initialize(long[][] value,
                         int copy)