25#ifndef LSST_DAF_BASE_PROPERTYSET
26#define LSST_DAF_BASE_PROPERTYSET
49#include <unordered_map>
63#pragma warning(disable : 444)
105 size_t nameCount(
bool topLevelOnly = true) const;
114 std::vector<
std::
string> names(
bool topLevelOnly = true) const;
119 std::vector<
std::
string> paramNames(
bool topLevelOnly = true) const;
124 std::vector<
std::
string> propertySetNames(
bool topLevelOnly = true) const;
132 bool exists(
std::
string const& name) const;
140 bool isArray(
std::
string const& name) const;
148 bool isPropertySetPtr(
std::
string const& name) const;
156 bool isUndefined(
std::
string const& name) const;
164 size_t valueCount() const;
172 size_t valueCount(
std::
string const& name) const;
183 std::type_info const& typeOf(
std::
string const& name) const;
190 template <typename T>
191 static
std::type_info const& typeOfT();
206 template <typename T>
207 T get(
std::
string const& name) const;
221 template <typename T>
222 T get(
std::
string const& name, T const& defaultValue) const;
235 template <typename T>
236 std::vector<T> getArray(
std::
string const& name) const;
250 bool getAsBool(
std::
string const& name) const;
261 int getAsInt(
std::
string const& name) const;
274 int64_t getAsInt64(
std::
string const& name) const;
285 uint64_t getAsUInt64(
std::
string const& name) const;
296 double getAsDouble(
std::
string const& name) const;
309 std::
string getAsString(
std::
string const& name) const;
340 virtual
std::
string toString(
bool topLevelOnly = false,
std::
string const& indent = "") const;
358 template <typename T>
359 void set(
std::
string const& name, T const& value);
369 template <typename T>
370 void set(
std::
string const& name,
std::vector<T> const& value);
379 void set(
std::
string const& name,
char const* value);
396 template <typename T>
397 void add(
std::
string const& name, T const& value);
410 template <typename T>
411 void add(
std::
string const& name,
std::vector<T> const& value);
423 void add(
std::
string const& name,
char const* value);
440 bool asScalar = false);
441 [[deprecated("Replaced by a non-shared_ptr overload. Will be removed after v25.")]]
443 std::
string const& name,
bool asScalar = false);
461 [[deprecated("Replaced by a non-shared_ptr overload. Will be removed after v25.")]]
471 virtual
void remove(
std::
string const& name);
483 virtual
void _set(
std::
string const& name,
std::shared_ptr<
std::vector<
std::any> > vp);
493 virtual
void _add(
std::
string const& name,
std::shared_ptr<
std::vector<
std::any> > vp);
496 virtual
std::
string _format(
std::
string const& name) const;
508 AnyMap::iterator _find(
std::
string const& name);
516 AnyMap::const_iterator _find(
std::
string const& name) const;
526 virtual
void _findOrInsert(
std::
string const& name,
std::shared_ptr<
std::vector<
std::any> > vp);
527 void _cycleCheckPtrVec(
std::vector<
std::shared_ptr<
PropertySet>> const& v,
std::
string const& name);
528 void _cycleCheckAnyVec(
std::vector<
std::any> const& v,
std::
string const& name);
529 void _cycleCheckPtr(
std::shared_ptr<
PropertySet> const & v,
std::
string const& name);
540void PropertySet::add<std::shared_ptr<PropertySet>>(
546void PropertySet::add<std::shared_ptr<PropertySet>>(
Interface for Persistable base class.
Base class for all persistable classes.
Class for storing generic metadata.
std::shared_ptr< PropertySet > Ptr
std::shared_ptr< PropertySet const > ConstPtr
PropertySet(bool flat=false)
Construct an empty PropertySet.
virtual ~PropertySet() noexcept
Destructor.