Line data Source code
1 : //
2 : // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.com)
3 : // Copyright (c) 2024 Christian Mazakas
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/cppalliance/http_proto
9 : //
10 :
11 : #include <boost/http_proto/fields.hpp>
12 : #include <boost/http_proto/fields_base.hpp>
13 : #include <boost/http_proto/fields_view.hpp>
14 : #include <boost/http_proto/fields_view_base.hpp>
15 : #include <boost/core/detail/string_view.hpp>
16 : #include <utility>
17 :
18 : namespace boost {
19 : namespace http_proto {
20 :
21 23 : fields::
22 23 : fields() noexcept
23 : : fields_view_base(
24 23 : &this->fields_base::h_)
25 : , fields_base(
26 23 : detail::kind::fields)
27 : {
28 23 : }
29 :
30 241 : fields::
31 : fields(
32 241 : core::string_view s)
33 : : fields_view_base(
34 241 : &this->fields_base::h_)
35 : , fields_base(
36 241 : detail::kind::fields, s)
37 : {
38 240 : }
39 :
40 4 : fields::
41 : fields(
42 4 : std::size_t storage_size)
43 4 : : fields_view_base(&this->fields_base::h_)
44 : , fields_base(
45 4 : detail::kind::fields, storage_size)
46 : {
47 4 : }
48 :
49 10 : fields::
50 : fields(
51 : std::size_t storage_size,
52 10 : std::size_t max_storage_size)
53 10 : : fields_view_base(&this->fields_base::h_)
54 : , fields_base(
55 : detail::kind::fields,
56 10 : storage_size, max_storage_size)
57 : {
58 6 : }
59 :
60 6 : fields::
61 : fields(
62 6 : fields&& other) noexcept
63 : : fields_view_base(
64 6 : &this->fields_base::h_)
65 6 : , fields_base(other.h_.kind)
66 : {
67 6 : swap(other);
68 6 : }
69 :
70 2 : fields::
71 : fields(
72 2 : fields const& other)
73 : : fields_view_base(
74 2 : &this->fields_base::h_)
75 2 : , fields_base(*other.ph_)
76 : {
77 2 : }
78 :
79 2 : fields::
80 : fields(
81 2 : fields_view const& other)
82 : : fields_view_base(
83 2 : &this->fields_base::h_)
84 2 : , fields_base(*other.ph_)
85 : {
86 2 : }
87 :
88 : fields&
89 4 : fields::
90 : operator=(
91 : fields&& other) noexcept
92 : {
93 4 : fields tmp(std::move(other));
94 4 : tmp.swap(*this);
95 8 : return *this;
96 4 : }
97 :
98 : } // http_proto
99 : } // boost
|