TableInfo.h

Classes

TableInfo -- Table type, subtype and further info (full description)

class TableInfo

Types

enum Type

PAGEDIMAGE
a PagedImage is a PagedArray with coordinates and Masking (opt.)
PAGEDARRAY
a PagedArray (.../Lattices/PagedArray.h)
MEASUREMENTSET
MeasurementSet main Table
ANTENNA
MeasurementSet Antenna table
ARRAY
MeasurementSet Array table
FEED
MeasurementSet Feed characteristics table
FIELD
MeasurementSet Field table
OBSERVATION
MeasurementSet Observation information table
OBSLOG
MeasurementSet Oserving Log table
SOURCE
MeasurementSet Source table
SPECTRALWINDOW
MeasurementSet Spectral Window table
SYSCAL
MeasurementSet System Calibration table
WEATHER
MeasurementSet Weather table
ME_CALIBRATION
Measurement Equation Calibration table
LOG
AIPS++ Log table
COMPONENTLIST
A ComponentList table contains parameterised representations of the sky brightness.

Interface

Public Members
TableInfo()
explicit TableInfo (const String& fileName)
TableInfo (Type which)
TableInfo (const TableInfo& that)
TableInfo& operator= (const TableInfo& that)
~TableInfo()
const String& type() const
const String& subType() const
const String& readme() const
void setType (const String& type)
void setSubType (const String& subType)
static String type(Type tableType)
static String subType(Type tableType)
void readmeClear()
void readmeAddLine (const String& readmeLine)
void flush (const String& fileName)

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Programs:
Tests:

Etymology

TableInfo holds information (like type) about a table.

Synopsis

TableInfo holds information about a table. It contains the following information:
Type
the type of a table (e.g. IMAGE, LOG).
SubType
the subtype of a table (e.g. UVDATA, MAP or ANTENNAPATTERN for type IMAGE).
Readme
An arbitrary number of lines containing ancillary text describing the table (or maybe its history).
This information is stored in the file table.info in the table directory. Regular tables as well as reference tables (results of sort/select) have their own table.info file.
The initial table-info of a regular table is blank. It has to be set explicitly by the user.
The initial table-info of a reference table is a copy of the table-info of its parent table. The user can add lines to the readme information to describe the table in more detail. Of course, the type and/or subtype can be changed at will.

The type and subtype information are stored at the beginning of the first two lines of the file as:

        Type = TypeString
        SubType = SubTypeString
These lines in the table.info file can be used by external programs (like the filebrowser) to determine the type of table being handled.

The third line in the file is blank. The line(s) thereafter contain the possible readme information (note that multiple readme lines are possible). They can be added using the function readmeAddLine.

Existing tables do not have a table.info file yet. The table system will handle them correctly and use a blank type, subtype and readme string. A table.info file will be created when the table is opened for update.

To be sure that different table types have unique names, it can be useful to use enum's and to define them in one common file. For AIPS++ tables this enum is defined in this file.

Example

    // Open a table for update.
    Table table("name", Table::Update);
    // Get its TableInfo object.
    TableInfo& info = table.tableInfo();
    // Set type and subtype.
    info.setType ("IMAGE");
    info.setSubType ("SubTypeString");
    // Add a few readme lines. The second one adds 2 lines.
    info.readmeAddLine ("the first readme string");
    info.readmeAddLine ("the second readme string\nthe third readme string");
    // Display the type, etc..
    cout << info.type() << " " << info.subType() << endl;
    cout << info.readme();
    

Motivation

External programs need to be able to determine the type of a table.

Member Description

enum Type

enum for various standard Table types. Underscores in the enumerator indicate different sub-types

TableInfo()

Create an empty object.

explicit TableInfo (const String& fileName)

Create the object reading it from the given file name. If the file does not exist, type, subtype and readme are initialized to a blank string.

TableInfo (Type which)

Create a TableInfo object of one of the predefined types. This is a centralised way of setting the Table type only.

TableInfo (const TableInfo& that)

Copy constructor (copy semantics).

TableInfo& operator= (const TableInfo& that)

Assignment (copy semantics).

~TableInfo()

const String& type() const
const String& subType() const

Get the table (sub)type.

const String& readme() const

Get the readme.

void setType (const String& type)

Set the table (sub)type.

void setSubType (const String& subType)

static String type(Type tableType)
static String subType(Type tableType)

Convert the Type enumerator to a type and subType string

void readmeClear()

Clear the readme.

void readmeAddLine (const String& readmeLine)

Add a line to the readme. It will itself add a newline character ('\n') to the end of the line.

void flush (const String& fileName)

Write the TableInfo object.