summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2014-09-19 10:35:09 -0400
committerAndreas Hansson <andreas.hansson@arm.com>2014-09-19 10:35:09 -0400
commit32c111eda40269b0047ba3c109b7a2ba878d2544 (patch)
treee806998d437a52de4818a1bd4110ae1c96768ea9
parentaddfd89dced4e2429050663db93ad37790f37a78 (diff)
downloadgem5-32c111eda40269b0047ba3c109b7a2ba878d2544.tar.xz
misc: Restore ostream flags where needed
This patch ensures we adhere to the normal ostream usage rules, and restore the flags after modifying them.
-rw-r--r--src/base/cprintf_formats.hh8
-rw-r--r--src/sim/system.cc4
2 files changed, 12 insertions, 0 deletions
diff --git a/src/base/cprintf_formats.hh b/src/base/cprintf_formats.hh
index 991238dee..5b3b34432 100644
--- a/src/base/cprintf_formats.hh
+++ b/src/base/cprintf_formats.hh
@@ -88,6 +88,8 @@ _format_integer(std::ostream &out, const T &data, Format &fmt)
{
using namespace std;
+ ios::fmtflags flags(out.flags());
+
switch (fmt.base) {
case Format::hex:
out.setf(std::ios::hex, std::ios::basefield);
@@ -137,6 +139,8 @@ _format_integer(std::ostream &out, const T &data, Format &fmt)
out.setf(std::ios::uppercase);
out << data;
+
+ out.flags(flags);
}
template <typename T>
@@ -145,6 +149,8 @@ _format_float(std::ostream &out, const T &data, Format &fmt)
{
using namespace std;
+ ios::fmtflags flags(out.flags());
+
switch (fmt.float_format) {
case Format::scientific:
if (fmt.precision != -1) {
@@ -189,6 +195,8 @@ _format_float(std::ostream &out, const T &data, Format &fmt)
}
out << data;
+
+ out.flags(flags);
}
template <typename T>
diff --git a/src/sim/system.cc b/src/sim/system.cc
index fe5be23dc..c0b9486f4 100644
--- a/src/sim/system.cc
+++ b/src/sim/system.cc
@@ -418,12 +418,16 @@ System::workItemEnd(uint32_t tid, uint32_t workid)
void
System::printSystems()
{
+ ios::fmtflags flags(cerr.flags());
+
vector<System *>::iterator i = systemList.begin();
vector<System *>::iterator end = systemList.end();
for (; i != end; ++i) {
System *sys = *i;
cerr << "System " << sys->name() << ": " << hex << sys << endl;
}
+
+ cerr.flags(flags);
}
void