diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-05-24 14:07:19 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-05-24 14:07:41 +0300 |
commit | cb343652934540050a4da3f9a8446463db37b98b (patch) | |
tree | a663e4c86d28790a29faf058fff4fd80fc8081a5 | |
parent | 04dc442ed114e37bcd7a3c2722ea38bab27023a9 (diff) | |
download | mplint-cb343652934540050a4da3f9a8446463db37b98b.tar.gz mplint-cb343652934540050a4da3f9a8446463db37b98b.tar.bz2 mplint-cb343652934540050a4da3f9a8446463db37b98b.tar.xz mplint-cb343652934540050a4da3f9a8446463db37b98b.zip |
Add macro for quick rules definiton.
-rw-r--r-- | src/Makefile.am | 4 | ||||
-rw-r--r-- | src/lintmanager.cpp | 14 | ||||
-rw-r--r-- | src/lintmanager.h | 2 | ||||
-rw-r--r-- | src/rulebase.cpp | 5 | ||||
-rw-r--r-- | src/rulebase.h | 2 | ||||
-rw-r--r-- | src/rules/dump.cpp | 16 | ||||
-rw-r--r-- | src/template.hpp (renamed from src/rules/dump.h) | 31 |
7 files changed, 47 insertions, 27 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 4367755..b90361d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -13,8 +13,8 @@ mplint_SOURCES = \ main.cpp \ rulebase.cpp \ rulebase.h \ - rules/dump.cpp \ - rules/dump.h + template.hpp \ + rules/dump.cpp # set the include path found by configure AM_CPPFLAGS = $(all_includes) diff --git a/src/lintmanager.cpp b/src/lintmanager.cpp index 69cd21c..01c28e8 100644 --- a/src/lintmanager.cpp +++ b/src/lintmanager.cpp @@ -22,8 +22,6 @@ #include "rulebase.h" -#include "rules/dump.h" - #include <dirent.h> #include <fstream> #include <regex> @@ -48,6 +46,18 @@ void LintManager::addRule(RuleBase *const rule) mRules.push_back(rule); } +void LintManager::deleteRule(RuleBase *const rule) +{ + FOR_EACH (std::vector<RuleBase*>::iterator, it, mRules) + { + if (*it == rule) + { + mRules.erase(it); + return; + } + } +} + void LintManager::enumFiles(std::string path) { path += "/"; diff --git a/src/lintmanager.h b/src/lintmanager.h index 4fe6902..b504482 100644 --- a/src/lintmanager.h +++ b/src/lintmanager.h @@ -37,6 +37,8 @@ class LintManager final void addRule(RuleBase *const rule); + void deleteRule(RuleBase *const rule); + protected: void enumFiles(std::string path); diff --git a/src/rulebase.cpp b/src/rulebase.cpp index 7a53c9b..c5a795d 100644 --- a/src/rulebase.cpp +++ b/src/rulebase.cpp @@ -45,3 +45,8 @@ void RuleBase::addMask(const std::string &mask) { mFileMasks.insert(mask); } + +void RuleBase::deleteSelf() +{ + lint.deleteRule(this); +} diff --git a/src/rulebase.h b/src/rulebase.h index 7d8b0b0..a92516b 100644 --- a/src/rulebase.h +++ b/src/rulebase.h @@ -59,6 +59,8 @@ class RuleBase void addMask(const std::string &mask); + void deleteSelf(); + std::set<std::string> mFileMasks; std::string file; diff --git a/src/rules/dump.cpp b/src/rules/dump.cpp index 3140e6a..87c1aff 100644 --- a/src/rules/dump.cpp +++ b/src/rules/dump.cpp @@ -18,27 +18,23 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "rules/dump.h" +#include "template.hpp" -#include "localconsts.h" +registerRule(dump) -namespace -{ - Dump instance; -} - -Dump::Dump() +constructRule(dump) { addMask("(.+)[.]cpp"); addMask("(.+)[.]h"); + deleteSelf(); } -void Dump::init() +initRule(dump) { printRaw("Checking file: " + file); } -void Dump::parseLine(const std::string &data) +parseLineRule(dump) { print(data); } diff --git a/src/rules/dump.h b/src/template.hpp index 6a91ef9..3aa0003 100644 --- a/src/rules/dump.h +++ b/src/template.hpp @@ -18,21 +18,26 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef RULES_DUMP_H -#define RULES_DUMP_H - #include "rulebase.h" #include "localconsts.h" -class Dump : public RuleBase -{ - public: - Dump(); - - void init(); - - void parseLine(const std::string &data); -}; +#define registerRule(name) \ +class name : public RuleBase \ +{ \ + public: \ + name(); \ +\ + void init(); \ +\ + void parseLine(const std::string &data); \ +}; \ +\ +namespace \ +{ \ + name instance; \ +} \ -#endif // RULES_DUMP_H +#define constructRule(name) name::name() +#define initRule(name) void name::init() +#define parseLineRule(name) void name::parseLine(const std::string &data) |