From 70176fecd1ff04f7b8957f3110497d758310b569 Mon Sep 17 00:00:00 2001 From: Andreas Sandberg Date: Tue, 26 Aug 2014 10:13:45 -0400 Subject: 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. --- src/base/trace.hh | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'src/base/trace.hh') 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 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 -- cgit v1.2.3