summaryrefslogtreecommitdiff
path: root/sim/param.cc
diff options
context:
space:
mode:
authorSteve Reinhardt <stever@eecs.umich.edu>2003-10-28 23:24:40 -0800
committerSteve Reinhardt <stever@eecs.umich.edu>2003-10-28 23:24:40 -0800
commita0f3ee7e1770138edd4ee65a2ce6ba2a017d792e (patch)
tree7557d3370a70bbd2d89077a097b2a8c124cb2912 /sim/param.cc
parent3761bcf076e9289f34b4863d87e4b2afdd276341 (diff)
downloadgem5-a0f3ee7e1770138edd4ee65a2ce6ba2a017d792e.tar.xz
Add a few configuration DPRINTFs.
Fix handling of chars (uint8_ts) in serialization. Minor cleanup. sim/param.cc: Add specialization of showParam for char: output as ints, not as characters. Clean up comments a bit. --HG-- extra : convert_revision : 96349382447d892679dda9f83c028eec64252dc0
Diffstat (limited to 'sim/param.cc')
-rw-r--r--sim/param.cc39
1 files changed, 29 insertions, 10 deletions
diff --git a/sim/param.cc b/sim/param.cc
index 1ae11fdd2..5f3f604c1 100644
--- a/sim/param.cc
+++ b/sim/param.cc
@@ -85,8 +85,8 @@ BaseParam::die(const string &err) const
////////////////////////////////////////////////////////////////////////
//
-// Integer types all use to_number for parsing and '<<' for
-// displaying
+// The base implementations use to_number for parsing and '<<' for
+// displaying, suitable for integer types.
//
template <class T>
bool
@@ -103,8 +103,31 @@ showParam(ostream &os, const T &value)
}
//
-// Floating-point types
+// Template specializations:
+// - char (8-bit integer)
+// - floating-point types
+// - bool
+// - string
//
+
+// Treat 8-bit ints (chars) as ints on output, not as chars
+template <>
+void
+showParam(ostream &os, const char &value)
+{
+ os << (int)value;
+}
+
+
+template <>
+void
+showParam(ostream &os, const unsigned char &value)
+{
+ os << (unsigned int)value;
+}
+
+
+// Use sscanf() for FP types as to_number() only handles integers
template <>
bool
parseParam(const string &s, float &value)
@@ -119,9 +142,7 @@ parseParam(const string &s, double &value)
return (sscanf(s.c_str(), "%lf", &value) == 1);
}
-//
-// bool
-//
+// Be flexible about what we take for bool
template <>
bool
parseParam(const string &s, bool &value)
@@ -141,7 +162,7 @@ parseParam(const string &s, bool &value)
return false;
}
-
+// Display bools as strings
template <>
void
showParam(ostream &os, const bool &value)
@@ -150,9 +171,7 @@ showParam(ostream &os, const bool &value)
}
-//
-// string
-//
+// String requires no processing to speak of
template <>
bool
parseParam(const string &s, string &value)