LCOV - code coverage report
Current view: top level - boost/http_proto - fields.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 11 11 100.0 %
Date: 2024-03-18 23:12:48 Functions: 4 4 100.0 %

          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             : #ifndef BOOST_HTTP_PROTO_FIELDS_HPP
      12             : #define BOOST_HTTP_PROTO_FIELDS_HPP
      13             : 
      14             : #include <boost/http_proto/detail/config.hpp>
      15             : #include <boost/http_proto/fields_base.hpp>
      16             : #include <boost/http_proto/fields_view.hpp>
      17             : #include <boost/core/detail/string_view.hpp>
      18             : #include <initializer_list>
      19             : 
      20             : namespace boost {
      21             : namespace http_proto {
      22             : 
      23             : /** A modifiable container of HTTP fields
      24             : */
      25             : class fields final
      26             :     : public fields_base
      27             : {
      28             : public:
      29             : 
      30             :     //--------------------------------------------
      31             :     //
      32             :     // Special Members
      33             :     //
      34             :     //--------------------------------------------
      35             : 
      36             :     /** Constructor
      37             : 
      38             :         Default-constructed fields have no
      39             :         name-value pairs.
      40             :     */
      41             :     BOOST_HTTP_PROTO_DECL
      42             :     fields() noexcept;
      43             : 
      44             :     /** Constructor
      45             :     */
      46             :     BOOST_HTTP_PROTO_DECL
      47             :     explicit
      48             :     fields(
      49             :         core::string_view s);
      50             : 
      51             :     /** Constructor
      52             :     */
      53             :     BOOST_HTTP_PROTO_DECL
      54             :     explicit
      55             :     fields(
      56             :         std::size_t initial_size);
      57             : 
      58             :     /** Constructor
      59             :     */
      60             :     BOOST_HTTP_PROTO_DECL
      61             :     explicit
      62             :     fields(
      63             :         std::size_t initial_size,
      64             :         std::size_t max_capacity);
      65             : 
      66             :     /** Constructor
      67             :     */
      68             :     BOOST_HTTP_PROTO_DECL
      69             :     fields(fields&& other) noexcept;
      70             : 
      71             :     /** Constructor
      72             :     */
      73             :     BOOST_HTTP_PROTO_DECL
      74             :     fields(fields const& other);
      75             : 
      76             :     /** Constructor
      77             :     */
      78             :     BOOST_HTTP_PROTO_DECL
      79             :     fields(fields_view const& other);
      80             : 
      81             :     /** Assignment
      82             :     */
      83             :     BOOST_HTTP_PROTO_DECL
      84             :     fields&
      85             :     operator=(fields&& f) noexcept;
      86             : 
      87             :     /** Assignment
      88             :     */
      89             :     fields&
      90           5 :     operator=(fields const& f) noexcept
      91             :     {
      92           5 :         copy_impl(*f.ph_);
      93           5 :         return *this;
      94             :     }
      95             : 
      96             :     /** Assignment
      97             :     */
      98             :     fields&
      99           4 :     operator=(fields_view const& f)
     100             :     {
     101           4 :         copy_impl(*f.ph_);
     102           4 :         return *this;
     103             :     }
     104             : 
     105             :     /** Conversion
     106             :     */
     107           4 :     operator fields_view() const noexcept
     108             :     {
     109           4 :         return fields_view(ph_);
     110             :     }
     111             : 
     112             :     //--------------------------------------------
     113             :     //
     114             :     // Modifiers
     115             :     //
     116             :     //--------------------------------------------
     117             : 
     118             :     /** Swap this with another instance
     119             :     */
     120             :     void
     121          10 :     swap(fields& other) noexcept
     122             :     {
     123          10 :         h_.swap(other.h_);
     124          10 :     }
     125             : 
     126             :     /** Swap two instances
     127             :     */
     128             :     // hidden friend
     129             :     friend
     130             :     void
     131             :     swap(
     132             :         fields& t0,
     133             :         fields& t1) noexcept
     134             :     {
     135             :         t0.swap(t1);
     136             :     }
     137             : };
     138             : 
     139             : } // http_proto
     140             : } // boost
     141             : 
     142             : #endif

Generated by: LCOV version 1.15