GCC Code Coverage Report


Directory: libs/url/
File: libs/url/src/static_url.cpp
Date: 2024-08-20 16:05:55
Exec Total Coverage
Lines: 22 22 100.0%
Functions: 4 4 100.0%
Branches: 7 8 87.5%

Line Branch Exec Source
1 //
2 // Copyright (c) 2019 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/parse.hpp>
13 #include <boost/url/static_url.hpp>
14 #include <boost/url/url_view.hpp>
15 #include <boost/url/detail/except.hpp>
16 #include <boost/assert.hpp>
17
18 namespace boost {
19 namespace urls {
20
21 33 static_url_base::
22 static_url_base(
23 char* buf,
24 33 std::size_t cap) noexcept
25 {
26 33 s_ = buf;
27 33 cap_ = cap;
28 33 s_[0] = '\0';
29 33 impl_.cs_ = s_;
30 33 }
31
32 18 static_url_base::
33 static_url_base(
34 char* buf,
35 std::size_t cap,
36 18 core::string_view s)
37 18 : static_url_base(buf, cap)
38 {
39
3/4
✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 1 times.
37 copy(parse_uri_reference(s
40
2/2
✓ Branch 2 taken 17 times.
✓ Branch 3 taken 1 times.
19 ).value(BOOST_URL_POS));
41 18 }
42
43 void
44 1 static_url_base::
45 clear_impl() noexcept
46 {
47 1 impl_ = {from::url};
48 1 s_[0] = '\0';
49 1 impl_.cs_ = s_;
50 1 }
51
52 void
53 41 static_url_base::
54 reserve_impl(
55 std::size_t n,
56 op_t&)
57 {
58
2/2
✓ Branch 0 taken 37 times.
✓ Branch 1 taken 4 times.
41 if(n <= cap_)
59 37 return;
60 4 detail::throw_length_error();
61 }
62
63 //----------------------------------------------------------
64
65 // LCOV_EXCL_START
66 void
67 static_url_base::
68 cleanup(op_t&)
69 {
70 /*
71 * The cleanup function is a blank
72 * override as it's unreachable
73 * for static_url_base.
74 *
75 * `u.cleanup()` is called by `op_t` when
76 * the `op_t::old` string is being replaced.
77 * This never happens for `static_url_base`
78 * because it always uses the same buffer.
79 *
80 * `url::reserve_impl` is the only function
81 * that sets the `op_t::old` string but
82 * `static_url_base::reserve_impl` does
83 * not touch `op_t::old`.
84 */
85 }
86 // LCOV_EXCL_STOP
87
88 } // urls
89 } // boost
90
91