LCOV - code coverage report
Current view: top level - libs/http_proto/src/rfc/combine_field_values.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 92.6 % 27 25
Test Date: 2024-09-13 19:44:06 Functions: 100.0 % 1 1

            Line data    Source code
       1              : //
       2              : // Copyright (c) 2021 Vinnie Falco (vinnie.falco@gmail.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              : #include <boost/http_proto/rfc/combine_field_values.hpp>
      11              : 
      12              : namespace boost {
      13              : namespace http_proto {
      14              : 
      15              : core::string_view
      16            8 : combine_field_values(
      17              :     fields_view_base::subrange const& vr,
      18              :     grammar::recycled_ptr<std::string>& temp)
      19              : {
      20            8 :     core::string_view result;
      21            8 :     bool acquired = false;
      22           19 :     for(auto s : vr)
      23              :     {
      24           11 :         if(s.empty())
      25            0 :             continue;
      26           11 :         if(result.empty())
      27              :         {
      28            7 :             result = s;
      29              :         }
      30            4 :         else if(! acquired)
      31              :         {
      32            3 :             acquired = true;
      33            3 :             if(temp.empty())
      34            0 :                 temp.acquire();
      35            3 :             temp->clear();
      36            3 :             temp->reserve(
      37            3 :                 result.size() +
      38            3 :                 1 + s.size());
      39            3 :             *temp = result;
      40            3 :             temp->push_back(',');
      41            3 :             temp->append(
      42              :                 s.data(), s.size());
      43            3 :             result = *temp;
      44              :         }
      45              :         else
      46              :         {
      47            1 :             temp->reserve(
      48            1 :                 temp->size() +
      49            1 :                 1 + s.size());
      50            1 :             temp->push_back(',');
      51            1 :             temp->append(
      52              :                 s.data(), s.size());
      53            1 :             result = *temp;
      54              :         }
      55              :     }
      56            8 :     return result;
      57              : }
      58              : 
      59              : } // http_proto
      60              : } // boost
        

Generated by: LCOV version 2.1