LCOV - code coverage report
Current view: top level - http_proto - fields.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 11 11 100.0 %
Date: 2023-01-15 07:18:31 Functions: 4 4 100.0 %

          Line data    Source code
       1             : //
       2             : // Copyright (c) 2021 Vinnie Falco (vinnie dot falco at gmail dot com)
       3             : //
       4             : // Distributed under the Boost Software License, Version 1.0. (See accompanying
       5             : // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       6             : //
       7             : // Official repository: https://github.com/CPPAlliance/http_proto
       8             : //
       9             : 
      10             : #ifndef BOOST_HTTP_PROTO_FIELDS_HPP
      11             : #define BOOST_HTTP_PROTO_FIELDS_HPP
      12             : 
      13             : #include <boost/http_proto/detail/config.hpp>
      14             : #include <boost/http_proto/fields_base.hpp>
      15             : #include <boost/http_proto/fields_view.hpp>
      16             : #include <initializer_list>
      17             : 
      18             : namespace boost {
      19             : namespace http_proto {
      20             : 
      21             : /** A modifiable container of HTTP fields
      22             : */
      23             : class BOOST_SYMBOL_VISIBLE
      24             :     fields
      25             :     : public fields_base
      26             : {
      27             : public:
      28             : 
      29             :     //--------------------------------------------
      30             :     //
      31             :     // Special Members
      32             :     //
      33             :     //--------------------------------------------
      34             : 
      35             :     /** Constructor
      36             : 
      37             :         Default-constructed fields have no
      38             :         name-value pairs.
      39             :     */
      40             :     BOOST_HTTP_PROTO_DECL
      41             :     fields() noexcept;
      42             : 
      43             :     /** Constructor
      44             :     */
      45             :     BOOST_HTTP_PROTO_DECL
      46             :     fields(fields&& other) noexcept;
      47             : 
      48             :     /** Constructor
      49             :     */
      50             :     BOOST_HTTP_PROTO_DECL
      51             :     fields(fields const& other);
      52             : 
      53             :     /** Constructor
      54             :     */
      55             :     BOOST_HTTP_PROTO_DECL
      56             :     fields(fields_view const& other);
      57             : 
      58             :     /** Assignment
      59             :     */
      60             :     BOOST_HTTP_PROTO_DECL
      61             :     fields&
      62             :     operator=(fields&& f) noexcept;
      63             : 
      64             :     /** Assignment
      65             :     */
      66             :     fields&
      67           3 :     operator=(fields const& f) noexcept
      68             :     {
      69           3 :         copy_impl(*f.ph_);
      70           3 :         return *this;
      71             :     }
      72             : 
      73             :     /** Assignment
      74             :     */
      75             :     fields&
      76           4 :     operator=(fields_view const& f)
      77             :     {
      78           4 :         copy_impl(*f.ph_);
      79           4 :         return *this;
      80             :     }
      81             : 
      82             :     /** Conversion
      83             :     */
      84           4 :     operator fields_view() const noexcept
      85             :     {
      86           4 :         return fields_view(ph_);
      87             :     }
      88             : 
      89             :     //--------------------------------------------
      90             :     //
      91             :     // Modifiers
      92             :     //
      93             :     //--------------------------------------------
      94             : 
      95             :     /** Swap this with another instance
      96             :     */
      97             :     void
      98           8 :     swap(fields& other) noexcept
      99             :     {
     100           8 :         h_.swap(other.h_);
     101           8 :     }
     102             : 
     103             :     /** Swap two instances
     104             :     */
     105             :     // hidden friend
     106             :     friend
     107             :     void
     108             :     swap(
     109             :         fields& t0,
     110             :         fields& t1) noexcept
     111             :     {
     112             :         t0.swap(t1);
     113             :     }
     114             : };
     115             : 
     116             : } // http_proto
     117             : } // boost
     118             : 
     119             : #endif

Generated by: LCOV version 1.15