1 #ifndef UTILS_PROPERTY_MAP_H 2 #define UTILS_PROPERTY_MAP_H 31 PropertyMap(
const std::map<std::string,std::string>& );
35 PropertyMap(
const std::vector<std::string>& keys,
const std::vector<T>& values);
36 inline bool contains(
const std::string& key)
const {
return count(key) != 0; }
37 bool remove(
const std::string& key);
38 void set(
const std::string& key,
const std::string& value);
39 bool get(
const std::string& key,std::string& value)
const;
40 std::string as(
const std::string& key)
const;
41 void setArray(
const std::string& key,
const std::vector<std::string>& values);
42 bool getArray(
const std::string& key,std::vector<std::string>& values)
const;
43 std::vector<std::string> asArray(
const std::string& key)
const;
45 void set(
const std::string& key,
const T& value);
47 bool get(
const std::string& key,T& value)
const;
49 T as(
const std::string& key)
const;
51 T getDefault(
const std::string& key,T defaultValue=T())
const;
53 void setArray(
const std::string& key,
const std::vector<T>& value);
55 bool getArray(
const std::string& key,std::vector<T>& values)
const;
57 std::vector<T> asArray(
const std::string& key)
const;
61 bool LoadJSON(std::istream& in);
62 bool SaveJSON(std::ostream& out)
const;
63 bool Load(
const char* fn);
64 bool Save(
const char* fn)
const;
65 void Print(std::ostream& out)
const;
68 inline std::ostream& operator << (std::ostream& out,
const PropertyMap& pmap)
74 inline std::istream& operator >> (std::istream& in,
PropertyMap& pmap)
76 if(!pmap.LoadJSON(in))
77 in.setstate(std::ios::failbit);
83 PropertyMap::PropertyMap(
const std::map<std::string,T>& rhs)
85 for(
const auto& i=rhs.begin();i!=rhs.end();++i)
86 set(i->first,i->second);
90 PropertyMap::PropertyMap(
const std::vector<std::string>& keys,
const std::vector<T>& values)
92 for(
size_t i=0;i<keys.size();i++)
93 set(keys[i],values[i]);
97 T PropertyMap::as(
const std::string& key)
const 105 T PropertyMap::getDefault(
const std::string& key,T defaultValue)
const 114 bool PropertyMap::get(
const std::string& key,T& value)
const 116 const_iterator i=find(key);
117 if(i==end())
return false;
118 std::stringstream ss(i->second);
120 if(!ss)
return false;
125 void PropertyMap::set(
const std::string& key,
const T& value)
127 std::stringstream ss;
129 (*this)[key] = ss.str();
133 bool PropertyMap::getArray(
const std::string& key,std::vector<T>& values)
const 135 const_iterator i=find(key);
136 if(i==end())
return false;
137 std::stringstream ss(i->second);
143 values.push_back(temp);
150 void PropertyMap::setArray(
const std::string& key,
const std::vector<T>& values)
152 std::stringstream ss;
153 for(
size_t i=0;i<values.size();i++) {
163 std::vector<T> PropertyMap::asArray(
const std::string& key)
const A simple map from keys to values.
Definition: PropertyMap.h:27
Definition: PropertyMap.cpp:9