25#ifndef LSST_AFW_TYPEHANDLING_STORABLE_H
26#define LSST_AFW_TYPEHANDLING_STORABLE_H
152 auto typedRhs =
dynamic_cast<T const*
>(&rhs);
153 if (typedRhs !=
nullptr) {
154 return lhs == *typedRhs;
#define LSST_EXCEPTION_TYPE(t, b, c)
Persistable() noexcept=default
Interface supporting iteration over heterogenous containers.
~Storable() noexcept override=0
virtual std::string toString() const
Create a string representation of this object (optional operation).
virtual std::size_t hash_value() const
Return a hash of this object (optional operation).
virtual bool equals(Storable const &other) const noexcept
Compare this object to another Storable.
std::ostream & operator<<(std::ostream &os, Storable const &storable)
Output operator for Storable.
static bool singleClassEquals(T const &lhs, Storable const &rhs)
Test if a Storable is of a particular class and equal to another object.
virtual std::shared_ptr< Storable > cloneStorable() const
Create a new object that is a copy of this one (optional operation).
Exception thrown by Storable operations for unimplemented operations.
lsst::afw::typehandling::Storable argument_type
size_t operator()(argument_type const &obj) const