LSST Applications  21.0.0-147-g0e635eb1+1acddb5be5,22.0.0+052faf71bd,22.0.0+1ea9a8b2b2,22.0.0+6312710a6c,22.0.0+729191ecac,22.0.0+7589c3a021,22.0.0+9f079a9461,22.0.1-1-g7d6de66+b8044ec9de,22.0.1-1-g87000a6+536b1ee016,22.0.1-1-g8e32f31+6312710a6c,22.0.1-10-gd060f87+016f7cdc03,22.0.1-12-g9c3108e+df145f6f68,22.0.1-16-g314fa6d+c825727ab8,22.0.1-19-g93a5c75+d23f2fb6d8,22.0.1-19-gb93eaa13+aab3ef7709,22.0.1-2-g8ef0a89+b8044ec9de,22.0.1-2-g92698f7+9f079a9461,22.0.1-2-ga9b0f51+052faf71bd,22.0.1-2-gac51dbf+052faf71bd,22.0.1-2-gb66926d+6312710a6c,22.0.1-2-gcb770ba+09e3807989,22.0.1-20-g32debb5+b8044ec9de,22.0.1-23-gc2439a9a+fb0756638e,22.0.1-3-g496fd5d+09117f784f,22.0.1-3-g59f966b+1e6ba2c031,22.0.1-3-g849a1b8+f8b568069f,22.0.1-3-gaaec9c0+c5c846a8b1,22.0.1-32-g5ddfab5d3+60ce4897b0,22.0.1-4-g037fbe1+64e601228d,22.0.1-4-g8623105+b8044ec9de,22.0.1-5-g096abc9+d18c45d440,22.0.1-5-g15c806e+57f5c03693,22.0.1-7-gba73697+57f5c03693,master-g6e05de7fdc+c1283a92b8,master-g72cdda8301+729191ecac,w.2021.39
LSST Data Management Base Package
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
Fits * fits
Definition: FitsWriter.cc:90
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:297
Base class for all records.
Definition: BaseRecord.h:31
Defines the fields and offsets for a table.
Definition: Schema.h:51
Polymorphic reader interface used to read different kinds of objects from one or more FITS binary tab...
virtual ~FitsColumnReader() noexcept=default
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.
virtual void prepRead(std::size_t firstRow, std::size_t nRows, fits::Fits &fits)
Optionally read ahead and cache values from multiple rows.
A class that describes a mapping from a FITS binary table to an afw::table Schema.
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper const &)
FitsSchemaInputMapper(FitsSchemaInputMapper const &)
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...
FitsSchemaInputMapper & operator=(FitsSchemaInputMapper &&)
FitsSchemaInputMapper(FitsSchemaInputMapper &&)
Class for storing ordered metadata with comments.
Definition: PropertyList.h:68
void erase(int column)
A base class for image defects.
STL namespace.
int row
Definition: CR.cc:145
A structure that describes a field as a collection of related strings read from the FITS header.