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

            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            6 :     return insert(
      97            3 :         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           34 :     return insert(
     122              :         before,
     123              :         first,
     124              :         last,
     125              :         typename std::iterator_traits<
     126           30 :             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            5 :     return u_->edit_params(
     152              :         from.it_, to.it_,
     153              :         detail::make_params_encoded_iter(
     154            4 :             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           34 :     return u_->edit_params(
     187              :         before.it_,
     188              :         before.it_,
     189              :         detail::make_params_encoded_iter(
     190           30 :             first, last));
     191              : }
     192              : 
     193              : } // urls
     194              : } // boost
     195              : 
     196              : #endif
        

Generated by: LCOV version 2.1