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> // for fields_base 13 : #include <boost/http_proto/fields_view.hpp> // for fields_view 14 : #include <boost/http_proto/fields_view_base.hpp> // for fields_view_base 15 : #include <boost/core/detail/string_view.hpp> // for string_view 16 : #include <utility> // for move 17 : 18 : namespace boost { 19 : namespace http_proto { 20 : 21 22 : fields:: 22 22 : fields() noexcept 23 : : fields_view_base( 24 22 : &this->fields_base::h_) 25 : , fields_base( 26 22 : detail::kind::fields) 27 : { 28 22 : } 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 initial_size) 43 : : fields( 44 4 : initial_size, initial_size) 45 : { 46 4 : } 47 : 48 9 : fields:: 49 : fields( 50 : std::size_t initial_size, 51 9 : std::size_t max_size) 52 9 : : fields_view_base(&this->fields_base::h_) 53 : , fields_base( 54 9 : detail::kind::fields, initial_size, max_size) 55 : { 56 9 : } 57 : 58 6 : fields:: 59 : fields( 60 6 : fields&& other) noexcept 61 : : fields_view_base( 62 6 : &this->fields_base::h_) 63 6 : , fields_base(other.h_.kind) 64 : { 65 6 : swap(other); 66 6 : } 67 : 68 2 : fields:: 69 : fields( 70 2 : fields const& other) 71 : : fields_view_base( 72 2 : &this->fields_base::h_) 73 2 : , fields_base(*other.ph_) 74 : { 75 2 : } 76 : 77 2 : fields:: 78 : fields( 79 2 : fields_view const& other) 80 : : fields_view_base( 81 2 : &this->fields_base::h_) 82 2 : , fields_base(*other.ph_) 83 : { 84 2 : } 85 : 86 : fields& 87 4 : fields:: 88 : operator=( 89 : fields&& other) noexcept 90 : { 91 4 : fields tmp(std::move(other)); 92 4 : tmp.swap(*this); 93 4 : return *this; 94 : } 95 : 96 : } // http_proto 97 : } // boost