LCOV - code coverage report
Current view: top level - libs/url/src/segments_base.cpp (source / functions) Coverage Total Hit
Test: coverage_filtered.info Lines: 100.0 % 31 31
Test Date: 2024-08-20 16:05:53 Functions: 100.0 % 11 11

            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 2.1