debug: fix help output

This commit is contained in:
Nathan Binkert 2011-05-04 10:08:08 -04:00
parent 8ce85d3db6
commit 0dffd35741
3 changed files with 30 additions and 18 deletions

View file

@ -101,14 +101,14 @@ void
CompoundFlag::enable() CompoundFlag::enable()
{ {
SimpleFlag::enable(); SimpleFlag::enable();
for_each(flags.begin(), flags.end(), mem_fun(&Flag::enable)); for_each(_kids.begin(), _kids.end(), mem_fun(&Flag::enable));
} }
void void
CompoundFlag::disable() CompoundFlag::disable()
{ {
SimpleFlag::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 struct AllFlags : public Flag

View file

@ -44,6 +44,7 @@ class Flag
protected: protected:
const char *_name; const char *_name;
const char *_desc; const char *_desc;
std::vector<Flag *> _kids;
public: public:
Flag(const char *name, const char *desc); Flag(const char *name, const char *desc);
@ -51,6 +52,7 @@ class Flag
std::string name() const { return _name; } std::string name() const { return _name; }
std::string desc() const { return _desc; } std::string desc() const { return _desc; }
std::vector<Flag *> kids() { return _kids; }
virtual void enable() = 0; virtual void enable() = 0;
virtual void disable() = 0; virtual void disable() = 0;
@ -77,7 +79,12 @@ class SimpleFlag : public Flag
class CompoundFlag : public SimpleFlag class CompoundFlag : public SimpleFlag
{ {
protected: protected:
std::vector<Flag *> flags; void
addFlag(Flag &f)
{
if (&f != NULL)
_kids.push_back(&f);
}
public: public:
CompoundFlag(const char *name, const char *desc, 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); addFlag(f15); addFlag(f16); addFlag(f17); addFlag(f18); addFlag(f19);
} }
void
addFlag(Flag &f)
{
if (&f != NULL)
flags.push_back(&f);
}
void enable(); void enable();
void disable(); void disable();
}; };

View file

@ -26,24 +26,36 @@
# #
# Authors: Nathan Binkert # Authors: Nathan Binkert
from UserDict import DictMixin
import internal import internal
from internal.debug import SimpleFlag, CompoundFlag
from internal.debug import schedBreakCycle, setRemoteGDBPort from internal.debug import schedBreakCycle, setRemoteGDBPort
from m5.util import printList
def help(): def help():
print "Base Flags:" print "Base Flags:"
for flag in flags.basic: for name in sorted(flags):
print " %s: %s" % (flag, flags.descriptions[flag]) 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
print "Compound Flags:" print "Compound Flags:"
for flag in flags.compound: for name in sorted(flags):
if flag == 'All': if name == 'All':
continue continue
print " %s: %s" % (flag, flags.descriptions[flag]) flag = flags[name]
util.printList(flags.compoundMap[flag], indent=8) children = [c for c in flag.kids() ]
print 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): def __init__(self):
self._version = -1 self._version = -1
self._dict = {} self._dict = {}