#### Description:

The Table class is a type of KeyMap that represents a two-dimensional table of values. The astMapGet... and astMapPut... methods provided by the KeyMap class should be used for storing and retrieving values from individual cells within a Table. Each entry in the KeyMap represents a single cell of the table and has an associated key of the form `"` <COL >(i)`"` where `"` <COL >`"` is the upper-case name of a table column and `"` i`"` is the row index (the first row is row 1). Keys of this form should always be used when using KeyMap methods to access entries within a Table.

Columns must be declared using the astAddColumn method before values can be stored within them. This also fixes the type and shape of the values that may be stored in any cell of the column. Cells may contain scalar or vector values of any data type supported by the KeyMap class. Multi-dimensional arrays may also be stored, but these must be vectorised when storing and retrieving them within a table cell. All cells within a single column must have the same type and shape, as specified when the column is added to the Table.

Tables may have parameters that describe global properties of the entire table. These are stored as entries in the parent KeyMap and can be access using the get and set method of the KeyMap class. However, parameters must be declared using the astAddParameter method before being accessed.

Note - since accessing entries within a KeyMap is a relatively slow process, it is not recommended to use the Table class to store very large tables.

#### Constructor Function

astTable

#### Inheritance

The Table class inherits from the KeyMap class.

#### Attributes

In addition to those attributes common to all KeyMaps, every Table also has the following attributes:

- ColumnLenC(column): The largest string length of any value in a column

- ColumnLength(column): The number of elements in each value in a column

- ColumnNdim(column): The number of axes spanned by each value in a column

- ColumnType(column): The data type of each value in a column

- ColumnUnit(column): The unit string describing each value in a column

- Ncolumn: The number of columns currently in the Table

- Nrow: The number of rows currently in the Table

- Nparameter: The number of global parameters currently in the Table

#### Functions

In addition to those functions applicable to all KeyMaps, the following functions may also be applied to all Tables:

- astAddColumn: Add a new column definition to a Table

- astAddParameter: Add a new global parameter definition to a Table

- astColumnName: Return the name of the column with a given index

- astColumnShape: Return the shape of the values in a named column

- astHasColumn: Checks if a column exists in a Table

- astHasParameter: Checks if a global parameter exists in a Table

- astParameterName: Return the name of the parameter with a given index

- astPurgeRows: Remove all empty rows from a Table

- astRemoveColumn: Remove a column from a Table

- astRemoveParameter: Remove a global parameter from a Table

- astRemoveRow: Remove a row from a Table

Copyright (C) 2021 East Asian Observatory