From 911d3fc122e33f58e96ba2325eabd41e633105f0 Mon Sep 17 00:00:00 2001 From: JustinAJ Date: Thu, 23 Oct 2014 05:36:11 -0400 Subject: [PATCH] INIFile::Section::get() functions now more closely mirror the INIFile::get() functions. --- Jupiter/INIFile.cpp | 65 +++++++++++++++++++++++++++++++++++-- Jupiter/INIFile.h | 76 ++++++++++++++++++++++++++++++++++++++++++-- Release/Jupiter.lib | Bin 247420 -> 251098 bytes 3 files changed, 137 insertions(+), 4 deletions(-) diff --git a/Jupiter/INIFile.cpp b/Jupiter/INIFile.cpp index e48aea5..1336c21 100644 --- a/Jupiter/INIFile.cpp +++ b/Jupiter/INIFile.cpp @@ -122,12 +122,12 @@ const Jupiter::ReadableString &Jupiter::INIFile::Section::getName() const return Jupiter::INIFile::Section::data_->name; } -const Jupiter::ReadableString &Jupiter::INIFile::Section::getValue(size_t index) const +const Jupiter::ReadableString &Jupiter::INIFile::Section::get(size_t index) const { return Jupiter::INIFile::Section::data_->data.get(index)->data_->value; } -const Jupiter::ReadableString &Jupiter::INIFile::Section::getValue(const Jupiter::ReadableString &key, const Jupiter::ReadableString &defaultValue) const +const Jupiter::ReadableString &Jupiter::INIFile::Section::get(const Jupiter::ReadableString &key, const Jupiter::ReadableString &defaultValue) const { Jupiter::INIFile::Section::KeyValuePair *pair; const unsigned int keySum = key.calcChecksumi(); @@ -141,6 +141,67 @@ const Jupiter::ReadableString &Jupiter::INIFile::Section::getValue(const Jupiter return defaultValue; } +bool Jupiter::INIFile::Section::getBool(const Jupiter::ReadableString &key, bool defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asBool(); + return defaultValue; +} + +short Jupiter::INIFile::Section::getShort(const Jupiter::ReadableString &key, short defaultValue) const +{ + return static_cast(Jupiter::INIFile::Section::getInt(key, defaultValue)); +} + +int Jupiter::INIFile::Section::getInt(const Jupiter::ReadableString &key, int defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asInt(); + return defaultValue; +} + +long Jupiter::INIFile::Section::getLong(const Jupiter::ReadableString &key, long defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asInt(); + return defaultValue; +} + +long long Jupiter::INIFile::Section::getLongLong(const Jupiter::ReadableString &key, long long defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asLongLong(); + return defaultValue; +} + +float Jupiter::INIFile::Section::getFloat(const Jupiter::ReadableString &key, float defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return float(val.asDouble()); + return defaultValue; +} + +double Jupiter::INIFile::Section::getDouble(const Jupiter::ReadableString &key, double defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asDouble(); + return defaultValue; +} + +long double Jupiter::INIFile::Section::getLongDouble(const Jupiter::ReadableString &key, long double defaultValue) const +{ + const Jupiter::ReadableString &val = Jupiter::INIFile::Section::get(key); + if (val.isEmpty() == false) + return val.asDouble(); + return defaultValue; +} + Jupiter::INIFile::Section::KeyValuePair *Jupiter::INIFile::Section::getPair(size_t index) const { return Jupiter::INIFile::Section::data_->data.get(index); diff --git a/Jupiter/INIFile.h b/Jupiter/INIFile.h index 684c7d6..1c37395 100644 --- a/Jupiter/INIFile.h +++ b/Jupiter/INIFile.h @@ -118,7 +118,7 @@ namespace Jupiter * @param index Index of the key-value pair. * @return Value of a key-value pair at a specified index. */ - const Jupiter::ReadableString &getValue(size_t index) const; + const Jupiter::ReadableString &get(size_t index) const; /** * @brief Fetches the value of a key-value pair. @@ -126,7 +126,79 @@ namespace Jupiter * @param key Key of the key-value pair. * @return Value of a key-value pair, or an empty string if none is found. */ - const Jupiter::ReadableString &getValue(const Jupiter::ReadableString &key, const Jupiter::ReadableString &defaultValue = Jupiter::ReferenceString::empty) const; + const Jupiter::ReadableString &get(const Jupiter::ReadableString &key, const Jupiter::ReadableString &defaultValue = Jupiter::ReferenceString::empty) const; + + /** + * @brief Translates and returns the value of a key-value pair as a boolean. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return true if key exists and is not "false" or "0", defaultValue otherwise. + */ + bool getBool(const Jupiter::ReadableString &key, bool defaultValue = false) const; + + /** + * @brief Translates and returns the value of a key-value pair as a short. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return short value of the key if it exits, defaultValue otherwise. + */ + short getShort(const Jupiter::ReadableString &key, short defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as an int. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return int value of the key if it exits, defaultValue otherwise. + */ + int getInt(const Jupiter::ReadableString &key, int defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as a long. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return long value of the key if it exits, defaultValue otherwise. + */ + long getLong(const Jupiter::ReadableString &key, long defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as a long long. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return long long value of the key if it exits, defaultValue otherwise. + */ + long long getLongLong(const Jupiter::ReadableString &key, long long defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as a float. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return float value of the key if it exits, defaultValue otherwise. + */ + float getFloat(const Jupiter::ReadableString &key, float defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as a double. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return double value of the key if it exits, defaultValue otherwise. + */ + double getDouble(const Jupiter::ReadableString &key, double defaultValue = 0) const; + + /** + * @brief Translates and returns the value of a key-value pair as a long double. + * + * @param key String containing key name. + * @param defaultValue Value to return if none is found. + * @return long double value of the key if it exits, defaultValue otherwise. + */ + long double getLongDouble(const Jupiter::ReadableString &key, long double defaultValue = 0) const; /** * @brief Fetches a key-value pair at a specified index. diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index c4e0441d2e3b76a2179e769ba745b3fa9a90e122..0c1e8a36c3b45d007fb40d7b2ef0b034a1f1148e 100644 GIT binary patch delta 33619 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

nreMFyLG5)^Y8B`oEV%Qr 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