diff options
Diffstat (limited to 'src/lintmanager.cpp')
-rw-r--r-- | src/lintmanager.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/lintmanager.cpp b/src/lintmanager.cpp index 3b49b0b..8acb622 100644 --- a/src/lintmanager.cpp +++ b/src/lintmanager.cpp @@ -48,11 +48,22 @@ void LintManager::addRule(RuleBase *const rule) void LintManager::deleteRule(RuleBase *const rule) { - FOR_EACH (std::vector<RuleBase*>::iterator, it, mRules) + deleteFrom(rule, mRules); +} + +void LintManager::deleteSelectedRule(RuleBase *const rule) +{ + deleteFrom(rule, mSelectedRules); +} + +void LintManager::deleteFrom(RuleBase *const rule, + std::vector<RuleBase*> &rules) +{ + FOR_EACH (std::vector<RuleBase*>::iterator, it, rules) { if (*it == rule) { - mRules.erase(it); + rules.erase(it); return; } } @@ -109,9 +120,12 @@ void LintManager::applyRulesToFile() const std::string &str = *itStr; rule->setLine(line); rule->parseLine(str); + if (!rule->getFlag()) + break; line ++; } - rule->end(); + if (rule->getFlag()) + rule->end(); } } @@ -145,6 +159,7 @@ void LintManager::selectRulesForFile() { // printf("set file %s, for rule %s\n", // mFileName.c_str(), rule->getName().c_str()); + rule->init(); rule->setFile(mFileName); rule->start(); mSelectedRules.push_back(rule); |