bool parse_dasharray(Iterator first, Iterator last, std::vector<double>& dasharray) { using qi::double_; using qi::phrase_parse; using qi::_1; using qi::lit; using qi::char_; #if BOOST_VERSION > 104200 using qi::no_skip; #else using qi::lexeme; #endif using phoenix::push_back; // SVG // dasharray ::= (length | percentage) (comma-wsp dasharray)? // no support for 'percentage' as viewport is unknown at load_map // bool r = phrase_parse(first, last, (double_[push_back(phoenix::ref(dasharray), _1)] % #if BOOST_VERSION > 104200 no_skip[char_(", ")] #else lexeme[char_(", ")] #endif | lit("none")), qi::ascii::space); if (first != last) { return false; } return r; }
bool parse_numbers(Iterator first, Iterator last, std::vector<double>& v) { using qi::char_; using qi::double_; using qi::phrase_parse; using qi::_1; using ascii::space; const char c = ';'; bool r = phrase_parse(first, last, // Begin grammar ( double_ % char_(',') ) , // End grammar space, v); if (first != last) // fail if we did not get a full match return false; return r; }