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};
33 StringView(CharT
const* str) : str_{str}, size_{Traits::length(str)} {}
35 CharT
const&
operator[](
size_t p)
const {
return str_[p]; }
36 CharT
const&
at(
size_t p)
const {
40 constexpr
size_t size()
const {
return size_; }
43 size_t len = std::min(n, size_ - beg);
44 return {str_ + beg, len};
46 CharT
const*
c_str()
const {
return str_; }
48 constexpr CharT
const*
cbegin()
const {
return str_; }
49 constexpr CharT
const*
cend()
const {
return str_ +
size(); }
50 constexpr CharT
const*
begin()
const {
return str_; }
51 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:423
namespace of xgboost
Definition: base.h:110
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:53
StringView(std::string const &str)
Definition: string_view.h:32
const CharT * iterator
Definition: string_view.h:24
StringView(CharT const *str)
Definition: string_view.h:33
CharT value_type
Definition: string_view.h:23
constexpr CharT const * end() const
Definition: string_view.h:51
CharT const * c_str() const
Definition: string_view.h:46
constexpr StringView()=default
reverse_iterator const_reverse_iterator
Definition: string_view.h:27
const_reverse_iterator rend() const noexcept
Definition: string_view.h:59
StringView substr(size_t beg, size_t n) const
Definition: string_view.h:41
std::reverse_iterator< const_iterator > reverse_iterator
Definition: string_view.h:26
constexpr CharT const * cbegin() const
Definition: string_view.h:48
constexpr CharT const * begin() const
Definition: string_view.h:50
CharT const & operator[](size_t p) const
Definition: string_view.h:35
constexpr StringView(CharT const *str, size_t size)
Definition: string_view.h:31
const_reverse_iterator crbegin() const noexcept
Definition: string_view.h:56
CharT const & at(size_t p) const
Definition: string_view.h:36
constexpr CharT const * cend() const
Definition: string_view.h:49
iterator const_iterator
Definition: string_view.h:25
const_reverse_iterator crend() const noexcept
Definition: string_view.h:62
constexpr size_t size() const
Definition: string_view.h:40