Isis 3 Programmer Reference
Isis::TableField Class Reference

Class for storing an Isis::Table's field information. More...

#include <TableField.h>

Collaboration diagram for Isis::TableField:
Collaboration graph

Public Types

enum  Type { Integer, Double, Text, Real }
 This enum describes the value type for the TableField. More...
 

Public Member Functions

 TableField (const QString &name, Type type, int size=1)
 Constructs a TableField object with the given field name, field value type, and field size. More...
 
 TableField (PvlGroup &field)
 Constructs a TableField object from a PvlGroup. More...
 
 ~TableField ()
 Destroys the TableField object. More...
 
QString name () const
 Returns the name of the TableField. More...
 
Type type () const
 Returns the enumerated value of the TableField value's type. More...
 
bool isInteger () const
 Determines whether the field type is Integer. More...
 
bool isDouble () const
 Determines whether the field type is Double. More...
 
bool isText () const
 Determines whether the field type is Text. More...
 
bool isReal () const
 Determines whether the field type is Text. More...
 
int bytes () const
 Returns the number of bytes in the field value. More...
 
int size () const
 Returns the number of values stored for the field at each record. More...
 
 operator int () const
 Casts the table field value to int if the type is Integer and the size is. More...
 
 operator double () const
 Casts the table field value to double if the type is Double and the size is. More...
 
 operator float () const
 Casts the table field value to float if the type is Real and the size is. More...
 
 operator QString () const
 Casts the table field value to string if the type is Text. More...
 
 operator std::vector< int > () const
 Casts the table field value to a vector of ints if the type is Integer. More...
 
 operator std::vector< double > () const
 Casts the table field value to a vector of doubles if the type is Double. More...
 
 operator std::vector< float > () const
 Casts the table field value to a vector of floats if the type is Real. More...
 
void operator= (const int value)
 Sets field value equal to input if TableField::Type is Integer and size is 1. More...
 
void operator= (const double value)
 Sets field value equal to input if TableField::Type is Double and size is 1. More...
 
void operator= (const float value)
 Sets field value equal to input if the TableField::Type is Real and the size is 1. More...
 
void operator= (const QString &value)
 Sets field value equal to input if the TableField::Type is Text. More...
 
void operator= (const std::vector< int > &values)
 Sets field value equal to input if the TableField::Type is Integer and the input vector size matches the field size. More...
 
void operator= (const std::vector< double > &values)
 Sets field value equal to the input if the TableField::Type is Double and the input vector size matches the field size. More...
 
void operator= (const std::vector< float > &value)
 Sets field value equal to the input if the TableField::Type is Real and the input vector size matches the field size. More...
 
void operator= (const char *buf)
 Sets field value equal to the values found in the character string array if the TableField::Type is Text. More...
 
void operator= (const void *buf)
 Sets field value equal to the values found in the input binary buffer. More...
 
PvlGroup pvlGroup ()
 Creates and returns a PvlGroup named "Field" containing the following keywords and their respective values: "Name", "Type", and "Size". More...
 

Static Public Member Functions

static QString toString (const TableField &field, QString delimiter=",")
 

Private Attributes

QString m_name
 Field name. More...
 
Type m_type
 Field value type. More...
 
int m_size
 Field size. More...
 
int m_bytes
 Number of bytes in field. More...
 
std::vector< int > m_ivalues
 Vector containing integer field values. More...
 
std::vector< double > m_dvalues
 Vector containing double field values. More...
 
std::vector< float > m_rvalues
 Vector containing Real field values. More...
 
QString m_svalue
 String containing text value of field. More...
 

Detailed Description

Class for storing an Isis::Table's field information.

This class represents the field values of an Isis3 table. In Isis3, fields correspond to column values. Each TableField object is a single table entry for a column value at a specific row (or record) of the table.

Be careful to note that the size of a field is the number of array values for a single column entry. It is not the number of rows or records of the table.

Author
2004-09-01 Jeff Anderson
History:

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

2007-05-28 Steven Lambright - Added 4 byte floating point capabilities

2012-10-04 Jeannie Backer - Added accessor method for FieldType. Moved method implementations to cpp file. Changed member variable prefix to m_. Changed methods to lower camel case. Added documentation. Moved PvlGroup from header include to forward declaration. Added includes to cpp and header. Ordered includes and changed methods to lower camel case in the unitTest. Improved test coverage in all categories. Added padding to control statements. Fixes #1169.

