Line | Branch | Exec | Source |
---|---|---|---|
1 | // | ||
2 | // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) | ||
3 | // Copyright (c) 2022 Alan de Freitas (alandefreitas@gmail.com) | ||
4 | // | ||
5 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | ||
6 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||
7 | // | ||
8 | // Official repository: https://github.com/boostorg/url | ||
9 | // | ||
10 | |||
11 | #ifndef BOOST_URL_IMPL_SEGMENTS_ENCODED_REF_IPP | ||
12 | #define BOOST_URL_IMPL_SEGMENTS_ENCODED_REF_IPP | ||
13 | |||
14 | #include <boost/url/detail/config.hpp> | ||
15 | #include <boost/url/segments_encoded_ref.hpp> | ||
16 | #include <boost/url/url.hpp> | ||
17 | #include <boost/url/detail/path.hpp> | ||
18 | |||
19 | namespace boost { | ||
20 | namespace urls { | ||
21 | |||
22 | //------------------------------------------------ | ||
23 | // | ||
24 | // Special Members | ||
25 | // | ||
26 | //------------------------------------------------ | ||
27 | |||
28 | 446 | segments_encoded_ref:: | |
29 | segments_encoded_ref( | ||
30 | 446 | url_base& u) noexcept | |
31 | : segments_encoded_base( | ||
32 | 892 | detail::path_ref(u.impl_)) | |
33 | 446 | , u_(&u) | |
34 | { | ||
35 | 446 | } | |
36 | |||
37 | 34 | segments_encoded_ref:: | |
38 | operator | ||
39 | segments_encoded_view() const noexcept | ||
40 | { | ||
41 | 34 | return segments_encoded_view(ref_); | |
42 | } | ||
43 | |||
44 | segments_encoded_ref& | ||
45 | 1 | segments_encoded_ref:: | |
46 | operator=( | ||
47 | segments_encoded_ref const& other) | ||
48 | { | ||
49 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | if (!ref_.alias_of(other.ref_)) |
50 | 1 | assign(other.begin(), other.end()); | |
51 | 1 | return *this; | |
52 | } | ||
53 | |||
54 | segments_encoded_ref& | ||
55 | 1 | segments_encoded_ref:: | |
56 | operator=( | ||
57 | segments_encoded_view const& other) | ||
58 | { | ||
59 | 1 | assign(other.begin(), other.end()); | |
60 | 1 | return *this; | |
61 | } | ||
62 | |||
63 | segments_encoded_ref& | ||
64 | 4 | segments_encoded_ref:: | |
65 | operator=(std::initializer_list< | ||
66 | pct_string_view> init) | ||
67 | { | ||
68 | 4 | assign(init.begin(), init.end()); | |
69 | 4 | return *this; | |
70 | } | ||
71 | |||
72 | //------------------------------------------------ | ||
73 | // | ||
74 | // Modifiers | ||
75 | // | ||
76 | //------------------------------------------------ | ||
77 | |||
78 | void | ||
79 | 6 | segments_encoded_ref:: | |
80 | assign( | ||
81 | std::initializer_list< | ||
82 | pct_string_view> init) | ||
83 | { | ||
84 | 6 | assign(init.begin(), init.end()); | |
85 | 6 | } | |
86 | |||
87 | auto | ||
88 | 50 | segments_encoded_ref:: | |
89 | insert( | ||
90 | iterator before, | ||
91 | pct_string_view s) -> | ||
92 | iterator | ||
93 | { | ||
94 | 100 | return u_->edit_segments( | |
95 | before.it_, | ||
96 | before.it_, | ||
97 |
1/2✓ Branch 2 taken 50 times.
✗ Branch 3 not taken.
|
50 | detail::segment_encoded_iter(s)); |
98 | } | ||
99 | |||
100 | auto | ||
101 | 14 | segments_encoded_ref:: | |
102 | insert( | ||
103 | iterator before, | ||
104 | std::initializer_list< | ||
105 | pct_string_view> init) -> | ||
106 | iterator | ||
107 | { | ||
108 | return insert( | ||
109 | before, | ||
110 | init.begin(), | ||
111 | 14 | init.end()); | |
112 | } | ||
113 | |||
114 | auto | ||
115 | 136 | segments_encoded_ref:: | |
116 | erase( | ||
117 | iterator first, | ||
118 | iterator last) noexcept -> | ||
119 | iterator | ||
120 | { | ||
121 | 136 | core::string_view s; | |
122 | 272 | return u_->edit_segments( | |
123 | first.it_, | ||
124 | last.it_, | ||
125 | 272 | detail::make_segments_encoded_iter( | |
126 | 136 | &s, &s)); | |
127 | } | ||
128 | |||
129 | auto | ||
130 | 10 | segments_encoded_ref:: | |
131 | replace( | ||
132 | iterator pos, | ||
133 | pct_string_view s) -> | ||
134 | iterator | ||
135 | { | ||
136 | 20 | return u_->edit_segments( | |
137 | pos.it_, | ||
138 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | std::next(pos).it_, |
139 |
1/2✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
20 | detail::segment_encoded_iter(s)); |
140 | } | ||
141 | |||
142 | auto | ||
143 | 12 | segments_encoded_ref:: | |
144 | replace( | ||
145 | iterator from, | ||
146 | iterator to, | ||
147 | pct_string_view s) -> | ||
148 | iterator | ||
149 | { | ||
150 | 24 | return u_->edit_segments( | |
151 | from.it_, | ||
152 | to.it_, | ||
153 |
1/2✓ Branch 2 taken 12 times.
✗ Branch 3 not taken.
|
12 | detail::segment_encoded_iter(s)); |
154 | } | ||
155 | |||
156 | auto | ||
157 | 6 | segments_encoded_ref:: | |
158 | replace( | ||
159 | iterator from, | ||
160 | iterator to, | ||
161 | std::initializer_list< | ||
162 | pct_string_view> init) -> | ||
163 | iterator | ||
164 | { | ||
165 | return replace( | ||
166 | from, | ||
167 | to, | ||
168 | init.begin(), | ||
169 | 6 | init.end()); | |
170 | } | ||
171 | |||
172 | } // urls | ||
173 | } // boost | ||
174 | |||
175 | #endif | ||
176 |