Various fixes for revert/unrevert
[vng.git] / src / patches / CommitsMatcher.h
blobb4ad6e7545d214e7ed0001bd90fc89db683b1c8e
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 /**
25 * Using the various command line options you can use this class to match / skip commits.
27 class CommitsMatcher
29 public:
30 enum ExpectedAction {
31 SkipPatch,
32 ShowPatch,
33 Exit
36 CommitsMatcher();
37 ExpectedAction match(const Commit &commit);
39 private:
40 void findNormalMatchers();
42 enum State {
43 AllClear, // no matching to be done. All pass per definition.
44 BeforeFrom, // searching for the 'from' All fail until we find that.
45 MatchingPerItem,// Skipping / matching per item. As appropriate.
46 SearchingForTo, // Pass all until we find the 'to' match.
47 AfterTo // We are done, fail all.
49 bool useRegExp, useRegExpTo, useMatcher, useMatcherTo;
50 QRegExp m_regExp, m_regExpTo;
51 QStringMatcher m_matcher, m_matcherTo;
52 State m_state;