2012-11-21 Jeannie Backer - Added documentation and error message if a Text type field is set to a string value that is longer than the number of allowed bytes for the field. References #700.

2015-10-04 Jeannie Backer Improved coding standards. References #1178

Todo:
Finish class documentation

Definition at line 63 of file TableField.h.

Member Enumeration Documentation

◆ Type

This enum describes the value type for the TableField.

Enumerator
Integer 

The values in the field are 4 byte integers.

Double 

The values in the field are 8 byte doubles.

Text 

The values in the field are text strings with 1 byte per character.

Real 

The values in the field are 4 byte reals or floats.

Definition at line 68 of file TableField.h.

Constructor & Destructor Documentation

◆ TableField() [1/2]

Isis::TableField::TableField ( const QString &  name,
TableField::Type  type,
int  size = 1 
)

Constructs a TableField object with the given field name, field value type, and field size.

The size defaults to 1 entry value per field.

Parameters
nameThe name of the field.
typeThe type of the field value.
sizeThe size of the field. This is the number of values for a single table entry. Defaults to 1.

Definition at line 41 of file TableField.cpp.

◆ TableField() [2/2]

Isis::TableField::TableField ( PvlGroup field)

Constructs a TableField object from a PvlGroup.

The given group must contain the PvlKeywords "Name", "Size", and "Type". "Size" must be an integer value and valid values for "Type" are "Integer", "Double", "Text", or "Real".

Parameters
fieldPvlGroup containing Name, Size, and Type for new TableField object
Exceptions
IException::Programmer- Invalid field type

Definition at line 75 of file TableField.cpp.

◆ ~TableField()

Isis::TableField::~TableField ( )

Destroys the TableField object.

Definition at line 105 of file TableField.cpp.

Member Function Documentation

◆ bytes()

int Isis::TableField::bytes ( ) const

Returns the number of bytes in the field value.

Returns
int The number of bytes in the TableField

Definition at line 175 of file TableField.cpp.

Referenced by Isis::TableRecord::Swap(), and Isis::TableRecord::Unpack().

◆ isDouble()

bool Isis::TableField::isDouble ( ) const

Determines whether the field type is Double.

Returns
bool Returns true if field type is Double, and false if it is not.

Definition at line 148 of file TableField.cpp.

Referenced by Isis::ImportPdsTable::extract(), Isis::Blobber::load(), Isis::TableRecord::Pack(), Isis::ExportPdsTable::Pack(), and Isis::TableRecord::Swap().

◆ isInteger()

bool Isis::TableField::isInteger ( ) const

Determines whether the field type is Integer.

Returns
bool Returns true if field type is Integer, and false if it is not.

Definition at line 138 of file TableField.cpp.

Referenced by Isis::ImportPdsTable::extract(), Isis::Blobber::load(), Isis::TableRecord::Pack(), Isis::ExportPdsTable::Pack(), and Isis::TableRecord::Swap().

◆ isReal()

bool Isis::TableField::isReal ( ) const

Determines whether the field type is Text.

Returns
bool Returns true if field type is Text, and false if it is not.

Definition at line 166 of file TableField.cpp.

Referenced by Isis::TableRecord::Pack(), Isis::ExportPdsTable::Pack(), and Isis::TableRecord::Swap().

◆ isText()

bool Isis::TableField::isText ( ) const

Determines whether the field type is Text.

Returns
bool Returns true if field type is Text, and false if it is not.

Definition at line 157 of file TableField.cpp.

Referenced by Isis::TableRecord::Pack(), Isis::ExportPdsTable::Pack(), and Isis::TableRecord::Swap().

◆ name()

QString Isis::TableField::name ( ) const

Returns the name of the TableField.

Returns
string Name of TableField

Definition at line 113 of file TableField.cpp.

Referenced by Isis::ExportPdsTable::fillMetaData(), and Isis::ExportPdsTable::Pack().

◆ operator double()

Isis::TableField::operator double ( ) const

Casts the table field value to double if the type is Double and the size is.

TableField field("Field 1", FieldType::Double, 1); // The following lines are equivalent double value = double(field); double value = (double) field;

