summaryrefslogtreecommitdiff
path: root/base
diff options
context:
space:
mode:
authorNathan Binkert <binkertn@umich.edu>2003-10-26 22:42:45 -0500
committerNathan Binkert <binkertn@umich.edu>2003-10-26 22:42:45 -0500
commit13bcf233f1c74eba70017a6964e0a2c6514c9130 (patch)
treefc7f98d54b4553f58dbd975070e3e329fbc29e6d /base
parent91293e02d2cf227a8cbeb4f4bc5aaed5cc86bac4 (diff)
downloadgem5-13bcf233f1c74eba70017a6964e0a2c6514c9130.tar.xz
Add an append= keyword that works in a somewhat similar way to
default=. In the append= case, when looking up an entry, it also looks in the section named by the append= for something to append to the entry --HG-- extra : convert_revision : b51915094ad3ca151d7f241c29e19b6b29d3a3c0
Diffstat (limited to 'base')
-rw-r--r--base/inifile.cc30
-rw-r--r--base/inifile.hh3
2 files changed, 31 insertions, 2 deletions
diff --git a/base/inifile.cc b/base/inifile.cc
index 52468f46e..7e7485bcb 100644
--- a/base/inifile.cc
+++ b/base/inifile.cc
@@ -367,14 +367,40 @@ IniFile::findDefault(const string &_section, const string &entry,
string &value) const
{
string section = _section;
- while (!find(section, entry, value)) {
- if (!find(section, "default", section))
+ while (!findAppend(section, entry, value)) {
+ if (!find(section, "default", section)) {
return false;
+ }
}
return true;
}
+bool
+IniFile::findAppend(const string &_section, const string &entry,
+ string &value) const
+{
+ string section = _section;
+ bool ret = false;
+ bool first = true;
+
+ do {
+ string val;
+ if (find(section, entry, val)) {
+ ret = true;
+ if (first) {
+ value = val;
+ first = false;
+ } else {
+ value += " ";
+ value += val;
+ }
+
+ }
+ } while (find(section, "append", section));
+
+ return ret;
+}
bool
IniFile::Section::printUnreferenced(const string &sectionName)
diff --git a/base/inifile.hh b/base/inifile.hh
index 3a82f2d4d..34424eb4b 100644
--- a/base/inifile.hh
+++ b/base/inifile.hh
@@ -196,6 +196,9 @@ class IniFile
bool findDefault(const std::string &section, const std::string &entry,
std::string &value) const;
+ bool findAppend(const std::string &section, const std::string &entry,
+ std::string &value) const;
+
/// Print unreferenced entries in object. Iteratively calls
/// printUnreferend() on all the constituent sections.
bool printUnreferenced();