summaryrefslogtreecommitdiff
path: root/src/python/swig
diff options
context:
space:
mode:
authorNathan Binkert <nate@binkert.org>2011-04-15 10:44:32 -0700
committerNathan Binkert <nate@binkert.org>2011-04-15 10:44:32 -0700
commiteddac53ff60c579eff28134bde84783fe36d6214 (patch)
tree9095c6b64a6fdabf4e0d00b2c8f2ca40ad495f49 /src/python/swig
parentf946d7bcdb4d0b4327857d319dd4ecdd1c320d62 (diff)
downloadgem5-eddac53ff60c579eff28134bde84783fe36d6214.tar.xz
trace: reimplement the DTRACE function so it doesn't use a vector
At the same time, rename the trace flags to debug flags since they have broader usage than simply tracing. This means that --trace-flags is now --debug-flags and --trace-help is now --debug-help
Diffstat (limited to 'src/python/swig')
-rw-r--r--src/python/swig/debug.i52
-rw-r--r--src/python/swig/trace.i16
2 files changed, 52 insertions, 16 deletions
diff --git a/src/python/swig/debug.i b/src/python/swig/debug.i
index 8486075d3..c2eb3ed80 100644
--- a/src/python/swig/debug.i
+++ b/src/python/swig/debug.i
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2006 The Regents of The University of Michigan
+ * Copyright (c) 2010 The Hewlett-Packard Development Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -31,11 +32,62 @@
%module(package="m5.internal") debug
%{
+#include <cassert>
+#include <map>
+#include <string>
+#include <vector>
+
+#include "base/debug.hh"
#include "base/types.hh"
#include "sim/debug.hh"
+
+using namespace std;
+
+typedef map<string, Debug::Flag *> FlagsMap;
+typedef vector<Debug::Flag *> FlagsVec;
+
+namespace Debug {
+extern int allFlagsVersion;
+FlagsMap &allFlags();
+}
+
+inline int
+getAllFlagsVersion()
+{
+ return Debug::allFlagsVersion;
+}
+
+inline FlagsVec
+getAllFlags()
+{
+ FlagsMap &flagsMap = Debug::allFlags();
+
+ FlagsVec flags(flagsMap.size());
+
+ int index = 0;
+ FlagsMap::iterator i = flagsMap.begin();
+ FlagsMap::iterator end = flagsMap.end();
+ for (; i != end; ++i) {
+ assert(index < flags.size());
+ flags[index++] = i->second;
+ }
+
+ return flags;
+}
+
%}
+%ignore Debug::SimpleFlag::operator!;
+
+%include <std_string.i>
+%include <std_vector.i>
%include <stdint.i>
+%include "base/debug.hh"
%include "base/types.hh"
%include "sim/debug.hh"
+
+%template(AllFlags) std::vector<Debug::Flag *>;
+
+int getAllFlagsVersion();
+std::vector<Debug::Flag *> getAllFlags();
diff --git a/src/python/swig/trace.i b/src/python/swig/trace.i
index 5407b687f..3b049a3d6 100644
--- a/src/python/swig/trace.i
+++ b/src/python/swig/trace.i
@@ -41,18 +41,6 @@ output(const char *filename)
}
inline void
-set(const char *flag)
-{
- Trace::changeFlag(flag, true);
-}
-
-inline void
-clear(const char *flag)
-{
- Trace::changeFlag(flag, false);
-}
-
-inline void
ignore(const char *expr)
{
Trace::ignore.setExpression(expr);
@@ -61,10 +49,6 @@ ignore(const char *expr)
using Trace::enabled;
%}
-%inline %{
extern void output(const char *string);
-extern void set(const char *string);
-extern void clear(const char *string);
extern void ignore(const char *expr);
extern bool enabled;
-%}