Isis 3 Programmer Reference
Isis::Table Class Reference

Class for storing Table blobs information. More...

#include <Table.h>

Inheritance diagram for Isis::Table:
Inheritance graph
Collaboration diagram for Isis::Table:
Collaboration graph

Public Types

enum  Association { None, Samples, Lines, Bands }
 

Public Member Functions

 Table (const QString &tableName, TableRecord &rec)
 This constructor creates a new table using the given name and record. More...
 
 Table (const QString &tableName)
 This constructor creates an empty table from an existing table name to be read in when the Read() method is called. More...
 
 Table (const QString &tableName, const QString &file)
 This constructor reads an existing table using the given table name and file containing the table. More...
 
 Table (const QString &tableName, const QString &file, const Pvl &fileHeader)
 This constructor reads an existing table using the given table name and file containing the table and pvl labels. More...
 
 Table (const Table &other)
 Copy constructor for an Table object. More...
 
Tableoperator= (const Isis::Table &other)
 Sets the Table equal to the input Table object. More...
 
 ~Table ()
 Destroys the Table object. More...
 
void SetAssociation (const Table::Association assoc)
 Sets the association to the input parameter. More...
 
bool IsSampleAssociated ()
 Checks to see if association is Samples. More...
 
bool IsLineAssociated ()
 Checks to see if association is Lines. More...
 
bool IsBandAssociated ()
 Checks to see if association is Bands. More...
 
int Records () const
 Returns the number of records. More...
 
int RecordFields () const
 Returns the number of fields per record. More...
 
int RecordSize () const
 Returns the number of bytes per record. More...
 
TableRecordoperator[] (const int index)
 Reads a TableRecord from the Table. More...
 
void operator+= (TableRecord &rec)
 Adds a TableRecord to the Table. More...
 
void Update (const TableRecord &rec, const int index)
 Updates a TableRecord. More...
 
void Delete (const int index)
 Deletes a TableRecord from the Table. More...
 
void Clear ()
 Clear the table of all records. More...
 
QString Type () const
 Accessor method that returns a string containing the Blob type. More...
 
QString Name () const
 Accessor method that returns a string containing the Blob name. More...
 
int Size () const
 Accessor method that returns the number of bytes in the blob data. More...
 
PvlObjectLabel ()
 Accessor method that returns a PvlObject containing the Blob label. More...
 
void Read (const QString &file)
 This method reads Pvl values from a specified file. More...
 
void Read (const QString &file, const Pvl &pvlLabels)
 This method reads the given a file and labels. More...
 
virtual void Read (const Pvl &pvl, std::istream &is)
 This method reads the Blob data from an open input file stream. More...
 
void Write (const QString &file)
 Write the blob data out to a file. More...
 
void Write (Pvl &pvl, std::fstream &stm, const QString &detachedFileName="")
 Write the blob data out to a Pvl object. More...
 

Static Public Member Functions

static QString toString (Table table, QString fieldDelimiter=",")
 

Protected Member Functions

void ReadInit ()
 Virtual function to validate PVL table information. More...
 
void ReadData (std::istream &stream)
 Virtual function to Read the data. More...
 
void WriteInit ()
 Virtual Function to prepare labels for writing. More...
 
void WriteData (std::fstream &os)
 Virtual function to write the data. More...
 
void Find (const Pvl &pvl)
 This method searches the given Pvl for the Blob by the Blob's type and name. More...
 

Protected Attributes

TableRecord p_record
 The current table record. More...
 
std::vector< char * > p_recbufs
 Buffers containing record values. More...
 
int p_records
 Holds record count read from labels, may differ from the size of p_recbufs. More...
 
Association p_assoc
 Association Type of the table. More...
 
bool p_swap
 Only used for reading. More...
 
PvlObject p_blobPvl
 Pvl Blob object. More...
 
QString p_blobName
 Name of the Blob object. More...
 
char * p_buffer
 Buffer blob data is stored in. More...
 
BigInt p_startByte
 Byte blob data starts at in buffer. More...
 
int p_nbytes
 Size of blob data (in bytes) More...
 
QString p_type
 Type of data stored in the buffer. More...
 
QString p_detached
 Used for reading detached blobs. More...
 
QString p_labelFile
 The file containing the labels. More...
 

Friends

std::istream & operator>> (std::istream &is, Table &table)
 
