summaryrefslogtreecommitdiff
path: root/src/configuration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/configuration.cpp')
-rw-r--r--src/configuration.cpp78
1 files changed, 30 insertions, 48 deletions
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 <math.h>
-/**
- \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()) {