LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
|
A class used as a handle to a particular field in a table. More...
#include <Key.h>
Public Types | |
using | Value = T |
the type returned by BaseRecord::get | |
using | Reference = T & |
the type returned by BaseRecord::operator[] (non-const) | |
using | ConstReference = const T & |
the type returned by BaseRecord::operator[] (const) | |
using | Element = T |
the type of subfields (the same as the type itself for scalars) | |
Public Member Functions | |
template<typename OtherT > | |
bool | operator== (Key< OtherT > const &other) const noexcept |
Equality comparison. | |
template<typename OtherT > | |
bool | operator!= (Key< OtherT > const &other) const noexcept |
bool | operator== (Key const &other) const noexcept |
bool | operator!= (Key const &other) const noexcept |
std::size_t | hash_value () const noexcept |
Return a hash of this object. | |
std::size_t | getOffset () const noexcept |
Return the offset (in bytes) of this field within a record. | |
bool | isValid () const noexcept |
Return true if the key was initialized to valid offset. | |
Key () noexcept | |
Default construct a field. | |
Key (Key const &) noexcept=default | |
Key (Key &&) noexcept=default | |
Key & | operator= (Key const &) noexcept=default |
Key & | operator= (Key &&) noexcept=default |
~Key () noexcept=default | |
std::size_t | getElementCount () const noexcept |
Return the number of subfield elements (always one for scalars). | |
Static Public Member Functions | |
static std::string | getTypeString () |
Return a string description of the field type. | |
Static Public Attributes | |
static bool const | HAS_NAMED_SUBFIELDS = false |
Protected Member Functions | |
void | stream (std::ostream &os) const |
Defines how Fields are printed. | |
Reference | getReference (Element *p, ndarray::Manager::Ptr const &) const |
Used to implement BaseRecord::operator[] (non-const). | |
ConstReference | getConstReference (Element const *p, ndarray::Manager::Ptr const &) const |
Used to implement BaseRecord::operator[] (const). | |
Value | getValue (Element const *p, ndarray::Manager::Ptr const &) const |
Used to implement BaseRecord::get. | |
void | setValue (Element *p, ndarray::Manager::Ptr const &, Value v) const |
Used to implement BaseRecord::set. | |
Static Protected Member Functions | |
static FieldBase | makeDefault () noexcept |
Needed to allow Keys to be default-constructed. | |
Friends | |
class | detail::Access |
class | BaseRecord |
std::ostream & | operator<< (std::ostream &os, Key< T > const &key) |
Stringification. | |
A class used as a handle to a particular field in a table.
All access to table data ultimately goes through Key objects, which know (via an internal offset) how to address and cast the internal data buffer of a record or table.
Keys can be obtained from a Schema by name:
schema.find("myfield").key
and are also returned when a new field is added. Compound and array keys also provide accessors to retrieve scalar keys to their elements (see the documentation for the KeyBase specializations), even though these element keys do not correspond to a field that exists in any Schema. For example:
Schema schema; Key< Array<float> > arrayKey = schema.addField< Array<float> >("array", "docs for array", 5); Key< Point<int> > pointKey = schema.addField< Point<int> >("point", "docs for point"); Key<float> elementKey = arrayKey[3]; Key<int> xKey = pointKey.getX(); std::shared_ptr<BaseTable> table = BaseTable::make(schema); std::shared_ptr<BaseRecord> record = table.makeRecord(); assert(&record[arrayKey][3] == &record[elementKey3]); assert(record.get(pointKey).getX() == record[xKey]);
Key inherits from FieldBase to allow a key for a dynamically-sized field to know its size without needing to specialize Key itself or hold a full Field object.
|
inherited |
the type returned by BaseRecord::operator[] (const)
Definition at line 44 of file FieldBase.h.
|
inherited |
the type of subfields (the same as the type itself for scalars)
Definition at line 45 of file FieldBase.h.
|
inherited |
the type returned by BaseRecord::operator[] (non-const)
Definition at line 43 of file FieldBase.h.
|
inherited |
the type returned by BaseRecord::get
Definition at line 42 of file FieldBase.h.
|
inlinenoexcept |
Default construct a field.
The new field will be invalid until a valid Key is assigned to it.
Definition at line 104 of file Key.h.
|
defaultnoexcept |
|
defaultnoexcept |
|
defaultnoexcept |
|
inlineprotectedinherited |
Used to implement BaseRecord::operator[] (const).
Definition at line 78 of file FieldBase.h.
|
inlinenoexceptinherited |
Return the number of subfield elements (always one for scalars).
Definition at line 48 of file FieldBase.h.
|
inlinenoexcept |
|
inlineprotectedinherited |
Used to implement BaseRecord::operator[] (non-const).
Definition at line 75 of file FieldBase.h.
|
staticinherited |
Return a string description of the field type.
Definition at line 56 of file FieldBase.cc.
|
inlineprotectedinherited |
|
inlinenoexcept |
Return a hash of this object.
Definition at line 81 of file Key.h.
|
inlinenoexcept |
Return true if the key was initialized to valid offset.
This does not guarantee that a key is valid with any particular schema, or even that any schemas still exist in which this key is valid.
A key that is default constructed will always be invalid.
Definition at line 97 of file Key.h.
|
inlinestaticprotectednoexceptinherited |
Needed to allow Keys to be default-constructed.
Definition at line 69 of file FieldBase.h.
|
inlinenoexcept |
|
defaultnoexcept |
|
defaultnoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
Equality comparison.
Two keys with different types are never equal. Keys with the same type are equal if they point to the same location in a table, regardless of what Schema they were constructed from (for instance, if a field has a different name in one Schema than another, but is otherwise the same, the two keys will be equal).
Definition at line 66 of file Key.h.
|
inlineprotectedinherited |
|
inlineprotectedinherited |
|
friend |
|
friend |
|
friend |
Stringification.
Definition at line 113 of file Key.h.
|
staticinherited |