Line data Source code
1 : //
2 : // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
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 : // Official repository: https://github.com/boostorg/http_proto
8 : //
9 :
10 : #ifndef BOOST_URL_IMPL_GRAMMAR_TOKEN_RULE_HPP
11 : #define BOOST_URL_IMPL_GRAMMAR_TOKEN_RULE_HPP
12 :
13 : #include <boost/url/grammar/error.hpp>
14 :
15 : namespace boost {
16 : namespace urls {
17 : namespace grammar {
18 :
19 : template<class CharSet>
20 : auto
21 627 : token_rule_t<CharSet>::
22 : parse(
23 : char const*& it,
24 : char const* end
25 : ) const noexcept ->
26 : system::result<value_type>
27 : {
28 627 : auto const it0 = it;
29 627 : if(it == end)
30 : {
31 4 : BOOST_URL_RETURN_EC(
32 : error::need_more);
33 : }
34 623 : it = (find_if_not)(it, end, cs_);
35 623 : if(it != it0)
36 575 : return core::string_view(it0, it - it0);
37 48 : BOOST_URL_RETURN_EC(
38 : error::mismatch);
39 : }
40 :
41 : } // grammar
42 : } // urls
43 : } // boost
44 :
45 : #endif
|