Go to the documentation of this file.
26 #include "../src/string_util.h"
37 const long long_value = strtol(
str, &
end, 10);
42 std::cerr << src_text <<
" is expected to be a 32-bit integer, "
43 <<
"but actually has value \"" <<
str <<
"\".\n";
56 std::cerr << src_text <<
" is expected to be a 32-bit integer, "
57 <<
"but actually has value \"" <<
str <<
"\", "
58 <<
"which overflows.\n";
71 const double double_value = strtod(
str, &
end);
76 std::cerr << src_text <<
" is expected to be a double, "
77 <<
"but actually has value \"" <<
str <<
"\".\n";
81 *
value = double_value;
88 std::map<std::string, std::string>*
value) {
89 std::map<std::string, std::string> kvs;
91 const auto kv =
StrSplit(kvpair,
'=');
93 std::cerr << src_text <<
" is expected to be a comma-separated list of "
94 <<
"<key>=<value> strings, but actually has value \"" <<
str
98 if (!kvs.emplace(kv[0], kv[1]).second) {
99 std::cerr << src_text <<
" is expected to contain unique keys but key \""
100 << kv[0] <<
"\" was repeated.\n";
116 for (
size_t i = 0;
i != flag_str.length(); ++
i)
117 env_var +=
static_cast<char>(::toupper(flag_str.c_str()[i]));
134 if (value_str ==
nullptr ||
145 double value = default_val;
146 if (value_str ==
nullptr ||
157 return value ==
nullptr ? default_val :
value;
161 const char*
flag, std::map<std::string, std::string> default_val) {
165 if (value_str ==
nullptr)
return default_val;
167 std::map<std::string, std::string>
value;
168 if (!ParseKvPairs(
"Environment variable " +
env_var, value_str, &
value)) {
182 if (
str ==
nullptr ||
flag ==
nullptr)
return nullptr;
186 const size_t flag_len = flag_str.length();
187 if (strncmp(
str, flag_str.c_str(), flag_len) != 0)
return nullptr;
190 const char* flag_end =
str + flag_len;
193 if (def_optional && (flag_end[0] ==
'\0'))
return flag_end;
198 if (flag_end[0] !=
'=')
return nullptr;
209 if (value_str ==
nullptr)
return false;
221 if (value_str ==
nullptr)
return false;
233 if (value_str ==
nullptr)
return false;
245 if (value_str ==
nullptr)
return false;
252 const char*
str,
const char*
flag,
253 std::map<std::string, std::string>*
value) {
256 if (value_str ==
nullptr)
return false;
258 for (
const auto& kvpair :
StrSplit(value_str,
',')) {
259 const auto kv =
StrSplit(kvpair,
'=');
260 if (kv.size() != 2)
return false;
261 value->emplace(kv[0], kv[1]);
272 if (
value.size() == 1) {
275 !(
v ==
'0' ||
v ==
'f' ||
v ==
'F' ||
v ==
'n' ||
v ==
'N');
276 }
else if (!
value.empty()) {
278 std::transform(value_lower.begin(), value_lower.end(), value_lower.begin(),
279 [](
char c) { return static_cast<char>(::tolower(c)); });
280 return !(value_lower ==
"false" || value_lower ==
"no" ||
281 value_lower ==
"off");
int32_t Int32FromEnv(const char *flag, int32_t default_val)
std::map< std::string, std::string > KvPairsFromEnv(const char *flag, std::map< std::string, std::string > default_val)
bool ParseInt32(const std::string &src_text, const char *str, int32_t *value)
bool BoolFromEnv(const char *flag, bool default_val)
const char * StringFromEnv(const char *flag, const char *default_val)
bool ParseDoubleFlag(const char *str, const char *flag, double *value)
bool ParseStringFlag(const char *str, const char *flag, std::string *value)
bool IsTruthyFlagValue(const std::string &value)
static std::string FlagToEnvVar(const char *flag)
bool ParseDouble(const std::string &src_text, const char *str, double *value)
std::vector< std::string > StrSplit(const std::string &str, char delim)
const char * ParseFlagValue(const char *str, const char *flag, bool def_optional)
bool ParseBoolFlag(const char *str, const char *flag, bool *value)
double DoubleFromEnv(const char *flag, double default_val)
bool ParseKeyValueFlag(const char *str, const char *flag, std::map< std::string, std::string > *value)
bool IsFlag(const char *str, const char *flag)
bool ParseInt32Flag(const char *str, const char *flag, int32_t *value)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:58:51