1 /*=========================================================================
2
3 Program: Visualization Toolkit
4 Module: vtkGraphInternals.cxx
5
6 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7 All rights reserved.
8 See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9
10 This software is distributed WITHOUT ANY WARRANTY; without even
11 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12 PURPOSE. See the above copyright notice for more information.
13
14 =========================================================================*/
15 /*----------------------------------------------------------------------------
16 Copyright (c) Sandia Corporation
17 See Copyright.txt or http://www.paraview.org/HTML/Copyright.html for details.
18 ----------------------------------------------------------------------------*/
19 #include "vtkGraphInternals.h"
20
21 #include "vtkDistributedGraphHelper.h"
22 #include "vtkObjectFactory.h"
23
24 vtkStandardNewMacro(vtkGraphInternals);
25
26 //------------------------------------------------------------------------------
vtkGraphInternals()27 vtkGraphInternals::vtkGraphInternals()
28 {
29 this->NumberOfEdges = 0;
30 this->LastRemoteEdgeId = -1;
31 this->UsingPedigreeIds = false;
32 }
33
34 //------------------------------------------------------------------------------
35 vtkGraphInternals::~vtkGraphInternals() = default;
36
37 //------------------------------------------------------------------------------
PrintSelf(ostream & os,vtkIndent indent)38 void vtkGraphInternals::PrintSelf(ostream& os, vtkIndent indent)
39 {
40 this->Superclass::PrintSelf(os, indent);
41 os << indent << "NumberOfEdges: " << this->NumberOfEdges << endl;
42 os << indent << "LastRemoteEdgeId: " << this->LastRemoteEdgeId << endl;
43 os << indent << "LastRemoteEdgeSource: " << this->LastRemoteEdgeSource << endl;
44 os << indent << "LastRemoteEdgeTarget: " << this->LastRemoteEdgeTarget << endl;
45 os << indent << "UsingPedigreeIds: " << this->UsingPedigreeIds << endl;
46 }
47
48 //------------------------------------------------------------------------------
RemoveEdgeFromOutList(vtkIdType e,std::vector<vtkOutEdgeType> & outEdges)49 void vtkGraphInternals::RemoveEdgeFromOutList(vtkIdType e, std::vector<vtkOutEdgeType>& outEdges)
50 {
51 size_t outSize = outEdges.size();
52 size_t i = 0;
53 for (; i < outSize; ++i)
54 {
55 if (outEdges[i].Id == e)
56 {
57 break;
58 }
59 }
60 if (i == outSize)
61 {
62 vtkErrorMacro("Could not find edge in source edge list.");
63 return;
64 }
65 outEdges[i] = outEdges[outSize - 1];
66 outEdges.pop_back();
67 }
68
69 //------------------------------------------------------------------------------
RemoveEdgeFromInList(vtkIdType e,std::vector<vtkInEdgeType> & inEdges)70 void vtkGraphInternals::RemoveEdgeFromInList(vtkIdType e, std::vector<vtkInEdgeType>& inEdges)
71 {
72 size_t inSize = inEdges.size();
73 size_t i = 0;
74 for (; i < inSize; ++i)
75 {
76 if (inEdges[i].Id == e)
77 {
78 break;
79 }
80 }
81 if (i == inSize)
82 {
83 vtkErrorMacro("Could not find edge in source edge list.");
84 return;
85 }
86 inEdges[i] = inEdges[inSize - 1];
87 inEdges.pop_back();
88 }
89
90 //------------------------------------------------------------------------------
ReplaceEdgeFromOutList(vtkIdType from,vtkIdType to,std::vector<vtkOutEdgeType> & outEdges)91 void vtkGraphInternals::ReplaceEdgeFromOutList(
92 vtkIdType from, vtkIdType to, std::vector<vtkOutEdgeType>& outEdges)
93 {
94 size_t outSize = outEdges.size();
95 for (size_t i = 0; i < outSize; ++i)
96 {
97 if (outEdges[i].Id == from)
98 {
99 outEdges[i].Id = to;
100 }
101 }
102 }
103
104 //------------------------------------------------------------------------------
ReplaceEdgeFromInList(vtkIdType from,vtkIdType to,std::vector<vtkInEdgeType> & inEdges)105 void vtkGraphInternals::ReplaceEdgeFromInList(
106 vtkIdType from, vtkIdType to, std::vector<vtkInEdgeType>& inEdges)
107 {
108 size_t inSize = inEdges.size();
109 for (size_t i = 0; i < inSize; ++i)
110 {
111 if (inEdges[i].Id == from)
112 {
113 inEdges[i].Id = to;
114 }
115 }
116 }
117