diff options
| author | Petr Machata <[email protected]> | 2010-09-07 23:08:05 +0200 |
|---|---|---|
| committer | Petr Machata <[email protected]> | 2010-09-07 23:08:05 +0200 |
| commit | a5411525fce00015f6911094b1013f50b16426ae (patch) | |
| tree | db07f98ba2312896bebfac9bbfd51f3b061422c6 /dwarflint/dwarflint.cc | |
| parent | 5ed27fdb82c2b21ca7d7ee2bf7f888e425cd99f0 (diff) | |
dwarflint: Add a lowlevel_checks pass
- which is where low-level checks are explicitly requested
- and what highlevel checks, also explicitly, depend on
Diffstat (limited to 'dwarflint/dwarflint.cc')
| -rw-r--r-- | dwarflint/dwarflint.cc | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/dwarflint/dwarflint.cc b/dwarflint/dwarflint.cc index cc11924e..f2116a82 100644 --- a/dwarflint/dwarflint.cc +++ b/dwarflint/dwarflint.cc @@ -97,13 +97,41 @@ dwarflint::check_registrar::enroll (dwarflint &lint) } } +namespace +{ + template <class T> void include (T &to, checkdescriptor const *cd); + + template <class T> + void add_deps (T &to, checkdescriptor const *cd) + { + for (typename T::const_iterator it = cd->prereq ().begin (); + it != cd->prereq ().end (); ++it) + include (to, *it); + } + + template <class T> + void include (T &to, checkdescriptor const *cd) + { + if (cd->hidden ()) + add_deps (to, cd); + else + to.insert (cd); + } +} + void dwarflint::check_registrar::list_checks () const { + typedef std::set<checkdescriptor const *> descset; + descset descriptors; for (std::vector <item *>::const_iterator it = _m_items.begin (); it != _m_items.end (); ++it) + include (descriptors, (*it)->descriptor ()); + + for (descset::const_iterator it = descriptors.begin (); + it != descriptors.end (); ++it) { - checkdescriptor const &cd = (*it)->descriptor (); + checkdescriptor const &cd = **it; if (be_verbose) std::cout << "=== " << cd.name () << " ==="; else @@ -122,7 +150,7 @@ dwarflint::check_registrar::list_checks () const if (be_verbose) { - checkgroups const &prereq = cd.prereq (); + prereqs const &prereq = cd.prereq (); if (!prereq.empty ()) std::cout << "prerequisites: " << prereq << std::endl; char const *desc = cd.description (); |
