From: Steve Reinhardt Date: Mon, 3 Nov 2003 05:49:15 +0000 (-0800) Subject: Print a warning rather than failing if we're unserializing and there's an X-Git-Tag: m5_1.0_beta2~281^2~8 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=2ac054386d9394689e728241972dab7184ae965d;p=gem5.git Print a warning rather than failing if we're unserializing and there's an object in the config that was not in the checkpointed config. This code compiles, but I haven't tested it... I'm committing it so Ron can have it. Should not effect anything that currently works. base/inifile.cc: base/inifile.hh: Add sectionExists() method so you can query whether a section exists without knowing any of the entry names that would be in it. sim/serialize.cc: sim/serialize.hh: Add Checkpoint::sectionExists() (pass through to IniFile). --HG-- extra : convert_revision : 905db122afdfe55946ab8493ccac0b1e715bc7c6 --- diff --git a/base/inifile.cc b/base/inifile.cc index 7e7485bcb..2717a534d 100644 --- a/base/inifile.cc +++ b/base/inifile.cc @@ -402,6 +402,14 @@ IniFile::findAppend(const string &_section, const string &entry, return ret; } + +bool +IniFile::sectionExists(const string §ionName) const +{ + return findSection(sectionName) != NULL; +} + + bool IniFile::Section::printUnreferenced(const string §ionName) { diff --git a/base/inifile.hh b/base/inifile.hh index f67fdc7be..f7229f2f2 100644 --- a/base/inifile.hh +++ b/base/inifile.hh @@ -208,6 +208,13 @@ class IniFile bool findAppend(const std::string §ion, const std::string &entry, std::string &value) const; + /// Determine whether the named section exists in the .ini file. + /// Note that the 'Section' class is (intentionally) not public, + /// so all clients can do is get a bool that says whether there + /// are any values in that section or not. + /// @return True if the section exists. + bool sectionExists(const std::string §ion) const; + /// Print unreferenced entries in object. Iteratively calls /// printUnreferend() on all the constituent sections. bool printUnreferenced(); diff --git a/sim/serialize.cc b/sim/serialize.cc index bd528c678..0eb26c31d 100644 --- a/sim/serialize.cc +++ b/sim/serialize.cc @@ -494,3 +494,10 @@ Checkpoint::findObj(const std::string §ion, const std::string &entry, return false; } + + +bool +Checkpoint::sectionExists(const std::string §ion) +{ + return db->sectionExists(section); +} diff --git a/sim/serialize.hh b/sim/serialize.hh index 78cbb702a..09e91d816 100644 --- a/sim/serialize.hh +++ b/sim/serialize.hh @@ -244,6 +244,8 @@ class Checkpoint bool findObj(const std::string §ion, const std::string &entry, Serializeable *&value); + + bool sectionExists(const std::string §ion); };