Make vng whatsnew not timeout on a large repo and code caches.
[vng.git] / src / patches / CommitsMatcher.h
blob1b5b111469a99a1b1a07e14e24a6d45302298cfb
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
26 public:
27 enum ExpectedAction {
28 SkipPatch,
29 ShowPatch,
30 Exit
33 CommitsMatcher();
34 ExpectedAction match(const Commit &commit);
36 private:
37 void findNormalMatchers();
39 enum State {
40 AllClear, // no matching to be done. All pass per definition.
41 BeforeFrom, // searching for the 'from' All fail until we find that.
42 MatchingPerItem,// Skipping / matching per item. As appropriate.
43 SearchingForTo, // Pass all until we find the 'to' match.
44 AfterTo // We are done, fail all.
46 bool useRegExp, useRegExpTo, useMatcher, useMatcherTo;
47 QRegExp m_regExp, m_regExpTo;
48 QStringMatcher m_matcher, m_matcherTo;
49 State m_state;