LCOV - code coverage report
Current view: top level - libs/url/src - segments_encoded_ref.cpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 39 39 100.0 %
Date: 2024-02-29 20:02:55 Functions: 12 12 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_SEGMENTS_ENCODED_REF_IPP
      12             : #define BOOST_URL_IMPL_SEGMENTS_ENCODED_REF_IPP
      13             : 
      14             : #include <boost/url/detail/config.hpp>
      15             : #include <boost/url/segments_encoded_ref.hpp>
      16             : #include <boost/url/url.hpp>
      17             : #include "detail/path.hpp"
      18             : 
      19             : namespace boost {
      20             : namespace urls {
      21             : 
      22             : //------------------------------------------------
      23             : //
      24             : // Special Members
      25             : //
      26             : //------------------------------------------------
      27             : 
      28         462 : segments_encoded_ref::
      29             : segments_encoded_ref(
      30         462 :     url_base& u) noexcept
      31             :     : segments_encoded_base(
      32         924 :         detail::path_ref(u.impl_))
      33         462 :     , u_(&u)
      34             : {
      35         462 : }
      36             : 
      37          34 : segments_encoded_ref::
      38             : operator
      39             : segments_encoded_view() const noexcept
      40             : {
      41          34 :     return segments_encoded_view(ref_);
      42             : }
      43             : 
      44             : segments_encoded_ref&
      45           1 : segments_encoded_ref::
      46             : operator=(
      47             :     segments_encoded_ref const& other)
      48             : {
      49           1 :     if (!ref_.alias_of(other.ref_))
      50           1 :         assign(other.begin(), other.end());
      51           1 :     return *this;
      52             : }
      53             : 
      54             : segments_encoded_ref&
      55           1 : segments_encoded_ref::
      56             : operator=(
      57             :     segments_encoded_view const& other)
      58             : {
      59           1 :     assign(other.begin(), other.end());
      60           1 :     return *this;
      61             : }
      62             : 
      63             : segments_encoded_ref&
      64           4 : segments_encoded_ref::
      65             : operator=(std::initializer_list<
      66             :     pct_string_view> init)
      67             : {
      68           4 :     assign(init.begin(), init.end());
      69           4 :     return *this;
      70             : }
      71             : 
      72             : //------------------------------------------------
      73             : //
      74             : // Modifiers
      75             : //
      76             : //------------------------------------------------
      77             : 
      78             : void
      79           6 : segments_encoded_ref::
      80             : assign(
      81             :     std::initializer_list<
      82             :         pct_string_view> init)
      83             : {
      84           6 :     assign(init.begin(), init.end());
      85           6 : }
      86             : 
      87             : auto
      88          50 : segments_encoded_ref::
      89             : insert(
      90             :     iterator before,
      91             :     pct_string_view s) ->
      92             :         iterator
      93             : {
      94         100 :     return u_->edit_segments(
      95             :         before.it_,
      96             :         before.it_,
      97          50 :         detail::segment_encoded_iter(s));
      98             : }
      99             : 
     100             : auto
     101          14 : segments_encoded_ref::
     102             : insert(
     103             :     iterator before,
     104             :     std::initializer_list<
     105             :             pct_string_view> init) ->
     106             :         iterator
     107             : {
     108             :     return insert(
     109             :         before,
     110             :         init.begin(),
     111          14 :         init.end());
     112             : }
     113             : 
     114             : auto
     115         152 : segments_encoded_ref::
     116             : erase(
     117             :     iterator first,
     118             :     iterator last) noexcept ->
     119             :         iterator
     120             : {
     121         152 :     core::string_view s;
     122         304 :     return u_->edit_segments(
     123             :         first.it_,
     124             :         last.it_,
     125         304 :         detail::make_segments_encoded_iter(
     126         152 :             &s, &s));
     127             : }
     128             : 
     129             : auto
     130          10 : segments_encoded_ref::
     131             : replace(
     132             :     iterator pos,
     133             :     pct_string_view s) ->
     134             :         iterator
     135             : {
     136          20 :     return u_->edit_segments(
     137             :         pos.it_,
     138          10 :         std::next(pos).it_,
     139          20 :         detail::segment_encoded_iter(s));
     140             : }
     141             : 
     142             : auto
     143          12 : segments_encoded_ref::
     144             : replace(
     145             :     iterator from,
     146             :     iterator to,
     147             :     pct_string_view s) ->
     148             :         iterator
     149             : {
     150          24 :     return u_->edit_segments(
     151             :         from.it_,
     152             :         to.it_,
     153          12 :         detail::segment_encoded_iter(s));
     154             : }
     155             : 
     156             : auto
     157           6 : segments_encoded_ref::
     158             : replace(
     159             :     iterator from,
     160             :     iterator to,
     161             :     std::initializer_list<
     162             :         pct_string_view> init) ->
     163             :     iterator
     164             : {
     165             :     return replace(
     166             :         from,
     167             :         to,
     168             :         init.begin(),
     169           6 :         init.end());
     170             : }
     171             : 
     172             : } // urls
     173             : } // boost
     174             : 
     175             : #endif

Generated by: LCOV version 1.15