Skip to content
Snippets Groups Projects
Commit 9b1da9ce authored by Oliver Sander's avatar Oliver Sander
Browse files

new, standard-conforming constification of hasSub() and hasKey(). Thanks to...

new, standard-conforming constification of hasSub() and hasKey().  Thanks to Benedikt and Carsten for their help

[[Imported from SVN: r5932]]
parent bc1aa7a4
No related branches found
No related tags found
No related merge requests found
......@@ -137,7 +137,7 @@ void ConfigParser::report(const string prefix) const
}
}
bool ConfigParser::hasKey(const string& key)
bool ConfigParser::hasKey(const string& key) const
{
string::size_type dot = key.find(".");
......@@ -147,14 +147,14 @@ bool ConfigParser::hasKey(const string& key)
if (subs.count(prefix) == 0)
return false;
ConfigParser& s = sub(prefix);
const ConfigParser& s = sub(prefix);
return s.hasKey(key.substr(dot+1));
}
else
return (values.count(key) != 0);
}
bool ConfigParser::hasSub(const string& key)
bool ConfigParser::hasSub(const string& key) const
{
string::size_type dot = key.find(".");
......@@ -164,7 +164,7 @@ bool ConfigParser::hasSub(const string& key)
if (subs.count(prefix) == 0)
return false;
ConfigParser& s = sub(prefix);
const ConfigParser& s = sub(prefix);
return s.hasSub(key.substr(dot+1));
}
else
......@@ -184,6 +184,19 @@ ConfigParser& ConfigParser::sub(const string& key)
return subs[key];
}
const ConfigParser& ConfigParser::sub(const string& key) const
{
string::size_type dot = key.find(".");
if (dot != string::npos)
{
const ConfigParser& s = sub(key.substr(0,dot));
return s.sub(key.substr(dot+1));
}
else
return subs.find(key)->second;
}
string& ConfigParser::operator[] (const string& key)
{
string::size_type dot = key.find(".");
......
......@@ -94,7 +94,7 @@ namespace Dune {
* \param key key name
* \return true if key exists in structure, otherwise false
*/
bool hasKey(const std::string& key);
bool hasKey(const std::string& key) const;
/** \brief test for substructure
......@@ -104,7 +104,7 @@ namespace Dune {
* \param sub substructure name
* \return true if substructure exists in structure, otherwise false
*/
bool hasSub(const std::string& sub);
bool hasSub(const std::string& sub) const;
/** \brief get value reference for key
......@@ -140,6 +140,14 @@ namespace Dune {
ConfigParser& sub(const std::string& sub);
/** \brief get const substructure by name
*
* \param sub substructure name
* \return reference to substructure
*/
const ConfigParser& sub(const std::string& sub) const;
/** \brief get value as string
*
* Returns pure string value for given key.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment