+++ /dev/null
-// TortoiseSVN - a Windows shell extension for easy version control\r
-\r
-// Copyright (C) 2003-2008 - TortoiseSVN\r
-\r
-// This program is free software; you can redistribute it and/or\r
-// modify it under the terms of the GNU General Public License\r
-// as published by the Free Software Foundation; either version 2\r
-// of the License, or (at your option) any later version.\r
-\r
-// This program is distributed in the hope that it will be useful,\r
-// but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-// GNU General Public License for more details.\r
-\r
-// You should have received a copy of the GNU General Public License\r
-// along with this program; if not, write to the Free Software Foundation,\r
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
-//\r
-#pragma once\r
-\r
-// required includes\r
-\r
-#include "VisibleGraphNode.h"\r
-\r
-/**\r
-* Contains a filtered copy of some \ref CFullGraph instance.\r
-* \r
-* Acts as factory and container for all nodes and their sub-structres.\r
-*/\r
-\r
-class CVisibleGraph\r
-{\r
-private:\r
-\r
- CVisibleGraphNode::CFactory nodeFactory;\r
-\r
- /// the graph is actually a forest of trees\r
-\r
- std::vector<CVisibleGraphNode*> roots;\r
-\r
-public:\r
-\r
- /// construction / destruction\r
-\r
- CVisibleGraph(void);\r
- ~CVisibleGraph(void);\r
-\r
- /// modification\r
-\r
- void Clear();\r
- CVisibleGraphNode* Add ( const CFullGraphNode* base\r
- , CVisibleGraphNode* source\r
- , bool preserveNode);\r
-\r
- void ReplaceRoot (CVisibleGraphNode* oldRoot, CVisibleGraphNode* newRoot);\r
- void RemoveRoot (CVisibleGraphNode* root);\r
- void AddRoot (CVisibleGraphNode* root);\r
-\r
- /// member access\r
-\r
- size_t GetRootCount() const;\r
- CVisibleGraphNode* GetRoot (size_t index);\r
- const CVisibleGraphNode* GetRoot (size_t index) const;\r
-\r
- size_t GetNodeCount() const;\r
-\r
- /// factory access\r
-\r
- CVisibleGraphNode::CFactory& GetFactory();\r
-};\r
-\r
-/// member access\r
-\r
-inline size_t CVisibleGraph::GetRootCount() const\r
-{\r
- return roots.size();\r
-}\r
-\r
-inline const CVisibleGraphNode* CVisibleGraph::GetRoot (size_t index) const\r
-{\r
- return roots[index];\r
-}\r
-\r
-inline CVisibleGraphNode* CVisibleGraph::GetRoot (size_t index)\r
-{\r
- return roots[index];\r
-}\r
-\r
-inline size_t CVisibleGraph::GetNodeCount() const\r
-{\r
- return nodeFactory.GetNodeCount();\r
-}\r
-\r
-inline CVisibleGraphNode::CFactory& CVisibleGraph::GetFactory()\r
-{\r
- return nodeFactory;\r
-}\r