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 -
url_impl::
 
24 -
construct() const noexcept
 
25 -
{
 
26 -
    return url_view(*this);
 
27 -
}
 
28 -

 
29 -
} // detail
 
30 -

 
31 -
//------------------------------------------------
 
32 -

 
33 -
url_view::
 
34 -
url_view() noexcept = default;
 
35 -

 
36 -
url_view::
 
37 -
url_view(core::string_view s)
 
38 -
    : url_view(parse_uri_reference(s
 
39 -
        ).value(BOOST_URL_POS))
 
40 -
{
 
41 -
}
 
42 -

 
43 -
url_view::
 
44 -
url_view(
 
45 -
    url_view_base const& u) noexcept
 
46 -
    : url_view_base(u.impl_)
 
47 -
{
 
48 -
    if (u.pi_->from_ == from::url)
 
49 -
    {
 
50 -
        pi_ = u.pi_;
 
51 -
    }
 
52 -
    else
 
53 -
    {
 
54 -
        impl_ = u.impl_;
 
55 -
        pi_ = &impl_;
 
56 -
    }
 
57 -
}
 
58 -

 
59 -
url_view&
 
60 -
url_view::
 
61 -
operator=(
 
62 -
    url_view_base const& u) noexcept
 
63 -
{
 
64 -
    if (pi_ == u.pi_)
 
65 -
        return *this;
 
66 -

 
67 -
    if (u.pi_->from_ == from::url)
 
68 -
    {
 
69 -
        pi_ = u.pi_;
 
70 -
    }
 
71 -
    else
 
72 -
    {
 
73 -
        impl_ = u.impl_;
 
74 -
        pi_ = &impl_;
 
75 -
    }
 
76 -
    return *this;
 
77 -
}
 
78 -

 
79 -
} // urls
 
80 -
} // boost
 
81 -