LCOV - code coverage report
Current view: top level - libs/url/src - segments_base.cpp (source / functions) Hit Total Coverage
Test: coverage_filtered.info Lines: 31 31 100.0 %
Date: 2024-04-08 19:38:36 Functions: 11 11 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             : 
      12             : #include <boost/url/detail/config.hpp>
      13             : #include <boost/url/segments_base.hpp>
      14             : #include <ostream>
      15             : 
      16             : namespace boost {
      17             : namespace urls {
      18             : 
      19             : auto
      20         830 : segments_base::
      21             : iterator::
      22             : operator*() const ->
      23             :     reference
      24             : {
      25         830 :     encoding_opts opt;
      26         830 :     opt.space_as_plus = false;
      27         830 :     return it_.dereference().decode(opt);
      28             : }
      29             : 
      30         493 : segments_base::
      31             : iterator::
      32             : iterator(
      33         493 :     detail::path_ref const& ref) noexcept
      34         493 :     : it_(ref)
      35             : {
      36         493 : }
      37             : 
      38         385 : segments_base::
      39             : iterator::
      40             : iterator(
      41             :     detail::path_ref const& ref,
      42         385 :     int) noexcept
      43         385 :     : it_(ref, 0)
      44             : {
      45         385 : }
      46             : 
      47             : //------------------------------------------------
      48             : //
      49             : // segments_base
      50             : //
      51             : //------------------------------------------------
      52             : 
      53         353 : segments_base::
      54             : segments_base(
      55         353 :     detail::path_ref const& ref) noexcept
      56         353 :     : ref_(ref)
      57             : {
      58         353 : }
      59             : 
      60             : pct_string_view
      61          47 : segments_base::
      62             : buffer() const noexcept
      63             : {
      64          47 :     return ref_.buffer();
      65             : }
      66             : 
      67             : bool
      68          22 : segments_base::
      69             : is_absolute() const noexcept
      70             : {
      71          22 :     return ref_.buffer().starts_with('/');
      72             : }
      73             : 
      74             : bool
      75          81 : segments_base::
      76             : empty() const noexcept
      77             : {
      78          81 :     return ref_.nseg() == 0;
      79             : }
      80             : 
      81             : std::size_t
      82         270 : segments_base::
      83             : size() const noexcept
      84             : {
      85         270 :     return ref_.nseg();
      86             : }
      87             : 
      88             : auto
      89         493 : segments_base::
      90             : begin() const noexcept ->
      91             :     iterator
      92             : {
      93         493 :     return iterator(ref_);
      94             : }
      95             : 
      96             : auto
      97         385 : segments_base::
      98             : end() const noexcept ->
      99             :     iterator
     100             : {
     101         385 :     return iterator(ref_, 0);
     102             : }
     103             : 
     104             : //------------------------------------------------
     105             : 
     106             : std::ostream&
     107          15 : operator<<(
     108             :     std::ostream& os,
     109             :     segments_base const& ps)
     110             : {
     111          15 :     os << ps.buffer();
     112          15 :     return os;
     113             : }
     114             : 
     115             : } // urls
     116             : } // boost
     117             : 

Generated by: LCOV version 1.15