extended CParser to be able to read/save any string
git-svn-id: https://clonekeenplus.svn.sourceforge.net/svnroot/clonekeenplus/cgenius/trunk@154 4df4b0f3-56ce-47cb-b001-ed939b7d65a6
This commit is contained in:
@@ -79,7 +79,7 @@ bool CParser::saveParseFile() // open, write on the file and close
|
|||||||
// read the value of the to be seeked keyword and returns it as an int.
|
// read the value of the to be seeked keyword and returns it as an int.
|
||||||
// If no value was detected, it returns -1;
|
// If no value was detected, it returns -1;
|
||||||
// If something was detected, the file is also rewinded!
|
// If something was detected, the file is also rewinded!
|
||||||
int CParser::getIntValue(const std::string& keyword, const std::string& category)
|
std::string CParser::getValue(const std::string& keyword, const std::string& category, const std::string& def)
|
||||||
{
|
{
|
||||||
// The getter will search for category and than for keyword. After that, read the value and return it!
|
// The getter will search for category and than for keyword. After that, read the value and return it!
|
||||||
for(std::list<std::string>::iterator line = m_filebuffer.begin() ; line != m_filebuffer.end() ; ++line )
|
for(std::list<std::string>::iterator line = m_filebuffer.begin() ; line != m_filebuffer.end() ; ++line )
|
||||||
@@ -95,29 +95,26 @@ int CParser::getIntValue(const std::string& keyword, const std::string& category
|
|||||||
if((*line)[0] == '[') break;
|
if((*line)[0] == '[') break;
|
||||||
|
|
||||||
if(subStrCaseEqual(*line, keyword + " =", keyword.size() + 2))
|
if(subStrCaseEqual(*line, keyword + " =", keyword.size() + 2))
|
||||||
{
|
return line->substr(keyword.size() + 2);
|
||||||
int value = from_string<int>(line->substr(keyword.size() + 2));
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return -1;
|
return def;
|
||||||
}
|
}
|
||||||
|
|
||||||
// This function saves the value of a keyword. If the value already exists in the file
|
// This function saves the value of a keyword. If the value already exists in the file
|
||||||
// it will be overwritten.
|
// it will be overwritten.
|
||||||
// If something was written the file is also rewinded!
|
// If something was written the file is also rewinded!
|
||||||
void CParser::saveIntValue(const std::string& keyword, const std::string& category,int value)
|
void CParser::saveValue(const std::string& keyword, const std::string& category, const std::string& value)
|
||||||
{
|
{
|
||||||
// Three cases:
|
// Three cases:
|
||||||
// 1.- category doesn't exist
|
// 1.- category doesn't exist
|
||||||
// 2.- category exists, but keyword not
|
// 2.- category exists, but keyword not
|
||||||
// 3.- category and keyword exist, only the value must be changed
|
// 3.- category and keyword exist, only the value must be changed
|
||||||
|
|
||||||
std::string newline = keyword + " = " + itoa(value);
|
std::string newline = keyword + " = " + value;
|
||||||
|
|
||||||
for(std::list<std::string>::iterator line = m_filebuffer.begin() ; line != m_filebuffer.end() ; ++line )
|
for(std::list<std::string>::iterator line = m_filebuffer.begin() ; line != m_filebuffer.end() ; ++line )
|
||||||
{
|
{
|
||||||
@@ -159,3 +156,17 @@ void CParser::saveIntValue(const std::string& keyword, const std::string& catego
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int CParser::getIntValue(const std::string& keyword, const std::string& category, int def) {
|
||||||
|
std::string str = getValue(keyword, category);
|
||||||
|
if(str == "") return def;
|
||||||
|
|
||||||
|
bool fail = false;
|
||||||
|
int v = from_string<int>(str, fail);
|
||||||
|
if(fail) return def;
|
||||||
|
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CParser::saveIntValue(const std::string& keyword, const std::string& category,int value) {
|
||||||
|
saveValue(keyword, category, itoa(value));
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,15 +25,17 @@ public:
|
|||||||
bool saveParseFile();
|
bool saveParseFile();
|
||||||
|
|
||||||
// read the value of the to be seeked keyword and returns it as an int.
|
// read the value of the to be seeked keyword and returns it as an int.
|
||||||
// If no value was detected, it returns -1;
|
// If no value was detected, it returns def;
|
||||||
// If something was detected, the file is also rewinded!
|
int getIntValue(const std::string& keyword, const std::string& category, int def = -1);
|
||||||
int getIntValue(const std::string& keyword, const std::string& category);
|
|
||||||
|
|
||||||
// This function saves the value of a keyword. If the value already exists in the file
|
// This function saves the value of a keyword. If the value already exists in the file
|
||||||
// it will be overwritten.
|
// it will be overwritten.
|
||||||
// If something was written the file is also rewinded!
|
// If something was written the file is also rewinded!
|
||||||
void saveIntValue(const std::string& keyword, const std::string& category, int value);
|
void saveIntValue(const std::string& keyword, const std::string& category, int value);
|
||||||
|
|
||||||
|
std::string getValue(const std::string& keyword, const std::string& category, const std::string& def = "");
|
||||||
|
void saveValue(const std::string& keyword, const std::string& category, const std::string& value);
|
||||||
|
|
||||||
bool isOpen() {return m_isOpen;}
|
bool isOpen() {return m_isOpen;}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user