sim: make warning for absent optional parameters optional
This is in support of tag-based checkpoint versioning. It should be possible to examine an optional parameter in a checkpoint during unserialization and not have it throw a warning.
This commit is contained in:
parent
fe47f0a72f
commit
1ad5b77229
2 changed files with 10 additions and 6 deletions
|
@ -223,12 +223,13 @@ paramIn(CheckpointIn &cp, const string &name, T ¶m)
|
|||
|
||||
template <class T>
|
||||
bool
|
||||
optParamIn(CheckpointIn &cp, const string &name, T ¶m)
|
||||
optParamIn(CheckpointIn &cp, const string &name, T ¶m, bool warn)
|
||||
{
|
||||
const string §ion(Serializable::currentSection());
|
||||
string str;
|
||||
if (!cp.find(section, name, str) || !parseParam(str, param)) {
|
||||
warn("optional parameter %s:%s not present\n", section, name);
|
||||
if (warn)
|
||||
warn("optional parameter %s:%s not present\n", section, name);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
|
@ -384,7 +385,8 @@ objParamIn(CheckpointIn &cp, const string &name, SimObject * ¶m)
|
|||
template void \
|
||||
paramIn(CheckpointIn &cp, const string &name, type & param); \
|
||||
template bool \
|
||||
optParamIn(CheckpointIn &cp, const string &name, type & param); \
|
||||
optParamIn(CheckpointIn &cp, const string &name, type & param, \
|
||||
bool warn); \
|
||||
template void \
|
||||
arrayParamOut(CheckpointOut &os, const string &name, \
|
||||
type const *param, unsigned size); \
|
||||
|
|
|
@ -100,13 +100,15 @@ void paramIn(CheckpointIn &cp, const std::string &name,
|
|||
}
|
||||
|
||||
template <class T>
|
||||
bool optParamIn(CheckpointIn &cp, const std::string &name, T ¶m);
|
||||
bool optParamIn(CheckpointIn &cp, const std::string &name, T ¶m,
|
||||
bool warn = true);
|
||||
|
||||
template <typename DataType, typename BitUnion>
|
||||
bool optParamIn(CheckpointIn &cp, const std::string &name,
|
||||
BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p)
|
||||
BitfieldBackend::BitUnionOperators<DataType, BitUnion> &p,
|
||||
bool warn = true)
|
||||
{
|
||||
return optParamIn(cp, name, p.__data);
|
||||
return optParamIn(cp, name, p.__data, warn);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
|
|
Loading…
Reference in a new issue