diff options
author | kwolekr <kwolekr@minetest.net> | 2014-02-03 22:40:57 -0500 |
---|---|---|
committer | kwolekr <kwolekr@minetest.net> | 2014-02-03 22:47:40 -0500 |
commit | a439343844cf821e4922e23f1638b92e2cfb14ac (patch) | |
tree | eab79a9c799fee31767764c8732e2adcb48478af | |
parent | 458045d49fd96cf19bdd61b2f8dbdbc0fd11b587 (diff) | |
download | minetest-a439343844cf821e4922e23f1638b92e2cfb14ac.tar.gz minetest-a439343844cf821e4922e23f1638b92e2cfb14ac.tar.bz2 minetest-a439343844cf821e4922e23f1638b92e2cfb14ac.zip |
Settings: Add no-exception variants of each get method
-rw-r--r-- | src/settings.h | 127 |
1 files changed, 123 insertions, 4 deletions
diff --git a/src/settings.h b/src/settings.h index e19f83e3f..f019ce50c 100644 --- a/src/settings.h +++ b/src/settings.h @@ -467,6 +467,7 @@ public: return n->second; } + //////////// Get setting bool getBool(std::string name) { return is_yes(get(name)); @@ -581,13 +582,19 @@ public: { size_t len = olen; std::vector<std::string *> strs_alloced; - std::string *str; - std::string valstr = get(name); + std::string *str, valstr; + char *f, *snext; + size_t pos; + + try { + valstr = get(name); + } catch (SettingNotFoundException &e) { + return false; + } + char *s = &valstr[0]; char *buf = new char[len]; char *bufpos = buf; - char *f, *snext; - size_t pos; char *fmtpos, *fmt = &format[0]; while ((f = strtok_r(fmt, ",", &fmtpos)) && s) { @@ -737,6 +744,118 @@ fail: 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) { char sbuf[2048]; |