1 /** 2 * Copyright (C) 2010-14 pvmanager developers. See COPYRIGHT.TXT 3 * All rights reserved. Use is subject to license terms. See LICENSE.TXT 4 */ 5 package org.epics.vtype; 6 7 import java.util.List; 8 import org.epics.util.array.ListNumber; 9 10 /** 11 * A table. Tables are collections of columns, each of which is composed 12 * of a String representing the name of the column and a list of a particular 13 * type (all elements of the same column must be of the same type). 14 * 15 * @author carcassi 16 */ 17 public interface VTable extends VType { 18 19 /** 20 * The number of columns in the table. 21 * 22 * @return the number of columns 23 */ 24 int getColumnCount(); 25 26 /** 27 * The number of rows in the table. 28 * <p> 29 * Currently, it is not clear whether all columns actually have the same 30 * number of rows, that is if all arrays have the same length. In the 31 * case of variable row, this will return the maximum row count, that is 32 * the length of the longest array/column. 33 * 34 * @return the number of rows 35 */ 36 int getRowCount(); 37 38 /** 39 * The type of the elements in the column. The column array will be 40 * an array of the given type. For primitive types, this function will return 41 * the TYPE class (such as {@link Double#TYPE}, while {@link #getColumnData(int) } 42 * will return a {@link ListNumber}. 43 * 44 * @param column the column index 45 * @return the type of this column 46 */ 47 Class<?> getColumnType(int column); 48 49 /** 50 * The name of the given column. 51 * 52 * @param column the column index 53 * @return the name of the column 54 */ 55 String getColumnName(int column); 56 57 /** 58 * The data for the given column. 59 * <p> 60 * The data is going to be a {@link List} in case of objects 61 * or a {@link ListNumber} in case of a numeric primitive. 62 * 63 * @param column the column index 64 * @return the data of the column 65 */ 66 Object getColumnData(int column); 67 }