From f7190f06bdfc24415ace9dad391aed71aca8f914 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 24 May 2014 14:55:48 +0300 Subject: Add macro for fast creating rule with single mask. --- src/rules/dump.cpp | 19 ++++++++++++------- src/template.hpp | 23 ++++++++++++++++++++++- 2 files changed, 34 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/rules/dump.cpp b/src/rules/dump.cpp index 87c1aff..b4cec48 100644 --- a/src/rules/dump.cpp +++ b/src/rules/dump.cpp @@ -20,21 +20,26 @@ #include "template.hpp" -registerRule(dump) +registerRuleExt(dumpCpp, "(.+)[.]cpp") -constructRule(dump) +initRule(dumpCpp) { - addMask("(.+)[.]cpp"); - addMask("(.+)[.]h"); - deleteSelf(); + printRaw("Checking file: " + file); +} + +parseLineRule(dumpCpp) +{ + print(data); } -initRule(dump) +registerRuleExt(dumpH, "(.+)[.]h") + +initRule(dumpH) { printRaw("Checking file: " + file); } -parseLineRule(dump) +parseLineRule(dumpH) { print(data); } diff --git a/src/template.hpp b/src/template.hpp index 3aa0003..2bd9811 100644 --- a/src/template.hpp +++ b/src/template.hpp @@ -35,9 +35,30 @@ class name : public RuleBase \ \ namespace \ { \ - name instance; \ + name instance##name; \ } \ +#define registerRuleExt(name, ext) \ +class name : public RuleBase \ +{ \ + public: \ + name() \ + { \ + setName(#name); \ + addMask(ext); \ + } \ +\ + void init(); \ +\ + void parseLine(const std::string &data); \ +}; \ +\ +namespace \ +{ \ + name instance##name; \ +} \ + + #define constructRule(name) name::name() #define initRule(name) void name::init() #define parseLineRule(name) void name::parseLine(const std::string &data) -- cgit v1.2.3-60-g2f50