From b15fcd7592e33b5a837047d0810e5b523fa4a7ad Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 5 Jan 2005 22:29:21 +0000 Subject: Small fix in handling spaces around delimiter in ini file. --- src/configuration.cpp | 78 ++++++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 48 deletions(-) (limited to 'src/configuration.cpp') diff --git a/src/configuration.cpp b/src/configuration.cpp index 75d28b8f..0a1bd551 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -23,43 +23,49 @@ #include "configuration.h" #include -/** - \brief read INI file and parse all options into memory - \param filename full path to INI file (~/.manaworld/tmw.ini) - - NOTE: - first a line is checked wether it is a comment or not by - looking for INI_COMMENTER. after this another check is - done for INI_DELIMITER if the previous check failed. - if this line is a valid option all spaces in it get - stripped away (including the value) and it is added to - the list iniOptions. -*/ +Configuration::OptionValue::OptionValue(): + numericValue(0.0f) +{ +} + void Configuration::init(std::string filename) { + /* NOTE: + * first a line is checked wether it is a comment or not by + * looking for INI_COMMENTER. after this another check is + * done for INI_DELIMITER if the previous check failed. + * if this line is a valid option all spaces in it get + * stripped away (including the value) and it is added to + * the list iniOptions. + */ std::ifstream inFile(filename.c_str(), std::ifstream::in); std::string inBuffer; unsigned int position; - INI_OPTION optionTmp; + OptionValue optionTmp; iniOptions.clear(); while (inFile.good()) { getline(inFile, inBuffer, '\n'); + std::cout << inBuffer << std::endl; if (inBuffer.substr(0, 1) != INI_COMMENTER) { + // Replace spaces with void + while (inBuffer.find(" ", 0) != std::string::npos) { + inBuffer.replace(inBuffer.find(" ", 0), 1, ""); + } + position = inBuffer.find(INI_DELIMITER, 0); if (position != std::string::npos) { - // replace spaces with void :) - while (inBuffer.find(" ", 0) != std::string::npos) { - inBuffer.replace(inBuffer.find(" ", 0), 1, ""); - } + std::cout << inBuffer << std::endl; std::string key = inBuffer.substr(0, position); - optionTmp.stringValue = inBuffer.substr(position + 1, - inBuffer.length()); - inBuffer = inBuffer.substr(position+1, inBuffer.length()); - optionTmp.numericValue = atof(inBuffer.c_str()); + if (inBuffer.length() > position + 1) { + optionTmp.stringValue = inBuffer.substr( + position + 1, inBuffer.length()); + optionTmp.numericValue = atof( + optionTmp.stringValue.c_str()); + } iniOptions[key] = optionTmp; @@ -74,16 +80,12 @@ void Configuration::init(std::string filename) { inFile.close(); } -/** - \brief write the current settings back to an ini-file - \param filename full path to INI file (~/.manaworld/tmw.ini) -*/ bool Configuration::write(std::string filename) { std::ofstream out(filename.c_str(), std::ofstream::out | std::ofstream::trunc); char tmp[20]; - INI_OPTION optionTmp; + OptionValue optionTmp; for (iter = iniOptions.begin(); iter != iniOptions.end(); iter++) { out.write(iter->first.c_str(), iter->first.length()); out.write("=", 1); @@ -114,13 +116,8 @@ bool Configuration::write(std::string filename) { return true; } -/** - \brief set an option using a string value - \param key option identifier - \param value value -*/ void Configuration::setValue(std::string key, std::string value) { - INI_OPTION optionTmp; + OptionValue optionTmp; #ifdef __DEBUG std::cout << "Configuration::setValue(" << key << ", " << value << ")\n"; @@ -130,13 +127,8 @@ void Configuration::setValue(std::string key, std::string value) { iniOptions[key] = optionTmp; } -/** - \brief set an option using a numeric value - \param key option identifier - \param value value -*/ void Configuration::setValue(std::string key, float value) { - INI_OPTION optionTmp; + OptionValue optionTmp; #ifdef __DEBUG std::cout << "Configuration::setValue(" << key << ", " << value << ")\n"; @@ -146,11 +138,6 @@ void Configuration::setValue(std::string key, float value) { iniOptions[key] = optionTmp; } -/** - \brief get a value as string - \param key option identifier - \param deflt default option if not there or error -*/ std::string Configuration::getValue(std::string key, std::string deflt) { iter = iniOptions.find(key); if (iter != iniOptions.end()) { @@ -159,11 +146,6 @@ std::string Configuration::getValue(std::string key, std::string deflt) { return deflt; } -/** - \brief get a value as numeric (float) - \param key option identifier - \param deflt default option if not there or error -*/ float Configuration::getValue(std::string key, float deflt) { iter = iniOptions.find(key); if (iter != iniOptions.end()) { -- cgit v1.2.3-60-g2f50