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

Method ReadTrees_2

IO/XML/vtkXMLHyperTreeGridReader.cxx:851–1053  ·  view source on GitHub ↗

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

Source from the content-addressed store, hash-verified

849
850//------------------------------------------------------------------------------
851void vtkXMLHyperTreeGridReader::ReadTrees_2(vtkXMLDataElement* element)
852{
853 vtkHyperTreeGrid* output = vtkHyperTreeGrid::SafeDownCast(this->GetCurrentOutput());
854 vtkNew<vtkHyperTreeGridNonOrientedCursor> treeCursor;
855
856 vtkXMLDataElement* treesElement = element->LookupElementWithName("Trees");
857
858 vtkXMLDataElement* treeIdsElement =
859 treesElement->FindNestedElementWithNameAndAttribute("DataArray", "Name", "TreeIds");
860
861 if (!treeIdsElement->GetAttribute("NumberOfTuples"))
862 {
863 // Empty htg
864 return;
865 }
866
867 auto treeIds = vtkSmartPointer<vtkTypeInt64Array>::Take(
868 vtkArrayDownCast<vtkTypeInt64Array>(this->CreateArray(treeIdsElement)));
869 vtkIdType treeIdsSize;
870
871 treeIdsElement->GetScalarAttribute("NumberOfTuples", treeIdsSize);
872 treeIds->SetNumberOfValues(treeIdsSize);
873 if (!this->ReadArrayValues(treeIdsElement, 0, treeIds, 0, treeIdsSize))
874 {
875 vtkErrorMacro("Failed to parse " << this->GetFileName()
876 << ". Missing / flawed array TreeIds, in XML element Trees");
877 return;
878 }
879
880 vtkXMLDataElement* depthPerTreeElement =
881 treesElement->FindNestedElementWithNameAndAttribute("DataArray", "Name", "DepthPerTree");
882 auto depthPerTree = vtkSmartPointer<vtkTypeUInt32Array>::Take(
883 vtkArrayDownCast<vtkTypeUInt32Array>(this->CreateArray(depthPerTreeElement)));
884 vtkIdType depthPerTreeSize;
885 depthPerTreeElement->GetScalarAttribute("NumberOfTuples", depthPerTreeSize);
886 depthPerTree->SetNumberOfValues(depthPerTreeSize);
887 if (!this->ReadArrayValues(depthPerTreeElement, 0, depthPerTree, 0, depthPerTreeSize))
888 {
889 vtkErrorMacro("Failed to parse "
890 << this->GetFileName() << ". Missing /flawed array DepthPerTree, in XML element Trees"
891 << ", which is required in HyperTreeGrid XML format of version 2. Aborting");
892 return;
893 }
894
895 vtkXMLDataElement* numberOfVerticesPerDepthElement =
896 treesElement->FindNestedElementWithNameAndAttribute(
897 "DataArray", "Name", "NumberOfVerticesPerDepth");
898 auto numberOfVerticesPerDepth = vtkSmartPointer<vtkTypeInt64Array>::Take(
899 vtkArrayDownCast<vtkTypeInt64Array>(this->CreateArray(numberOfVerticesPerDepthElement)));
900
901 vtkIdType numberOfVerticesPerDepthSize;
902 numberOfVerticesPerDepthElement->GetScalarAttribute(
903 "NumberOfTuples", numberOfVerticesPerDepthSize);
904 numberOfVerticesPerDepth->SetNumberOfValues(numberOfVerticesPerDepthSize);
905 if (!this->ReadArrayValues(numberOfVerticesPerDepthElement, 0, numberOfVerticesPerDepth, 0,
906 numberOfVerticesPerDepthSize))
907 {
908 vtkErrorMacro("Failed to parse "

Callers 1

ReadXMLDataMethod · 0.95

Calls 15

IsSelectedHTMethod · 0.95
TakeFunction · 0.85
GetCurrentOutputMethod · 0.80
LookupElementWithNameMethod · 0.80
GetScalarAttributeMethod · 0.80
ReadArrayValuesMethod · 0.80
GetNestedElementMethod · 0.80
backMethod · 0.80
ReadArrayTuplesMethod · 0.80

Tested by

no test coverage detected