LCOV - code coverage report
Current view: top level - libs/url/src/parse_query.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 13 13
Test Date: 2025-11-10 19:10:44 Functions: 100.0 % 1 1

            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          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.1