Settings: Add no-exception variants of each get method

This commit is contained in:
kwolekr 2014-02-03 22:40:57 -05:00
parent 458045d49f
commit a439343844
1 changed files with 123 additions and 4 deletions

View File

@ -467,6 +467,7 @@ public:
return n->second; return n->second;
} }
//////////// Get setting
bool getBool(std::string name) bool getBool(std::string name)
{ {
return is_yes(get(name)); return is_yes(get(name));
@ -581,13 +582,19 @@ public:
{ {
size_t len = olen; size_t len = olen;
std::vector<std::string *> strs_alloced; std::vector<std::string *> strs_alloced;
std::string *str; std::string *str, valstr;
std::string valstr = get(name); char *f, *snext;
size_t pos;
try {
valstr = get(name);
} catch (SettingNotFoundException &e) {
return false;
}
char *s = &valstr[0]; char *s = &valstr[0];
char *buf = new char[len]; char *buf = new char[len];
char *bufpos = buf; char *bufpos = buf;
char *f, *snext;
size_t pos;
char *fmtpos, *fmt = &format[0]; char *fmtpos, *fmt = &format[0];
while ((f = strtok_r(fmt, ",", &fmtpos)) && s) { while ((f = strtok_r(fmt, ",", &fmtpos)) && s) {
@ -737,6 +744,118 @@ fail:
return true; return true;
} }
//////////// Try to get value, no exception thrown
bool tryGet(std::string name, std::string &val)
{
try {
val = get(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetFlagStr(std::string name, u32 &val, FlagDesc *flagdesc)
{
try {
val = getFlagStr(name, flagdesc);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetFloat(std::string name, float &val)
{
try {
val = getFloat(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetU16(std::string name, int &val)
{
try {
val = getU16(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetU16(std::string name, u16 &val)
{
try {
val = getU16(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetS16(std::string name, int &val)
{
try {
val = getU16(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetS16(std::string name, s16 &val)
{
try {
val = getS16(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetS32(std::string name, s32 &val)
{
try {
val = getS32(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetV3F(std::string name, v3f &val)
{
try {
val = getV3F(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetV2F(std::string name, v2f &val)
{
try {
val = getV2F(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
bool tryGetU64(std::string name, u64 &val)
{
try {
val = getU64(name);
return true;
} catch (SettingNotFoundException &e) {
return false;
}
}
//////////// Set setting
bool setStruct(std::string name, std::string format, void *value) bool setStruct(std::string name, std::string format, void *value)
{ {
char sbuf[2048]; char sbuf[2048];