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_encoded_base.hpp> 14 : #include <boost/assert.hpp> 15 : #include <ostream> 16 : 17 : namespace boost { 18 : namespace urls { 19 : 20 1710 : segments_encoded_base:: 21 : iterator:: 22 : iterator( 23 1710 : detail::path_ref const& ref) noexcept 24 1710 : : it_(ref) 25 : { 26 1710 : } 27 : 28 1417 : segments_encoded_base:: 29 : iterator:: 30 : iterator( 31 : detail::path_ref const& ref, 32 1417 : int) noexcept 33 1417 : : it_(ref, 0) 34 : { 35 1417 : } 36 : 37 : //------------------------------------------------ 38 : // 39 : // segments_encoded_base 40 : // 41 : //------------------------------------------------ 42 : 43 1296 : segments_encoded_base:: 44 : segments_encoded_base( 45 1296 : detail::path_ref const& ref) noexcept 46 1296 : : ref_(ref) 47 : { 48 1296 : } 49 : 50 : //------------------------------------------------ 51 : // 52 : // Observers 53 : // 54 : //------------------------------------------------ 55 : 56 : pct_string_view 57 47 : segments_encoded_base:: 58 : buffer() const noexcept 59 : { 60 47 : return ref_.buffer(); 61 : } 62 : 63 : bool 64 373 : segments_encoded_base:: 65 : is_absolute() const noexcept 66 : { 67 373 : return ref_.buffer().starts_with('/'); 68 : } 69 : 70 : bool 71 582 : segments_encoded_base:: 72 : empty() const noexcept 73 : { 74 582 : return ref_.nseg() == 0; 75 : } 76 : 77 : std::size_t 78 413 : segments_encoded_base:: 79 : size() const noexcept 80 : { 81 413 : return ref_.nseg(); 82 : } 83 : 84 : auto 85 1710 : segments_encoded_base:: 86 : begin() const noexcept -> 87 : iterator 88 : { 89 1710 : return iterator(ref_); 90 : } 91 : 92 : auto 93 1417 : segments_encoded_base:: 94 : end() const noexcept -> 95 : iterator 96 : { 97 1417 : return iterator(ref_, 0); 98 : } 99 : 100 : //------------------------------------------------ 101 : 102 : std::ostream& 103 15 : operator<<( 104 : std::ostream& os, 105 : segments_encoded_base const& ps) 106 : { 107 15 : os << ps.buffer(); 108 15 : return os; 109 : } 110 : 111 : } // urls 112 : } // boost 113 :