update todo
[vng.git] / patches / CommitsMatcher.h
blobd1b7cd1b16978dcc65cb178f8c968482c53fe6b9
1 /*
2 * This file is part of the vng project
3 * Copyright (C) 2008 Thomas Zander <tzander@trolltech.com>
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 class Commit;
21 #include <QRegExp>
22 #include <QStringMatcher>
24 class CommitsMatcher {
25 public:
26 enum ExpectedAction {
27 SkipPatch,
28 ShowPatch,
29 Exit
32 CommitsMatcher();
33 ExpectedAction match(const Commit &commit);
35 private:
36 void findNormalMatchers();
38 enum State {
39 AllClear, // no matching to be done. All pass per definition.
40 BeforeFrom, // searching for the 'from' All fail until we find that.
41 MatchingPerItem,// Skipping / matching per item. As appropriate.
42 SearchingForTo, // Pass all until we find the 'to' match.
43 AfterTo // We are done, fail all.
45 bool useRegExp, useRegExpTo, useMatcher, useMatcherTo;
46 QRegExp m_regExp, m_regExpTo;
47 QStringMatcher m_matcher, m_matcherTo;
48 State m_state;