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

            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_BASE_HPP
      12              : #define BOOST_URL_IMPL_PARAMS_ENCODED_BASE_HPP
      13              : 
      14              : #include <boost/url/detail/params_iter_impl.hpp>
      15              : 
      16              : namespace boost {
      17              : namespace urls {
      18              : 
      19              : #ifndef BOOST_URL_DOCS
      20              : class params_ref;
      21              : #endif
      22              : 
      23              : //------------------------------------------------
      24              : 
      25              : class params_encoded_base::iterator
      26              : {
      27              :     detail::params_iter_impl it_;
      28              : 
      29              :     friend class params_encoded_base;
      30              :     friend class params_encoded_ref;
      31              : 
      32              :     iterator(detail::query_ref const& ref) noexcept;
      33              :     iterator(detail::query_ref const& ref, int) noexcept;
      34          159 :     iterator(
      35              :         detail::params_iter_impl const& it)
      36          159 :         : it_(it)
      37              :     {
      38          159 :     }
      39              : 
      40              : public:
      41              :     using value_type =
      42              :         params_encoded_base::value_type;
      43              :     using reference =
      44              :         params_encoded_base::reference;
      45              :     using pointer = reference;
      46              :     using difference_type = std::ptrdiff_t;
      47              :     using iterator_category =
      48              :         std::bidirectional_iterator_tag;
      49              : 
      50            4 :     iterator() = default;
      51              :     iterator(iterator const&) = default;
      52              :     iterator& operator=(
      53              :         iterator const&) = default;
      54              : 
      55              :     iterator&
      56          696 :     operator++() noexcept
      57              :     {
      58          696 :         it_.increment();
      59          696 :         return *this;
      60              :     }
      61              : 
      62              :     iterator
      63          292 :     operator++(int) noexcept
      64              :     {
      65          292 :         auto tmp = *this;
      66          292 :         ++*this;
      67          292 :         return tmp;
      68              :     }
      69              : 
      70              :     iterator&
      71          580 :     operator--() noexcept
      72              :     {
      73          580 :         it_.decrement();
      74          580 :         return *this;
      75              :     }
      76              : 
      77              :     iterator
      78          290 :     operator--(int) noexcept
      79              :     {
      80          290 :         auto tmp = *this;
      81          290 :         --*this;
      82          290 :         return tmp;
      83              :     }
      84              : 
      85              :     reference
      86          622 :     operator*() const
      87              :     {
      88          622 :         return it_.dereference();
      89              :     }
      90              : 
      91              :     pointer
      92           21 :     operator->() const
      93              :     {
      94           21 :         return it_.dereference();
      95              :     }
      96              : 
      97              :     friend
      98              :     bool
      99          617 :     operator==(
     100              :         iterator const& it0,
     101              :         iterator const& it1) noexcept
     102              :     {
     103          617 :         return it0.it_.equal(it1.it_);
     104              :     }
     105              : 
     106              :     friend
     107              :     bool
     108          111 :     operator!=(
     109              :         iterator const& it0,
     110              :         iterator const& it1) noexcept
     111              :     {
     112          111 :         return ! it0.it_.equal(it1.it_);
     113              :     }
     114              : };
     115              : 
     116              : //------------------------------------------------
     117              : //
     118              : // Observers
     119              : //
     120              : //------------------------------------------------
     121              : 
     122              : inline
     123              : bool
     124           28 : params_encoded_base::
     125              : contains(
     126              :     pct_string_view key,
     127              :     ignore_case_param ic) const noexcept
     128              : {
     129           28 :     return find_impl(
     130           56 :         begin().it_, key, ic) != end();
     131              : }
     132              : 
     133              : inline
     134              : auto
     135           38 : params_encoded_base::
     136              : find(
     137              :     pct_string_view key,
     138              :     ignore_case_param ic) const noexcept ->
     139              :         iterator
     140              : {
     141           38 :     return find_impl(
     142           76 :         begin().it_, key, ic);
     143              : }
     144              : 
     145              : inline
     146              : auto
     147           32 : params_encoded_base::
     148              : find(
     149              :     iterator it,
     150              :     pct_string_view key,
     151              :     ignore_case_param ic) const noexcept ->
     152              :         iterator
     153              : {
     154           64 :     return find_impl(
     155           32 :         it.it_, key, ic);
     156              : }
     157              : 
     158              : inline
     159              : auto
     160            4 : params_encoded_base::
     161              : find_last(
     162              :     pct_string_view key,
     163              :     ignore_case_param ic) const noexcept ->
     164              :         iterator
     165              : {
     166            4 :     return find_last_impl(
     167            8 :         end().it_, key, ic);
     168              : }
     169              : 
     170              : inline
     171              : auto
     172            9 : params_encoded_base::
     173              : find_last(
     174              :     iterator it,
     175              :     pct_string_view key,
     176              :     ignore_case_param ic) const noexcept ->
     177              :         iterator
     178              : {
     179           18 :     return find_last_impl(
     180            9 :         it.it_, key, ic);
     181              : }
     182              : 
     183              : } // urls
     184              : } // boost
     185              : 
     186              : #endif
        

Generated by: LCOV version 2.1