4 #ifndef XGBOOST_STRING_VIEW_H_
5 #define XGBOOST_STRING_VIEW_H_
6 #include <xgboost/logging.h>
19 using Traits = std::char_traits<CharT>;
20 CharT
const* str_{
nullptr};
35 : str_{str}, size_{str == nullptr ? 0ul : Traits::length(str)} {}
38 [[nodiscard]]
explicit operator std::string()
const {
return {this->
c_str(), this->
size()}; }
43 [[nodiscard]] constexpr std::size_t
size()
const {
return size_; }
44 [[nodiscard]] constexpr
bool empty()
const {
return size() == 0; }
47 std::size_t len = std::min(n, size_ - beg);
48 return {str_ + beg, len};
span class implementation, based on ISO++20 span<T>. The interface should be the same.
Definition: span.h:422
Core data structure for multi-target trees.
Definition: base.h:87
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
std::ostream & operator<<(std::ostream &os, DeviceOrd ord)
bool operator<(IntrusivePtr< T > const &x, IntrusivePtr< T > const &y) noexcept
Definition: intrusive_ptr.h:180
Definition: string_view.h:16
const_reverse_iterator rbegin() const noexcept
Definition: string_view.h:57
StringView(std::string const &str)
Definition: string_view.h:33
const CharT * iterator
Definition: string_view.h:25
value_type const & operator[](std::size_t p) const
Definition: string_view.h:37
constexpr bool empty() const
Definition: string_view.h:44
CharT value_type
Definition: string_view.h:24
constexpr const_iterator cend() const
Definition: string_view.h:53
constexpr StringView()=default
reverse_iterator const_reverse_iterator
Definition: string_view.h:28
const_reverse_iterator rend() const noexcept
Definition: string_view.h:63
constexpr StringView(value_type const *str, std::size_t size)
Definition: string_view.h:32
value_type const & at(std::size_t p) const
Definition: string_view.h:39
constexpr const_iterator cbegin() const
Definition: string_view.h:52
std::reverse_iterator< const_iterator > reverse_iterator
Definition: string_view.h:27
value_type const * c_str() const
Definition: string_view.h:50
constexpr iterator end() const
Definition: string_view.h:55
constexpr iterator begin() const
Definition: string_view.h:54
StringView substr(std::size_t beg, std::size_t n) const
Definition: string_view.h:45
const_reverse_iterator crbegin() const noexcept
Definition: string_view.h:60
constexpr StringView(value_type const *str)
Definition: string_view.h:34
iterator const_iterator
Definition: string_view.h:26
const_reverse_iterator crend() const noexcept
Definition: string_view.h:66
constexpr std::size_t size() const
Definition: string_view.h:43