diff options
author | Andreas Sandberg <Andreas.Sandberg@ARM.com> | 2014-08-26 10:13:45 -0400 |
---|---|---|
committer | Andreas Sandberg <Andreas.Sandberg@ARM.com> | 2014-08-26 10:13:45 -0400 |
commit | 70176fecd1ff04f7b8957f3110497d758310b569 (patch) | |
tree | ec2f32ee03a8a43a31bcfedd164b1ec3ee229532 /src/base/trace.hh | |
parent | f3e5fee74373d16849a58a80827c54c773aa05e2 (diff) | |
download | gem5-70176fecd1ff04f7b8957f3110497d758310b569.tar.xz |
base: Replace the internal varargs stuff with C++11 constructs
We currently use our own home-baked support for type-safe variadic
functions. This is confusing and somewhat limited (e.g., cprintf only
supports a limited number of arguments). This changeset converts all
uses of our internal varargs support to use C++11 variadic macros.
Diffstat (limited to 'src/base/trace.hh')
-rw-r--r-- | src/base/trace.hh | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/base/trace.hh b/src/base/trace.hh index eb0ab9dae..3e6e37bd3 100644 --- a/src/base/trace.hh +++ b/src/base/trace.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2014 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2001-2006 The Regents of The University of Michigan * All rights reserved. * @@ -55,8 +67,20 @@ void dumpStatus(); extern ObjectMatch ignore; extern const std::string DefaultName; -void dprintf(Tick when, const std::string &name, const char *format, - CPRINTF_DECLARATION); +bool __dprintf_prologue(Tick when, const std::string &name); + +template<typename ...Args> void +dprintf(Tick when, const std::string &name, const char *format, + const Args &...args) +{ + if (!__dprintf_prologue(when, name)) + return; + + std::ostream &os(output()); + ccprintf(os, format, args...); + os.flush(); +} + void dump(Tick when, const std::string &name, const void *data, int len); } // namespace Trace |