LSSTApplications  1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
FitsWriter.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 #ifndef AFW_TABLE_IO_FitsWriter_h_INCLUDED
3 #define AFW_TABLE_IO_FitsWriter_h_INCLUDED
4 
5 #include "boost/shared_ptr.hpp"
6 
7 #include "lsst/afw/fits.h"
9 
10 namespace lsst { namespace afw { namespace table { namespace io {
11 
20 class FitsWriter : public Writer {
21 public:
22 
24 
32  template <typename OutputT, typename ContainerT>
33  static void apply(OutputT & output, std::string const & mode, ContainerT const & container, int flags) {
34  Fits fits(output, mode, Fits::AUTO_CLOSE | Fits::AUTO_CHECK);
35  apply(fits, container, flags);
36  }
37 
39  template <typename ContainerT>
40  static void apply(Fits & fits, ContainerT const & container, int flags) {
41  PTR(FitsWriter) writer
42  = boost::static_pointer_cast<BaseTable const>(container.getTable())->makeFitsWriter(&fits, flags);
43  writer->write(container);
44  }
45 
47  explicit FitsWriter(Fits * fits, int flags) : _fits(fits), _flags(flags) {}
48 
49 protected:
50 
52  virtual void _writeTable(CONST_PTR(BaseTable) const & table, std::size_t nRows);
53 
55  virtual void _writeRecord(BaseRecord const & source);
56 
57  Fits * _fits; // wrapped cfitsio pointer
58  int _flags; // subclass-defined flags to control writing
59  std::size_t _row; // which row we're currently processing
60 
61 private:
62 
63  struct ProcessRecords;
64 
65  boost::shared_ptr<ProcessRecords> _processor; // a private Schema::forEach functor that write records
66 
67 };
68 
69 }}}} // namespace lsst::afw::table::io
70 
71 #endif // !AFW_TABLE_IO_FitsWriter_h_INCLUDED
#define CONST_PTR(...)
Definition: base.h:47
Writer subclass for FITS binary tables.
Definition: FitsWriter.h:20
static void apply(OutputT &output, std::string const &mode, ContainerT const &container, int flags)
Driver for writing FITS files.
Definition: FitsWriter.h:33
boost::shared_ptr< ProcessRecords > _processor
Definition: FitsWriter.h:63
virtual void _writeRecord(BaseRecord const &source)
Write an individual record.
#define PTR(...)
Definition: base.h:41
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition: fits.h:194
Write a container of records to disk (or elsewhere).
Definition: Writer.h:27
FitsWriter(Fits *fits, int flags)
Construct from a wrapped cfitsio pointer.
Definition: FitsWriter.h:47
virtual void _writeTable(boost::shared_ptr< BaseTable const > const &table, std::size_t nRows)
Write a table and its schema.
Base class for all records.
Definition: BaseRecord.h:27
static void apply(Fits &fits, ContainerT const &container, int flags)
Low-level driver for writing FITS files, operating on an open FITS file.
Definition: FitsWriter.h:40
Base class for all tables.
Definition: BaseTable.h:44