Line data Source code
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 :
12 : #include <boost/url/detail/config.hpp>
13 : #include <boost/url/url_view.hpp>
14 : #include <boost/url/parse.hpp>
15 : #include <boost/url/detail/except.hpp>
16 :
17 : namespace boost {
18 : namespace urls {
19 :
20 : namespace detail {
21 :
22 : url_view
23 3540 : url_impl::
24 : construct() const noexcept
25 : {
26 3540 : return url_view(*this);
27 : }
28 :
29 : } // detail
30 :
31 : //------------------------------------------------
32 :
33 31 : url_view::
34 : url_view() noexcept = default;
35 :
36 268 : url_view::
37 268 : url_view(core::string_view s)
38 268 : : url_view(parse_uri_reference(s
39 268 : ).value(BOOST_URL_POS))
40 : {
41 267 : }
42 :
43 15771 : url_view::
44 : url_view(
45 15771 : url_view_base const& u) noexcept
46 15771 : : url_view_base(u.impl_)
47 : {
48 15771 : if (u.pi_->from_ == from::url)
49 : {
50 145 : pi_ = u.pi_;
51 : }
52 : else
53 : {
54 15626 : impl_ = u.impl_;
55 15626 : pi_ = &impl_;
56 : }
57 15771 : }
58 :
59 : url_view&
60 13 : url_view::
61 : operator=(
62 : url_view_base const& u) noexcept
63 : {
64 13 : if (pi_ == u.pi_)
65 1 : return *this;
66 :
67 12 : if (u.pi_->from_ == from::url)
68 : {
69 0 : pi_ = u.pi_;
70 : }
71 : else
72 : {
73 12 : impl_ = u.impl_;
74 12 : pi_ = &impl_;
75 : }
76 12 : return *this;
77 : }
78 :
79 : } // urls
80 : } // boost
81 :
|