OSDN Git Service

Change Dir Structure to be same as TortoiseSVN'
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RevisionGraph / RemovePathsBySubString.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 #pragma once\r
20 \r
21 // include base classes\r
22 \r
23 #include "LogCacheGlobals.h"\r
24 #include "CopyFilterOptions.h"\r
25 #include "revisiongraphoptionsimpl.h"\r
26 #include "Resource.h"\r
27 \r
28 /** Remove all branches / tags that have been deleted and have\r
29 * no surviving copy.\r
30 */\r
31 \r
32 using namespace LogCache;\r
33 \r
34 class CRemovePathsBySubString \r
35     : public CRevisionGraphOptionImpl< ICopyFilterOption\r
36                                      , 55\r
37                                      , 0>\r
38 {\r
39 private:\r
40 \r
41     /// all paths with these sub-strings shall be removed\r
42 \r
43     std::set<std::string> filterPaths;\r
44 \r
45     /// cache results for fully cached paths\r
46 \r
47     enum PathClassification\r
48     {\r
49         UNKNOWN = 0, \r
50         KEEP = 1, \r
51         REMOVE = 3\r
52     };\r
53 \r
54     mutable std::vector<PathClassification> pathClassification;\r
55 \r
56 public:\r
57 \r
58     /// construction\r
59 \r
60     CRemovePathsBySubString (CRevisionGraphOptionList& list);\r
61 \r
62     /// access to the sub-string container\r
63 \r
64     const std::set<std::string>& GetFilterPaths() const;\r
65     std::set<std::string>& GetFilterPaths();\r
66 \r
67     /// implement ICopyFilterOption\r
68 \r
69     virtual EResult ShallRemove (const CFullGraphNode* node) const;\r
70     virtual void Prepare();\r
71 };\r