From 89f016aacbe92f90c1af98678043f2f6fc82c364 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Fri, 10 Oct 2008 21:45:35 -0700 Subject: cprintf: properly deal with pointer types --- src/base/varargs.hh | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/base') diff --git a/src/base/varargs.hh b/src/base/varargs.hh index f307e58d1..4328f2057 100644 --- a/src/base/varargs.hh +++ b/src/base/varargs.hh @@ -147,6 +147,20 @@ struct Any : public Base } }; +template +struct Any : public Base +{ + const T *argument; + + Any(const T *arg) : argument(arg) {} + + virtual void + add_arg(RECV &receiver) const + { + receiver.add_arg(argument); + } +}; + template struct Argument : public RefCountingPtr > { @@ -156,6 +170,8 @@ struct Argument : public RefCountingPtr > Argument(const Null &null) { } template Argument(const T& arg) : Base(new Any(arg)) { } + template + Argument(const T* arg) : Base(new Any(arg)) { } void add_arg(RECV &receiver) const -- cgit v1.2.3