LCOV - code coverage report
Current view: top level - url/rfc/impl - uri_reference_rule.hpp (source / functions) Coverage Total Hit
Test: coverage_remapped.info Lines: 100.0 % 10 10
Test Date: 2026-02-25 21:00:01 Functions: 100.0 % 1 1

           TLA  Line data    Source code
       1                 : //
       2                 : // Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
       3                 : // Copyright (c) 2023 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/boostorg/url
       9                 : //
      10                 : 
      11                 : #ifndef BOOST_URL_RFC_IMPL_URI_REFERENCE_RULE_HPP
      12                 : #define BOOST_URL_RFC_IMPL_URI_REFERENCE_RULE_HPP
      13                 : 
      14                 : #include <boost/url/detail/config.hpp>
      15                 : #include <boost/url/url_view.hpp>
      16                 : #include <boost/url/rfc/uri_rule.hpp>
      17                 : #include <boost/url/rfc/relative_ref_rule.hpp>
      18                 : #include <boost/url/grammar/error.hpp>
      19                 : #include <boost/url/grammar/parse.hpp>
      20                 : 
      21                 : namespace boost {
      22                 : namespace urls {
      23                 : 
      24                 : BOOST_URL_CXX20_CONSTEXPR_OR_INLINE
      25                 : auto
      26 HIT        2652 : implementation_defined::uri_reference_rule_t::
      27                 : parse(
      28                 :     char const*& it,
      29                 :     char const* const end
      30                 :         ) const noexcept ->
      31                 :     system::result<value_type>
      32                 : {
      33                 :     // Try URI first, then relative-ref.
      34                 :     // Use separate variables for each parse attempt
      35                 :     // to avoid variant2 cross-alternative reassignment,
      36                 :     // which uses placement new (not constexpr before C++26).
      37            2652 :     auto const it0 = it;
      38            2652 :     auto rv1 = grammar::parse(
      39                 :         it, end, uri_rule);
      40            2652 :     if(rv1)
      41            1435 :         return *rv1;
      42            1217 :     it = it0;
      43            1217 :     auto rv2 = grammar::parse(
      44                 :         it, end, relative_ref_rule);
      45            1217 :     if(rv2)
      46            1177 :         return *rv2;
      47              40 :     BOOST_URL_CONSTEXPR_RETURN_EC(
      48                 :         grammar::error::mismatch);
      49                 : }
      50                 : 
      51                 : } // urls
      52                 : } // boost
      53                 : 
      54                 : 
      55                 : #endif
        

Generated by: LCOV version 2.3