MCPcopy Create free account
hub / github.com/Kitware/VTK / Visit

Method Visit

Common/DataModel/vtkDataAssembly.cxx:1169–1245  ·  view source on GitHub ↗

------------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

1167
1168//------------------------------------------------------------------------------
1169void vtkDataAssembly::Visit(int id, vtkDataAssemblyVisitor* visitor, int traversal_order) const
1170{
1171 const auto& internals = (*this->Internals);
1172 if (visitor == nullptr || internals.NodeMap.find(id) == internals.NodeMap.end())
1173 {
1174 vtkErrorMacro("Invalid parameters.");
1175 return;
1176 }
1177
1178 visitor->TraversalOrder = traversal_order;
1179 visitor->Assembly = this;
1180 auto& vinternals = *(visitor->Internals);
1181
1182 if (traversal_order == vtkDataAssembly::TraversalOrder::DepthFirst)
1183 {
1184 std::function<void(const pugi::xml_node&)> iterate;
1185 iterate = [&](const pugi::xml_node& node)
1186 {
1187 const auto cid = node.attribute("id").as_int(-1);
1188 vinternals.CurrentNode = node;
1189 visitor->Visit(cid);
1190
1191 // Do subtree, if enabled.
1192 if (visitor->GetTraverseSubtree(cid))
1193 {
1194 visitor->BeginSubTree(cid);
1195 for (const auto& child : node.children())
1196 {
1197 if (::IsAssemblyNode(child))
1198 {
1199 vinternals.CurrentNode = child;
1200 iterate(child);
1201 }
1202 }
1203 vinternals.CurrentNode = node;
1204 visitor->EndSubTree(cid);
1205 }
1206 };
1207 iterate(internals.NodeMap.at(id));
1208 }
1209 else
1210 {
1211 // breadth-first traversal.
1212 std::deque<pugi::xml_node> fifo_visited;
1213 vinternals.CurrentNode = internals.NodeMap.at(id);
1214 visitor->Visit(id);
1215
1216 fifo_visited.push_back(internals.NodeMap.at(id));
1217 while (!fifo_visited.empty())
1218 {
1219 auto node = fifo_visited.front();
1220 fifo_visited.pop_front();
1221
1222 const auto cid = node.attribute("id").as_int(-1);
1223 vinternals.CurrentNode = node;
1224 if (visitor->GetTraverseSubtree(cid))
1225 {
1226 visitor->BeginSubTree(cid);

Callers 6

FindFirstNodeWithNameMethod · 0.95
FindNodesWithNameMethod · 0.95
GetChildNodesMethod · 0.95
GetDataSetIndicesMethod · 0.95
SelectNodesMethod · 0.95
VisitFunction · 0.45

Calls 15

IsAssemblyNodeFunction · 0.85
xml_nodeClass · 0.85
as_intMethod · 0.80
attributeMethod · 0.80
BeginSubTreeMethod · 0.80
childrenMethod · 0.80
pop_frontMethod · 0.80
findMethod · 0.45
endMethod · 0.45
GetTraverseSubtreeMethod · 0.45
EndSubTreeMethod · 0.45
atMethod · 0.45

Tested by

no test coverage detected