Loading...
Searching...
No Matches
casacore::BinaryTable Class Reference
fits package (libcasa_fits) » FITS_module

More...

`#include <BinTable.h>`

## Public Member Functions

| BinaryTable (FitsInput &, FITSErrorHandler errhandler=FITSError::defaultHandler, Bool useMiriadSM=False, Bool sdfits=False)
| The only constructor is from a FitsInput, you can also optionally provide a FITS error handler.
| ~BinaryTable ()
Table | fullTable (const String &tabName, const Table::TableOption=Table::NewNoReplace, Bool useMiriadSM=False)
| Get the full table, using the supplied arguments to construct the table.
Table | fullTable ()
| This version of the fullTable return a Memory based table Its recommended if its being used as a temporary.
const TableDesc & | getDescriptor ()
| Get an appropriate TableDesc (this is the same TableDesc used to construct any Table objects returned by this class.
TableRecord & | getKeywords ()
| Return the Table keywords (this is the same TableRecord used in any Table objects returned by this class.
const Table & | thisRow ()
| Get a Table with a single row, the current row of the FITS table.
const Table & | nextRow ()
| Get a Table with a single row, the next row of the FITS table.
Public Member Functions inherited from casacore::BinaryTableExtension
| BinaryTableExtension (FitsInput &, FITSErrorHandler errhandler=FITSError::defaultHandler)
| BinaryTableExtension (FitsKeywordList &, FITSErrorHandler errhandler=FITSError::defaultHandler)
| BinaryTableExtension (FITSErrorHandler errhandler=FITSError::defaultHandler)
| constructor to match write_bintbl_hdr()
virtual | ~BinaryTableExtension ()
Int | nrows () const
| return basic elements of a table
Int | ncols () const
uInt | rowsize () const
Int | tfields () const
const char * | tform (int n) const
double | tscal (int n) const
double | tzero (int n) const
Bool | isatnull (int n) const
Int | tnull (int n) const
const char * | ttype (int n) const
const char * | tunit (int n) const
const char * | tdisp (int n) const
const char * | tdim (int n) const
const char * | ctype (int n) const
double | crpix (int n) const
double | crota (int n) const
double | crval (int n) const
double | cdelt (int n) const
Int | theap () const
const char * | author () const
const char * | referenc () const
int | bind (int, FitsBase &)
| binds a FitsField to a column
BinaryTableExtension & | operator++ ()
| row selector functions
BinaryTableExtension & | operator-- ()
BinaryTableExtension & | operator() (int)
int | read ()
| read entire table into memory
int | read (int)
| read next N rows into memory
int | set_next (int)
| prepare to write the next N rows
int | write (FitsOutput &)
| write current rows
int | write_binTbl_hdr (FitsOutput &, long, int, const char **, const char **, const char **, const char *, long)
| create a binary table header without using FitsKeywordList objet.
FitsBase & | field (int i) const
| select a field
Int | currrow () const
| get current row
Public Member Functions inherited from casacore::ExtensionHeaderDataUnit
| ExtensionHeaderDataUnit (FitsInput &, FITSErrorHandler errhandler=FITSError::defaultHandler)
| ExtensionHeaderDataUnit (FitsKeywordList &, FITSErrorHandler errhandler=FITSError::defaultHandler)
| ~ExtensionHeaderDataUnit ()
char * | xtension ()
char * | extname ()
Int | extver ()
Int | extlevel ()
Int | pcount ()
Int | gcount ()
int | read (char *addr, int nbytes)
| read next N bytes into addr
int | write (FitsOutput &fout, char *addr, int nbytes)
| write next N bytes from addr to the FITS output fout
Public Member Functions inherited from casacore::HeaderDataUnit
virtual | ~HeaderDataUnit ()
Int | dims () const
Int | dim (int n) const
OFF_T | fitsdatasize () const
FITS::ValueType | datatype () const
Int | fitsitemsize () const
Int | localitemsize () const
FITS::HDUType | hdutype () const
int | err () const
int | skip (uInt n)
| skipping one or more HDU's
int | skip ()
int | write_hdr (FitsOutput &)
| write the current header
ConstFitsKeywordList & | kwlist ()
| Operations on the HDU's keyword list.
Vector< String > | kwlist_str (Bool length80=False)
| return the header of the chdu as a vector of String.
void | firstkw ()
void | lastkw ()
const FitsKeyword * | nextkw ()
const FitsKeyword * | prevkw ()
const FitsKeyword * | currkw ()
const FitsKeyword * | kw (int n)
const FitsKeyword * | kw (const FITS::ReservedName &n)
const FitsKeyword * | nextkw (FITS::ReservedName &n)
const FitsKeyword * | kw (FITS::ReservedName &n, int i)
const FitsKeyword * | nextkw (FITS::ReservedName &n, int i)
const FitsKeyword * | kw (const char *n)
const FitsKeyword * | nextkw (const char *n)
void | mk (FITS::ReservedName k, Bool v, const char *c=0)
void | mk (FITS::ReservedName k, const char *v=0, const char *c=0)
void | mk (FITS::ReservedName k, Int v, const char *c=0)
void | mk (FITS::ReservedName k, double v, const char *c=0)
void | mk (int n, FITS::ReservedName k, Bool v, const char *c=0)
void | mk (int n, FITS::ReservedName k, const char *v, const char *c=0)
void | mk (int n, FITS::ReservedName k, Int v, const char *c=0)
void | mk (int n, FITS::ReservedName k, double v, const char *c=0)
void | mk (const char *n, Bool v, const char *c=0)
void | mk (const char *n, const char *v=0, const char *c=0)
void | mk (const char *n, Int v, const char *c=0)
void | mk (const char *n, float v, const char *c=0)
void | mk (const char *n, double v, const char *c=0)
void | mk (const char *n, Int r, Int i, const char *c=0)
void | mk (const char *n, float r, float i, const char *c=0)
void | mk (const char *n, double r, double i, const char *c=0)
void | spaces (const char *n=0, const char *c=0)
void | comment (const char *n=0, const char *c=0)
void | history (const char *c=0)
Bool | notnull (double x) const
Bool | notnull (char *s) const
Bool | notnull (Int l) const
int | get_hdr (FITS::HDUType, FitsKeywordList &)
int | read_data (char *, Int)
int | write_data (FitsOutput &, char *, Int)
OFF_T | read_all_data (char *)
int | write_all_data (FitsOutput &, char *)

## Private Member Functions

void | fillRow ()
| this is the function that fills each row in as needed

## Private Attributes

Table * | currRowTab
| This is the Scratch table containing the current row.
Int * | nelem
| The number of elements for each column of the BinaryTableExtension.
std::map< Int, String > * | colNames
| This is a map from column number to column name.
TableRecord | kwSet
FITS::ValueType * | vatypes_p
| These are used by any VADesc columns.
void ** | vaptr_p
VADescFitsField * | va_p
char * | theheap_p

## Additional Inherited Members

Public Types inherited from casacore::HeaderDataUnit
enum | HDUErrs { OK , NOMEM , MISSKEY , BADBITPIX , NOAXISN , NOPCOUNT , NOGCOUNT , BADPCOUNT , BADGCOUNT , NOGROUPS , BADNAXIS , BADREC , BADTYPE , BADRULES , BADSIZE , BADOPER , BADCONV , BADIO }
| error handling and error codes that can be returned More...
Static Public Member Functions inherited from casacore::HeaderDataUnit
static Bool | determine_type (FitsKeywordList &, FITS::HDUType &, FITS::ValueType &, FITSErrorHandler, HDUErrs &)
| Determines the HDU type and the data type Parameterss: keyword list, hdu type, data type, error handler and error status.
static Bool | compute_size (FitsKeywordList &, OFF_T &, Int &, FITS::HDUType &, FITS::ValueType &, FITSErrorHandler, HDUErrs &)
| Compute the total size of the data associated with an HDU.
Protected Member Functions inherited from casacore::BinaryTableExtension
| BinaryTableExtension (FitsInput &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| sets field addresses in the current row void set_fitsrow(Int);
| BinaryTableExtension (FitsKeywordList &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| BinaryTableExtension (FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
virtual int | readrow ()
| read and write the next FITS data row
virtual int | writerow (FitsOutput &)
void | set_fitsrow (Int)
| sets field addresses in the current row
Protected Member Functions inherited from casacore::ExtensionHeaderDataUnit
| ExtensionHeaderDataUnit (FitsInput &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| ExtensionHeaderDataUnit (FitsKeywordList &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| ExtensionHeaderDataUnit (FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| This constructor is used for writing only required keywords.
Protected Member Functions inherited from casacore::HeaderDataUnit
| HeaderDataUnit (FitsInput &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler)
| For input – ~ should delete the keyword list: kwflag = 1.
| HeaderDataUnit (FitsKeywordList &, FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler, FitsInput *=0)
| For output – ~ should not delete keyword list: kwflag = 0 07/21/98 AKH Clarification: HeaderDataUnit has a copy of the FitsKeywordList, and should delete it.
| HeaderDataUnit (FITS::HDUType, FITSErrorHandler errhandler=FITSError::defaultHandler, FitsInput *=0)
| constructor for objects that write only required keyword to fits file.
bool | init_data_unit (FITS::HDUType t)
| for write required keywords only to use.
void | posEnd ()
void | errmsg (HDUErrs, const char *)
char * | assign (FITS::ReservedName)
char * | assign (FITS::ReservedName, int)
double | asgdbl (FITS::ReservedName, double)
double | asgdbl (FITS::ReservedName, int, double)
Protected Attributes inherited from casacore::BinaryTableExtension
Int | tfields_x
char ** | tform_x
double * | tscal_x
double * | tzero_x
Bool * | isatnull_x
Int * | tnull_x
char ** | ttype_x
char ** | tunit_x
char ** | tdisp_x
char ** | tdim_x
char ** | ctype_x
double * | crpix_x
double * | crota_x
double * | crval_x
double * | cdelt_x
Int | nAxis
Int | theap_x
char * | author_x
char * | referenc_x
unsigned char * | fitsrow
uInt * | fits_offset
uInt | fitsrowsize
Bool | isoptimum
unsigned char * | table
uInt | tablerowsize
uInt | alloc_row
Int | beg_row
Int | end_row
Int | curr_row
FitsBase ** | fld
uInt * | table_offset
void ** | data_addr
| data addresses of fields of current row
Protected Attributes inherited from casacore::ExtensionHeaderDataUnit
char * | xtension_x
char * | extname_x
Int | extver_x
Int | extlevel_x
Int | pcount_x
Int | gcount_x
Protected Attributes inherited from casacore::HeaderDataUnit
FitsKeywordList & | kwlist_
ConstFitsKeywordList | constkwlist_
FitsInput * | fin
FITSErrorHandler | errfn
HDUErrs | err_status
Int | no_dims
Int * | dimn
OFF_T | fits_data_size
| uInt fits_data_size; // size in bytes of total amount of data
FITS::ValueType | data_type
Int | fits_item_size
Int | local_item_size
FITS::HDUType | hdu_type
char | pad_char
double | double_null
char | char_null
Int | Int_null

## Detailed Description

BinaryTable is used to translate a FITS binary table to a Casacore Table.

### Intended use:

Public interface

### Review Status

Test programs:
  tBinTable

### Prerequisite

- FitsInput
- HeaderDataUnit
- BinaryTableExtension
- Tables module

### Etymology

BinaryTable inherits from the FITS BinaryTableExtension class and its primary use is to convert that class to a Casacore Table. This explains it's use but not its name. A better name should be found.

### Synopsis

The class starts with an already existing FitsInput object, which should be set at a BinaryTableExtension HDU. Member functions provide a TableDesc appropriate for the FITS data (to help in constructing a Casacore Table compatible with the BinaryTableExtension), a Table containing the current row of FITS data and a Table containing the next row of FITS data (which can be used to step through the FitsInput, copying each row using the RowCopier class), and a Table containin the entire FITS binary table from the current row to the end of the table.

### Motivation

We need a way to get FITS data into Casacore Tables.

### Example

open a FitsInput from a disk file, if the HDU is a BinaryTableExtension, then instantiate a BinTable object and get the entire table. A fair amount of error checking has been eliminated from this example.

FitsInput infits("myFITSFile", FITS::Disk);
switch (infits.hdutype()) {
case FITS::BinaryTableHDU:
BinaryTable bintab(infits);
Table tab = bintable.fullTable("myTable");
break;
}
casacore::BinaryTable::BinaryTable
BinaryTable(FitsInput &, FITSErrorHandler errhandler=FITSError::defaultHandler, Bool useMiriadSM=False, Bool sdfits=False)
The only constructor is from a FitsInput, you can also optionally provide a FITS error handler.
casacore::FITS::BinaryTableHDU
@ BinaryTableHDU
Definition fits.h:263
casacore::FITS::Disk
@ Disk
Definition fits.h:257
casacore::FitsInput
fixed-length sequential blocked FITS input
Definition fitsio.h:154
casacore::Table
Definition Table.h:157

There would obviously be other cases to the switch to deal with any other HDUs (e.g. skip them via infits.skip_hdu()). The Table destructor would write "myTable" to disk.

### To Do

- It would be nice to construct this directly from the BinaryTableExtension.
- When random access FITS becomes available, this needs to be able to deal with that.
- A corresponding class is needed for conversion from Casacore Tables to FITS.
- Throw exceptions rather than send messages to cout : however the entire FITS module behaves this way, so it should all remain consistent.
- The following types of columns are not dealt with very well or at all (Bit, Byte, 0-length columns).
- No attempt use any TDIM columns or keywords to shape arrays.

Definition at line 108 of file BinTable.h.

## Constructor & Destructor Documentation

## BinaryTable()

casacore::BinaryTable::BinaryTable | ( | FitsInput & | ,
|  | FITSErrorHandler | errhandler = FITSError::defaultHandler,
|  | Bool | useMiriadSM = False,
|  | Bool | sdfits = False )

The only constructor is from a FitsInput, you can also optionally provide a FITS error handler.

If useMiriadSM is True, use the Miriad storage manager for all columns, otherwise AipsIO. If sdfits is True, all non-reserved and some reserved keyword are treated as if they were columns with constant values "virtual columns" in the sdfits convention.

References casacore::FITSError::defaultHandler(), and casacore::False.

## ~BinaryTable()

casacore::BinaryTable::~BinaryTable | ( |  | ) |

## Member Function Documentation

## fillRow()

void casacore::BinaryTable::fillRow | ( |  | ) |

private

this is the function that fills each row in as needed

## fullTable() [1/2]

Table casacore::BinaryTable::fullTable | ( |  | ) |

This version of the fullTable return a Memory based table Its recommended if its being used as a temporary.

## fullTable() [2/2]

Table casacore::BinaryTable::fullTable | ( | const String & | tabName,
|  | const Table::TableOption | = Table::NewNoReplace,
|  | Bool | useMiriadSM = False )

Get the full table, using the supplied arguments to construct the table.

The table will contain all data from the current row to the end of the BinarTableExtension.If useMiriadSM is True, use the Miriad storage manager for all columns, otherwise AipsIO.

References casacore::False, and casacore::Table::NewNoReplace.

## getDescriptor()

const TableDesc & casacore::BinaryTable::getDescriptor | ( |  | ) |

Get an appropriate TableDesc (this is the same TableDesc used to construct any Table objects returned by this class.

## getKeywords()

TableRecord & casacore::BinaryTable::getKeywords | ( |  | ) |

Return the Table keywords (this is the same TableRecord used in any Table objects returned by this class.

## nextRow()

const Table & casacore::BinaryTable::nextRow | ( |  | ) |

Get a Table with a single row, the next row of the FITS table.

The returned Table is a Scratch table. The FITS input is positioned to the next row and the values translated and returned in a Table object.

## thisRow()

const Table & casacore::BinaryTable::thisRow | ( |  | ) |

Get a Table with a single row, the current row of the FITS table.

The returned Table is a Scratch table. The standard BinaryTableExtension manipulation functions are available to position the FITS input at the desired location.

## Member Data Documentation

## colNames

std::map<Int, String>* casacore::BinaryTable::colNames

private

This is a map from column number to column name.

Definition at line 166 of file BinTable.h.

## currRowTab

Table* casacore::BinaryTable::currRowTab

private

This is the Scratch table containing the current row.

Definition at line 162 of file BinTable.h.

## kwSet

TableRecord casacore::BinaryTable::kwSet

private

Definition at line 168 of file BinTable.h.

## nelem

Int* casacore::BinaryTable::nelem

private

The number of elements for each column of the BinaryTableExtension.

Definition at line 164 of file BinTable.h.

## theheap_p

char* casacore::BinaryTable::theheap_p

private

Definition at line 174 of file BinTable.h.

## va_p

VADescFitsField* casacore::BinaryTable::va_p

private

Definition at line 173 of file BinTable.h.

## vaptr_p

void** casacore::BinaryTable::vaptr_p

private

Definition at line 172 of file BinTable.h.

## vatypes_p

FITS::ValueType* casacore::BinaryTable::vatypes_p

private

These are used by any VADesc columns.

Definition at line 171 of file BinTable.h.

The documentation for this class was generated from the following file:

- fits/FITS/BinTable.h