LSST Applications g07dc498a13+cb17356775,g1409bbee79+cb17356775,g1a7e361dbc+cb17356775,g1fd858c14a+d1a2a640a9,g33399d78f5+fe6948661d,g35bb328faa+e55fef2c71,g3bd4b5ce2c+cac9e18807,g3c79e8cd92+2359a18b76,g43bc871e57+a58ba40925,g53246c7159+e55fef2c71,g60b5630c4e+8133a3545f,g78460c75b0+8427c4cc8f,g78619a8342+55305cb8f0,g786e29fd12+307f82e6af,g8534526c7b+8e1c6b434f,g89139ef638+cb17356775,g8b49a6ea8e+8133a3545f,g8ffcb69f3d+818ab6c36e,g9125e01d80+e55fef2c71,g97b8272a79+98425f45f6,g989de1cb63+cb17356775,g9f33ca652e+4245ceb508,gaaedd4e678+cb17356775,gabe3b4be73+9c0c3c7524,gb1101e3267+3e5ef1d639,gb58c049af0+28045f66fd,gc1fe0db326+8133a3545f,gca43fec769+e55fef2c71,gcf25f946ba+fe6948661d,gd397e13551+64039f84ea,gd6cbbdb0b4+f6e5445f66,gde0f65d7ad+7eb368c542,ge278dab8ac+b4c2c8faf7,geab183fbe5+8133a3545f,gecb8035dfe+1f480bec5e,gefa07fa684+e7bc33f3ea,gf58bf46354+e55fef2c71,gfe7187db8c+e55afb4430,w.2025.03
LSST Data Management Base Package
Loading...
Searching...
No Matches
OutputArchive.h
Go to the documentation of this file.
1// -*- lsst-c++ -*-
2#ifndef AFW_TABLE_IO_OutputArchive_h_INCLUDED
3#define AFW_TABLE_IO_OutputArchive_h_INCLUDED
4
5#include "lsst/base.h"
7
8namespace lsst {
9namespace afw {
10namespace table {
11
12class Schema;
13class BaseRecord;
14template <typename RecordT>
17
18namespace io {
19
20class Persistable;
21class OutputArchiveHandle;
22
34class OutputArchive final {
35public:
36 friend class OutputArchiveHandle;
37
40
44
48
49 // (trivial) destructor must be defined in the source for pimpl idiom.
51
53
80 int put(std::shared_ptr<Persistable const> obj, bool permissive = false);
81 int put(Persistable const * obj, bool permissive = false);
82 int put(Persistable const & obj, bool permissive = false) { return put(&obj, permissive); }
84
89 BaseCatalog const& getIndexCatalog() const;
90
92 BaseCatalog const& getCatalog(int n) const;
93
96
104 void writeFits(fits::Fits& fitsfile) const;
105
106private:
107 class Impl;
108
110};
111
119public:
127
132 void saveEmpty();
133
140 void saveCatalog(BaseCatalog const& catalog);
141
144 int put(Persistable const* obj, bool permissive = false);
145 int put(std::shared_ptr<Persistable const> obj, bool permissive = false);
146 int put(Persistable const & obj, bool permissive = false) { return put(&obj, permissive); }
148
150
151 // No copying
154
155 // No moving
158
159private:
161
162 OutputArchiveHandle(int id, std::string const& name, std::string const& module,
164
165 int _id;
166 int _catPersistable;
167 std::string _name;
168 std::string _module;
170};
171} // namespace io
172} // namespace table
173} // namespace afw
174} // namespace lsst
175
176#endif // !AFW_TABLE_IO_OutputArchive_h_INCLUDED
table::Schema schema
Definition python.h:134
Basic LSST definitions.
A simple struct that combines the two arguments that must be passed to most cfitsio routines and cont...
Definition fits.h:308
A custom container class for records, based on std::vector.
Defines the fields and offsets for a table.
Definition Schema.h:51
An object passed to Persistable::write to allow it to persist itself.
OutputArchiveHandle & operator=(OutputArchiveHandle &&)=delete
OutputArchiveHandle & operator=(const OutputArchiveHandle &)=delete
OutputArchiveHandle(OutputArchiveHandle &&)=delete
void saveCatalog(BaseCatalog const &catalog)
Save a catalog in the archive.
OutputArchiveHandle(const OutputArchiveHandle &)=delete
void saveEmpty()
Indicate that the object being persisted has no state, and hence will never call makeCatalog() or sav...
BaseCatalog makeCatalog(Schema const &schema)
Return a new, empty catalog with the given schema.
int put(Persistable const &obj, bool permissive=false)
Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArc...
int put(Persistable const *obj, bool permissive=false)
Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArc...
A multi-catalog archive object used to save table::io::Persistable objects.
OutputArchive(OutputArchive const &other)
Copy-construct an OutputArchive. Saved objects are not deep-copied.
std::size_t countCatalogs() const
Return the total number of catalogs, including the index.
int put(Persistable const &obj, bool permissive=false)
Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArc...
int put(std::shared_ptr< Persistable const > obj, bool permissive=false)
Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArc...
void writeFits(fits::Fits &fitsfile) const
Write the archive to an already-open FITS object.
BaseCatalog const & getCatalog(int n) const
Return the nth catalog. Catalog 0 is always the index catalog.
OutputArchive & operator=(OutputArchive const &other)
Assign from another OutputArchive. Saved objects are not deep-copied.
BaseCatalog const & getIndexCatalog() const
Return the index catalog that specifies where objects are stored in the data catalogs.
OutputArchive()
Construct an empty OutputArchive containing no objects.
A base class for objects that can be persisted via afw::table::io Archive classes.
Definition Persistable.h:74