std::ostream & operator<< (std::ostream &os, Table &table)
 

Detailed Description

Class for storing Table blobs information.

This class can create new Tables or read table blobs from files. In general, records correspond to rows and fields correspond to columns. Thus the TableRecord class corresponds to a vector of row entries and TableField class corresponds to a specific entry of the table for a given record. Isis3 Table objects are record based, N records in a table. Each record will have the same number of fields, F. The fields can be of different types including Integer, Double, Text, and Real. The class uses PVL to store the structure of the table N, F, and Field types and binary to store the table data.

See the classes TableRecord and TableField for more information.

If you would like to see Table being used in implementation, see histats.cpp

Author
2004-09-01 Jeff Anderson
History:

2005-03-18 Elizabeth Ribelin - Added documentation to class

2006-09-19 Jeff Anderson - Added clear method

2006-09-19 Jeff Anderson - Fixed bug in ReadInit method which needed to cleanup pointers to records if a re-read occurred.

2009-02-18 Steven Lambright - Added copy constructor and assignment operator.

2011-05-25 Janet Barrett and Steven Lambright Added a Constructor that takes the pvl labels so they do not have to be re-read, which is a very expensive operation.

2012-10-04 Jeannie Backer Changed references to TableField methods to lower camel case. Ordered includes. Added documentation. Added error check to operator+=(TableRecord) if the Table's record size does not match the added TableRecord's size. Fixed header definition statement. Added forward declaration and includes. Fixed indentation of history entries. Moved method implementation to cpp file. Ordered includes in unitTest. Added RecordFields() accessor method. Improved test coverage in all categories. Added padding to control statements. References #1169.

2015-10-04 Jeannie Backer Improved coding standards. Uncommented error throw for operator+=(record) that verifies that the record sizes match. References #1178

2018-08-13 Summer Stapleton - Added a default constructor for logic relating to the overhaul of the mosaic tracking now being handled in a separate tracking cube.

Definition at line 77 of file Table.h.

Constructor & Destructor Documentation

◆ Table() [1/5]

Isis::Table::Table ( const QString &  tableName,
Isis::TableRecord rec 
)

This constructor creates a new table using the given name and record.

Note that the record is not added to this table. It is used to read the TableField names and set the record size (i.e. the number of bytes per record). Thus any records added to this table will be required to match this size.

In this constructor, the Table::Association is set to None, the ByteOrder keyword in the labels is set to NULL, and the record information is added to the table.

This constructor also calls the parent constructor Blob(tableName, "Table").

Parameters
tableNameName of the Table to be read
recName of the TableRecord to be read into the Table

Definition at line 54 of file Table.cpp.

References Isis::PvlObject::addGroup(), Isis::TableRecord::Fields(), p_assoc, Isis::Blob::p_blobPvl, and p_record.

◆ Table() [2/5]

Isis::Table::Table ( const QString &  tableName)

This constructor creates an empty table from an existing table name to be read in when the Read() method is called.

It should not be used to construct a new table object whose data will be filled in later since the record size will be set to 0. This constructor sets the Table::Association to None.

This constructor also calls the parent constructor Blob(tableName, "Table").

Parameters
tableNameName of the Table to be read

Definition at line 75 of file Table.cpp.

References p_assoc.

◆ Table() [3/5]

Isis::Table::Table ( const QString &  tableName,
const QString &  file 
)

This constructor reads an existing table using the given table name and file containing the table.

This constructor sets the Table::Association to the Association keyword value in the Blob Pvl read from the file, if the keyword exists.

This constructor also calls the parent constructor Blob(tableName, "Table").

Parameters
tableNameName of the Table to be read
fileName of the file to be read into the Table
See also
Blob::Read()

Definition at line 94 of file Table.cpp.

References p_assoc, and Isis::Blob::Read().

◆ Table() [4/5]

Isis::Table::Table ( const QString &  tableName,
const QString &  file,
const Pvl fileHeader 
)

This constructor reads an existing table using the given table name and file containing the table and pvl labels.

This constructor sets the Table::Association to the Association keyword value in the Blob Pvl read from the file, if the keyword exists.

This constructor also calls the parent constructor Blob(tableName, "Table").

Parameters
tableNameThe name of the Table to be read
fileThe name of the file to be read into the Table
fileHeaderPvl labels.
See also
Blob::Read()

