4 #ifndef XGBOOST_STRING_VIEW_H_
5 #define XGBOOST_STRING_VIEW_H_
6 #include <xgboost/logging.h>
18 using Traits = std::char_traits<CharT>;
19 CharT
const* str_{
nullptr};
34 : str_{str}, size_{str == nullptr ? 0ul : Traits::length(str)} {}
36 CharT
const&
operator[](
size_t p)
const {
return str_[p]; }
37 CharT
const&
at(
size_t p)
const {
41 constexpr std::size_t
size()
const {
return size_; }
42 constexpr
bool empty()
const {
return size() == 0; }
45 size_t len = std::min(n, size_ - beg);
46 return {str_ + beg, len};
48 CharT
const*
c_str()
const {
return str_; }
50 constexpr CharT
const*
cbegin()
const {
return str_; }
51 constexpr CharT
const*
cend()
const {
return str_ +
size(); }
52 constexpr CharT
const*
begin()
const {
return str_; }
53 constexpr CharT
const*
end()
const {
return str_ +
size(); }
span class implementation, based on ISO++20 span<T>. The interface should be the same.
Definition: span.h:424
namespace of xgboost
Definition: base.h:90
bool operator!=(IntrusivePtr< T > const &x, IntrusivePtr< U > const &y) noexcept
Definition: intrusive_ptr.h:155
bool operator==(IntrusivePtr< T > const &x, IntrusivePtr< U > const &y) noexcept
Definition: intrusive_ptr.h:150
bool operator<(IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
Definition: intrusive_ptr.h:180
std::basic_ostream< E, T > & operator<<(std::basic_ostream< E, T > &os, IntrusivePtr< Y > const &p)
Definition: intrusive_ptr.h:200
Definition: string_view.h:15
const_reverse_iterator rbegin() const noexcept
Definition: string_view.h:55
StringView(std::string const &str)
Definition: string_view.h:32
const CharT * iterator
Definition: string_view.h:24
constexpr bool empty() const
Definition: string_view.h:42
CharT value_type
Definition: string_view.h:23
constexpr CharT const * end() const
Definition: string_view.h:53
CharT const * c_str() const
Definition: string_view.h:48
constexpr StringView()=default
reverse_iterator const_reverse_iterator
Definition: string_view.h:27
const_reverse_iterator rend() const noexcept
Definition: string_view.h:61
StringView substr(size_t beg, size_t n) const
Definition: string_view.h:43
std::reverse_iterator< const_iterator > reverse_iterator
Definition: string_view.h:26
constexpr CharT const * cbegin() const
Definition: string_view.h:50
constexpr StringView(CharT const *str)
Definition: string_view.h:33
constexpr CharT const * begin() const
Definition: string_view.h:52
CharT const & operator[](size_t p) const
Definition: string_view.h:36
constexpr StringView(CharT const *str, std::size_t size)
Definition: string_view.h:31
const_reverse_iterator crbegin() const noexcept
Definition: string_view.h:58
CharT const & at(size_t p) const
Definition: string_view.h:37
constexpr CharT const * cend() const
Definition: string_view.h:51
iterator const_iterator
Definition: string_view.h:25
const_reverse_iterator crend() const noexcept
Definition: string_view.h:64
constexpr std::size_t size() const
Definition: string_view.h:41