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 | Static Public Member Functions | List of all members
lsst::afw::table::IdFactory Class Referenceabstract

A polymorphic functor base class for generating record IDs for a table. More...

#include <IdFactory.h>

Public Member Functions

virtual RecordId operator() ()=0
 Return a new unique RecordId. More...
 
virtual void notify (RecordId id)=0
 Notify the IdFactory that the given ID has been used and must not be returned by operator(). More...
 
virtual std::shared_ptr< IdFactoryclone () const =0
 Deep-copy the IdFactory. More...
 
 IdFactory ()=default
 
 IdFactory (IdFactory const &)=default
 
 IdFactory (IdFactory &&)=default
 
IdFactoryoperator= (IdFactory const &other)=delete
 
IdFactoryoperator= (IdFactory &&other)=delete
 
virtual ~IdFactory ()=default
 

Static Public Member Functions

static std::shared_ptr< IdFactorymakeSimple ()
 Return a simple IdFactory that simply counts from 1. More...
 
static std::shared_ptr< IdFactorymakeSource (RecordId expId, int reserved)
 Return an IdFactory that includes another, fixed ID in the higher-order bits. More...
 
static int computeReservedFromMaxBits (int maxBits)
 Return the number to pass as the 'reserved' argument to makeSource for an exposure ID with the given maximum number of bits. More...
 

Detailed Description

A polymorphic functor base class for generating record IDs for a table.

The IDs produced by an IdFactory need not be sequential, but they must be unique, both with respect to the IDs it generates itself and those passed to it via the notify() member function. Valid IDs must be nonzero, as zero is used to indicate null in some contexts.

Definition at line 21 of file IdFactory.h.

Constructor & Destructor Documentation

◆ IdFactory() [1/3]

lsst::afw::table::IdFactory::IdFactory ( )
default

◆ IdFactory() [2/3]

lsst::afw::table::IdFactory::IdFactory ( IdFactory const &  )
default

◆ IdFactory() [3/3]

lsst::afw::table::IdFactory::IdFactory ( IdFactory &&  )
default

◆ ~IdFactory()

virtual lsst::afw::table::IdFactory::~IdFactory ( )
virtualdefault

Member Function Documentation

◆ clone()

virtual std::shared_ptr<IdFactory> lsst::afw::table::IdFactory::clone ( ) const
pure virtual

Deep-copy the IdFactory.

◆ computeReservedFromMaxBits()

static int lsst::afw::table::IdFactory::computeReservedFromMaxBits ( int  maxBits)
inlinestatic

Return the number to pass as the 'reserved' argument to makeSource for an exposure ID with the given maximum number of bits.

Parameters
[in]maxBitsThe maximum number of bits an exposure ID can have.

Definition at line 57 of file IdFactory.h.

57  {
58  // Subtract one for signed integers to avoid the sign bit.
59  return sizeof(RecordId)*8 - std::is_signed<RecordId>::value - maxBits;
60  }
std::int64_t RecordId
Type used for unique IDs for records.
Definition: misc.h:21

◆ makeSimple()

std::shared_ptr< IdFactory > lsst::afw::table::IdFactory::makeSimple ( )
static

Return a simple IdFactory that simply counts from 1.

This is used when an empty pointer is passed to the BaseTable constructor.

Definition at line 70 of file IdFactory.cc.

70 { return std::make_shared<SimpleIdFactory>(); }

◆ makeSource()

std::shared_ptr< IdFactory > lsst::afw::table::IdFactory::makeSource ( RecordId  expId,
int  reserved 
)
static

Return an IdFactory that includes another, fixed ID in the higher-order bits.

Parameters
[in]expIdID to include in the upper bits via a bitwise OR.
[in]reservedHow many bits to reserve for the part of the ID that is unique.

The final record ID will be:

(upper << reserved) | sequence

Definition at line 72 of file IdFactory.cc.

72  {
73  return std::make_shared<SourceIdFactory>(expId, reserved);
74 }

◆ notify()

virtual void lsst::afw::table::IdFactory::notify ( RecordId  id)
pure virtual

Notify the IdFactory that the given ID has been used and must not be returned by operator().

◆ operator()()

virtual RecordId lsst::afw::table::IdFactory::operator() ( )
pure virtual

Return a new unique RecordId.

◆ operator=() [1/2]

IdFactory& lsst::afw::table::IdFactory::operator= ( IdFactory &&  other)
delete

◆ operator=() [2/2]

IdFactory& lsst::afw::table::IdFactory::operator= ( IdFactory const &  other)
delete

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