LCOV - code coverage report
Current view: top level - boost/url/impl - params_encoded_ref.hpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 25 25 100.0 %
Date: 2024-03-13 19:32:03 Functions: 16 16 100.0 %

          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/boostorg/url
       9             : //
      10             : 
      11             : #ifndef BOOST_URL_IMPL_PARAMS_ENCODED_REF_HPP
      12             : #define BOOST_URL_IMPL_PARAMS_ENCODED_REF_HPP
      13             : 
      14             : #include <boost/url/detail/except.hpp>
      15             : #include <boost/assert.hpp>
      16             : 
      17             : namespace boost {
      18             : namespace urls {
      19             : 
      20             : //------------------------------------------------
      21             : //
      22             : // Modifiers
      23             : //
      24             : //------------------------------------------------
      25             : 
      26             : inline
      27             : void
      28           3 : params_encoded_ref::
      29             : clear() noexcept
      30             : {
      31           3 :     u_->remove_query();
      32           3 : }
      33             : 
      34             : template<class FwdIt>
      35             : void
      36           7 : params_encoded_ref::
      37             : assign(FwdIt first, FwdIt last)
      38             : {
      39             : /*  If you get a compile error here, it
      40             :     means that the iterators you passed
      41             :     do not meet the requirements stated
      42             :     in the documentation.
      43             : */
      44             :     static_assert(
      45             :         std::is_convertible<
      46             :             typename std::iterator_traits<
      47             :                 FwdIt>::reference,
      48             :             param_view>::value,
      49             :         "Type requirements not met");
      50             : 
      51           7 :     assign(first, last,
      52             :         typename std::iterator_traits<
      53             :             FwdIt>::iterator_category{});
      54           7 : }
      55             : 
      56             : inline
      57             : auto
      58           4 : params_encoded_ref::
      59             : append(
      60             :     param_pct_view const& p) ->
      61             :         iterator
      62             : {
      63           4 :     return insert(end(), p);
      64             : }
      65             : 
      66             : inline
      67             : auto
      68           4 : params_encoded_ref::
      69             : append(
      70             :     std::initializer_list<
      71             :         param_pct_view> init) ->
      72             :     iterator
      73             : {
      74           4 :     return insert(end(), init);
      75             : }
      76             : 
      77             : template<class FwdIt>
      78             : auto
      79           6 : params_encoded_ref::
      80             : append(
      81             :     FwdIt first, FwdIt last) ->
      82             :     iterator
      83             : {
      84             : /*  If you get a compile error here, it
      85             :     means that the iterators you passed
      86             :     do not meet the requirements stated
      87             :     in the documentation.
      88             : */
      89             :     static_assert(
      90             :         std::is_convertible<
      91             :             typename std::iterator_traits<
      92             :                 FwdIt>::reference,
      93             :             param_view>::value,
      94             :         "Type requirements not met");
      95             : 
      96             :     return insert(
      97           6 :         end(), first, last);
      98             : }
      99             : 
     100             : template<class FwdIt>
     101             : auto
     102          19 : params_encoded_ref::
     103             : insert(
     104             :     iterator before,
     105             :     FwdIt first,
     106             :     FwdIt last) ->
     107             :         iterator
     108             : {
     109             : /*  If you get a compile error here, it
     110             :     means that the iterators you passed
     111             :     do not meet the requirements stated
     112             :     in the documentation.
     113             : */
     114             :     static_assert(
     115             :         std::is_convertible<
     116             :             typename std::iterator_traits<
     117             :                 FwdIt>::reference,
     118             :             param_view>::value,
     119             :         "Type requirements not met");
     120             : 
     121             :     return insert(
     122             :         before,
     123             :         first,
     124             :         last,
     125             :         typename std::iterator_traits<
     126          19 :             FwdIt>::iterator_category{});
     127             : }
     128             : 
     129             : template<class FwdIt>
     130             : auto
     131           3 : params_encoded_ref::
     132             : replace(
     133             :     iterator from,
     134             :     iterator to,
     135             :     FwdIt first,
     136             :     FwdIt last) ->
     137             :         iterator
     138             : {
     139             : /*  If you get a compile error here, it
     140             :     means that the iterators you passed
     141             :     do not meet the requirements stated
     142             :     in the documentation.
     143             : */
     144             :     static_assert(
     145             :         std::is_convertible<
     146             :             typename std::iterator_traits<
     147             :                 FwdIt>::reference,
     148             :             param_view>::value,
     149             :         "Type requirements not met");
     150             : 
     151           3 :     return u_->edit_params(
     152             :         from.it_, to.it_,
     153             :         detail::make_params_encoded_iter(
     154           3 :             first, last));
     155             : }
     156             : 
     157             : //------------------------------------------------
     158             : //
     159             : // implementation
     160             : //
     161             : //------------------------------------------------
     162             : 
     163             : template<class FwdIt>
     164             : void
     165           7 : params_encoded_ref::
     166             : assign(FwdIt first, FwdIt last,
     167             :     std::forward_iterator_tag)
     168             : {
     169          14 :     u_->edit_params(
     170           7 :         begin().it_,
     171          14 :         end().it_,
     172             :         detail::make_params_encoded_iter(
     173             :             first, last));
     174           7 : }
     175             : 
     176             : template<class FwdIt>
     177             : auto
     178          19 : params_encoded_ref::
     179             : insert(
     180             :     iterator before,
     181             :     FwdIt first,
     182             :     FwdIt last,
     183             :     std::forward_iterator_tag) ->
     184             :         iterator
     185             : {
     186          19 :     return u_->edit_params(
     187             :         before.it_,
     188             :         before.it_,
     189             :         detail::make_params_encoded_iter(
     190          19 :             first, last));
     191             : }
     192             : 
     193             : } // urls
     194             : } // boost
     195             : 
     196             : #endif

Generated by: LCOV version 1.15