GCC Code Coverage Report


Directory: libs/url/
File: libs/url/src/rfc/ipv4_address_rule.cpp
Date: 2024-03-15 21:27:27
Exec Total Coverage
Lines: 13 13 100.0%
Functions: 1 1 100.0%
Branches: 2 2 100.0%

Line Branch Exec Source
1 //
2 // Copyright (c) 2022 Vinnie Falco (vinnie.falco@gmail.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/url
8 //
9
10
11 #include <boost/url/detail/config.hpp>
12 #include <boost/url/rfc/ipv4_address_rule.hpp>
13 #include <boost/url/grammar/delim_rule.hpp>
14 #include <boost/url/grammar/dec_octet_rule.hpp>
15 #include <boost/url/grammar/parse.hpp>
16 #include <boost/url/grammar/tuple_rule.hpp>
17
18 namespace boost {
19 namespace urls {
20
21 auto
22 1840 ipv4_address_rule_t::
23 parse(
24 char const*& it,
25 char const* end
26 ) const noexcept ->
27 system::result<value_type>
28 {
29 using namespace grammar;
30 auto rv = grammar::parse(
31 1840 it, end, tuple_rule(
32 1840 dec_octet_rule, squelch(delim_rule('.')),
33 1840 dec_octet_rule, squelch(delim_rule('.')),
34 1840 dec_octet_rule, squelch(delim_rule('.')),
35 1840 dec_octet_rule));
36
2/2
✓ Branch 1 taken 1727 times.
✓ Branch 2 taken 113 times.
1840 if(! rv)
37 1727 return rv.error();
38 std::array<unsigned char, 4> v;
39 113 v[0] = std::get<0>(*rv);
40 113 v[1] = std::get<1>(*rv);
41 113 v[2] = std::get<2>(*rv);
42 113 v[3] = std::get<3>(*rv);
43 113 return ipv4_address(v);
44 }
45
46 } // urls
47 } // boost
48
49