OSDN Git Service

ProgressDlg: Changed 'OK' into 'Close' and 'Cancel' into 'Abort'
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / RevisionGraph / FullGraphBuilder.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 "RevisionInfoContainer.h"\r
22 \r
23 namespace LogCache\r
24 {\r
25     class CDictionaryBasedTempPath;\r
26     class CCachedLogInfo;\r
27 }\r
28 \r
29 using namespace LogCache;\r
30 \r
31 class CFullHistory;\r
32 class CFullGraph;\r
33 class CSearchPathTree;\r
34 class SCopyInfo;\r
35 \r
36 /**\r
37  * \ingroup TortoiseProc\r
38  */\r
39 class CFullGraphBuilder\r
40 {\r
41 public:\r
42 \r
43         CFullGraphBuilder (const CFullHistory& history, CFullGraph& graph);\r
44         ~CFullGraphBuilder(void);\r
45 \r
46         void Run();\r
47 \r
48 private:\r
49 \r
50         void AnalyzeReplacements ( revision_t revision\r
51                                                      , CRevisionInfoContainer::CChangesIterator first\r
52                                                      , CRevisionInfoContainer::CChangesIterator last\r
53                                                      , CSearchPathTree* startNode\r
54                                                      , std::vector<CSearchPathTree*>& toRemove);\r
55         void AnalyzeRevisions ( revision_t revision\r
56                                                   , CRevisionInfoContainer::CChangesIterator first\r
57                                                   , CRevisionInfoContainer::CChangesIterator last\r
58                                                   , CSearchPathTree* startNode\r
59                                                   , std::vector<CSearchPathTree*>& toRemove);\r
60     void AnalyzeAsChanges ( revision_t revision\r
61                                           , CSearchPathTree* searchNode);\r
62         void AddCopiedPaths ( revision_t revision\r
63                                             , CSearchPathTree* rootNode\r
64                                             , SCopyInfo**& lastToCopy);\r
65         void FillCopyTargets ( revision_t revision\r
66                                              , CSearchPathTree* rootNode\r
67                                              , SCopyInfo**& lastFromCopy);\r
68     bool IsLatestCopySource ( revision_t fromRevision\r
69                             , revision_t toRevision\r
70                             , const CDictionaryBasedPath& fromPath\r
71                             , const CDictionaryBasedTempPath& currentPath);\r
72     bool TargetPathExists ( revision_t revision\r
73                           , const CDictionaryBasedPath& path);\r
74 \r
75     /// data members\r
76 \r
77     const CFullHistory& history;\r
78     CFullGraph& graph;\r
79 };\r