2 #ifndef AFW_TABLE_FieldBase_h_INCLUDED 
    3 #define AFW_TABLE_FieldBase_h_INCLUDED 
   59                           "Constructor disabled (this Field type is not sized).");
 
   97     using Value = ndarray::Array<const U, 1, 1>;  
 
  152         if (isVariableLength()) {
 
  153             return reinterpret_cast<ndarray::Array<Element, 1, 1> *
>(p)->deep();
 
  155         return ndarray::external(p, ndarray::makeVector(
_size), ndarray::ROW_MAJOR, 
m);
 
  160         if (isVariableLength()) {
 
  161             return reinterpret_cast<ndarray::Array<Element, 1, 1> 
const *
>(p)->deep();
 
  163         return ndarray::external(p, ndarray::makeVector(
_size), ndarray::ROW_MAJOR, 
m);
 
  168         if (isVariableLength()) {
 
  169             return *
reinterpret_cast<ndarray::Array<Element, 1, 1> 
const *
>(p);
 
  171         return ndarray::external(p, ndarray::makeVector(
_size), ndarray::ROW_MAJOR, 
m);
 
  181                   ndarray::Array<Element, 1, 1> 
const &value)
 const {
 
  182         if (isVariableLength()) {
 
  183             *
reinterpret_cast<ndarray::Array<Element, 1, 1> *
>(p) = value;
 
  185             setValueDeep(p, value);
 
  190     template <
typename Derived>
 
  192                   ndarray::ExpressionBase<Derived> 
const &value)
 const {
 
  193         if (isVariableLength()) {
 
  196                     "Assignment to a variable-length array must use a non-const array of the correct type.");
 
  198         setValueDeep(p, value);
 
  202     template <
typename Derived>
 
  203     void setValueDeep(
Element *p, ndarray::ExpressionBase<Derived> 
const &value)
 const {
 
  206                               "Incorrect size in array field assignment.");
 
  273         if (isVariableLength()) {
 
  276                               "non-const operator[] not supported for variable-length strings");
 
  284         if (isVariableLength()) {
 
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
 
Tag types used to declare specialized field types.
 
Reports attempts to exceed implementation-defined length limits for some classes.
 
Reports errors in the logical structure of the program.
 
std::size_t computeCovariancePackedSize(std::size_t size)
Defines the packed size of a covariance matrices.
 
std::size_t indexCovariance(std::size_t i, std::size_t j)
Defines the ordering of packed covariance matrices.
 
A base class for image defects.
 
table::Key< table::Array< int > > _size
 
void setValue(Element *p, ndarray::Manager::Ptr const &, ndarray::Array< Element, 1, 1 > const &value) const
Used to implement BaseRecord::set; accepts only non-const arrays of the right type.
 
ndarray::ArrayRef< U, 1, 1 > Reference
the type returned by BaseRecord::operator[]
 
std::size_t getSize() const noexcept
Return the size of the array (equal to the number of subfield elements), or 0 for a variable-length a...
 
Value getValue(Element const *p, ndarray::Manager::Ptr const &m) const
Used to implement BaseRecord::get.
 
void stream(std::ostream &os) const
Defines how Fields are printed.
 
FieldBase(FieldBase const &) noexcept=default
 
void setValue(Element *p, ndarray::Manager::Ptr const &, ndarray::ExpressionBase< Derived > const &value) const
Used to implement BaseRecord::set; accepts any ndarray expression.
 
U Element
the type of subfields and array elements
 
ndarray::ArrayRef< const U, 1, 1 > ConstReference
the type returned by BaseRecord::operator[] (const)
 
bool isVariableLength() const noexcept
Return true if the field is variable-length (each record can have a different size array).
 
FieldBase(FieldBase &&) noexcept=default
 
Reference getReference(Element *p, ndarray::Manager::Ptr const &m) const
Used to implement BaseRecord::operator[] (non-const).
 
FieldBase(size_t size=0)
Construct a FieldBase with the given size.
 
ndarray::Array< const U, 1, 1 > Value
the type returned by BaseRecord::get
 
static FieldBase makeDefault() noexcept
Needed to allow Keys to be default-constructed.
 
ConstReference getConstReference(Element const *p, ndarray::Manager::Ptr const &m) const
Used to implement BaseRecord::operator[] (const).
 
char Element
the type of subfields and array elements
 
char * Reference
the type returned by BaseRecord::operator[]
 
const char * ConstReference
the type returned by BaseRecord::operator[] (const)
 
static FieldBase makeDefault() noexcept
Needed to allow Keys to be default-constructed.
 
bool isVariableLength() const noexcept
Return true if the field is variable-length (each record can have a different size array).
 
FieldBase(FieldBase &&) noexcept=default
 
std::size_t getSize() const noexcept
Return the maximum length of the string, including a null terminator (equal to the number of subfield...
 
FieldBase(FieldBase const &) noexcept=default
 
ConstReference getConstReference(Element const *p, ndarray::Manager::Ptr const &m) const
Used to implement BaseRecord::operator[] (const).
 
void stream(std::ostream &os) const
Defines how Fields are printed.
 
Reference getReference(Element *p, ndarray::Manager::Ptr const &m) const
Used to implement BaseRecord::operator[] (non-const).
 
Field base class default implementation (used for numeric scalars and lsst::geom::Angle).
 
const T & ConstReference
the type returned by BaseRecord::operator[] (const)
 
ConstReference getConstReference(Element const *p, ndarray::Manager::Ptr const &) const
Used to implement BaseRecord::operator[] (const).
 
FieldBase(FieldBase const &) noexcept=default
 
static std::string getTypeString()
Return a string description of the field type.
 
Value getValue(Element const *p, ndarray::Manager::Ptr const &) const
Used to implement BaseRecord::get.
 
std::size_t getElementCount() const noexcept
Return the number of subfield elements (always one for scalars).
 
T & Reference
the type returned by BaseRecord::operator[] (non-const)
 
void setValue(Element *p, ndarray::Manager::Ptr const &, Value v) const
Used to implement BaseRecord::set.
 
Reference getReference(Element *p, ndarray::Manager::Ptr const &) const
Used to implement BaseRecord::operator[] (non-const).
 
static FieldBase makeDefault() noexcept
Needed to allow Keys to be default-constructed.
 
T Value
the type returned by BaseRecord::get
 
void stream(std::ostream &os) const
Defines how Fields are printed.
 
T Element
the type of subfields (the same as the type itself for scalars)
 
FieldBase(FieldBase &&) noexcept=default