55 n->_comments = _comments;
64 return PropertySet::get<T>(name);
70 return PropertySet::get<T>(name, defaultValue);
75 return PropertySet::getArray<T>(name);
79 return _comments.
find(name)->second;
84 for (
auto const& name : _order) {
96 for (
auto const& name : _order) {
113 template <
typename T>
119 Ptr pl = std::dynamic_pointer_cast<PropertyList, PropertySet>(value);
121 _comments.
erase(name);
133 template <
typename T>
138 template <
typename T>
145 template <
typename T>
153 template <
typename T>
163 template <
typename T>
168 template <
typename T>
178 template <
typename T>
190 ConstPtr pl = std::dynamic_pointer_cast<PropertyList const, PropertySet const>(source);
192 _comments[name] = pl->_comments.find(name)->second;
197 ConstPtr pl = std::dynamic_pointer_cast<PropertyList const, PropertySet const>(source);
201 for (
auto const& name : *pl) {
202 bool present = _comments.
find(name) != _comments.
end();
211 for (
auto const& name : *pl) {
212 _comments[name] = pl->_comments.
find(name)->second;
219 _comments.
erase(name);
229 if (_comments.
find(name) == _comments.
end()) {
241 _comments[name] = comment;
251 #define INSTANTIATE(t) \
252 template t PropertyList::get<t>(std::string const& name) const; \
253 template t PropertyList::get<t>(std::string const& name, t const& defaultValue) const; \
254 template std::vector<t> PropertyList::getArray<t>(std::string const& name) const; \
255 template void PropertyList::set<t>(std::string const& name, t const& value); \
256 template void PropertyList::set<t>(std::string const& name, std::vector<t> const& value); \
257 template void PropertyList::add<t>(std::string const& name, t const& value); \
258 template void PropertyList::add<t>(std::string const& name, std::vector<t> const& value); \
259 template void PropertyList::set<t>(std::string const& name, t const& value, std::string const& comment); \
260 template void PropertyList::set<t>(std::string const& name, std::vector<t> const& value, \
261 std::string const& comment); \
262 template void PropertyList::add<t>(std::string const& name, t const& value, std::string const& comment); \
263 template void PropertyList::add<t>(std::string const& name, std::vector<t> const& value, \
264 std::string const& comment); \
265 template void PropertyList::set<t>(std::string const& name, t const& value, char const* comment); \
266 template void PropertyList::set<t>(std::string const& name, std::vector<t> const& value, \
267 char const* comment); \
268 template void PropertyList::add<t>(std::string const& name, t const& value, char const* comment); \
269 template void PropertyList::add<t>(std::string const& name, std::vector<t> const& value, \
270 char const* comment);
274 INSTANTIATE(
signed char)
275 INSTANTIATE(
unsigned char)
277 INSTANTIATE(
unsigned short)
279 INSTANTIATE(
unsigned int)
281 INSTANTIATE(
unsigned long)
282 INSTANTIATE(
long long)
283 INSTANTIATE(
unsigned long long)
Interface for DateTime class.
Class for handling dates/times, including MJD, UTC, and TAI.
Class for storing ordered metadata with comments.
std::list< std::string >::const_iterator end() const
End iterator over the list of property names, in the order they were added.
PropertyList()
Construct an empty PropertyList.
void set(std::string const &name, T const &value)
Replace all values for a property name (possibly hierarchical) with a new scalar value.
T get(std::string const &name) const
Get the last value for a property name (possibly hierarchical).
virtual void copy(std::string const &dest, PropertySet::ConstPtr source, std::string const &name, bool asScalar=false)
Replace a single value vector in the destination with one from the source.
void add(std::string const &name, T const &value)
Append a single value to the vector of values for a property name (possibly hierarchical).
virtual void _set(std::string const &name, std::shared_ptr< std::vector< std::any > > vp)
virtual void combine(PropertySet::ConstPtr source)
Append all value vectors from the source to their corresponding properties.
std::string const & getComment(std::string const &name) const
Get the comment for a string property name (possibly hierarchical).
std::vector< T > getArray(std::string const &name) const
Get the vector of values for a property name (possibly hierarchical).
std::vector< std::string > getOrderedNames() const
Get the list of property names, in the order they were added.
virtual void remove(std::string const &name)
Remove all values for a property name (possibly hierarchical).
virtual ~PropertyList() noexcept
Destructor.
virtual void _moveToEnd(std::string const &name)
virtual void _commentOrderFix(std::string const &name, std::string const &comment)
virtual std::string toString(bool topLevelOnly=false, std::string const &indent="") const
Generate a string representation of the PropertySet.
std::list< std::string >::const_iterator begin() const
Begin iterator over the list of property names, in the order they were added.
Class for storing generic metadata.
virtual void _set(std::string const &name, std::shared_ptr< std::vector< std::any > > vp)
virtual Ptr deepCopy() const
Make a deep copy of the PropertySet and all of its contents.
virtual void remove(std::string const &name)
Remove all values for a property name (possibly hierarchical).
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.
virtual std::string _format(std::string const &name) const
std::vector< std::string > paramNames(bool topLevelOnly=true) const
A variant of names that excludes the names of subproperties.
void set(std::string const &name, T const &value)
Replace all values for a property name (possibly hierarchical) with a new scalar value.
virtual void combine(ConstPtr source)
Append all value vectors from the source to their corresponding properties.
void add(std::string const &name, T const &value)
Append a single value to the vector of values for a property name (possibly hierarchical).