diff --git a/parse.cpp b/parse.cpp index fcd2036d..97b8e01a 100644 --- a/parse.cpp +++ b/parse.cpp @@ -69,9 +69,9 @@ c_fparse (const char *first, const char *last) #define C_PARSE(T, KLASS) \ template <> \ T \ -util::parse (const char *first, const char *last) \ +util::parse (util::view str) \ { \ - return c_ ## KLASS ## parse (first, last); \ + return c_ ## KLASS ## parse (std::cbegin (str), std::cend (str)); \ } diff --git a/parse.hpp b/parse.hpp index b03b5ee1..829e49ea 100644 --- a/parse.hpp +++ b/parse.hpp @@ -17,6 +17,8 @@ #ifndef CRUFT_UTIL_PARSE_HPP #define CRUFT_UTIL_PARSE_HPP +#include "view.hpp" + #include #include #include @@ -28,16 +30,14 @@ namespace util { /// /// throws std::invalid_argument when the type cannot be parsed. template - T - parse (const char *first, const char *last); + T parse (util::view); //------------------------------------------------------------------------- template - T - parse (const char *str) + T parse (const char *str) { - return parse (str, str + strlen (str)); + return parse (make_view (str)); } @@ -46,7 +46,7 @@ namespace util { T parse (const std::string &str) { - return parse (std::cbegin (str), std::cend (str)); + return parse (make_view (str)); } }