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()
{
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

View 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();
};

View file

@ -26,24 +26,36 @@
#
# 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 = {}