lsst.daf.base
13.0-5-g99bcfa4+6
|
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) | |
Constructor. More... | |
virtual | ~PropertySet (void) |
Destructor. More... | |
PropertySet (const PropertySet &)=delete | |
PropertySet & | operator= (const PropertySet &)=delete |
PropertySet (PropertySet &&)=delete | |
PropertySet & | operator= (PropertySet &&)=delete |
virtual Ptr | deepCopy (void) const |
Copy 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 |
Get the names of parameters (non-subproperties) in the PropertySet, optionally including those in subproperties. More... | |
std::vector< std::string > | propertySetNames (bool topLevelOnly=true) const |
Get the names of subproperties in the PropertySet, optionally including those in 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 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). More... | |
template<typename T > | |
std::vector< T > | getArray (std::string const &name) const |
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 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) |
Appends 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) |
Appends 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) |
Appends 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) |
Replaces a single value vector in the destination with one from the source. More... | |
virtual void | combine (ConstPtr source) |
Appends all value vectors from the source to their corresponding properties. More... | |
virtual void | remove (std::string const &name) |
Removes all values for a property name (possibly hierarchical). More... | |
template<typename T > | |
vector< T > | getArray (string const &name) const |
Get the vector of values for a property name (possibly hierarchical). More... | |
template<class Archive > | |
void | serialize (Archive &, unsigned int const) |
Template boost::serialization function for the base class. 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 | |
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) |
Finds the property name (possibly hierarchical) and sets or replaces its value with the given vector of values. More... | |
virtual void | _add (std::string const &name, std::shared_ptr< std::vector< boost::any > > vp) |
Finds the property name (possibly hierarchical) and appends or sets its value with the given vector of values. More... | |
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 82 of file PropertySet.h.
typedef std::shared_ptr<PropertySet const> lsst::daf::base::PropertySet::ConstPtr |
Definition at line 86 of file PropertySet.h.
|
inherited |
typedef std::shared_ptr<PropertySet> lsst::daf::base::PropertySet::Ptr |
Definition at line 85 of file PropertySet.h.
|
explicit |
Constructor.
[in] | flat | false (default) = flatten hierarchy by ignoring dots in names |
Definition at line 55 of file PropertySet.cc.
|
virtual |
Destructor.
Definition at line 60 of file PropertySet.cc.
|
delete |
|
delete |
|
protectedvirtual |
Finds the property name (possibly hierarchical) and appends or sets its value with the given vector of values.
[in] | name | Property name to find, possibly hierarchical. |
[in] | vp | shared_ptr to vector of values. |
InvalidParameterError | Hierarchical name uses non-PropertySet. |
Definition at line 848 of file PropertySet.cc.
|
protectedvirtual |
Definition at line 507 of file PropertySet.cc.
|
protectedvirtual |
Finds the property name (possibly hierarchical) and sets or replaces its value with the given vector of values.
Hook for subclass overrides of top-level setting.
[in] | name | Property name to find, possibly hierarchical. |
[in] | vp | shared_ptr to vector of values. |
InvalidParameterError | Hierarchical name uses non-PropertySet. |
Definition at line 837 of file PropertySet.cc.
void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
T const & | value | ||
) |
Appends 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. |
Definition at line 619 of file PropertySet.cc.
void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
std::vector< T > const & | value | ||
) |
Appends 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. |
Definition at line 660 of file PropertySet.cc.
void lsst::daf::base::PropertySet::add | ( | std::string const & | name, |
char const * | value | ||
) |
Appends 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. |
Definition at line 700 of file PropertySet.cc.
|
staticinherited |
How many active Citizens are there?
startingMemId | Don't print Citizens with lower IDs |
Definition at line 267 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 290 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 322 of file Citizen.cc.
|
virtual |
Appends all value vectors from the source to their corresponding properties.
Sets values if a property does not exist.
[in] | source | PropertySet::Ptr for the source PropertySet. |
TypeError | Type does not match existing values. |
InvalidParameterError | Hierarchical name uses non-PropertySet. |
Reimplemented in lsst::daf::base::PropertyList.
Definition at line 738 of file PropertySet.cc.
|
virtual |
Replaces 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. |
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.
Definition at line 713 of file PropertySet.cc.
|
virtual |
Copy the PropertySet and all of its contents.
Reimplemented in lsst::daf::base::PropertyList.
Definition at line 70 of file PropertySet.cc.
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. |
Definition at line 190 of file PropertySet.cc.
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. |
Definition at line 246 of file PropertySet.cc.
T lsst::daf::base::PropertySet::get | ( | std::string const & | name, |
T const & | defaultValue | ||
) | const |
Get the last value for a property name (possibly hierarchical).
Returns 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. |
Definition at line 271 of file PropertySet.cc.
std::vector<T> lsst::daf::base::PropertySet::getArray | ( | std::string const & | name | ) | const |
vector<T> lsst::daf::base::PropertySet::getArray | ( | 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. |
Definition at line 295 of file PropertySet.cc.
bool lsst::daf::base::PropertySet::getAsBool | ( | std::string const & | name | ) | const |
Get the last value for a bool property name (possibly hierarchical).
[in] | name | Property name to examine, possibly hierarchical. |
NotFoundError | Property does not exist. |
TypeError | Value is not a bool. |
Definition at line 321 of file PropertySet.cc.
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. |
Definition at line 406 of file PropertySet.cc.
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, but unsigned versions of smaller types are.
[in] | name | Property name to examine, possibly hierarchical. |
NotFoundError | Property does not exist. |
TypeError | Value cannot be converted to int. |
Definition at line 333 of file PropertySet.cc.
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. |
Definition at line 372 of file PropertySet.cc.
dafBase::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. |
Definition at line 466 of file PropertySet.cc.
dafBase::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. |
Definition at line 455 of file PropertySet.cc.
std::string lsst::daf::base::PropertySet::getAsString | ( | std::string const & | name | ) | const |
Get the last value for a string property name (possibly hierarchical).
Note that properties set with char const*
can be retrieved as strings using this method.
[in] | name | Property name to examine, possibly hierarchical. |
NotFoundError | Property does not exist. |
TypeError | Value is not a string. |
Definition at line 444 of file PropertySet.cc.
|
inherited |
Return the Citizen's ID.
Definition at line 224 of file Citizen.cc.
|
staticinherited |
Return the memId of the next object to be allocated.
Definition at line 229 of file Citizen.cc.
|
staticinherited |
Check all allocated blocks for corruption.
Definition at line 353 of file Citizen.cc.
|
staticinherited |
Called once when the memory system is being initialised.
Definition at line 214 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. |
Definition at line 198 of file PropertySet.cc.
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. |
Definition at line 207 of file PropertySet.cc.
|
inherited |
Mark a Citizen as persistent and not destroyed until process end.
Definition at line 254 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.
The name of the subproperty is counted in that case.
[in] | topLevelOnly | true (default) = don't include subproperties. |
Definition at line 97 of file PropertySet.cc.
vector< string > lsst::daf::base::PropertySet::names | ( | bool | topLevelOnly = true | ) | const |
Get the names in the PropertySet, optionally including those in subproperties.
The name of the subproperty is included in that case. Hierarchical subproperty names are separated by a period.
[in] | topLevelOnly | true (default) = don't include subproperties. |
Definition at line 117 of file PropertySet.cc.
|
delete |
|
delete |
vector< string > lsst::daf::base::PropertySet::paramNames | ( | bool | topLevelOnly = true | ) | const |
Get the names of parameters (non-subproperties) in the PropertySet, optionally including those in subproperties.
Hierarchical subproperty names are separated by a period.
[in] | topLevelOnly | true (default) = don't include subproperties. |
Definition at line 142 of file PropertySet.cc.
vector< string > lsst::daf::base::PropertySet::propertySetNames | ( | bool | topLevelOnly = true | ) | const |
Get the names of subproperties in the PropertySet, optionally including those in subproperties.
Hierarchical subproperty names are separated by a period.
[in] | topLevelOnly | true (default) = don't include subproperties. |
Definition at line 168 of file PropertySet.cc.
|
virtual |
Removes 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.
Definition at line 754 of file PropertySet.cc.
|
inherited |
Return a string representation of a Citizen.
Definition at line 245 of file Citizen.cc.
|
inlineinherited |
Template boost::serialization function for the base class.
Doesn't actually do anything, since there is no data associated with the base. Inline to allow expansion wherever needed.
Definition at line 86 of file Persistable.h.
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 value.
[in] | name | Property name to set, possibly hierarchical. |
[in] | value | Value to set. |
InvalidParameterError | Hierarchical name uses non-PropertySet. |
Definition at line 581 of file PropertySet.cc.
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. |
Definition at line 594 of file PropertySet.cc.
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 ). |
Definition at line 607 of file PropertySet.cc.
|
staticinherited |
Set the CorruptionCallback function.
func | function be called when block is found to be corrupted |
Definition at line 432 of file Citizen.cc.
|
staticinherited |
Set the DeleteCallback function.
func | function be called when desired block is deleted |
Definition at line 422 of file Citizen.cc.
|
staticinherited |
Call the current DeleteCallback when block is deleted.
id | Desired ID |
Definition at line 387 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 412 of file Citizen.cc.
|
staticinherited |
Call the NewCallback when block is allocated.
id | Desired ID |
Definition at line 376 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.
Definition at line 476 of file PropertySet.cc.
type_info const & lsst::daf::base::PropertySet::typeOf | ( | std::string const & | name | ) | const |
Get the type of values for a property name (possibly hierarchical).
[in] | name | Property name to examine, possibly hierarchical. |
NotFoundError | Property does not exist. |
Definition at line 227 of file PropertySet.cc.
size_t lsst::daf::base::PropertySet::valueCount | ( | std::string const & | name | ) | const |
Get number of values for a property name (possibly hierarchical).
[in] | name | Property name to examine, possibly hierarchical. |
Definition at line 216 of file PropertySet.cc.