Returns
double The value of the field.
Exceptions
IException::Programmer- Field is not a Double
IException::Programmer- Field has multiple Double values

Definition at line 233 of file TableField.cpp.

◆ operator float()

Isis::TableField::operator float ( ) const

Casts the table field value to float if the type is Real and the size is.

TableField field("Field 1", FieldType::Real, 1); // The following lines are equivalent float value = float(field); float value = (float) field;

Returns
float The value of the field.
Exceptions
IException::Programmer- Field is not a Real
IException::Programmer- Field has multiple Real values

Definition at line 262 of file TableField.cpp.

◆ operator int()

Isis::TableField::operator int ( ) const

Casts the table field value to int if the type is Integer and the size is.

TableField field("Field 1", FieldType::Integer, 1); // The following lines are equivalent int value = int(field); int value = (int) field;

Returns
int The value of the field.
Exceptions
IException::Programmer- Field is not an Integer
IException::Programmer- Field has multiple Integer values

Definition at line 204 of file TableField.cpp.

References _FILEINFO_.

◆ operator QString()

Isis::TableField::operator QString ( ) const

Casts the table field value to string if the type is Text.

TableField field("Field 1", FieldType::Text, 9); // The following lines are equivalent string value = QString(field); string value = (QString) field;

Returns
string The value of the field.
Exceptions
IException::Programmer- Field is not a string

Definition at line 289 of file TableField.cpp.

References _FILEINFO_.

◆ operator std::vector< double >()

Isis::TableField::operator std::vector< double > ( ) const

Casts the table field value to a vector of doubles if the type is Double.

TableField field("Field 1", FieldType::Double, 3); vector<double> values = std::vector<double>(field);

Returns
The value of the field.
Exceptions
IException::Programmer- Field is not a Double array

Definition at line 329 of file TableField.cpp.

◆ operator std::vector< float >()

Isis::TableField::operator std::vector< float > ( ) const

Casts the table field value to a vector of floats if the type is Real.

TableField field("Field 1", FieldType::Real, 3); vector<float> values = std::vector<float>(field);

Returns
The value of the field.
Exceptions
IException::Programmer- Field is not an Integer array

Definition at line 349 of file TableField.cpp.

◆ operator std::vector< int >()

Isis::TableField::operator std::vector< int > ( ) const

Casts the table field value to a vector of ints if the type is Integer.

TableField field("Field 1", FieldType::Integer, 3); vector<int> values = std::vector<int>(field);

Returns
The value of the field.
Exceptions
IException::Programmer- Field is not an Integer array

Definition at line 309 of file TableField.cpp.

References _FILEINFO_.

◆ operator=() [1/9]

void Isis::TableField::operator= ( const int  value)

Sets field value equal to input if TableField::Type is Integer and size is 1.

Parameters
valueInteger to be assigned to field value
Exceptions
IException::Programmer- Field is not an Integer
IException::Programmer- Field has multiple Integer values

Definition at line 366 of file TableField.cpp.

References _FILEINFO_, and Isis::toString().

◆ operator=() [2/9]

void Isis::TableField::operator= ( const double  value)

Sets field value equal to input if TableField::Type is Double and size is 1.

Parameters
valueDouble to be assigned to field value
Exceptions
IException::Programmer- Field is not a Double
IException::Programmer- Field has multiple Double values

Definition at line 390 of file TableField.cpp.

◆ operator=() [3/9]

void Isis::TableField::operator= ( const float  value)

Sets field value equal to input if the TableField::Type is Real and the size is 1.

Parameters
valuefloat to be assigned to field value
Exceptions
IException::Programmer- Field is not a Real
IException::Programmer- Field has multiple Real values

Definition at line 414 of file TableField.cpp.

◆ operator=() [4/9]

void Isis::TableField::operator= ( const QString &  value)

Sets field value equal to input if the TableField::Type is Text.

Parameters
valuestring to be assigned to field value
Exceptions
IException::Programmer- Field is not a string

Definition at line 436 of file TableField.cpp.

References _FILEINFO_, and Isis::toString().

◆ operator=() [5/9]

void Isis::TableField::operator= ( const std::vector< int > &  values)

Sets field value equal to input if the TableField::Type is Integer and the input vector size matches the field size.

