summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-09-05 19:01:13 +0300
committerAndrei Karas <akaras@inbox.ru>2011-09-05 19:01:13 +0300
commitea946a63d1ec1726971a6e0a351a237611d89b02 (patch)
treeb788468bd90b63fb997acef5dc127383c3c49133
parent83117a93393329cc61a76614e4ca5686efa56154 (diff)
downloadmanaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.gz
manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.bz2
manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.tar.xz
manaplus-ea946a63d1ec1726971a6e0a351a237611d89b02.zip
Fix error with getting default configuration values.
-rw-r--r--src/configuration.cpp95
1 files changed, 83 insertions, 12 deletions
diff --git a/src/configuration.cpp b/src/configuration.cpp
index 2524d6b93..a6ef27815 100644
--- a/src/configuration.cpp
+++ b/src/configuration.cpp
@@ -194,11 +194,32 @@ int Configuration::getIntValue(const std::string &key) const
{
DefaultsData::const_iterator itdef = mDefaultsData->find(key);
- if (itdef != mDefaultsData->end() && itdef->second
- && itdef->second->getType() == Mana::VariableData::DATA_INT)
+ if (itdef != mDefaultsData->end() && itdef->second)
{
- defaultValue = (static_cast<Mana::IntData*>(
- itdef->second))->getData();
+ if (itdef->second->getType() == Mana::VariableData::DATA_INT)
+ {
+ defaultValue = (static_cast<Mana::IntData*>(
+ itdef->second))->getData();
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_STRING)
+ {
+ defaultValue = atoi((static_cast<Mana::StringData*>(
+ itdef->second))->getData().c_str());
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_BOOL)
+ {
+ if ((static_cast<Mana::BoolData*>(
+ itdef->second))->getData())
+ {
+ defaultValue = 1;
+ }
+ else
+ {
+ defaultValue = 0;
+ }
+ }
}
else
{
@@ -249,11 +270,33 @@ std::string Configuration::getStringValue(const std::string &key) const
{
DefaultsData::const_iterator itdef = mDefaultsData->find(key);
- if (itdef != mDefaultsData->end() && itdef->second
- && itdef->second->getType() == Mana::VariableData::DATA_STRING)
+ if (itdef != mDefaultsData->end() && itdef->second)
{
- defaultValue = (static_cast<Mana::StringData*>(
- itdef->second))->getData();
+ if (itdef->second->getType()
+ == Mana::VariableData::DATA_STRING)
+ {
+ defaultValue = (static_cast<Mana::StringData*>(
+ itdef->second))->getData();
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_BOOL)
+ {
+ if ((static_cast<Mana::BoolData*>(
+ itdef->second))->getData())
+ {
+ defaultValue = "1";
+ }
+ else
+ {
+ defaultValue = "0";
+ }
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_INT)
+ {
+ defaultValue = toString((static_cast<Mana::IntData*>(
+ itdef->second))->getData());
+ }
}
else
{
@@ -312,11 +355,39 @@ bool Configuration::getBoolValue(const std::string &key) const
{
DefaultsData::const_iterator itdef = mDefaultsData->find(key);
- if (itdef != mDefaultsData->end() && itdef->second
- && itdef->second->getType() == Mana::VariableData::DATA_BOOL)
+ if (itdef != mDefaultsData->end() && itdef->second)
{
- defaultValue = (static_cast<Mana::BoolData*>(
- itdef->second))->getData();
+ if (itdef->second->getType() == Mana::VariableData::DATA_BOOL)
+ {
+ defaultValue = (static_cast<Mana::BoolData*>(
+ itdef->second))->getData();
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_INT)
+ {
+ if ((static_cast<Mana::IntData*>(
+ itdef->second))->getData() != 0)
+ {
+ defaultValue = true;
+ }
+ else
+ {
+ defaultValue = false;
+ }
+ }
+ else if (itdef->second->getType()
+ == Mana::VariableData::DATA_STRING)
+ {
+ if ((static_cast<Mana::StringData*>(
+ itdef->second))->getData() != "0")
+ {
+ defaultValue = true;
+ }
+ else
+ {
+ defaultValue = false;
+ }
+ }
}
else
{