LSST Applications g0fba68d861+5616995c1c,g1ebb85f214+2420ccdea7,g1fd858c14a+44c57a1f81,g21d47ad084+8e51fce9ac,g262e1987ae+1a7d68eb3b,g2cef7863aa+3bd8df3d95,g35bb328faa+fcb1d3bbc8,g36ff55ed5b+2420ccdea7,g47891489e3+5c6313fe9a,g53246c7159+fcb1d3bbc8,g646c943bdb+dbb9921566,g67b6fd64d1+5c6313fe9a,g6bd32b75b5+2420ccdea7,g74acd417e5+37fc0c974d,g786e29fd12+cf7ec2a62a,g86c591e316+6e13bcb9e9,g87389fa792+1e0a283bba,g89139ef638+5c6313fe9a,g90f42f885a+fce05a46d3,g9125e01d80+fcb1d3bbc8,g93e38de9ac+5345a64125,g95a1e89356+47d08a1cc6,g97be763408+bba861c665,ga9e4eb89a6+85210110a1,gb0b61e0e8e+1f27f70249,gb58c049af0+f03b321e39,gb89ab40317+5c6313fe9a,gc4e39d7843+4e09c98c3d,gd16ba4ae74+5402bcf54a,gd8ff7fe66e+2420ccdea7,gd9a9a58781+fcb1d3bbc8,gdab6d2f7ff+37fc0c974d,gde280f09ee+604b327636,ge278dab8ac+50e2446c94,ge410e46f29+5c6313fe9a,gef3c2e6661+6b480e0fb7,gf67bdafdda+5c6313fe9a,gffca2db377+fcb1d3bbc8,v29.2.0.rc1
LSST Data Management Base Package
Loading...
Searching...
No Matches
FitsReader.cc
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2
4
5namespace lsst {
6namespace afw {
7namespace table {
8namespace io {
9
10namespace {
11
12using Registry = std::map<std::string, const FitsReader *>;
13
14Registry& getRegistry() {
15 static Registry it;
16 return it;
17}
18
19static FitsReader const baseFitsReader("BASE");
20static FitsReader const ampInfoFitsReader("AMPINFO");
21
22} // namespace
23
26 int ioFlags, bool stripMetadata) const {
28 result->setMetadata(metadata);
29 return result;
30}
31
32FitsReader::FitsReader(std::string const& name) { getRegistry()[name] = this; }
33
34FitsReader const* FitsReader::_lookupFitsReader(daf::base::PropertyList const& metadata) {
35 std::string name = metadata.get(std::string("AFW_TYPE"), std::string("BASE"));
36 Registry::iterator i = getRegistry().find(name);
37 if (i == getRegistry().end()) {
38 throw LSST_EXCEPT(
40 (boost::format("FitsReader with name '%s' does not exist; check AFW_TYPE keyword.") % name)
41 .str());
42 }
43 return i->second;
44}
45
46void FitsReader::_setupArchive(afw::fits::Fits& fits, FitsSchemaInputMapper& mapper,
47 std::shared_ptr<InputArchive> archive, int ioFlags) const {
48 if (usesArchive(ioFlags)) {
49 if (archive) {
50 mapper.setArchive(archive);
51 } else {
52 mapper.readArchive(fits);
53 }
54 }
55}
56} // namespace io
57} // namespace table
58} // namespace afw
59} // namespace lsst
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition fits.h:308
static std::shared_ptr< BaseTable > make(Schema const &schema)
Construct a new table.
Definition BaseTable.cc:120
A utility class for reading FITS binary tables.
Definition FitsReader.h:34
virtual std::shared_ptr< BaseTable > makeTable(FitsSchemaInputMapper &mapper, std::shared_ptr< daf::base::PropertyList > metadata, int ioFlags, bool stripMetadata) const
Callback to create a Table object from a FITS binary table schema.
Definition FitsReader.cc:24
virtual bool usesArchive(int ioFlags) const
Callback that should return true if the FitsReader subclass makes use of an InputArchive to read firs...
Definition FitsReader.h:138
FitsReader(std::string const &persistedClassName)
Construct a FitsReader, registering it to be used for all persisted tables with the given tag.
Definition FitsReader.cc:32
A class that describes a mapping from a FITS binary table to an afw::table Schema.
Schema finalize()
Map any remaining items into regular Schema items, and return the final Schema.
Class for storing ordered metadata with comments.
T get(std::string const &name) const
Get the last value for a property name (possibly hierarchical).
Reports attempts to access elements using an invalid key.
Definition Runtime.h:151