1 #ifndef UTILMM_CONFIG_SET_HH 2 #define UTILMM_CONFIG_SET_HH 6 #include <boost/noncopyable.hpp> 7 #include <boost/lexical_cast.hpp> 8 #include <boost/utility/enable_if.hpp> 18 {
static const bool value =
false; };
19 template<
typename T>
struct is_list< std::list<T> >
20 {
static const bool value =
true; };
25 :
private boost::noncopyable
27 friend class ConfigFile;
32 static T convert(std::string
const&
value);
36 typedef std::multimap<std::string, std::string>
ValueMap;
38 typedef std::multimap<std::string, const config_set*>
ChildMap;
49 typedef std::list<const config_set*>
subsets;
55 bool exists (
const std::string& attribute)
const;
64 std::list<const config_set*> children(
const std::string& name)
const;
66 config_set const& child(std::string
const& name)
const;
75 T
get(std::string
const& name, T
const& defval = T(),
76 typename boost::enable_if< details::is_list<T> >::type *enabler = 0)
const;
85 T
get(std::string
const& name, T
const& defval = T(),
86 typename boost::disable_if< details::is_list<T> >::type *enabler = 0)
const;
91 void set(std::string
const& name, std::string
const&
value);
96 void set(std::string
const& name, std::list<std::string>
const&
value);
98 void insert(std::string
const& name, std::string
const&
value);
100 void insert(std::string
const& name, std::list<std::string>
const&
value);
104 void erase(std::string
const& name);
111 template<>
bool config_set::convert(std::string
const&
value);
113 T config_set::convert(
const std::string&
value)
114 {
return boost::lexical_cast<T>(
value); }
119 config_set::stringlist
const& defval,
126 stringlist values = get< stringlist >(name);
131 for (stringlist::const_iterator it = values.begin(); it != values.end(); ++it)
132 result.push_back(convert<typename T::value_type>(*it));
141 std::list<T> deflist;
142 deflist.push_back(defval);
143 return get< std::list<T> >(name, deflist).front();
ChildMap m_children
Definition: configset.hh:39
T get(std::string const &name, T const &defval=T(), typename boost::enable_if< details::is_list< T > >::type *enabler=0) const
Definition: configset.hh:123
std::multimap< std::string, const config_set * > ChildMap
Definition: configset.hh:38
std::list< std::string > stringlist
Definition: configset.hh:108
Definition: configset.hh:24
ValueMap m_values
Definition: configset.hh:37
std::list< const config_set * > subsets
Definition: configset.hh:49
Definition: auto_flag.hh:6
static const bool value
Definition: configset.hh:18
std::multimap< std::string, std::string > ValueMap
Definition: configset.hh:36
config_set * m_parent
Definition: configset.hh:35
Definition: configset.hh:17