LSSTApplications  8.0.0.0+107,8.0.0.1+13,9.1+18,9.2,master-g084aeec0a4,master-g0aced2eed8+6,master-g15627eb03c,master-g28afc54ef9,master-g3391ba5ea0,master-g3d0fb8ae5f,master-g4432ae2e89+36,master-g5c3c32f3ec+17,master-g60f1e072bb+1,master-g6a3ac32d1b,master-g76a88a4307+1,master-g7bce1f4e06+57,master-g8ff4092549+31,master-g98e65bf68e,master-ga6b77976b1+53,master-gae20e2b580+3,master-gb584cd3397+53,master-gc5448b162b+1,master-gc54cf9771d,master-gc69578ece6+1,master-gcbf758c456+22,master-gcec1da163f+63,master-gcf15f11bcc,master-gd167108223,master-gf44c96c709
LSSTDataManagementBasePackage
Public Member Functions | Protected Member Functions | List of all members
lsst::afw::table::io::Writer Class Referenceabstract

Write a container of records to disk (or elsewhere). More...

#include <Writer.h>

Inheritance diagram for lsst::afw::table::io::Writer:
lsst::afw::table::io::FitsWriter

Public Member Functions

template<typename ContainerT >
void write (ContainerT const &container)
 Write records in a container to disk (or elsewhere). More...
 
virtual ~Writer ()
 

Protected Member Functions

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

Detailed Description

Write a container of records to disk (or elsewhere).

An instance of Writer is associated with a particular file or storage location, and can be invoked by calling write() with a container.

Writer contains driver code that should work for most input operations and record containers, and delegates the real work to protected member functions. Writer does not specify how it will be constructed.

Definition at line 27 of file Writer.h.

Constructor & Destructor Documentation

virtual lsst::afw::table::io::Writer::~Writer ( )
inlinevirtual

Definition at line 61 of file Writer.h.

61 {}

Member Function Documentation

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

Finish writing a catalog.

Definition at line 72 of file Writer.h.

72 {}
virtual void lsst::afw::table::io::Writer::_writeRecord ( BaseRecord const &  record)
protectedpure virtual

Write an individual record.

Implemented in lsst::afw::table::io::FitsWriter.

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

Write a table and its schema.

Implemented in lsst::afw::table::io::FitsWriter.

template<typename ContainerT >
void lsst::afw::table::io::Writer::write ( ContainerT const &  container)
inline

Write records in a container to disk (or elsewhere).

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 38 of file Writer.h.

38  {
39  std::set<PTR(BaseTable const)> tables;
40  for (typename ContainerT::const_iterator i = container.begin(); i != container.end(); ++i) {
41  if (i->getTable() != container.getTable()) tables.insert(i->getTable());
42  }
43  for (std::set<PTR(BaseTable const)>::iterator j = tables.begin(); j != tables.end(); ++j) {
44  if (
45  (**j).getSchema().compare(container.getTable()->getSchema(), Schema::IDENTICAL)
47  ) {
48  throw LSST_EXCEPT(
49  pex::exceptions::LogicError,
50  "Cannot save Catalog with heterogenous schemas"
51  );
52  }
53  }
54  _writeTable(container.getTable(), container.size());
55  for (typename ContainerT::const_iterator i = container.begin(); i != container.end(); ++i) {
56  _writeRecord(*i);
57  }
58  _finish();
59  }
#define PTR(...)
Definition: base.h:41
virtual void _writeRecord(BaseRecord const &record)=0
Write an individual record.
virtual void _writeTable(boost::shared_ptr< BaseTable const > const &table, std::size_t nRows)=0
Write a table and its schema.
#define LSST_EXCEPT(type,...)
Definition: Exception.h:46
virtual void _finish()
Finish writing a catalog.
Definition: Writer.h:72
Everything is the same.
Definition: Schema.h:65

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