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

Generated by: LCOV version 1.15