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