Parameters
valuesInteger vector of values to be assigned to field value
Exceptions
IException::Programmer- Field is not an Integer
IException::Programmer- Vector is not the correct size

Definition at line 469 of file TableField.cpp.

References _FILEINFO_, and Isis::toString().

◆ operator=() [6/9]

void Isis::TableField::operator= ( const std::vector< double > &  values)

Sets field value equal to the input if the TableField::Type is Double and the input vector size matches the field size.

Parameters
valuesDouble vector of values to be assigned to field value
Exceptions
IException::Programmer- Field is not a Double
IException::Programmer- Vector is not the correct size

Definition at line 493 of file TableField.cpp.

◆ operator=() [7/9]

void Isis::TableField::operator= ( const std::vector< float > &  values)

Sets field value equal to the input if the TableField::Type is Real and the input vector size matches the field size.

Parameters
valuesFloat vector of values to be assigned to field value
Exceptions
IException::Programmer- Field is not a Real
IException::Programmer- Vector is not the correct size

Definition at line 518 of file TableField.cpp.

◆ operator=() [8/9]

void Isis::TableField::operator= ( const char *  buf)

Sets field value equal to the values found in the character string array if the TableField::Type is Text.

Parameters
bufCharacter array conataining text values to be assigned to the field value.
Exceptions
IException::Programmer- Field is not Text

Definition at line 591 of file TableField.cpp.

References _FILEINFO_.

◆ operator=() [9/9]

void Isis::TableField::operator= ( const void *  ibuf)

Sets field value equal to the values found in the input binary buffer.

This method reads the buffer by assuming that the buffer values are stored in the same number of bytes as the TableField::Type.

Parameters
ibufBinary buffer containing values to be assigned to the field value.
Exceptions
iException::Programmer- Undefined field type.

Definition at line 544 of file TableField.cpp.

◆ pvlGroup()

PvlGroup Isis::TableField::pvlGroup ( )

Creates and returns a PvlGroup named "Field" containing the following keywords and their respective values: "Name", "Type", and "Size".

Returns
PvlGroup containing field Name, Type, and Size

Definition at line 605 of file TableField.cpp.

◆ size()

int Isis::TableField::size ( ) const

Returns the number of values stored for the field at each record.

Returns
int The size of the TableField

Definition at line 184 of file TableField.cpp.

Referenced by Isis::ImportPdsTable::extract(), Isis::ExportPdsTable::fillMetaData(), Isis::TableRecord::Pack(), Isis::ExportPdsTable::Pack(), and Isis::TableRecord::Swap().

◆ type()

TableField::Type Isis::TableField::type ( ) const

Returns the enumerated value of the TableField value's type.

  • 0 = Integer
  • 1 = Double
  • 2 = Text
  • 3 = Real
Returns
TableField::Type Name of TableField

Definition at line 128 of file TableField.cpp.

Referenced by Isis::ExportPdsTable::fillMetaData().

Member Data Documentation

◆ m_bytes

int Isis::TableField::m_bytes
private

Number of bytes in field.

Definition at line 118 of file TableField.h.

◆ m_dvalues

std::vector<double> Isis::TableField::m_dvalues
private

Vector containing double field values.

If the field Type is not Double, this vector will be empty.

Definition at line 122 of file TableField.h.

◆ m_ivalues

std::vector<int> Isis::TableField::m_ivalues
private

Vector containing integer field values.

If the field Type is not Integer, this vector will be empty.

Definition at line 119 of file TableField.h.

◆ m_name

QString Isis::TableField::m_name
private

Field name.

Definition at line 114 of file TableField.h.

◆ m_rvalues

std::vector<float> Isis::TableField::m_rvalues
private

Vector containing Real field values.

If the field Type is not Real, this vector will be empty.

Definition at line 125 of file TableField.h.

◆ m_size

int Isis::TableField::m_size
private

Field size.

This is the number of values per field entry of the table.

Definition at line 116 of file TableField.h.

◆ m_svalue

QString Isis::TableField::m_svalue
private

String containing text value of field.

If the field Type is not Text, this string will be empty.

Definition at line 128 of file TableField.h.

◆ m_type

Type Isis::TableField::m_type
private

Field value type.

Definition at line 115 of file TableField.h.


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