18 #include "FitsError.h"
851 RangeError (
const String& msg,
bool silent =
true);
899 UnspecifiedLengths (
const String& diag,
bool silent =
true);
935 NoNullValue (
const String& diag,
bool silent =
true);
955 bool operator==(
const Column &right)
const;
957 bool operator!=(
const Column &right)
const;
959 virtual void readData (
long firstRow,
long nelements,
long firstElem = 1) = 0;
961 virtual Column * clone ()
const = 0;
965 friend std::ostream& operator << (std::ostream& s,
const Column& right);
974 friend bool operator < (
const Column& left,
const Column& right);
976 friend bool operator > (
const Column& left,
const Column& right);
978 void unit (
const String& value);
981 void index (
int value);
985 void width (
long value);
988 double scale ()
const;
989 void scale (
double value);
990 double zero ()
const;
991 void zero (
double value);
992 const String&
display ()
const;
993 const String&
dimen ()
const;
994 void dimen (
const String& value);
997 static const String& TFORM ();
998 static const String& TDISP ();
999 static const String& TSCAL ();
1000 static const String& TZERO ();
1001 static const String& TDIM ();
1002 const String&
format ()
const;
1003 const String&
unit ()
const;
1004 const String&
name ()
const;
1013 template <
typename S>
1014 void write (
const std::vector<S>& indata,
long firstRow);
1016 void write (
const std::vector<std::complex<float> >& indata,
long firstRow);
1018 void write (
const std::vector<std::complex<double> >& indata,
long firstRow);
1020 template <
typename S>
1021 void write (
const std::valarray<S>& indata,
long firstRow);
1023 void write (
const std::valarray<std::complex<float> >& indata,
long firstRow);
1025 void write (
const std::valarray<std::complex<double> >& indata,
long firstRow);
1027 template <
typename S>
1028 void write (S* indata,
long nRows,
long firstRow);
1031 template <
typename S>
1032 void write (
const std::vector<S>& indata,
long firstRow, S* nullValue);
1034 template <
typename S>
1035 void write (
const std::valarray<S>& indata,
long firstRow, S* nullValue);
1037 template <
typename S>
1038 void write (S* indata,
long nRows,
long firstRow, S* nullValue);
1048 template <
typename S>
1049 void write (
const std::valarray<S>& indata,
long nRows,
long firstRow);
1051 void write (
const std::valarray<std::complex<float> >& indata,
long nRows,
long firstRow);
1053 void write (
const std::valarray<std::complex<double> >& indata,
long nRows,
long firstRow);
1056 template <
typename S>
1057 void write (
const std::vector<S>& indata,
long nRows,
long firstRow);
1059 void write (
const std::vector<std::complex<float> >& indata,
long nRows,
long firstRow);
1061 void write (
const std::vector<std::complex<double> >& indata,
long nRows,
long firstRow);
1065 template <
typename S>
1066 void write (S* indata,
long nElements,
long nRows,
long firstRow);
1069 template <
typename S>
1070 void write (
const std::valarray<S>& indata,
long nRows,
long firstRow, S* nullValue);
1073 template <
typename S>
1074 void write (
const std::vector<S>& indata,
long nRows,
long firstRow, S* nullValue);
1076 template <
typename S>
1077 void write (S* indata,
long nElements,
long nRows,
long firstRow, S* nullValue);
1081 template <
typename S>
1082 void write (
const std::valarray<S>& indata,
1083 const std::vector<long>& vectorLengths,
1086 void write (
const std::valarray<std::complex<float> >& indata,
1087 const std::vector<long>& vectorLengths,
1090 void write (
const std::valarray<std::complex<double> >& indata,
1091 const std::vector<long>& vectorLengths,
1094 template <
typename S>
1095 void write (
const std::vector<S>& indata,
1096 const std::vector<long>& vectorLengths,
1101 void write (
const std::vector<std::complex<float> >& indata,
1102 const std::vector<long>& vectorLengths,
1105 void write (
const std::vector<std::complex<double> >& indata,
1106 const std::vector<long>& vectorLengths,
1109 template <
typename S>
1110 void write (S* indata,
long nElements,
1111 const std::vector<long>& vectorLengths,
1114 template <
typename S>
1115 void writeArrays (
const std::vector<std::valarray<S> >& indata,
long firstRow);
1117 void writeArrays (
const std::vector<std::valarray<std::complex<float> > >& indata,
long firstRow);
1119 void writeArrays (
const std::vector<std::valarray<std::complex<double> > >& indata,
long firstRow);
1121 template <
typename S>
1122 void writeArrays (
const std::vector<std::valarray<S> >& indata,
long firstRow, S* nullValue);
1128 template <
typename S>
1129 void read(std::vector<S>& vals,
long first,
long last) ;
1132 void read(std::vector< std::complex<float> >& ,
long first,
long last);
1134 void read(std::vector< std::complex<double> >& ,
long first,
long last);
1136 void read(std::vector<String>& vals,
long first,
long last);
1139 template <
typename S>
1140 void read(std::valarray<S>& vals,
long first,
long last) ;
1142 void read(std::valarray<std::complex<float> >& vals,
long first,
long last) ;
1144 void read(std::valarray<std::complex<double> >& vals,
long first,
long last) ;
1147 template <
typename S>
1148 void read(std::valarray<S>& vals,
long rows) ;
1149 template <
typename S>
1150 void read(std::vector<S>& vals,
long rows);
1151 void read(std::valarray<std::complex<float> >& vals,
long rows) ;
1152 void read(std::valarray<std::complex<double> >& vals,
long rows) ;
1153 void read(std::vector<std::complex<float> >& vals,
long rows) ;
1154 void read(std::vector<std::complex<double> >& vals,
long rows) ;
1157 template <
typename S>
1158 void readArrays(std::vector<std::valarray<S> >& vals,
long first,
long last) ;
1160 void readArrays(std::vector<std::valarray<std::complex<float> > >& vals,
long first,
long last) ;
1162 void readArrays(std::vector<std::valarray<std::complex<double> > >& vals,
long first,
long last) ;
1168 template <
typename S>
1169 void read(std::vector<S>& vals,
long first,
long last, S* nullValue) ;
1172 template <
typename S>
1173 void read(std::valarray<S>& vals,
long first,
long last, S* nullValue);
1176 template <
typename S>
1177 void read(std::valarray<S>& vals,
long rows, S* nullValue) ;
1179 template <
typename S>
1180 void read(std::vector<S>& vals,
long rows, S* nullValue) ;
1183 template <
typename S>
1184 void readArrays(std::vector<std::valarray<S> >& vals,
long first,
long last, S* nullValue);
1187 template <
typename T>
1191 template <
typename T>
1194 void write (
const std::vector<String>& indata,
long firstRow);
1202 friend void Table::initRead();
1204 friend void Table::reindex(
int startNum,
bool isInsert);
1210 const String &columnName,
1214 int rpt = 1,
long w = 1,
const String &
comment =
"");
1217 virtual bool compare (
const Column &right)
const;
1223 virtual std::ostream&
put (std::ostream& s)
const;
1225 static const String& TBCOL ();
1226 static const String& TTYPE ();
1227 static const String& TUNIT ();
1228 static const String& TNULL ();
1229 static const String& TLMIN ();
1230 static const String& TLMAX ();
1231 static const String& TDMAX ();
1232 static const String& TDMIN ();
1233 static const std::vector<String>& columnKeys ();
1234 const String&
comment ()
const;
1242 virtual void insertRows (
long first,
long number = 1) = 0;
1243 virtual void deleteRows (
long first,
long number = 1) = 0;
1244 virtual size_t getStoredDataSize()
const = 0;
1245 static void loadColumnKeys ();
1246 void name (
const String& value);
1247 void format (
const String& value);
1248 long numberOfElements (
long& first,
long& last);
1251 static const String s_TBCOL;
1252 static const String s_TTYPE;
1253 static const String s_TFORM;
1254 static const String s_TDISP;
1255 static const String s_TUNIT;
1256 static const String s_TSCAL;
1257 static const String s_TZERO;
1258 static const String s_TDIM;
1259 static const String s_TNULL;
1260 static const String s_TLMIN;
1261 static const String s_TLMAX;
1262 static const String s_TDMAX;
1263 static const String s_TDMIN;
1279 static const short LLIMITSHORT;
1280 static const long LLIMITLONG;
1281 static const unsigned short LLIMITUSHORT;
1282 static const unsigned long LLIMITULONG;
1283 static const unsigned char LLIMITUCHAR;
1284 static const float LLIMITFLOAT;
1285 static const double LLIMITDOUBLE;
1286 static const short ULIMITSHORT;
1287 static const long ULIMITLONG;
1288 static const unsigned short ULIMITUSHORT;
1289 static const unsigned long ULIMITULONG;
1290 static const unsigned char ULIMITUCHAR;
1291 static const float ULIMITFLOAT;
1292 static const double ULIMITDOUBLE;
1293 static const int LLIMITINT;
1294 static const int ULIMITINT;
1295 static const unsigned int LLIMITUINT;
1296 static const unsigned int ULIMITUINT;
1297 static const LONGLONG LLIMITLONGLONG;
1298 static const LONGLONG ULIMITLONGLONG;
1302 static std::vector<String> s_columnKeys;
1340 return right.
put(s);
1343 inline bool operator < (
const Column& left,
const Column& right)
1346 return left.m_index < right.m_index;
1349 inline bool operator > (
const Column& left,
const Column& right)
1352 return left.m_index > right.m_index;
1447 inline const String& Column::TBCOL ()
1452 inline const String& Column::TTYPE ()
1457 inline const String& Column::TFORM ()
1462 inline const String& Column::TDISP ()
1467 inline const String& Column::TUNIT ()
1472 inline const String& Column::TSCAL ()
1477 inline const String& Column::TZERO ()
1482 inline const String& Column::TDIM ()
1487 inline const String& Column::TNULL ()
1492 inline const String& Column::TLMIN ()
1497 inline const String& Column::TLMAX ()
1502 inline const String& Column::TDMAX ()
1507 inline const String& Column::TDMIN ()
1512 inline const std::vector<String>& Column::columnKeys ()
1514 return s_columnKeys;
Exception thrown if the data supplied for a write operation is less than declared.
Definition: Column.h:921
InsufficientElements(const String &msg, bool silent=true)
Exception ctor, prefixes the string "FitsError: not enough elements supplied for write operation: " ...
Definition: Column.cxx:104
Exception thrown for invalid data type inputs.
Definition: Column.h:861
InvalidDataType(const String &str=string(), bool silent=true)
Exception ctor, prefixes the string "FitsError: Incorrect data type: " before the specific message.
Definition: Column.cxx:53
Exception thrown if user enters a non-positive number for the number of rows to write.
Definition: Column.h:945
InvalidNumberOfRows(int number, bool silent=true)
Exception ctor, prefixes the string "Fits Error: number of rows to write must be positive " before th...
Definition: Column.cxx:124
Exception thrown on attempting to read a row number beyond the end of a table.
Definition: Column.h:909
InvalidRowNumber(const String &diag, bool silent=true)
Exception ctor, prefixes the string "FitsError: Invalid Row Number - Column: " before the specific me...
Definition: Column.cxx:94
Exception thrown on incorrect row writing request.
Definition: Column.h:873
InvalidRowParameter(const String &diag, bool silent=true)
Exception ctor, prefixes the string "FitsError: row offset or length incompatible with column declara...
Definition: Column.cxx:63
Exception thrown if a null value is specified without support from existing column header.
Definition: Column.h:933
NoNullValue(const String &diag, bool silent=true)
Exception ctor, prefixes the string "Fits Error: No null value specified for column: " before the spe...
Definition: Column.cxx:114
exception to be thrown for inputs that cause range errors in column read operations.
Definition: Column.h:849
RangeError(const String &msg, bool silent=true)
Exception ctor, prefixes the string "FitsError: Range error in operation " before the specific messag...
Definition: Column.cxx:43
Exception thrown on attempting to access a scalar column as vector data.
Definition: Column.h:885
WrongColumnType(const String &diag, bool silent=true)
Exception ctor, prefixes the string "FitsError: Attempt to return scalar data from vector column,...
Definition: Column.cxx:73
Abstract base class for Column objects.
Definition: Column.h:842
Column(const Column &right)
copy constructor, used in copying Columns to standard library containers.
Definition: Column.cxx:171
const String & unit() const
get units of data in Column (TUNITn keyword)
Definition: Column.h:1527
virtual void setDimen()
set the TDIMn keyword.
Definition: Column.h:1332
const String & comment() const
retrieve comment for Column
Definition: Column.h:1517
const String & format() const
return TFORMn keyword
Definition: Column.h:1522
void setDisplay()
set the TDISPn keyword
Definition: Column.cxx:280
ValueType type() const
returns the data type of the column
Definition: Column.h:1437
void addNullValue(T nullVal)
Set the TNULLn keyword for the column.
Definition: ColumnT.h:1485
void makeHDUCurrent()
make HDU containing this the current HDU of the fits file.
Definition: Column.cxx:270
void resetRead()
reset the Column's isRead flag to false
Definition: Column.h:1355
bool getNullValue(T *nullVal) const
Get the value of the TNULLn keyword for the column.
Definition: ColumnT.h:1520
void readArrays(std::vector< std::valarray< S > > &vals, long first, long last)
return a set of rows of a vector column into a vector of valarrays
Definition: ColumnT.h:680
int rows() const
return the number of rows in the table.
Definition: Column.cxx:275
const String & display() const
return TDISPn keyword
Definition: Column.h:1422
double zero() const
get TZEROn value
Definition: Column.h:1412
void write(const std::vector< S > &indata, long firstRow)
write a vector of values into a scalar column starting with firstRow
Definition: ColumnT.h:869
long width() const
return column data width
Definition: Column.h:1380
Table * parent() const
return a pointer to the Table which owns this Column
Definition: Column.cxx:312
const String & name() const
return name of Column (TTYPEn keyword)
Definition: Column.h:1532
virtual void readData(long firstRow, long nelements, long firstElem=1)=0
Read (or reread) data from the disk into the Column object's internal arrays.
size_t repeat() const
get the repeat count for the rows
Definition: Column.h:1390
bool isRead() const
flag set to true if the entire column data has been read from disk
Definition: Column.h:1370
int index() const
get the Column index (the n in TTYPEn etc).
Definition: Column.h:1360
void read(std::vector< S > &vals, long first, long last)
Retrieve data from a scalar column into a std::vector.
Definition: ColumnT.h:42
const String & dimen() const
return TDIMn keyword
Definition: Column.h:1427
bool varLength() const
boolean, set to true if Column has variable length vector rows.
Definition: Column.h:1395
fitsfile * fitsPointer()
fits pointer corresponding to fits file containing column data.
Definition: Column.cxx:264
virtual std::ostream & put(std::ostream &s) const
internal implementation of << operator.
Definition: Column.cxx:302
double scale() const
get TSCALn value
Definition: Column.h:1400
void writeArrays(const std::vector< std::valarray< S > > &indata, long firstRow)
write a vector of valarray objects to the column, starting at row firstRow >= 1
Definition: ColumnT.h:1257
virtual ~Column()
destructor.
Definition: Column.cxx:234
FitsError is the exception thrown by non-zero cfitsio status codes.
Definition: FitsError.h:113
FitsException is the base class for all exceptions thrown by this library.
Definition: FitsError.h:94
void insertRows(long first, long number=1)
insert empty rows into the table
Definition: Table.cxx:400
void updateRows()
update the number of rows in the table
Definition: Table.cxx:340
void deleteRows(long first, long number=1)
delete a range of rows in a table.
Definition: Table.cxx:419
Namespace enclosing all CCfits classes and globals definitions.
Definition: AsciiTable.cxx:26
std::ostream & operator<<(std::ostream &s, const Column &right)
output operator for Column objects.
Definition: Column.h:1337
ValueType
CCfits value types and their CFITSIO equivalents (in caps)
Definition: CCfits.h:81