debug: fix help output
authorNathan Binkert <nate@binkert.org>
Wed, 4 May 2011 14:08:08 +0000 (10:08 -0400)
committerNathan Binkert <nate@binkert.org>
Wed, 4 May 2011 14:08:08 +0000 (10:08 -0400)
src/base/debug.cc
src/base/debug.hh
src/python/m5/debug.py

index be301da07f517e0785d004b9a068f68bbebdc9d5..71675aadac71595f4d51e9b0b83f6964951f7673 100644 (file)
@@ -101,14 +101,14 @@ void
 CompoundFlag::enable()
 {
     SimpleFlag::enable();
-    for_each(flags.begin(), flags.end(), mem_fun(&Flag::enable));
+    for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::enable));
 }
 
 void
 CompoundFlag::disable()
 {
     SimpleFlag::disable();
-    for_each(flags.begin(), flags.end(), mem_fun(&Flag::disable));
+    for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::disable));
 }
 
 struct AllFlags : public Flag
index ced6b4f488402130b84e6d8c87228a1795347873..d43117e71e7dffca39cc417a954faad025e9db17 100644 (file)
@@ -44,6 +44,7 @@ class Flag
   protected:
     const char *_name;
     const char *_desc;
+    std::vector<Flag *> _kids;
 
   public:
     Flag(const char *name, const char *desc);
@@ -51,6 +52,7 @@ class Flag
 
     std::string name() const { return _name; }
     std::string desc() const { return _desc; }
+    std::vector<Flag *> kids() { return _kids; }
 
     virtual void enable() = 0;
     virtual void disable() = 0;
@@ -77,7 +79,12 @@ class SimpleFlag : public Flag
 class CompoundFlag : public SimpleFlag
 {
   protected:
-    std::vector<Flag *> flags;
+    void
+    addFlag(Flag &f)
+    {
+        if (&f != NULL)
+            _kids.push_back(&f);
+    }
 
   public:
     CompoundFlag(const char *name, const char *desc,
@@ -99,13 +106,6 @@ class CompoundFlag : public SimpleFlag
         addFlag(f15); addFlag(f16); addFlag(f17); addFlag(f18); addFlag(f19);
     }
 
-    void
-    addFlag(Flag &f)
-    {
-        if (&f != NULL)
-            flags.push_back(&f);
-    }
-
     void enable();
     void disable();
 };
index 8231126a09ded366b44dfad464c78acae34c94b2..508bf2842e836aea10ff183cbb73a87cdf7f3883 100644 (file)
 #
 # Authors: Nathan Binkert
 
+from UserDict import DictMixin
+
 import internal
 
+from internal.debug import SimpleFlag, CompoundFlag
 from internal.debug import schedBreakCycle, setRemoteGDBPort
+from m5.util import printList
 
 def help():
     print "Base Flags:"
-    for flag in flags.basic:
-        print "    %s: %s" % (flag, flags.descriptions[flag])
+    for name in sorted(flags):
+        if name == 'All':
+            continue
+        flag = flags[name]
+        children = [c for c in flag.kids() ]
+        if not children:
+            print "    %s: %s" % (name, flag.desc())
     print
     print "Compound Flags:"
-    for flag in flags.compound:
-        if flag == 'All':
+    for name in sorted(flags):
+        if name == 'All':
             continue
-        print "    %s: %s" % (flag, flags.descriptions[flag])
-        util.printList(flags.compoundMap[flag], indent=8)
-        print
+        flag = flags[name]
+        children = [c for c in flag.kids() ]
+        if children:
+            print "    %s: %s" % (name, flag.desc())
+            printList([ c.name() for c in children ], indent=8)
+    print
 
-class AllFlags(object):
+class AllFlags(DictMixin):
     def __init__(self):
         self._version = -1
         self._dict = {}