lsst.afw  20.0.0-4-gde602ef96+1
FitsSchemaInputMapper.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 #ifndef AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
3 #define AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
4 
5 #include "lsst/afw/fits.h"
10 
11 namespace lsst {
12 namespace afw {
13 namespace table {
14 namespace io {
15 
21 public:
22  FitsColumnReader() noexcept = default;
23 
24  // Neither copyable nor moveable.
27  FitsColumnReader &operator=(FitsColumnReader const &) = delete;
28  FitsColumnReader &operator=(FitsColumnReader &&) = delete;
29 
42  virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits & fits) {}
43 
53  virtual void readCell(BaseRecord &record, std::size_t row, fits::Fits &fits,
54  std::shared_ptr<InputArchive> const &archive) const = 0;
55 
56  virtual ~FitsColumnReader() noexcept = default;
57 };
58 
63  int column; // column number (0-indexed); -1 for Flag fields
64  int bit; // flag bit number (0-indexed); -1 for non-Flag fields
65  std::string ttype; // name of the field (from TTYPE keys)
66  std::string tform; // FITS column format code (from TFORM keys)
67  std::string tccls; // which field class to use (from our own TCCLS keys)
68  std::string tunit; // field units (from TUNIT keys)
69  std::string doc; // field docs (from comments on TTYPE keys)
70 
71  explicit FitsSchemaItem(int column_, int bit_) : column(column_), bit(bit_) {}
72 };
73 
92 public:
94 
108 
110  FitsSchemaInputMapper(daf::base::PropertyList &metadata, bool stripMetadata);
111 
117 
121  void setArchive(std::shared_ptr<InputArchive> archive);
122 
128  bool readArchive(afw::fits::Fits &fits);
129 
131  bool hasArchive() const;
132 
139  Item const *find(std::string const &ttype) const;
140 
147  Item const *find(int column) const;
148 
153  void erase(Item const *item);
154 
159  void erase(std::string const &ttype);
160 
165  void erase(int column);
166 
170  void customize(std::unique_ptr<FitsColumnReader> reader);
171 
177  Schema finalize();
178 
182  void readRecord(BaseRecord &record, afw::fits::Fits &fits, std::size_t row);
183 
184 private:
185  class Impl;
186  std::shared_ptr<Impl> _impl;
187 };
188 } // namespace io
189 } // namespace table
190 } // namespace afw
191 } // namespace lsst
192 
193 #endif // !AFW_TABLE_IO_FitsSchemaInputMapper_h_INCLUDED
std::string
STL class.
std::shared_ptr
STL class.
lsst::afw::table::io::FitsSchemaInputMapper::FitsSchemaInputMapper
FitsSchemaInputMapper(FitsSchemaInputMapper &&)
lsst::afw::table::io::FitsColumnReader::prepRead
virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits &fits)
Optionally read ahead and cache values from multiple rows.
Definition: FitsSchemaInputMapper.h:42
lsst::afw::table::io::FitsSchemaInputMapper::~FitsSchemaInputMapper
~FitsSchemaInputMapper()
lsst::afw::fits::Fits
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:297
lsst::afw::table::io::FitsSchemaInputMapper
A class that describes a mapping from a FITS binary table to an afw::table Schema.
Definition: FitsSchemaInputMapper.h:91
lsst::afw::table::io::FitsSchemaItem::doc
std::string doc
Definition: FitsSchemaInputMapper.h:69
fits.h
lsst::afw::table::io::erase
void erase(int column)
BaseColumnView.h
lsst::daf::base::PropertyList
lsst::afw::table::io::FitsSchemaItem::column
int column
Definition: FitsSchemaInputMapper.h:63
lsst::afw::table::Schema
Defines the fields and offsets for a table.
Definition: Schema.h:50
lsst::afw::table::io::FitsSchemaInputMapper::operator=
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper &&)
lsst::afw::table::io::FitsSchemaItem::bit
int bit
Definition: FitsSchemaInputMapper.h:64
lsst::afw::table::io::FitsColumnReader::FitsColumnReader
FitsColumnReader() noexcept=default
BaseRecord.h
fits
Fits * fits
Definition: FitsWriter.cc:90
lsst::afw::table::io::FitsSchemaInputMapper::FitsSchemaInputMapper
FitsSchemaInputMapper(FitsSchemaInputMapper const &)
lsst::afw::table::io::FitsSchemaItem::ttype
std::string ttype
Definition: FitsSchemaInputMapper.h:65
lsst::afw::table::BaseRecord
Base class for all records.
Definition: BaseRecord.h:31
lsst::afw::table::io::FitsSchemaItem::tform
std::string tform
Definition: FitsSchemaInputMapper.h:66
lsst::afw::table::io::FitsColumnReader
Polymorphic reader interface used to read different kinds of objects from one or more FITS binary tab...
Definition: FitsSchemaInputMapper.h:20
lsst::afw::table::io::FitsSchemaItem::tccls
std::string tccls
Definition: FitsSchemaInputMapper.h:67
lsst::afw::table::io::FitsColumnReader::~FitsColumnReader
virtual ~FitsColumnReader() noexcept=default
lsst
A base class for image defects.
lsst::afw::table::io::FitsColumnReader::readCell
virtual void readCell(BaseRecord &record, std::size_t row, fits::Fits &fits, std::shared_ptr< InputArchive > const &archive) const =0
Read values from a single row.
lsst::afw::table::io::FitsSchemaInputMapper::Item
FitsSchemaItem Item
Definition: FitsSchemaInputMapper.h:93
lsst::afw::table::io::FitsSchemaInputMapper::PREPPED_ROWS_FACTOR
static std::size_t PREPPED_ROWS_FACTOR
When processing each column, divide this number by the record size (in bytes) and ask CFITSIO to read...
Definition: FitsSchemaInputMapper.h:107
std
STL namespace.
lsst::afw::table::io::FitsSchemaItem::FitsSchemaItem
FitsSchemaItem(int column_, int bit_)
Definition: FitsSchemaInputMapper.h:71
lsst::afw::table::io::FitsSchemaItem::tunit
std::string tunit
Definition: FitsSchemaInputMapper.h:68
lsst::afw::table::io::FitsSchemaInputMapper::Impl
Definition: FitsSchemaInputMapper.cc:46
InputArchive.h
std::size_t
Schema.h
lsst::afw::table::io::FitsSchemaItem
A structure that describes a field as a collection of related strings read from the FITS header.
Definition: FitsSchemaInputMapper.h:62
std::unique_ptr
STL class.
lsst::afw::table::io::FitsSchemaInputMapper::operator=
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper const &)