Definition at line 115 of file Table.cpp.

References p_assoc, and Isis::Blob::Read().

◆ Table() [5/5]

Isis::Table::Table ( const Table other)

Copy constructor for an Table object.

This constructor copies TableRecords and the member variable values for record, records, assoc, and swap.

Parameters
otherThe table to copy from

Definition at line 128 of file Table.cpp.

References p_assoc, p_recbufs, p_record, p_records, p_swap, and RecordSize().

◆ ~Table()

Isis::Table::~Table ( )

Destroys the Table object.

Definition at line 176 of file Table.cpp.

References Clear().

Member Function Documentation

◆ Clear()

void Isis::Table::Clear ( )

Clear the table of all records.

Definition at line 307 of file Table.cpp.

References p_recbufs.

Referenced by operator=(), ReadInit(), and ~Table().

◆ Delete()

void Isis::Table::Delete ( const int  index)

Deletes a TableRecord from the Table.

Parameters
indexIndex of TableRecord to be deleted

Definition at line 297 of file Table.cpp.

References p_recbufs.

◆ Find()

void Isis::Blob::Find ( const Pvl pvl)
protectedinherited

This method searches the given Pvl for the Blob by the Blob's type and name.

If found, the start byte, number of bytes are read from the Pvl. Also, if a keyword label pointer is found, the filename for the detached blob is stored and the pointer is removed from the blob pvl.

Parameters
pvlThe Pvl to be searched

Definition at line 179 of file Blob.cpp.

References _FILEINFO_, Isis::PvlContainer::isNamed(), Isis::PvlObject::object(), Isis::PvlObject::objects(), and Isis::FileName::path().

◆ IsBandAssociated()

bool Isis::Table::IsBandAssociated ( )

Checks to see if association is Bands.

Returns
bool Returns true if association is Bands, and false if it is not

Definition at line 215 of file Table.cpp.

References p_assoc.

◆ IsLineAssociated()

bool Isis::Table::IsLineAssociated ( )

Checks to see if association is Lines.

Returns
bool Returns true if association is Lines, and false if it is not

Definition at line 205 of file Table.cpp.

References p_assoc.

◆ IsSampleAssociated()

bool Isis::Table::IsSampleAssociated ( )

Checks to see if association is Samples.

Returns
bool Returns true if association is Samples, and false if it is not

Definition at line 195 of file Table.cpp.

References p_assoc.

◆ Label()

◆ Name()

QString Isis::Blob::Name ( ) const
inherited

Accessor method that returns a string containing the Blob name.

Returns
string The name of the blob.

Definition at line 149 of file Blob.cpp.

Referenced by Isis::Shape::isFootprintable(), Isis::Image::isFootprintable(), Isis::SpicePosition::LoadCache(), and Isis::Cube::write().

◆ operator+=()

void Isis::Table::operator+= ( Isis::TableRecord rec)

Adds a TableRecord to the Table.

Parameters
recThe record to be added to the table

Definition at line 263 of file Table.cpp.

References _FILEINFO_, Isis::Blob::p_blobName, p_recbufs, Isis::TableRecord::Pack(), Isis::TableRecord::RecordSize(), RecordSize(), Isis::toString(), and Isis::IException::Unknown.

◆ operator=()

Table & Isis::Table::operator= ( const Isis::Table other)

Sets the Table equal to the input Table object.

This method copies TableRecords and the member variable values for record, records, assoc, and swap.

Parameters
otherThe table to copy from
Returns
Table The copied table.

Definition at line 154 of file Table.cpp.

References Clear(), p_assoc, p_recbufs, p_record, p_records, p_swap, and RecordSize().

◆ operator[]()

Isis::TableRecord & Isis::Table::operator[] ( const int  index)

Reads a TableRecord from the Table.

Parameters
indexIndex where desired TableRecord is located
Returns
Returns the TableRecord at specific index

Definition at line 253 of file Table.cpp.

References p_recbufs, p_record, and Isis::TableRecord::Unpack().

◆ Read() [1/3]

void Isis::Blob::Read ( const QString &  file)
inherited

This method reads Pvl values from a specified file.

Parameters
fileThe filename to read from.
Exceptions
iException::Io- Unable to open file
iException::Pvl- Invalid label format

Definition at line 243 of file Blob.cpp.

