1 // Copyright (c) 2010 Daniel James 2 // Copyright (c) 2001-2010 Hartmut Kaiser 3 // 4 // Distributed under the Boost Software License, Version 1.0. (See accompanying 5 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 7 #include <boost/config/warning_disable.hpp> 8 #include <boost/detail/lightweight_test.hpp> 9 10 #include <boost/spirit/include/qi.hpp> 11 #include <vector> 12 main()13int main() 14 { 15 typedef char const* Iterator; 16 namespace qi = boost::spirit::qi; 17 18 qi::rule<Iterator, std::vector<boost::iterator_range<Iterator> >()> list; 19 list = *qi::raw[qi::char_]; // This fails to compile 20 21 char const* test = "abcdef"; 22 unsigned test_length = 6; 23 char const* test_begin = test; 24 char const* test_end = test + test_length; 25 std::vector<boost::iterator_range<Iterator> > result; 26 bool r = qi::parse(test_begin, test_end, list, result); 27 28 BOOST_TEST(r); 29 BOOST_TEST(test_begin == test_end); 30 BOOST_TEST(result.size() == test_length); 31 32 for(unsigned i = 0; i < test_length; ++i) { 33 BOOST_TEST(result[i].begin() == test + i); 34 BOOST_TEST(result[i].end() == test + i + 1); 35 } 36 37 return boost::report_errors(); 38 } 39