Go to the documentation of this file.
33 #ifndef GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
34 #define GOOGLE_PROTOBUF_STUBS_STRUTIL_H__
41 #include <google/protobuf/port_def.inc>
46 #if defined(_MSC_VER) && _MSC_VER < 1800
47 #define strtoll _strtoi64
48 #define strtoull _strtoui64
49 #elif defined(__DECCXX) && defined(__osf__)
51 #define strtoll strtol
52 #define strtoull strtoul
68 return (
'a' <= c && c <=
'z') ||
69 (
'A' <= c && c <=
'Z') ||
70 (
'0' <= c && c <=
'9');
74 return (
'0' <= c && c <=
'9');
78 return c ==
' ' || c ==
'\t' || c ==
'\n' || c ==
'\v' || c ==
'\f' ||
83 return c >=
'A' && c <=
'Z';
87 return c >=
'a' && c <=
'z';
100 int x =
static_cast<unsigned char>(c);
138 const string& suffix) {
139 return str.size() >= suffix.size() &&
140 str.compare(
str.size() - suffix.size(), suffix.size(), suffix) == 0;
145 return str.substr(0,
str.size() - suffix.size());
162 PROTOBUF_EXPORT
void StripString(
string* s,
const char* remove,
178 string::iterator
end =
s->end();
179 for (string::iterator
i =
s->begin();
i !=
end; ++
i) {
181 if (
'A' <= *
i && *
i <=
'Z') *
i +=
'a' -
'A';
186 string::iterator
end =
s->end();
187 for (string::iterator
i =
s->begin();
i !=
end; ++
i) {
189 if (
'a' <= *
i && *
i <=
'z') *
i +=
'A' -
'a';
207 PROTOBUF_EXPORT
string StringReplace(
const string& s,
const string& oldsub,
208 const string& newsub,
bool replace_all);
216 PROTOBUF_EXPORT
void SplitStringUsing(
const string& full,
const char* delim,
217 std::vector<string>* res);
229 std::vector<string>* result);
236 const string& full,
const char* delim,
bool skip_empty =
true) {
237 std::vector<string> result;
254 PROTOBUF_EXPORT
void JoinStrings(
const std::vector<string>& components,
255 const char* delim,
string* result);
297 std::vector<string>*
errors);
316 std::vector<string>*
errors);
326 PROTOBUF_EXPORT
string CEscape(
const string&
src);
359 if (
sizeof(
int32) ==
sizeof(
long))
360 return strtol(nptr, endptr,
base);
366 if (
sizeof(
uint32) ==
sizeof(
unsigned long))
367 return strtoul(nptr, endptr,
base);
376 sizeof_int64_is_not_sizeof_long_long);
377 return strtoll(nptr, endptr,
base);
382 sizeof_uint64_is_not_sizeof_long_long);
383 return strtoull(nptr, endptr,
base);
478 return (
sizeof(
i) == 4 ?
482 return (
sizeof(
i) == 4 ?
486 return (
sizeof(
i) == 4 ?
490 return (
sizeof(
i) == 4 ?
526 return value ?
"true" :
"false";
538 PROTOBUF_EXPORT
string SimpleItoa(
unsigned long i);
540 PROTOBUF_EXPORT
string SimpleItoa(
unsigned long long i);
604 sizeof(
v) == 1 ||
sizeof(
v) == 2 ||
sizeof(
v) == 4 ||
sizeof(
v) == 8,
605 "Unknown integer type");
608 :
sizeof(
v) == 2 ?
static_cast<uint16>(
v)
609 :
sizeof(
v) == 4 ?
static_cast<uint32>(
v)
624 : piece_data_(digits),
627 : piece_data_(digits),
630 : piece_data_(digits),
633 : piece_data_(digits),
640 : piece_data_(digits),
643 : piece_data_(digits),
647 : piece_data_(digits), piece_size_(strlen(
FloatToBuffer(
f, digits))) {}
649 : piece_data_(digits), piece_size_(strlen(
DoubleToBuffer(
f, digits))) {}
654 : 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;
706 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b);
707 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
709 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
710 const AlphaNum& c,
const AlphaNum& d);
711 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
712 const AlphaNum& c,
const AlphaNum& d,
714 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
715 const AlphaNum& c,
const AlphaNum& d,
716 const AlphaNum& e,
const AlphaNum&
f);
717 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
718 const AlphaNum& c,
const AlphaNum& d,
719 const AlphaNum& e,
const AlphaNum&
f,
721 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
722 const AlphaNum& c,
const AlphaNum& d,
723 const AlphaNum& e,
const AlphaNum&
f,
724 const AlphaNum&
g,
const AlphaNum&
h);
725 PROTOBUF_EXPORT
string StrCat(
const AlphaNum&
a,
const AlphaNum&
b,
726 const AlphaNum& c,
const AlphaNum& d,
727 const AlphaNum& e,
const AlphaNum&
f,
728 const AlphaNum&
g,
const AlphaNum&
h,
758 const AlphaNum&
b,
const AlphaNum& c);
760 const AlphaNum&
b,
const AlphaNum& c,
768 template <
typename Iterator>
770 const char* delim,
string* result) {
773 result->append(delim);
779 template <
typename Range>
783 Join(components.begin(), components.end(), delim, &result);
801 const string& replacement,
850 char*
dest,
int szdest,
861 string*
dest,
bool do_padding);
863 string*
dest,
bool do_padding);
866 return code_point < 0xD800 ||
867 (code_point >= 0xE000 && code_point <= 0x10FFFF);
920 bool auto_end_last_line);
924 bool auto_end_last_line);
928 return suffix.
empty() ||
931 suffix.
size()) == 0);
938 #include <google/protobuf/port_undef.inc>
940 #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
int UnescapeCEscapeString(const string &src, string *dest)
string SimpleDtoa(double value)
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)
string StrCat(const AlphaNum &a, const AlphaNum &b)
const char * data() const
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)
bool safe_strtod(const char *str, double *value)
GLsizei const GLchar *const * strings
string CEscape(const string &src)
bool safe_strto64(const string &str, int64 *value)
char * FastUIntToBuffer(unsigned int i, char *buffer)
AlphaNum(internal::StringPiecePod str)
static const int kFastToBufferSize
GLsizei const GLchar *const * string
char ascii_tolower(char c)
void WebSafeBase64EscapeWithPadding(StringPiece src, string *dest)
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)
AlphaNum(StringPiece str)
char * FastInt64ToBuffer(int64 i, char *buffer)
bool ascii_isupper(char c)
GLboolean GLboolean GLboolean b
char * FastULongToBuffer(unsigned long i, char *buffer)
AlphaNum(const string &str)
bool Base64Unescape(StringPiece src, string *dest)
AlphaNum(unsigned long long u64)
void StripWhitespace(string *str)
void CEscapeAndAppend(StringPiece src, string *dest)
AlphaNum(unsigned long u64)
static const char prefix[]
string StripPrefixString(const string &str, const string &prefix)
char * FastIntToBuffer(int i, char *buffer)
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)
#define GOOGLE_COMPILE_ASSERT(expr, msg)
AlphaNum(unsigned int u32)
char * FloatToBuffer(float value, char *buffer)
GLsizei GLsizei GLchar * source
int32 strto32_adaptor(const char *nptr, char **endptr, int base)
bool HasPrefixString(const string &str, const string &prefix)
string SimpleFtoa(float value)
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)
char * FastUInt32ToBufferLeft(uint32 u, char *buffer)
string SimpleBtoa(bool value)
bool IsValidCodePoint(uint32 code_point)
int Base64Escape(const unsigned char *src, int szsrc, char *dest, int szdest)
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)
void StripString(string *s, const char *remove, char replacewith)
char * FastLongToBuffer(long i, char *buffer)
bool ascii_isdigit(char c)
char ascii_toupper(char c)
PROTOBUF_EXPORT string ToHex(uint64 num)
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)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
bool HasSuffixString(const string &str, const string &suffix)
void Join(Iterator start, Iterator end, const char *delim, string *result)
GLsizei const GLfloat * value
int UTF8FirstLetterNumBytes(const char *src, int len)
string StripSuffixString(const string &str, const string &suffix)
const upb_json_parsermethod const upb_symtab upb_sink * output
bool safe_strtou64(const string &str, uint64 *value)
uint64 strtou64(const char *nptr, char **endptr, int base)
stringpiece_ssize_type size() const
string CHexEscape(const string &src)
GLboolean GLboolean GLboolean GLboolean a
char * FastInt32ToBufferLeft(int32 i, char *buffer)
const char * data() const
void SplitStringAllowEmpty(const string &full, const char *delim, std::vector< string > *result)
GLfloat GLfloat GLfloat GLfloat h
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)
libaditof
Author(s):
autogenerated on Wed May 21 2025 02:06:59