References _FILEINFO_, and Isis::Pvl::read().

Referenced by Isis::History::History(), Isis::OriginalLabel::OriginalLabel(), Isis::OriginalXmlLabel::OriginalXmlLabel(), Isis::History::Read(), Isis::Cube::read(), and Table().

◆ Read() [2/3]

void Isis::Blob::Read ( const QString &  file,
const Pvl pvlLabels 
)
inherited

This method reads the given a file and labels.

Parameters
fileThe filename to read from.
pvlLabelsA Pvl containing the label information.
Exceptions
iException::Io- Unable to open file

Definition at line 268 of file Blob.cpp.

References _FILEINFO_, and Isis::Message::FileOpen().

◆ Read() [3/3]

void Isis::Blob::Read ( const Pvl pvl,
std::istream &  istm 
)
virtualinherited

This method reads the Blob data from an open input file stream.

Parameters
pvlA Pvl containing the label information.
istmThe input file stream containing the blob data to be read.
Exceptions
iException::Io- Unable to open file

Reimplemented in Isis::History.

Definition at line 303 of file Blob.cpp.

References _FILEINFO_, and Isis::Message::FileOpen().

◆ ReadData()

void Isis::Table::ReadData ( std::istream &  stream)
protectedvirtual

Virtual function to Read the data.

Parameters
streamInputStream to read data in from
Exceptions
Isis::IException::Io- Error reading or preparing to read a record

Reimplemented from Isis::Blob.

Definition at line 351 of file Table.cpp.

References _FILEINFO_, Isis::IException::Io, Isis::Blob::p_blobName, p_recbufs, p_record, p_records, Isis::Blob::p_startByte, p_swap, RecordSize(), Isis::TableRecord::Swap(), and Isis::toString().

◆ ReadInit()

void Isis::Table::ReadInit ( )
protectedvirtual

Virtual function to validate PVL table information.

Reimplemented from Isis::Blob.

Definition at line 313 of file Table.cpp.

References Clear(), Isis::PvlObject::group(), Isis::PvlObject::groups(), Isis::PvlObject::hasKeyword(), Isis::IsLsb(), Isis::IsMsb(), Isis::PvlContainer::isNamed(), p_assoc, Isis::Blob::p_blobPvl, p_record, p_records, and p_swap.

◆ RecordFields()

int Isis::Table::RecordFields ( ) const

Returns the number of fields per record.

Returns
int Number of fields

Definition at line 233 of file Table.cpp.

References Isis::TableRecord::Fields(), and p_record.

◆ Records()

◆ RecordSize()

int Isis::Table::RecordSize ( ) const

Returns the number of bytes per record.

Returns
int Number of bytes per record

Definition at line 242 of file Table.cpp.

References p_record, and Isis::TableRecord::RecordSize().

Referenced by operator+=(), operator=(), ReadData(), Table(), WriteData(), and WriteInit().

◆ SetAssociation()

void Isis::Table::SetAssociation ( const Table::Association  assoc)

Sets the association to the input parameter.

Parameters
assocAssociation type

Definition at line 185 of file Table.cpp.

References p_assoc.

◆ Size()

int Isis::Blob::Size ( ) const
inherited

Accessor method that returns the number of bytes in the blob data.

Returns
int Number of bytes in the blob data.

Definition at line 158 of file Blob.cpp.

◆ Type()

QString Isis::Blob::Type ( ) const
inherited

Accessor method that returns a string containing the Blob type.

Returns
string Type of blob.

Definition at line 140 of file Blob.cpp.

Referenced by Isis::Shape::isFootprintable(), Isis::Image::isFootprintable(), and Isis::Cube::write().

◆ Update()

void Isis::Table::Update ( const TableRecord rec,
const int  index 
)

Updates a TableRecord.

Parameters
recTableRecord to update old TableRecord with
indexIndex of TableRecord to be updated

Definition at line 288 of file Table.cpp.

References p_recbufs, and Isis::TableRecord::Pack().

◆ Write() [1/2]

void Isis::Blob::Write ( const QString &  file)
inherited

Write the blob data out to a file.

Parameters
fileThe filename to write to.
Exceptions
IException::Io- Unable to open file
IException::Io- Error preparing to write data to file
IException::Io- Error creating file

Definition at line 369 of file Blob.cpp.

