9 #ifndef ERROR_HANDLER_HPP_
10 #define ERROR_HANDLER_HPP_
21 template <
typename Iterator>
24 template <
typename,
typename,
typename>
28 : first(first), last(last) {}
30 template <
typename Message,
typename What>
34 Iterator err_pos)
const
37 Iterator line_start =
get_pos(err_pos, line);
40 std::cout << message << what <<
" line " << line <<
':' <<
std::endl;
42 for (; line_start != err_pos; ++line_start)
48 std::cout <<
"Unexpected end of file. ";
49 std::cout << message << what <<
" line " << line <<
std::endl;
53 Iterator
get_pos(Iterator err_pos,
int& line)
const
57 Iterator line_start =
first;
61 if (i != err_pos && *i ==
'\r')
66 if (i != err_pos && *i ==
'\n')
83 while (i !=
last && (*i !=
'\r' && *i !=
'\n'))
85 return std::string(err_pos, i);
void operator()(Message const &message, What const &what, Iterator err_pos) const
std::vector< Iterator > iters
Iterator get_pos(Iterator err_pos, int &line) const
error_handler(Iterator first, Iterator last)
std::string get_line(Iterator err_pos) const
Inform & endl(Inform &inf)