18 #ifndef GRPC_CORE_LIB_GPRPP_STRING_VIEW_H
19 #define GRPC_CORE_LIB_GPRPP_STRING_VIEW_H
38 #include "absl/strings/string_view.h"
45 using StringView = absl::string_view;
71 static constexpr
size_t npos = std::numeric_limits<size_t>::max();
75 :
StringView(ptr, ptr == nullptr ? 0 : strlen(ptr)) {}
78 constexpr
const char*
data()
const {
return ptr_; }
79 constexpr
size_t size()
const {
return size_; }
80 constexpr
bool empty()
const {
return size_ == 0; }
87 constexpr
const char&
operator[](
size_t i)
const {
return ptr_[i]; }
89 const char&
front()
const {
return ptr_[0]; }
90 const char&
back()
const {
return ptr_[size_ - 1]; }
103 size_t find(
char c,
size_t pos = 0)
const {
104 if (
empty() || pos >= size_)
return npos;
106 static_cast<const char*
>(memchr(ptr_ + pos, c, size_ - pos));
107 return result !=
nullptr ? result - ptr_ :
npos;
116 template <
typename Allocator>
117 explicit operator std::basic_string<char, std::char_traits<char>, Allocator>()
119 if (
data() ==
nullptr)
return {};
120 return std::basic_string<char, std::char_traits<char>, Allocator>(
data(),
149 str[sv.
size()] =
'\0';
156 const int ret = strncmp(lhs.
data(), rhs.
data(), len);
157 if (ret != 0)
return ret;
158 if (lhs.
size() == rhs.
size())
return 0;
159 if (lhs.
size() < rhs.
size())
return -1;
Definition: string_view.h:69
constexpr StringView(const char *ptr, size_t size)
Definition: string_view.h:73
const char & back() const
Definition: string_view.h:90
constexpr const char & operator[](size_t i) const
Definition: string_view.h:87
const char & front() const
Definition: string_view.h:89
void remove_suffix(size_t n)
Definition: string_view.h:98
constexpr size_t size() const
Definition: string_view.h:79
constexpr StringView()
Definition: string_view.h:76
size_t find(char c, size_t pos=0) const
Definition: string_view.h:103
constexpr StringView(const char *ptr)
Definition: string_view.h:74
static constexpr size_t npos
Definition: string_view.h:71
void remove_prefix(size_t n)
Definition: string_view.h:92
StringView substr(size_t start, size_t size=npos)
Definition: string_view.h:82
constexpr const char * data() const
Definition: string_view.h:78
void clear()
Definition: string_view.h:110
constexpr bool empty() const
Definition: string_view.h:80
#define GRPC_SLICE_START_PTR(slice)
Definition: slice.h:96
#define GRPC_SLICE_LENGTH(slice)
Definition: slice.h:99
#define GPR_DEBUG_ASSERT(x)
Definition: log.h:103
GPRAPI void * gpr_malloc(size_t size)
malloc.
Internal thread interface.
Definition: backoff.h:26
bool operator!=(StringView lhs, StringView rhs)
Definition: string_view.h:134
std::unique_ptr< T, DefaultDeleteChar > UniquePtr
Definition: memory.h:45
StringView StringViewFromSlice(const grpc_slice &slice)
Definition: string_view.h:139
bool operator==(StringView lhs, StringView rhs)
Definition: string_view.h:129
grpc_core::UniquePtr< char > StringViewToCString(const StringView sv)
Definition: string_view.h:146
int StringViewCmp(const StringView lhs, const StringView rhs)
Definition: string_view.h:154
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1].
Definition: slice.h:60
#define GPR_MIN(a, b)
useful macros that don't belong anywhere else
Definition: useful.h:24