8 #ifndef Guit_String_hpp
9 #define Guit_String_hpp
16 void strtrim(GString& str,
bool remquotes =
false);
19 enum struct SplitMode {Raw = 0, Trim = 1, CheckQuotes = 2, RemQuotes = 3};
65 size_t strsplit(GString
const& str,
67 GString& left, GString& right,
68 GString
const& delimiters =
"",
69 SplitMode mode = SplitMode::Trim);
71 size_t strsplit(GString
const& str,
73 GString
const& delimiters =
"",
75 SplitMode mode = SplitMode::Trim);
90 size_t strregsplit(GString
const& str,
100 int strtoken(GString
const& str,
103 GString
const& delimiters =
"",
104 SplitMode mode = SplitMode::Trim);
107 GString strlower(GString
const& str);
110 GString strupper(GString
const& str);
113 bool strblank(GString
const& str);
117 bool strequal(GString
const& str1, GString
const& str2,
bool ignore_case);
118 int strcompare(GString
const& str1, GString
const& str2,
bool ignore_case);
135 inline constexpr uint64_t strid(
const char* str,
int last = 8, uint64_t
id = 0) {
136 return (!*str || last==0) ?
id : strid(str+1, last-1, (
id<<8) + uint64_t(*str));
141 inline uint64_t strid(GString
const& str,
int last = 8) {
142 return strid(str.data(), last, 0);
149 ssize_t strPosToIndex(GString
const& str, ssize_t charpos,
bool richtext);
150 ssize_t strIndexToPos(GString
const& str, ssize_t index,
bool richtext);
156 size_t strNextIndex(GString
const& str, ssize_t index,
bool richtext);
157 size_t strPreviousIndex(GString
const& str, ssize_t index,
bool richtext);