LSSTApplications
16.0-10-g0ee56ad+5,16.0-11-ga33d1f2+5,16.0-12-g3ef5c14+3,16.0-12-g71e5ef5+18,16.0-12-gbdf3636+3,16.0-13-g118c103+3,16.0-13-g8f68b0a+3,16.0-15-gbf5c1cb+4,16.0-16-gfd17674+3,16.0-17-g7c01f5c+3,16.0-18-g0a50484+1,16.0-20-ga20f992+8,16.0-21-g0e05fd4+6,16.0-21-g15e2d33+4,16.0-22-g62d8060+4,16.0-22-g847a80f+4,16.0-25-gf00d9b8+1,16.0-28-g3990c221+4,16.0-3-gf928089+3,16.0-32-g88a4f23+5,16.0-34-gd7987ad+3,16.0-37-gc7333cb+2,16.0-4-g10fc685+2,16.0-4-g18f3627+26,16.0-4-g5f3a788+26,16.0-5-gaf5c3d7+4,16.0-5-gcc1f4bb+1,16.0-6-g3b92700+4,16.0-6-g4412fcd+3,16.0-6-g7235603+4,16.0-69-g2562ce1b+2,16.0-8-g14ebd58+4,16.0-8-g2df868b+1,16.0-8-g4cec79c+6,16.0-8-gadf6c7a+1,16.0-8-gfc7ad86,16.0-82-g59ec2a54a+1,16.0-9-g5400cdc+2,16.0-9-ge6233d7+5,master-g2880f2d8cf+3,v17.0.rc1
LSSTDataManagementBasePackage
|
Class for storing generic metadata. More...
#include <PropertySet.h>
Public Types | |
typedef std::shared_ptr< PropertySet > | Ptr |
typedef std::shared_ptr< PropertySet const > | ConstPtr |
enum | { magicSentinel = 0xdeadbeef } |
typedef unsigned long | memId |
Type of the block's ID. More... | |
typedef memId(* | memNewCallback) (const memId cid) |
A function used to register a callback. More... | |
typedef memId(* | memCallback) (const Citizen *ptr) |
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... | |
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... | |
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... | |
std::string | repr () const |
Return a string representation of a Citizen. More... | |
void | markPersistent (void) |
Mark a Citizen as persistent and not destroyed until process end. More... | |
memId | getId () const |
Return the Citizen's ID. More... | |
Static Public Member Functions | |
template<typename T > | |
static std::type_info const & | typeOfT () |
Get type info for the specified class. More... | |
static bool | hasBeenCorrupted () |
Check all allocated blocks for corruption. More... | |
static memId | getNextMemId () |
Return the memId of the next object to be allocated. More... | |
static int | init () |
Called once when the memory system is being initialised. More... | |
Census | |
Provide a list of current Citizens | |
static int | census (int, memId startingMemId=0) |
How many active Citizens are there? More... | |
static void | census (std::ostream &stream, memId startingMemId=0) |
Print a list of all active Citizens to stream, sorted by ID. More... | |
static const std::vector< const Citizen * > * | census () |
Return a (newly allocated) std::vector of active Citizens sorted by ID. More... | |
callbackIDs | |
Set callback Ids. The old Id is returned | |
static memId | setNewCallbackId (memId id) |
Call the NewCallback when block is allocated. More... | |
static memId | setDeleteCallbackId (memId id) |
Call the current DeleteCallback when block is deleted. More... | |
callbacks | |
Set the New/Delete callback functions; in each case the previously installed callback is returned. These callback functions return a value which is Added to the previously registered id. The default callback functions are called default{New,Delete}Callback; you may want to set a break point in these callbacks from your favourite debugger | |
static memNewCallback | setNewCallback (memNewCallback func) |
Set the NewCallback function. More... | |
static memCallback | setDeleteCallback (memCallback func) |
Set the DeleteCallback function. More... | |
static memCallback | setCorruptionCallback (memCallback func) |
Set the CorruptionCallback function. More... | |
Protected Member Functions | |
virtual void | _set (std::string const &name, std::shared_ptr< std::vector< boost::any > > vp) |
virtual void | _add (std::string const &name, std::shared_ptr< std::vector< boost::any > > vp) |
virtual std::string | _format (std::string const &name) const |
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 68 of file PropertySet.h.
typedef std::shared_ptr<PropertySet const> lsst::daf::base::PropertySet::ConstPtr |
Definition at line 72 of file PropertySet.h.
|
inherited |
Definition at line 71 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 |
|
protectedvirtual |
|
protectedvirtual |
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. |
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, |
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. |
|
staticinherited |
How many active Citizens are there?
startingMemId | Don't print Citizens with lower IDs |
Definition at line 238 of file Citizen.cc.
|
staticinherited |
Print a list of all active Citizens to stream, sorted by ID.
stream | stream to print to |
startingMemId | Don't print Citizens with lower IDs |
Definition at line 259 of file Citizen.cc.
|
staticinherited |
Return a (newly allocated) std::vector of active Citizens sorted by ID.
You are responsible for deleting it; or you can say std::unique_ptr<std::vector<Citizen const*> const> leaks(Citizen::census()); and not bother (that becomes std::unique_ptr in C++11)
Definition at line 287 of file Citizen.cc.
|
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. |
|
inherited |
|
staticinherited |
Return the memId of the next object to be allocated.
Definition at line 209 of file Citizen.cc.
|
staticinherited |
Check all allocated blocks for corruption.
Definition at line 316 of file Citizen.cc.
|
staticinherited |
Called once when the memory system is being initialised.
Definition at line 196 of file Citizen.cc.
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. |
|
inherited |
Mark a Citizen as persistent and not destroyed until process end.
Definition at line 225 of file Citizen.cc.
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.
|
inherited |
Return a string representation of a Citizen.
Definition at line 219 of file Citizen.cc.
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. |
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, |
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 ). |
|
staticinherited |
Set the CorruptionCallback function.
func | function be called when block is found to be corrupted |
Definition at line 391 of file Citizen.cc.
|
staticinherited |
Set the DeleteCallback function.
func | function be called when desired block is deleted |
Definition at line 381 of file Citizen.cc.
|
staticinherited |
Call the current DeleteCallback when block is deleted.
id | Desired ID |
Definition at line 347 of file Citizen.cc.
|
staticinherited |
Set the NewCallback function.
func | The new function to be called when a designated block is allocated |
Definition at line 371 of file Citizen.cc.
|
staticinherited |
Call the NewCallback when block is allocated.
id | Desired ID |
Definition at line 337 of file Citizen.cc.
|
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 | ( | std::string const & | name | ) | const |
Get the number of values for a property name (possibly hierarchical).
[in] | name | Property name to examine, possibly hierarchical. |