References _FILEINFO_, Isis::PvlObject::addObject(), Isis::PvlObject::findObject(), Isis::toString(), and Isis::Pvl::write().

Referenced by Isis::Cube::write().

◆ Write() [2/2]

void Isis::Blob::Write ( Pvl pvl,
std::fstream &  stm,
const QString &  detachedFileName = "" 
)
inherited

Write the blob data out to a Pvl object.

Parameters
pvlThe pvl object to update
stmstream to write data to
detachedFileNameIf the stream is detached from the labels give the name of the file

Definition at line 418 of file Blob.cpp.

References Isis::PvlObject::addObject(), Isis::PvlContainer::name(), Isis::PvlObject::object(), Isis::PvlObject::objects(), and Isis::toString().

◆ WriteData()

void Isis::Table::WriteData ( std::fstream &  os)
protectedvirtual

Virtual function to write the data.

Parameters
osOutputstream to write the data to

Reimplemented from Isis::Blob.

Definition at line 406 of file Table.cpp.

References p_recbufs, Records(), and RecordSize().

◆ WriteInit()

void Isis::Table::WriteInit ( )
protectedvirtual

Virtual Function to prepare labels for writing.

Reimplemented from Isis::Blob.

Definition at line 376 of file Table.cpp.

References Isis::PvlContainer::deleteKeyword(), Isis::PvlObject::hasKeyword(), Isis::IsLsb(), p_assoc, Isis::Blob::p_blobPvl, Isis::Blob::p_nbytes, Records(), RecordSize(), and Isis::toString().

Member Data Documentation

◆ p_assoc

Association Isis::Table::p_assoc
protected

Association Type of the table.

Definition at line 143 of file Table.h.

Referenced by IsBandAssociated(), IsLineAssociated(), IsSampleAssociated(), operator=(), ReadInit(), SetAssociation(), Table(), and WriteInit().

◆ p_blobName

QString Isis::Blob::p_blobName
protectedinherited

Name of the Blob object.

Definition at line 95 of file Blob.h.

Referenced by Isis::Blob::Blob(), operator+=(), Isis::Blob::operator=(), ReadData(), and Isis::ImagePolygon::ReadData().

◆ p_blobPvl

PvlObject Isis::Blob::p_blobPvl
protectedinherited

◆ p_buffer

◆ p_detached

QString Isis::Blob::p_detached
protectedinherited

Used for reading detached blobs.

Definition at line 101 of file Blob.h.

Referenced by Isis::Blob::Blob(), and Isis::Blob::operator=().

◆ p_labelFile

QString Isis::Blob::p_labelFile
protectedinherited

The file containing the labels.

Definition at line 102 of file Blob.h.

Referenced by Isis::Blob::Blob(), and Isis::Blob::operator=().

◆ p_nbytes

◆ p_recbufs

std::vector<char *> Isis::Table::p_recbufs
protected

Buffers containing record values.

Definition at line 138 of file Table.h.

Referenced by Clear(), Delete(), operator+=(), operator=(), operator[](), ReadData(), Records(), Table(), Update(), and WriteData().

◆ p_record

TableRecord Isis::Table::p_record
protected

The current table record.

Definition at line 137 of file Table.h.

Referenced by operator=(), operator[](), ReadData(), ReadInit(), RecordFields(), RecordSize(), and Table().

◆ p_records

int Isis::Table::p_records
protected

Holds record count read from labels, may differ from the size of p_recbufs.

Definition at line 140 of file Table.h.

Referenced by operator=(), ReadData(), ReadInit(), and Table().

◆ p_startByte

BigInt Isis::Blob::p_startByte
protectedinherited

Byte blob data starts at in buffer.

Definition at line 98 of file Blob.h.

Referenced by Isis::Blob::Blob(), Isis::Blob::operator=(), ReadData(), and Isis::ImagePolygon::ReadData().

◆ p_swap

bool Isis::Table::p_swap
protected

Only used for reading.

Definition at line 144 of file Table.h.

Referenced by operator=(), ReadData(), ReadInit(), and Table().

◆ p_type

QString Isis::Blob::p_type
protectedinherited

Type of data stored in the buffer.

Definition at line 100 of file Blob.h.

Referenced by Isis::Blob::Blob(), Isis::Blob::operator=(), and Isis::ImagePolygon::ReadData().


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