LSST Applications g00d0e8bbd7+edbf708997,g03191d30f7+6b31559d11,g118115db7c+ac820e85d2,g199a45376c+5137f08352,g1fd858c14a+90100aa1a7,g262e1987ae+64df5f6984,g29ae962dfc+1eb4aece83,g2cef7863aa+73c82f25e4,g3541666cd7+1e37cdad5c,g35bb328faa+edbf708997,g3fd5ace14f+fb4e2866cc,g47891489e3+19fcc35de2,g53246c7159+edbf708997,g5b326b94bb+d622351b67,g64539dfbff+dfe1dff262,g67b6fd64d1+19fcc35de2,g74acd417e5+cfdc02aca8,g786e29fd12+af89c03590,g7aefaa3e3d+dc1a598170,g87389fa792+a4172ec7da,g88cb488625+60ba2c3075,g89139ef638+19fcc35de2,g8d4809ba88+dfe1dff262,g8d7436a09f+db94b797be,g8ea07a8fe4+79658f16ab,g90f42f885a+6577634e1f,g9722cb1a7f+d8f85438e7,g98df359435+7fdd888faa,ga2180abaac+edbf708997,ga9e74d7ce9+128cc68277,gbf99507273+edbf708997,gca7fc764a6+19fcc35de2,gd7ef33dd92+19fcc35de2,gdab6d2f7ff+cfdc02aca8,gdbb4c4dda9+dfe1dff262,ge410e46f29+19fcc35de2,ge41e95a9f2+dfe1dff262,geaed405ab2+062dfc8cdc,w.2025.46
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:242
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