LCOV - code coverage report
Current view: top level - /jenkins/workspace/boost-root/libs/url/src - parse_query.cpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 13 13
Test Date: 2026-02-25 21:00:01 Functions: 100.0 % 1 1

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com)
       3                 : // Copyright (c) 2022 Alan de Freitas (alandefreitas@gmail.com)
       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/url
       9                 : //
      10                 : 
      11                 : 
      12                 : #include <boost/url/detail/config.hpp>
      13                 : #include <boost/url/parse_query.hpp>
      14                 : #include <boost/url/rfc/query_rule.hpp>
      15                 : #include <boost/url/grammar/parse.hpp>
      16                 : 
      17                 : #include <boost/url/error.hpp>
      18                 : 
      19                 : namespace boost {
      20                 : namespace urls {
      21                 : 
      22                 : system::result<params_encoded_view>
      23 HIT         138 : parse_query(core::string_view s) noexcept
      24                 : {
      25                 :     // Handle empty strings differently.
      26                 :     // We produce {}, versus empty but
      27                 :     // present query in URL (e.g. "http:?")
      28                 :     // which produces {{"", none}}.
      29             138 :     if(s.empty())
      30                 :     {
      31                 :         // default-constructed string_view can return a null data pointer;
      32                 :         // query_ref expects a valid pointer even when the buffer is empty.
      33               9 :         auto const* data = s.data();
      34               9 :         core::string_view empty(data ? data : "", 0);
      35               9 :         return params_encoded_view(
      36              18 :             detail::query_ref(
      37               9 :                 empty, 0, 0));
      38                 :     }
      39             129 :     auto rv = grammar::parse(s, query_rule);
      40             129 :     if(! rv)
      41              12 :         return rv.error();
      42             117 :     return params_encoded_view(
      43             234 :         detail::query_ref(
      44             234 :             s, s.size(), rv->size()));
      45                 : }
      46                 : 
      47                 : } // urls
      48                 : } // boost
        

Generated by: LCOV version 2.3