Go to the documentation of this file.
33 #ifndef GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
34 #define GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
36 #include <google/protobuf/stubs/common.h>
37 #include <google/protobuf/stubs/stringpiece.h>
41 #include <google/protobuf/port_def.inc>
47 #if defined(_MSC_VER) && _MSC_VER < 1800
48 #define strtoll _strtoi64
49 #define strtoull _strtoui64
50 #elif defined(__DECCXX) && defined(__osf__)
52 #define strtoll strtol
53 #define strtoull strtoul
69 return (
'a' <= c && c <=
'z') ||
70 (
'A' <=
c &&
c <=
'Z') ||
71 (
'0' <= c && c <=
'9');
75 return (
'0' <= c && c <=
'9');
79 return c ==
' ' ||
c ==
'\t' ||
c ==
'\n' ||
c ==
'\v' ||
c ==
'\f' ||
84 return c >=
'A' &&
c <=
'Z';
88 return c >=
'a' &&
c <=
'z';
101 int x =
static_cast<unsigned char>(
c);
181 if (
'A' <= *
i && *
i <=
'Z') *
i +=
'a' -
'A';
189 if (
'a' <= *
i && *
i <=
'z') *
i +=
'A' -
'a';
221 std::vector<std::string>* res);
232 std::vector<std::string>*
result);
239 bool skip_empty =
true) {
240 std::vector<std::string>
result;
257 PROTOBUF_EXPORT
void JoinStrings(
const std::vector<std::string>& components,
300 std::vector<std::string>*
errors);
321 std::vector<std::string>*
errors);
364 if (
sizeof(
int32) ==
sizeof(
long))
365 return strtol(nptr, endptr,
base);
371 if (
sizeof(
uint32) ==
sizeof(
unsigned long))
372 return strtoul(nptr, endptr,
base);
380 static_assert(
sizeof(
int64) ==
sizeof(
long long),
381 "sizeof_int64_is_not_sizeof_long_long");
382 return strtoll(nptr, endptr,
base);
386 static_assert(
sizeof(
uint64) ==
sizeof(
unsigned long long),
387 "sizeof_uint64_is_not_sizeof_long_long");
388 return strtoull(nptr, endptr,
base);
483 return (
sizeof(i) == 4 ?
487 return (
sizeof(i) == 4 ?
491 return (
sizeof(i) == 4 ?
495 return (
sizeof(i) == 4 ?
607 sizeof(
v) == 1 ||
sizeof(
v) == 2 ||
sizeof(
v) == 4 ||
sizeof(
v) == 8,
608 "Unknown integer type");
611 :
sizeof(
v) == 2 ?
static_cast<uint16>(
v)
612 :
sizeof(
v) == 4 ?
static_cast<uint32>(
v)
618 const char *piece_data_;
627 : piece_data_(digits),
630 : piece_data_(digits),
633 : piece_data_(digits),
636 : piece_data_(digits),
643 : piece_data_(digits),
646 : piece_data_(digits),
650 : piece_data_(digits), piece_size_(strlen(
FloatToBuffer(f, digits))) {}
652 : piece_data_(digits), piece_size_(strlen(
DoubleToBuffer(f, digits))) {}
657 : piece_data_(
c_str), piece_size_(strlen(
c_str)) {}
667 size_t size()
const {
return piece_size_; }
668 const char *
data()
const {
return piece_data_; }
681 using strings::AlphaNum;
710 const AlphaNum& c,
const AlphaNum& d);
712 const AlphaNum& c,
const AlphaNum& d,
715 const AlphaNum& c,
const AlphaNum& d,
716 const AlphaNum& e,
const AlphaNum& f);
718 const AlphaNum& c,
const AlphaNum& d,
719 const AlphaNum& e,
const AlphaNum& f,
722 const AlphaNum& c,
const AlphaNum& d,
723 const AlphaNum& e,
const AlphaNum& f,
724 const AlphaNum& g,
const AlphaNum& h);
726 const AlphaNum& c,
const AlphaNum& d,
727 const AlphaNum& e,
const AlphaNum& f,
728 const AlphaNum& g,
const AlphaNum& h,
760 const AlphaNum&
b,
const AlphaNum& c);
762 const AlphaNum&
b,
const AlphaNum& c,
770 template <
typename Iterator>
781 template <
typename Range>
784 Join(components.begin(), components.end(), delim, &
result);
848 PROTOBUF_EXPORT
int Base64Escape(
const unsigned char* src,
int slen,
char*
dest,
851 char*
dest,
int szdest,
861 PROTOBUF_EXPORT
void Base64Escape(
const unsigned char* src,
int szsrc,
867 return code_point < 0xD800 ||
868 (code_point >= 0xE000 && code_point <= 0x10FFFF);
922 bool auto_end_last_line);
926 bool auto_end_last_line);
948 #include <google/protobuf/port_undef.inc>
950 #endif // GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
int CalculateBase64EscapedLen(int input_len, bool do_padding)
int WebSafeBase64Unescape(const char *src, int szsrc, char *dest, int szdest)
static const int kDoubleToBufferSize
const Descriptor::ReservedRange value
int UnescapeCEscapeString(const string &src, string *dest)
char * FastHex32ToBuffer(uint32 value, char *buffer)
int UnescapeCEscapeSequences(const char *source, char *dest)
bool safe_strto32(const string &str, int32 *value)
void UpperString(string *s)
char * FastUInt64ToBufferLeft(uint64 u64, char *buffer)
char * FastHexToBuffer(int i, char *buffer)
AlphaNum(const char *c_str)
int64 strto64(const char *nptr, char **endptr, int base)
uint32 strtou32(const char *nptr, char **endptr, int base)
bool safe_strtob(StringPiece str, bool *value)
char * FastULongToBuffer(unsigned long i, char *buffer)
bool safe_strtod(const char *str, double *value)
string CEscape(const string &src)
bool safe_strto64(const string &str, int64 *value)
static const int kFastToBufferSize
char ascii_tolower(char c)
void WebSafeBase64EscapeWithPadding(StringPiece src, string *dest)
string SimpleBtoa(bool value)
int GlobalReplaceSubstring(const string &substring, const string &replacement, string *s)
void ReplaceCharacters(string *s, const char *remove, char replacewith)
bool safe_strtou32(const string &str, uint32 *value)
const typedef MCPhysReg * iterator
string StrCat(const AlphaNum &a, const AlphaNum &b)
PROTOBUF_EXPORT string ToHex(uint64 num)
AlphaNum(StringPiece str)
char * FastInt64ToBuffer(int64 i, char *buffer)
bool ascii_isupper(char c)
bool Base64Unescape(StringPiece src, string *dest)
AlphaNum(unsigned long long u64)
void StripWhitespace(string *str)
def c_str(s, encoding='ascii')
void CEscapeAndAppend(StringPiece src, string *dest)
AlphaNum(unsigned long u64)
string SimpleFtoa(float value)
string StripPrefixString(const string &str, const string &prefix)
Hex(Int v, PadSpec s=NO_PAD)
char * FastInt32ToBuffer(int32 i, char *buffer)
bool safe_strtof(const char *str, float *value)
bool ascii_isspace(char c)
int WebSafeBase64Escape(const unsigned char *src, int szsrc, char *dest, int szdest, bool do_padding)
AlphaNum(unsigned int u32)
char * FloatToBuffer(float value, char *buffer)
int32 strto32_adaptor(const char *nptr, char **endptr, int base)
bool HasPrefixString(const string &str, const string &prefix)
char * FastHex64ToBuffer(uint64 value, char *buffer)
void LowerString(string *s)
string Utf8SafeCEscape(const string &src)
char * FastUInt32ToBuffer(uint32 i, char *buffer)
char * DoubleToBuffer(double value, char *buffer)
string SimpleDtoa(double value)
char * FastUInt32ToBufferLeft(uint32 u, char *buffer)
unsigned char suffix[65536]
bool IsValidCodePoint(uint32 code_point)
int Base64Escape(const unsigned char *src, int szsrc, char *dest, int szdest)
char * FastIntToBuffer(int i, char *buffer)
void StringReplace(const string &s, const string &oldsub, const string &newsub, bool replace_all, string *res)
void SplitStringUsing(const string &full, const char *delim, std::vector< string > *result)
bool EndsWith(StringPiece text, StringPiece suffix)
int32 strto32(const char *nptr, char **endptr, int base)
char * FastUInt64ToBuffer(uint64 i, char *buffer)
bool ascii_islower(char c)
static const int kFloatToBufferSize
int hex_digit_to_int(char c)
bool ascii_isdigit(char c)
double NoLocaleStrtod(const char *str, char **endptr)
char ascii_toupper(char c)
static const char prefix[]
void CleanStringLineEndings(const string &src, string *dst, bool auto_end_last_line)
std::vector< string > Split(const string &full, const char *delim, bool skip_empty=true)
char * FastInt64ToBufferLeft(int64 i, char *buffer)
bool ascii_isalnum(char c)
string ToUpper(const string &s)
char * FastLongToBuffer(long i, char *buffer)
char * FastUIntToBuffer(unsigned int i, char *buffer)
AlphaNum(const std::string &str)
bool HasSuffixString(const string &str, const string &suffix)
void Join(Iterator start, Iterator end, const char *delim, string *result)
int UTF8FirstLetterNumBytes(const char *src, int len)
string StripSuffixString(const string &str, const string &suffix)
bool safe_strtou64(const string &str, uint64 *value)
uint64 strtou64(const char *nptr, char **endptr, int base)
string CHexEscape(const string &src)
char * FastInt32ToBufferLeft(int32 i, char *buffer)
const char * data() const
void SplitStringAllowEmpty(const string &full, const char *delim, std::vector< string > *result)
int EncodeAsUTF8Char(uint32 code_point, char *output)
uint32 strtou32_adaptor(const char *nptr, char **endptr, int base)
void StrAppend(string *result, const AlphaNum &a)
void JoinStrings(const std::vector< string > &components, const char *delim, string *result)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:23