/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.datamodel.types.api;
import de.rcenvironment.core.datamodel.api.TypedDatum;
/**
* A table that is small enough that it can be held in RAM at typical heap sizes. Each cell has its
* individual data type. Valid cell data types are defined by the {@link #isAllowedAsCellType()}
* method. All row and column indices are zero-based.
*
* TODO design: define exact size limit
*
* @author Robert Mischke
* @author Doreen Seider
*/
public interface SmallTableTD extends TypedDatum {
/**
* @param rowIndex zero-based row index of the cell
* @param columnIndex zero-based column index of the cell
* @return {@link TypedDatum} of the cell or <code>null</code> if no such cell exists
*/
TypedDatum getTypedDatumOfCell(int rowIndex, int columnIndex);
/**
* Sets {@link TypedDatum} for cell.
*
* @param typedDatum {@link TypedDatum} to set
* @param rowIndex zero-based row index of the cell
* @param columnIndex zero-based column index of the cell
*/
void setTypedDatumForCell(TypedDatum typedDatum, int rowIndex, int columnIndex);
/**
* @return number of rows of the table
*/
int getRowCount();
/**
* @return number columns of the table
*/
int getColumnCount();
/**
* Returns a new {@link SmallTableTD} which is a sub-table of this one.
*
* @param endRowIndex ending zero-based row index, exclusive.
* @param endColumnIndex ending zero-based column index, exclusive.
* @return sub-table
*/
SmallTableTD getSubTable(int endRowIndex, int endColumnIndex);
/**
* Returns a new {@link SmallTableTD} which is a sub-table of this one.
*
* @param beginRowIndex beginning zero-based row index, inclusive.
* @param beginColumnIndex beginning zero-based column index, inclusive.
* @param endRowIndex ending zero-based row index, exclusive.
* @param endColumnIndex ending zero-based column index, exclusive.
* @return sub-table
*/
SmallTableTD getSubTable(int beginRowIndex, int beginColumnIndex, int endRowIndex, int endColumnIndex);
/**
* @return table entries as array
*/
TypedDatum[][] toArray();
/**
* @param maxLength maximum length of string representation
* @return string representation
*/
String toLengthLimitedString(int maxLength);
}