gov.sandia.cognition.math.matrix.custom.BaseMatrixEntry Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of cognitive-foundry Show documentation
Show all versions of cognitive-foundry Show documentation
A single jar with all the Cognitive Foundry components.
/*
* File: BaseMatrixEntry.java
* Authors: Jeremy D. Wendt
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright 2015, Sandia Corporation. Under the terms of Contract
* DE-AC04-94AL85000, there is a non-exclusive license for use of this work by
* or on behalf of the U.S. Government. Export of this program may require a
* license from the United States Government. See CopyrightHistory.txt for
* complete details.
*/
package gov.sandia.cognition.math.matrix.custom;
import gov.sandia.cognition.math.matrix.MatrixEntry;
/**
* Implementation is the same for all matrix classes. It seemed less dangerous
* to be a little slower in the getValue/setValue methods than to replicate the
* logic for those operations for all matrix types herein as well as in the
* actual matrices.
*
* @author Jeremy D. Wendt
* @since 4.0.0
*/
class BaseMatrixEntry
implements MatrixEntry
{
/**
* The matrix to represent.
*/
private BaseMatrix matrix;
/**
* The row index in the matrix.
*/
private int rowIndex;
/**
* The column index in the matrix.
*/
private int columnIndex;
/**
* Unsupported empty constructor.
*/
private BaseMatrixEntry()
{
throw new UnsupportedOperationException("The null constructor is not "
+ "valid");
}
/**
* Initializes the values for this entry.
*
* @param matrix the matrix
* @param rowIndex the row index
* @param columnIndex the column index
*/
BaseMatrixEntry(
final BaseMatrix matrix,
final int rowIndex,
final int columnIndex)
{
super();
this.matrix = matrix;
this.rowIndex = rowIndex;
this.columnIndex = columnIndex;
}
@Override
final public int getRowIndex()
{
return this.rowIndex;
}
/**
* Updates this to point to a new location in the matrix (if input is within
* bounds).
*
* @param rowIndex The new row index
* @throws IllegalArgumentException if the input rowIndex is out of bounds
*/
@Override
final public void setRowIndex(
final int rowIndex)
{
if ((rowIndex < 0) || (rowIndex >= this.matrix.getNumRows()))
{
throw new IllegalArgumentException("Unable to set row index "
+ "beyond bounds: " + rowIndex + " not within [0, "
+ matrix.getNumRows() + ")");
}
this.rowIndex = rowIndex;
}
@Override
final public int getColumnIndex()
{
return this.columnIndex;
}
/**
* Updates this to point to a new location in the matrix (if input is within
* bounds).
*
* @param columnIndex The new column index
* @throws IllegalArgumentException if the input columnIndex is out of
* bounds
*/
@Override
final public void setColumnIndex(
final int columnIndex)
{
if ((columnIndex < 0) || (columnIndex >= matrix.getNumColumns()))
{
throw new IllegalArgumentException("Unable to set row index "
+ "beyond bounds: " + columnIndex + " not within [0, "
+ matrix.getNumColumns() + ")");
}
this.columnIndex = columnIndex;
}
@Override
final public double getValue()
{
return this.matrix.get(this.rowIndex, this.columnIndex);
}
/**
* Sets the value stored at the current location in the matrix
*
* @param value the value to set
*/
@Override
final public void setValue(
final double value)
{
this.matrix.setElement(this.rowIndex, this.columnIndex, value);
}
}