LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | Friends | List of all members
lsst::afw::table::io::OutputArchiveHandle Class Referencefinal

An object passed to Persistable::write to allow it to persist itself. More...

#include <OutputArchive.h>

Public Member Functions

BaseCatalog makeCatalog (Schema const &schema)
 Return a new, empty catalog with the given schema. More...
 
void saveEmpty ()
 Indicate that the object being persisted has no state, and hence will never call makeCatalog() or saveCatalog(). More...
 
void saveCatalog (BaseCatalog const &catalog)
 Save a catalog in the archive. More...
 
 ~OutputArchiveHandle ()
 
 OutputArchiveHandle (const OutputArchiveHandle &)=delete
 
OutputArchiveHandleoperator= (const OutputArchiveHandle &)=delete
 
 OutputArchiveHandle (OutputArchiveHandle &&)=delete
 
OutputArchiveHandleoperator= (OutputArchiveHandle &&)=delete
 
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 InputArchive. More...
 
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 InputArchive. More...
 
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 InputArchive. More...
 

Friends

class OutputArchive::Impl
 

Detailed Description

An object passed to Persistable::write to allow it to persist itself.

OutputArchiveHandle provides an interface to add additional catalogs and save nested Persistables to the same archive.

Definition at line 118 of file OutputArchive.h.

Constructor & Destructor Documentation

◆ ~OutputArchiveHandle()

lsst::afw::table::io::OutputArchiveHandle::~OutputArchiveHandle ( )
default

◆ OutputArchiveHandle() [1/2]

lsst::afw::table::io::OutputArchiveHandle::OutputArchiveHandle ( const OutputArchiveHandle )
delete

◆ OutputArchiveHandle() [2/2]

lsst::afw::table::io::OutputArchiveHandle::OutputArchiveHandle ( OutputArchiveHandle &&  )
delete

Member Function Documentation

◆ makeCatalog()

BaseCatalog lsst::afw::table::io::OutputArchiveHandle::makeCatalog ( Schema const &  schema)

Return a new, empty catalog with the given schema.

All catalogs passed to saveCatalog should be originally created by makeCatalog, or at least share the same table.

Definition at line 207 of file OutputArchive.cc.

207 { return _impl->makeCatalog(schema); }
table::Schema schema
Definition: python.h:134

◆ operator=() [1/2]

OutputArchiveHandle& lsst::afw::table::io::OutputArchiveHandle::operator= ( const OutputArchiveHandle )
delete

◆ operator=() [2/2]

OutputArchiveHandle& lsst::afw::table::io::OutputArchiveHandle::operator= ( OutputArchiveHandle &&  )
delete

◆ put() [1/3]

int lsst::afw::table::io::OutputArchiveHandle::put ( Persistable const &  obj,
bool  permissive = false 
)
inline

Save an object to the archive and return a unique ID that can be used to retrieve it from an InputArchive.

If permissive is true and obj->isPersistable() is false, the object will not be saved but 0 will be returned instead of throwing an exception.

If the given pointer is null, the returned ID is always 0, which may be used to retrieve null pointers from an InputArchive.

It is expected that the shared_ptr form will usually be used, as Persistables are typically held by shared_ptr. We also provide a const reference overload for temporaries as well as a const raw pointer overload for temporaries that may be null.

If the shared_ptr form is used and the given pointer has already been saved, it will not be written again and the same ID will be returned as the first time it was saved.

Exception Safety
Provides no exception safety for the archive itself - if the object being saved (or any nested object) throws an exception, the archive may be in an inconsistent state and should not be saved. The objects being saved are never modified during persistence, even when exceptions are thrown.

Definition at line 146 of file OutputArchive.h.

146 { return put(&obj, permissive); }
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...

◆ put() [2/3]

int lsst::afw::table::io::OutputArchiveHandle::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 InputArchive.

If permissive is true and obj->isPersistable() is false, the object will not be saved but 0 will be returned instead of throwing an exception.

If the given pointer is null, the returned ID is always 0, which may be used to retrieve null pointers from an InputArchive.

It is expected that the shared_ptr form will usually be used, as Persistables are typically held by shared_ptr. We also provide a const reference overload for temporaries as well as a const raw pointer overload for temporaries that may be null.

If the shared_ptr form is used and the given pointer has already been saved, it will not be written again and the same ID will be returned as the first time it was saved.

Exception Safety
Provides no exception safety for the archive itself - if the object being saved (or any nested object) throws an exception, the archive may be in an inconsistent state and should not be saved. The objects being saved are never modified during persistence, even when exceptions are thrown.

Definition at line 216 of file OutputArchive.cc.

216  {
217  // Handle doesn't worry about copy-on-write, because Handles should only exist
218  // while an OutputArchive::put() call is active.
219  return _impl->put(obj, _impl, permissive);
220 }

◆ put() [3/3]

int lsst::afw::table::io::OutputArchiveHandle::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 InputArchive.

If permissive is true and obj->isPersistable() is false, the object will not be saved but 0 will be returned instead of throwing an exception.

If the given pointer is null, the returned ID is always 0, which may be used to retrieve null pointers from an InputArchive.

It is expected that the shared_ptr form will usually be used, as Persistables are typically held by shared_ptr. We also provide a const reference overload for temporaries as well as a const raw pointer overload for temporaries that may be null.

If the shared_ptr form is used and the given pointer has already been saved, it will not be written again and the same ID will be returned as the first time it was saved.

Exception Safety
Provides no exception safety for the archive itself - if the object being saved (or any nested object) throws an exception, the archive may be in an inconsistent state and should not be saved. The objects being saved are never modified during persistence, even when exceptions are thrown.

Definition at line 222 of file OutputArchive.cc.

222  {
223  // Handle doesn't worry about copy-on-write, because Handles should only exist
224  // while an OutputArchive::put() call is active.
225  return _impl->put(std::move(obj), _impl, permissive);
226 }
T move(T... args)

◆ saveCatalog()

void lsst::afw::table::io::OutputArchiveHandle::saveCatalog ( BaseCatalog const &  catalog)

Save a catalog in the archive.

The catalog must have been created using makeCatalog, or be a shallow copy or subset of such a catalog.

Definition at line 211 of file OutputArchive.cc.

211  {
212  _impl->saveCatalog(catalog, _id, _name, _module, _catPersistable);
213  ++_catPersistable;
214 }

◆ saveEmpty()

void lsst::afw::table::io::OutputArchiveHandle::saveEmpty ( )

Indicate that the object being persisted has no state, and hence will never call makeCatalog() or saveCatalog().

Definition at line 209 of file OutputArchive.cc.

209 { _impl->saveEmpty(_id, _name, _module); }

Friends And Related Function Documentation

◆ OutputArchive::Impl

friend class OutputArchive::Impl
friend

Definition at line 160 of file OutputArchive.h.


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