25 #ifndef LSST_DAF_BASE_PROPERTYSET 26 #define LSST_DAF_BASE_PROPERTYSET 58 #include <unordered_map> 61 #include "boost/any.hpp" 65 #include "lsst/pex/exceptions.h" 70 namespace persistence {
71 class PropertySetFormatter;
78 #pragma warning (push) 79 #pragma warning (disable: 444) 85 typedef std::shared_ptr<PropertySet>
Ptr;
86 typedef std::shared_ptr<PropertySet const>
ConstPtr;
102 virtual Ptr deepCopy(
void)
const;
105 size_t nameCount(
bool topLevelOnly =
true)
const;
106 std::vector<std::string> names(
bool topLevelOnly =
true)
const;
107 std::vector<std::string> paramNames(
bool topLevelOnly =
true)
const;
108 std::vector<std::string> propertySetNames(
bool topLevelOnly =
true)
const;
110 bool exists(std::string
const& name)
const;
111 bool isArray(std::string
const& name)
const;
112 bool isPropertySetPtr(std::string
const& name)
const;
114 size_t valueCount(std::string
const& name)
const;
115 std::type_info
const& typeOf(std::string
const& name)
const;
120 template <
typename T> T
get(std::string
const& name)
const;
123 template <
typename T>
124 T
get(std::string
const& name, T
const& defaultValue)
const;
126 template <
typename T>
127 std::vector<T> getArray(std::string
const& name)
const;
130 bool getAsBool(std::string
const& name)
const;
131 int getAsInt(std::string
const& name)
const;
132 int64_t getAsInt64(std::string
const& name)
const;
133 double getAsDouble(std::string
const& name)
const;
134 std::string getAsString(std::string
const& name)
const;
139 virtual std::string toString(
bool topLevelOnly =
false,
140 std::string
const& indent =
"")
const;
143 template <
typename T>
void set(std::string
const& name, T
const& value);
144 template <
typename T>
void set(std::string
const& name,
145 std::vector<T>
const& value);
146 void set(std::string
const& name,
char const* value);
147 template <
typename T>
void add(std::string
const& name, T
const& value);
148 template <
typename T>
void add(std::string
const& name,
149 std::vector<T>
const& value);
150 void add(std::string
const& name,
char const* value);
152 virtual void copy(std::string
const& dest, ConstPtr source,
153 std::string
const& name);
154 virtual void combine(ConstPtr source);
158 virtual void remove(std::string
const& name);
161 virtual void _set(std::string
const& name,
162 std::shared_ptr< std::vector<boost::any> > vp);
163 virtual void _add(std::string
const& name,
164 std::shared_ptr< std::vector<boost::any> > vp);
165 virtual std::string _format(std::string
const& name)
const;
170 typedef std::unordered_map<std::string,
171 std::shared_ptr< std::vector<boost::any> > > AnyMap;
173 AnyMap::iterator _find(std::string
const& name);
174 AnyMap::const_iterator _find(std::string
const& name)
const;
175 virtual void _findOrInsert(std::string
const& name,
176 std::shared_ptr< std::vector<boost::any> > vp);
177 void _cycleCheckPtrVec(std::vector<Ptr>
const& v, std::string
const& name);
178 void _cycleCheckAnyVec(std::vector<boost::any>
const& v,
179 std::string
const& name);
180 void _cycleCheckPtr(Ptr
const& v, std::string
const& name);
187 #pragma warning (pop) 190 template<>
void PropertySet::add<PropertySet::Ptr>(
191 std::string
const& name,
Ptr const& value);
192 template<>
void PropertySet::add<PropertySet::Ptr>(
193 std::string
const& name, std::vector<Ptr>
const& value);
std::shared_ptr< PropertySet > Ptr
std::shared_ptr< PropertySet const > ConstPtr
Interface for Persistable base class.
Class for storing generic metadata.
#define LSST_PERSIST_FORMATTER(formatter...)
Macro used to connect the persistable class with the Formatter and boost::serialization.
std::shared_ptr< Persistable > Ptr
Base class for all persistable classes.
Citizen is a class that should be among all LSST classes base classes, and handles basic memory manag...