CCfits 2.6

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List

Table.h
1 // Astrophysics Science Division,
2 // NASA/ Goddard Space Flight Center
3 // HEASARC
4 // http://heasarc.gsfc.nasa.gov
5 // e-mail: ccfits@legacy.gsfc.nasa.gov
6 //
7 // Original author: Ben Dorman
8
9 #ifndef TABLE_H
10 #define TABLE_H 1
11
12 // ExtHDU
13 #include "ExtHDU.h"
14 // FitsError
15 #include "FitsError.h"
16
17 namespace CCfits {
18 class Column;
19
20 } // namespace CCfits
21
22 #ifdef _MSC_VER
23 #include "MSconfig.h" // for truncation warning
24 #endif
25
26
27 #ifdef SSTREAM_DEFECT
28 #include <strstream>
29 #else
30 #include <sstream>
31 #endif
32
33
34 namespace CCfits {
35
282 class Table : public ExtHDU //## Inherits: <unnamed>%3804A126EB10
283 {
284
285 public:
286
287
288
289 class NoSuchColumn : public FitsException //## Inherits: <unnamed>%397CB0970174
290 {
291 public:
292 NoSuchColumn (const String& name, bool silent = true);
293 NoSuchColumn (int index, bool silent = true);
294
295 protected:
296 private:
297 private: //## implementation
298 };
299
300
301
302 class InvalidColumnSpecification : public FitsException //## Inherits: <unnamed>%3B1E52D703B0
303 {
304 public:
305 InvalidColumnSpecification (const String& msg, bool silent = true);
306
307 protected:
308 private:
309 private: //## implementation
310 };
311 Table(const Table &right);
312 virtual ~Table();
313
314 // ! return reference to a column given by column name.
315 virtual Column& column (const String& colName, bool caseSensitive = true) const;
316 virtual Column& column (int colIndex // ! return reference to a column given by a column index number
317 ) const;
318 virtual long rows () const;
319 void updateRows ();
320 void rows (long numRows);
321 virtual void deleteColumn (const String& columnName);
322 // Insert one or more blank rows into a FITS column.
323 void insertRows (long first, long number = 1);
324 void deleteRows (long first, long number = 1);
325 void deleteRows (const std::vector<long>& rowList);
326 virtual long getRowsize () const;
327 virtual int numCols () const;
328 virtual const ColMap& column () const;
329 virtual ColMap& column ();
330 virtual void copyColumn(const Column& inColumn, int colIndx, bool insertNewCol=true);
331
332 public:
333 // Additional Public Declarations
334
335 protected:
336 Table (FITS* p, HduType xtype, const String &hduName, int rows, // ! Number of rows in table at creation, to be used to initialize NAXIS2
337 const std::vector<String>& columnName, const std::vector<String>& columnFmt, const std::vector<String>& columnUnit = std::vector<String>(), int version = 1);
338 // ctor for creating a Group Table
339 Table (FITS* p, int version = 1, const String & groupName = String(""));
340 // To be called by reading operations.
341 Table (FITS* p, HduType xtype, const String &hduName = String(""), int version = 1);
342 // ExtHDU constructor for getting ExtHDUs by number.
343 // Necessary since EXTNAME is a reserved not required
344 // keyword.
345 Table (FITS* p, HduType xtype, int number);
346
347 virtual std::ostream & put (std::ostream &s) const;
348 void init (bool readFlag = false, const std::vector<String>& keys = std::vector<String>());
349 virtual void setColumn (const String& colname, Column* value);
350 void reindex (int startNum, bool isInsert);
351 void numCols (int value);
352
353 // Additional Protected Declarations
354
355 private:
356 virtual void initRead ();
357 virtual void readTableHeader (int ncols, std::vector<String>& colName, std::vector<String>& colFmt, std::vector<String>& colUnit) = 0;
358 // deep erasure , to be called by assignment and dtors.
359 void clearData ();
360 void copyData (const Table& right);
361
362 // Additional Private Declarations
363
364 private: //## implementation
365 // Data Members for Class Attributes
366 int m_numCols;
367
368 // Data Members for Associations
369 ColMap m_column;
370
371 // Additional Implementation Declarations
372 friend class Column;
373 };
374
375 // Class CCfits::Table::NoSuchColumn
376
377 // Class CCfits::Table::InvalidColumnSpecification
378
379 // Class CCfits::Table
380
381 inline long Table::rows () const
382 {
383
384 return axis(1);
385 }
386
387 inline void Table::rows (long numRows)
388 {
389
390 naxes(1) = numRows;
391 }
392
393 inline int Table::numCols () const
394 {
395 return m_numCols;
396 }
397
398 inline const ColMap& Table::column () const
399 {
400 return m_column;
401 }
402
403 inline void Table::numCols (int value)
404 {
405 m_numCols = value;
406 }
407
408 inline ColMap& Table::column ()
409 {
410 return m_column;
411 }
412
413 } // namespace CCfits
414
415
416 #endif
CCfits::Table::updateRows
void updateRows()
update the number of rows in the table
Definition: Table.cxx:340
CCfits::Table::~Table
virtual ~Table()
destructor
Definition: Table.cxx:174
CCfits::Table::init
void init(bool readFlag=false, const std::vector< String > &keys=std::vector< String >())
Definition: Table.cxx:253
CCfits::ExtHDU::version
int version() const
return the extension version number.
Definition: ExtHDU.h:677
CCfits::HDU::axis
long axis(size_t index) const
return the size of axis numbered index [zero based].
Definition: HDU.h:983
CCfits::Table::getRowsize
virtual long getRowsize() const
return the optimal number of rows to read or write at a time
Definition: Table.cxx:495
CCfits::FITS
Memory object representation of a disk FITS file.
Definition: FITS.h:628
CCfits::FitsException
FitsException is the base class for all exceptions thrown by this library.
Definition: FitsError.h:93
CCfits::ExtHDU
base class for all FITS extension HDUs, i.e. Image Extensions and Tables.
Definition: ExtHDU.h:438
CCfits::HDU::index
int index() const
return the HDU number
Definition: HDU.h:993
CCfits::Table::NoSuchColumn::NoSuchColumn
NoSuchColumn(const String &name, bool silent=true)
Exception ctor for exception thrown if the requested column (specified by name) is not present...
Definition: Table.cxx:27
CCfits::Table::numCols
virtual int numCols() const
return the number of Columns in the Table (the TFIELDS keyword).
Definition: Table.h:393
CCfits::ColMap
std::multimap< std::string, CCfits::Column * > ColMap
Type definition for a table&#39;s column container.
Definition: CCfits.h:142
CCfits::Table::NoSuchColumn
Exception to be thrown on a failure to retrieve a column specified either by name or index number...
Definition: Table.h:289
CCfits::Table::column
virtual const ColMap & column() const
return a reference to the multimap containing the columns.
Definition: Table.h:398
CCfits::ExtHDU::name
const String & name() const
return the name of the extension.
Definition: ExtHDU.h:651
CCfits::Table
Definition: Table.h:282
CCfits::Table::Table
Table(const Table &right)
copy constructor
Definition: Table.cxx:56
CCfits::Table::deleteColumn
virtual void deleteColumn(const String &columnName)
delete a column in a Table extension by name.
Definition: Table.cxx:377
CCfits::Table::rows
virtual long rows() const
return the number of rows in the table (NAXIS2).
Definition: Table.h:381
CCfits::HDU::naxes
std::vector< long > & naxes()
return the HDU data axis array.
Definition: HDU.h:1086
CCfits::Column
Abstract base class for Column objects.
Definition: Column.h:841
CCfits::Table::insertRows
void insertRows(long first, long number=1)
insert empty rows into the table
Definition: Table.cxx:400
CCfits::Table::copyColumn
virtual void copyColumn(const Column &inColumn, int colIndx, bool insertNewCol=true)
copy a column (from different or same HDU and file) into an existing table HDU.
Definition: Table.cxx:504
CCfits::Table::deleteRows
void deleteRows(long first, long number=1)
delete a range of rows in a table.
Definition: Table.cxx:419