LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
lsst::afw::table::io::FitsWriter Class Reference

Writer object for FITS binary tables. More...

#include <FitsWriter.h>

Public Types

typedef afw::fits::Fits Fits
 

Public Member Functions

template<typename ContainerT >
void write (ContainerT const &container)
 Write records in a container to disk. More...
 
 FitsWriter (Fits *fits, int flags)
 Construct from a wrapped cfitsio pointer. More...
 

Static Public Member Functions

template<typename OutputT , typename ContainerT >
static void apply (OutputT &output, std::string const &mode, ContainerT const &container, int flags)
 Driver for writing FITS files. More...
 
template<typename ContainerT >
static void apply (Fits &fits, ContainerT const &container, int flags)
 Low-level driver for writing FITS files, operating on an open FITS file. More...
 

Protected Member Functions

virtual void _writeTable (boost::shared_ptr< BaseTable const > const &table, std::size_t nRows)
 Write a table and its schema. More...
 
virtual void _writeRecord (BaseRecord const &source)
 Write an individual record. More...
 
virtual void _finish ()
 Finish writing a catalog. More...
 

Protected Attributes

Fits_fits
 
int _flags
 
std::size_t _row
 

Private Attributes

boost::shared_ptr< ProcessRecords > _processor
 

Detailed Description

Writer object for FITS binary tables.

FitsWriter itself provides support for writing FITS binary tables from base containers. Derived record/base pairs should derive their own writer from FitsWriter and reimplement BaseTable::makeFitsWriter to return it. Subclasses will usually delegate most of the work back to FitsWriter.

Definition at line 22 of file FitsWriter.h.

Member Typedef Documentation

Definition at line 25 of file FitsWriter.h.

Constructor & Destructor Documentation

lsst::afw::table::io::FitsWriter::FitsWriter ( Fits fits,
int  flags 
)
inlineexplicit

Construct from a wrapped cfitsio pointer.

Definition at line 80 of file FitsWriter.h.

Member Function Documentation

virtual void lsst::afw::table::io::FitsWriter::_finish ( )
inlineprotectedvirtual

Finish writing a catalog.

Definition at line 91 of file FitsWriter.h.

91 {}
virtual void lsst::afw::table::io::FitsWriter::_writeRecord ( BaseRecord const &  source)
protectedvirtual

Write an individual record.

virtual void lsst::afw::table::io::FitsWriter::_writeTable ( boost::shared_ptr< BaseTable const > const &  table,
std::size_t  nRows 
)
protectedvirtual

Write a table and its schema.

template<typename OutputT , typename ContainerT >
static void lsst::afw::table::io::FitsWriter::apply ( OutputT &  output,
std::string const &  mode,
ContainerT const &  container,
int  flags 
)
inlinestatic

Driver for writing FITS files.

A container class will usually provide a member function that calls this driver, which opens the FITS file, calls makeFitsWriter on the container's table, and then calls Writer::write on it.

Definition at line 35 of file FitsWriter.h.

35  {
36  Fits fits(output, mode, Fits::AUTO_CLOSE | Fits::AUTO_CHECK);
37  apply(fits, container, flags);
38  }
static void apply(OutputT &output, std::string const &mode, ContainerT const &container, int flags)
Driver for writing FITS files.
Definition: FitsWriter.h:35
template<typename ContainerT >
static void lsst::afw::table::io::FitsWriter::apply ( Fits fits,
ContainerT const &  container,
int  flags 
)
inlinestatic

Low-level driver for writing FITS files, operating on an open FITS file.

Definition at line 42 of file FitsWriter.h.

42  {
43  PTR(FitsWriter) writer
44  = boost::static_pointer_cast<BaseTable const>(container.getTable())->makeFitsWriter(&fits, flags);
45  writer->write(container);
46  }
void write(ContainerT const &container)
Write records in a container to disk.
Definition: FitsWriter.h:56
#define PTR(...)
Definition: base.h:41
FitsWriter(Fits *fits, int flags)
Construct from a wrapped cfitsio pointer.
Definition: FitsWriter.h:80
template<typename ContainerT >
void lsst::afw::table::io::FitsWriter::write ( ContainerT const &  container)
inline

Write records in a container to disk.

The given container must have a getTable() member function that returns a shared_ptr to a table, and the iterators returned by begin() and end() must dereference to a type convertible to BaseRecord const &.

Definition at line 56 of file FitsWriter.h.

56  {
57  std::set<PTR(BaseTable const)> tables;
58  for (typename ContainerT::const_iterator i = container.begin(); i != container.end(); ++i) {
59  if (i->getTable() != container.getTable()) tables.insert(i->getTable());
60  }
61  for (std::set<PTR(BaseTable const)>::iterator j = tables.begin(); j != tables.end(); ++j) {
62  if (
63  (**j).getSchema().compare(container.getTable()->getSchema(), Schema::IDENTICAL)
65  ) {
66  throw LSST_EXCEPT(
67  pex::exceptions::LogicError,
68  "Cannot save Catalog with heterogenous schemas"
69  );
70  }
71  }
72  _writeTable(container.getTable(), container.size());
73  for (typename ContainerT::const_iterator i = container.begin(); i != container.end(); ++i) {
74  _writeRecord(*i);
75  }
76  _finish();
77  }
#define PTR(...)
Definition: base.h:41
virtual void _writeRecord(BaseRecord const &source)
Write an individual record.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
virtual void _writeTable(boost::shared_ptr< BaseTable const > const &table, std::size_t nRows)
Write a table and its schema.
virtual void _finish()
Finish writing a catalog.
Definition: FitsWriter.h:91
Everything is the same.
Definition: Schema.h:67

Member Data Documentation

Fits* lsst::afw::table::io::FitsWriter::_fits
protected

Definition at line 93 of file FitsWriter.h.

int lsst::afw::table::io::FitsWriter::_flags
protected

Definition at line 94 of file FitsWriter.h.

boost::shared_ptr< ProcessRecords > lsst::afw::table::io::FitsWriter::_processor
private

Definition at line 99 of file FitsWriter.h.

std::size_t lsst::afw::table::io::FitsWriter::_row
protected

Definition at line 95 of file FitsWriter.h.


The documentation for this class was generated from the following file: