25 {
26 boost::algorithm::trim(str);
27 boost::property_tree::ptree pt;
28 boost::tokenizer<boost::char_separator<char> > tok(str, args_sep);
29
30 BOOST_FOREACH(std::string s, tok)
31 {
32 boost::algorithm::trim(s);
33 boost::tokenizer<boost::char_separator<char> > fields(s, fields_sep);
34 typedef boost::tokenizer<boost::char_separator<char> >::iterator Iter;
35
36 Iter it = fields.begin();
37
38 std::string varname = *it;
39 boost::algorithm::trim(varname);
40
41 ++it;
42 if (it != fields.end()) {
43 std::string val = *it;
44 boost::algorithm::trim(val);
45
46 pt.put(varname, val);
47 ++it;
48 } else {
49 throw std::runtime_error("Parsing error: malformed input buffer.");
50 }
51
52 if (it != fields.end()) {
53 throw std::runtime_error("Parsing error: malformed input buffer.");
54 }
55 }
56 return pt;
57 }