LCOV - code coverage report
Current view: top level - src/rfc - combine_field_values.cpp (source / functions) Coverage Total Hit Missed
Test: coverage_remapped.info Lines: 92.6 % 27 25 2
Test Date: 2026-06-13 19:44:58 Functions: 100.0 % 1 1

           TLA  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
       8                 : //
       9                 : 
      10                 : #include <boost/http/rfc/combine_field_values.hpp>
      11                 : 
      12                 : namespace boost {
      13                 : namespace http {
      14                 : 
      15                 : core::string_view
      16 HIT           8 : combine_field_values(
      17                 :     fields_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 MIS           0 :             continue;
      26 HIT          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 MIS           0 :                 temp.acquire();
      35 HIT           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
      60                 : } // boost
        

Generated by: LCOV version 2.3