Changes to config to allow everything (including 'children'

and 'type') to be specified via instance name and not just
config class.  Old code only did instance-name lookup for
SimObject parameters.  This feature makes life easier for
transitioning to the Python script-based config.

sim/builder.cc:
    Use ConfigNode::find to look for "type" parameter so it can
    be found if set under instance name (not config class).
sim/param.cc:
    Make Param<bool> accept "1" for true and "0" for false.

--HG--
extra : convert_revision : f40d0878d0f03b2e216f0506c05d0e52db608cca
This commit is contained in:
Steve Reinhardt
2004-04-05 11:00:48 -07:00
parent 65205b82ac
commit 0ef91aa905
2 changed files with 5 additions and 4 deletions

View File

@@ -32,6 +32,7 @@
#include "base/misc.hh"
#include "sim/builder.hh"
#include "sim/configfile.hh"
#include "sim/config_node.hh"
#include "sim/host.hh"
#include "sim/sim_object.hh"
#include "sim/universe.hh"
@@ -153,7 +154,7 @@ SimObjectClass::createObject(IniFile &configDB,
// (specified by 'type=' parameter)
string simObjClassName;
if (!configDB.findDefault(configClassName, "type", simObjClassName)) {
if (!configNode->find("type", simObjClassName)) {
cerr << "Configuration class '" << configClassName << "' not found."
<< endl;
abort();

View File

@@ -147,14 +147,14 @@ template <>
bool
parseParam(const string &s, bool &value)
{
const string &lower = to_lower(s);
const string &ls = to_lower(s);
if (lower == "true" || lower == "t" || lower == "yes" || lower == "y") {
if (ls == "true" || ls == "t" || ls == "yes" || ls == "y" || ls == "1") {
value = true;
return true;
}
if (lower == "false" || lower == "f" || lower == "no" || lower == "n") {
if (ls == "false" || ls == "f" || ls == "no" || ls == "n" || ls == "0") {
value = false;
return true;
}