|
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
|
Class for storing generic metadata. More...
#include <PropertySet.h>
Public Types | |
| typedef std::shared_ptr< PropertySet > | Ptr |
| typedef std::shared_ptr< PropertySet const > | ConstPtr |
Public Member Functions | |
| PropertySet (bool flat=false) | |
| Construct an empty PropertySet. More... | |
| virtual | ~PropertySet () noexcept |
| Destructor. More... | |
| PropertySet (const PropertySet &)=delete | |
| PropertySet & | operator= (const PropertySet &)=delete |
| PropertySet (PropertySet &&)=delete | |
| PropertySet & | operator= (PropertySet &&)=delete |
| virtual Ptr | deepCopy () const |
| Make a deep copy of the PropertySet and all of its contents. More... | |
| size_t | nameCount (bool topLevelOnly=true) const |
| Get the number of names in the PropertySet, optionally including those in subproperties. More... | |
| std::vector< std::string > | names (bool topLevelOnly=true) const |
| Get the names in the PropertySet, optionally including those in subproperties. More... | |
| std::vector< std::string > | paramNames (bool topLevelOnly=true) const |
| A variant of names that excludes the names of subproperties. More... | |
| std::vector< std::string > | propertySetNames (bool topLevelOnly=true) const |
| A variant of names that only returns the names of subproperties. More... | |
| bool | exists (std::string const &name) const |
| Determine if a name (possibly hierarchical) exists. More... | |
| bool | isArray (std::string const &name) const |
| Determine if a name (possibly hierarchical) has multiple values. More... | |
| bool | isPropertySetPtr (std::string const &name) const |
| Determine if a name (possibly hierarchical) is a subproperty. More... | |
| bool | isUndefined (std::string const &name) const |
| Determine if a name (possibly hierarchical) has a defined value. More... | |
| size_t | valueCount () const |
| Get the number of values in the entire PropertySet, counting each element of a vector. More... | |
| size_t | valueCount (std::string const &name) const |
| Get the number of values for a property name (possibly hierarchical). More... | |
| std::type_info const & | typeOf (std::string const &name) const |
| Get the type of values for a property name (possibly hierarchical). More... | |
| template<typename T > | |
| T | get (std::string const &name) const |
| Get the last value for a property name (possibly hierarchical). More... | |
| template<typename T > | |
| T | get (std::string const &name, T const &defaultValue) const |
| Get the last value for a property name (possibly hierarchical); return the provided defaultValue if the property does not exist. More... | |
| template<typename T > | |
| std::vector< T > | getArray (std::string const &name) const |
| Get the vector of values for a property name (possibly hierarchical). More... | |
| bool | getAsBool (std::string const &name) const |
| Get the last value for a bool property name (possibly hierarchical). More... | |
| int | getAsInt (std::string const &name) const |
| Get the last value for a bool/char/short/int property name (possibly hierarchical). More... | |
| int64_t | getAsInt64 (std::string const &name) const |
| Get the last value for a bool/char/short/int/int64_t property name (possibly hierarchical). More... | |
| uint64_t | getAsUInt64 (std::string const &name) const |
| Get the last value for an bool/char/short/int/int64_t property name (possibly hierarchical). More... | |
| double | getAsDouble (std::string const &name) const |
| Get the last value for any arithmetic property name (possibly hierarchical). More... | |
| std::string | getAsString (std::string const &name) const |
| Get the last value for a string property name (possibly hierarchical). More... | |
| PropertySet::Ptr | getAsPropertySetPtr (std::string const &name) const |
| Get the last value for a subproperty name (possibly hierarchical). More... | |
| Persistable::Ptr | getAsPersistablePtr (std::string const &name) const |
| Get the last value for a Persistable name (possibly hierarchical). More... | |
| virtual std::string | toString (bool topLevelOnly=false, std::string const &indent="") const |
| Generate a string representation of the PropertySet. More... | |
| template<typename T > | |
| void | set (std::string const &name, T const &value) |
| Replace all values for a property name (possibly hierarchical) with a new scalar value. More... | |
| template<typename T > | |
| void | set (std::string const &name, std::vector< T > const &value) |
| Replace all values for a property name (possibly hierarchical) with a vector of new values. More... | |
| void | set (std::string const &name, char const *value) |
| Replace all values for a property name (possibly hierarchical) with a string value. More... | |
| template<typename T > | |
| void | add (std::string const &name, T const &value) |
| Append a single value to the vector of values for a property name (possibly hierarchical). More... | |
| template<typename T > | |
| void | add (std::string const &name, std::vector< T > const &value) |
| Append a vector of values to the vector of values for a property name (possibly hierarchical). More... | |
| void | add (std::string const &name, char const *value) |
Append a char const* value to the vector of values for a property name (possibly hierarchical). More... | |
| virtual void | copy (std::string const &dest, ConstPtr source, std::string const &name, bool asScalar=false) |
| Replace a single value vector in the destination with one from the source. More... | |
| virtual void | combine (ConstPtr source) |
| Append all value vectors from the source to their corresponding properties. More... | |
| virtual void | remove (std::string const &name) |
| Remove all values for a property name (possibly hierarchical). More... | |
Static Public Member Functions | |
| template<typename T > | |
| static std::type_info const & | typeOfT () |
| Get type info for the specified class. More... | |
Protected Member Functions | |
| virtual void | _set (std::string const &name, std::shared_ptr< std::vector< std::any > > vp) |
| virtual void | _add (std::string const &name, std::shared_ptr< std::vector< std::any > > vp) |
| virtual std::string | _format (std::string const &name) const |
Private Member Functions | |
| virtual void | _findOrInsert (std::string const &name, std::shared_ptr< std::vector< std::any > > vp) |
Class for storing generic metadata.
This class stores key/value pairs, like a Python dictionary but in C++. Keys are always C++ strings. Values can be C++ primitive data types, strings, lsst::daf::base::DateTime objects, and lsst::daf::base::Persistable subclasses (although the latter is currently discouraged). Values can also be vectors of these items.
PropertySets are hierarchical; values within a PropertySet that is contained within another PropertySet can be addressed using dotted paths ("a.b.c"). If "flat=true" is specified to the constructor, the PropertySet still takes dotted paths but is not actually hierarchical in structure. This is used to support PropertyList.
Definition at line 66 of file PropertySet.h.
| typedef std::shared_ptr<PropertySet const> lsst::daf::base::PropertySet::ConstPtr |
Definition at line 70 of file PropertySet.h.
Definition at line 69 of file PropertySet.h.
|
explicit |
Construct an empty PropertySet.
| [in] | flat | false (default) = flatten hierarchy by ignoring dots in names |
|
virtualnoexcept |
Destructor.
|
delete |
|
delete |
|
protectedvirtual |
|
privatevirtual |
|
protectedvirtual |
|
protectedvirtual |
Reimplemented in lsst::daf::base::PropertyList.
| void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
| char const * | value | ||
| ) |
Append a char const* value to the vector of values for a property name (possibly hierarchical).
Sets the value if the property does not exist.
| [in] | name | Property name to append to, possibly hierarchical. |
| [in] | value | Character string value to append. |
| TypeError | Type does not match existing values. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
| void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
| std::vector< T > const & | value | ||
| ) |
Append a vector of values to the vector of values for a property name (possibly hierarchical).
Sets the values if the property does not exist.
| [in] | name | Property name to append to, possibly hierarchical. |
| [in] | value | Vector of values to append. |
| TypeError | Type does not match existing values. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
| void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
| T const & | value | ||
| ) |
Append a single value to the vector of values for a property name (possibly hierarchical).
Sets the value if the property does not exist.
| [in] | name | Property name to append to, possibly hierarchical. |
| [in] | value | Value to append. |
| TypeError | Type does not match existing values. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
|
virtual |
Append all value vectors from the source to their corresponding properties.
Sets values if a property does not exist.
If a property already exists then the types of the existing value(s) must match the type of the value(s) in source.
| [in] | source | PropertySet::Ptr for the source PropertySet. |
| TypeError | Type does not match existing values for an item. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
Reimplemented in lsst::daf::base::PropertyList.
|
virtual |
Replace a single value vector in the destination with one from the source.
| [in] | dest | Destination property name. |
| [in] | source | PropertySet::Ptr for the source PropertySet. |
| [in] | name | Property name to extract. |
| [in] | asScalar | If true copy the item as a scalar by ignoring all but the last value (which is the value returned by get<T>(name)) |
| TypeError | Type does not match existing values. |
| InvalidParameterError | Name does not exist in source. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
Reimplemented in lsst::daf::base::PropertyList.
|
virtual |
Make a deep copy of the PropertySet and all of its contents.
Reimplemented in lsst::daf::base::PropertyList.
| bool lsst::daf::base::PropertySet::exists | ( | std::string const & | name | ) | const |
Determine if a name (possibly hierarchical) exists.
| [in] | name | Property name to examine, possibly hierarchical. |
| T lsst::daf::base::PropertySet::get | ( | std::string const & | name | ) | const |
Get the last value for a property name (possibly hierarchical).
Note that the type must be explicitly specified for this template:
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value does not match desired type. |
| T lsst::daf::base::PropertySet::get | ( | std::string const & | name, |
| T const & | defaultValue | ||
| ) | const |
Get the last value for a property name (possibly hierarchical); return the provided defaultValue if the property does not exist.
Note that the type must be explicitly specified for this template:
| [in] | name | Property name to examine, possibly hierarchical. |
| [in] | defaultValue | Default value to return if property does not exist. |
| TypeError | Value does not match desired type. |
| std::vector<T> lsst::daf::base::PropertySet::getArray | ( | std::string const & | name | ) | const |
Get the vector of values for a property name (possibly hierarchical).
Note that the type must be explicitly specified for this template:
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value does not match desired type. |
| bool lsst::daf::base::PropertySet::getAsBool | ( | std::string const & | name | ) | const |
Get the last value for a bool property name (possibly hierarchical).
Only bool properties are supported.
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value is not a bool. |
| double lsst::daf::base::PropertySet::getAsDouble | ( | std::string const & | name | ) | const |
Get the last value for any arithmetic property name (possibly hierarchical).
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value cannot be converted to double. |
| int lsst::daf::base::PropertySet::getAsInt | ( | std::string const & | name | ) | const |
Get the last value for a bool/char/short/int property name (possibly hierarchical).
Unsigned int properties are not acceptable.
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value cannot be converted to int. |
| int64_t lsst::daf::base::PropertySet::getAsInt64 | ( | std::string const & | name | ) | const |
Get the last value for a bool/char/short/int/int64_t property name (possibly hierarchical).
Unsigned int64_t properties are not acceptable, but unsigned versions of smaller types are, except possibly unsigned long, depending on compiler.
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value cannot be converted to int64_t. |
| Persistable::Ptr lsst::daf::base::PropertySet::getAsPersistablePtr | ( | std::string const & | name | ) | const |
Get the last value for a Persistable name (possibly hierarchical).
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value is not a Persistable::Ptr. |
| PropertySet::Ptr lsst::daf::base::PropertySet::getAsPropertySetPtr | ( | std::string const & | name | ) | const |
Get the last value for a subproperty name (possibly hierarchical).
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value is not a PropertySet::Ptr. |
| std::string lsst::daf::base::PropertySet::getAsString | ( | std::string const & | name | ) | const |
Get the last value for a string property name (possibly hierarchical).
Only strings values are supported, though this does include properties set with char const*.
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value is not a string. |
| uint64_t lsst::daf::base::PropertySet::getAsUInt64 | ( | std::string const & | name | ) | const |
Get the last value for an bool/char/short/int/int64_t property name (possibly hierarchical).
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
| TypeError | Value cannot be converted to uint64_t. |
| bool lsst::daf::base::PropertySet::isArray | ( | std::string const & | name | ) | const |
Determine if a name (possibly hierarchical) has multiple values.
| [in] | name | Property name to examine, possibly hierarchical. |
| bool lsst::daf::base::PropertySet::isPropertySetPtr | ( | std::string const & | name | ) | const |
Determine if a name (possibly hierarchical) is a subproperty.
| [in] | name | Property name to examine, possibly hierarchical. |
| bool lsst::daf::base::PropertySet::isUndefined | ( | std::string const & | name | ) | const |
Determine if a name (possibly hierarchical) has a defined value.
| [in] | name | Property name to examine, possibly hierarchical. |
| size_t lsst::daf::base::PropertySet::nameCount | ( | bool | topLevelOnly = true | ) | const |
Get the number of names in the PropertySet, optionally including those in subproperties.
| [in] | topLevelOnly | If true (default) omit names from subproperties and names of subproperties. |
| std::vector<std::string> lsst::daf::base::PropertySet::names | ( | bool | topLevelOnly = true | ) | const |
Get the names in the PropertySet, optionally including those in subproperties.
| [in] | topLevelOnly | If true (default) omit names from subproperties and names of subproperties. If false subproperty names are separated by a dot, e.g. "subname.subitem1" |
|
delete |
|
delete |
| std::vector<std::string> lsst::daf::base::PropertySet::paramNames | ( | bool | topLevelOnly = true | ) | const |
A variant of names that excludes the names of subproperties.
| std::vector<std::string> lsst::daf::base::PropertySet::propertySetNames | ( | bool | topLevelOnly = true | ) | const |
A variant of names that only returns the names of subproperties.
|
virtual |
Remove all values for a property name (possibly hierarchical).
Does nothing if the property does not exist.
| [in] | name | Property name to remove, possibly hierarchical. |
Reimplemented in lsst::daf::base::PropertyList.
| void lsst::daf::base::PropertySet::set | ( | std::string const & | name, |
| char const * | value | ||
| ) |
Replace all values for a property name (possibly hierarchical) with a string value.
| [in] | name | Property name to set, possibly hierarchical. |
| [in] | value | Character string (converted to std::string ). |
| void lsst::daf::base::PropertySet::set | ( | std::string const & | name, |
| std::vector< T > const & | value | ||
| ) |
Replace all values for a property name (possibly hierarchical) with a vector of new values.
| [in] | name | Property name to set, possibly hierarchical. |
| [in] | value | Vector of values to set. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
| void lsst::daf::base::PropertySet::set | ( | std::string const & | name, |
| T const & | value | ||
| ) |
Replace all values for a property name (possibly hierarchical) with a new scalar value.
| [in] | name | Property name to set, possibly hierarchical. |
| [in] | value | Value to set. |
| InvalidParameterError | Hierarchical name uses non-PropertySet. |
|
virtual |
Generate a string representation of the PropertySet.
Use this for debugging, not for serialization/persistence.
| [in] | topLevelOnly | false (default) = do include subproperties. |
| [in] | indent | String to indent lines by (default none). |
Reimplemented in lsst::daf::base::PropertyList.
| std::type_info const& lsst::daf::base::PropertySet::typeOf | ( | std::string const & | name | ) | const |
Get the type of values for a property name (possibly hierarchical).
If the value is an array this returns the type of the elements.
| [in] | name | Property name to examine, possibly hierarchical. |
| NotFoundError | Property does not exist. |
|
static |
Get type info for the specified class.
| size_t lsst::daf::base::PropertySet::valueCount | ( | ) | const |
Get the number of values in the entire PropertySet, counting each element of a vector.
| size_t lsst::daf::base::PropertySet::valueCount | ( | std::string const & | name | ) | const |
Get the number of values for a property name (possibly hierarchical).
| [in] | name | Property name to examine, possibly hierarchical. |