OSDN Git Service

Change Dir Structure to be same as TortoiseSVN'
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RevisionGraph / CopyFilterOptions.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 "RevisionGraphOptions.h"\r
24 \r
25 /**\r
26 * Extends the base interface with a method that decides\r
27 * whether a node or sub-tree shall be copied at all.\r
28 */\r
29 \r
30 class ICopyFilterOption : public IRevisionGraphOption\r
31 {\r
32 public:\r
33 \r
34     enum EResult\r
35     {\r
36         KEEP_NODE = 0,\r
37         REMOVE_NODE = 1,\r
38         REMOVE_SUBTREE = 2,\r
39         PRESERVE_NODE = 3  // shall not be removed, even by other filters\r
40     };\r
41 \r
42     virtual EResult ShallRemove (const CFullGraphNode* node) const = 0;\r
43 };\r
44 \r
45 /**\r
46 * Filtered sub-set of \ref CAllRevisionGraphOptions.\r
47 * It allows the aggregated application of all copy options \r
48 * at once during the copy process.\r
49 *\r
50 * Contains only \ref ICopyFilterOption instances.\r
51 */\r
52 \r
53 class CCopyFilterOptions : public CRevisionGraphOptionList\r
54 {\r
55 private:\r
56 \r
57     std::vector<ICopyFilterOption*> options;\r
58 \r
59 public:\r
60 \r
61     CCopyFilterOptions (const std::vector<ICopyFilterOption*>& options);\r
62     virtual ~CCopyFilterOptions() {}\r
63 \r
64     /// apply all filters \r
65 \r
66     ICopyFilterOption::EResult ShallRemove (const CFullGraphNode* node) const;\r
67 };\r