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

Function vtkXMLTreeReaderProcessElement

IO/Infovis/vtkXMLTreeReader.cxx:72–158  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70}
71
72static void vtkXMLTreeReaderProcessElement(
73 vtkMutableDirectedGraph* tree, vtkIdType parent, xmlNode* node, int readCharData, int maskArrays)
74{
75 vtkDataSetAttributes* data = tree->GetVertexData();
76 vtkStringArray* nameArr =
77 vtkArrayDownCast<vtkStringArray>(data->GetAbstractArray(vtkXMLTreeReader::TagNameField));
78 vtkStdString content;
79 for (xmlNode* curNode = node; curNode; curNode = curNode->next)
80 {
81 // std::cerr << "type=" << curNode->type << ",name=" << curNode->name << endl;
82 if (curNode->content)
83 {
84 const char* curContent = reinterpret_cast<const char*>(curNode->content);
85 content += curContent;
86 // std::cerr << "content=" << curNode->content << endl;
87 }
88
89 if (curNode->type != XML_ELEMENT_NODE)
90 {
91 continue;
92 }
93
94 vtkIdType vertex = tree->AddVertex();
95 if (parent != -1)
96 {
97 tree->AddEdge(parent, vertex);
98 }
99
100 // Append the node tag and character data to the vtkPointData
101 if (nameArr) // If the reader has ReadTagName = ON then populate this array
102 {
103 nameArr->InsertValue(vertex, reinterpret_cast<const char*>(curNode->name));
104 }
105
106 // Append the element attributes to the vtkPointData
107 for (xmlAttr* curAttr = curNode->properties; curAttr; curAttr = curAttr->next)
108 {
109 const char* name = reinterpret_cast<const char*>(curAttr->name);
110 int len = static_cast<int>(strlen(name));
111 char* validName = new char[len + 8];
112 strcpy(validName, ".valid.");
113 strcat(validName, name);
114 vtkStringArray* stringArr = vtkArrayDownCast<vtkStringArray>(data->GetAbstractArray(name));
115 vtkBitArray* bitArr = nullptr;
116 if (maskArrays)
117 {
118 bitArr = vtkArrayDownCast<vtkBitArray>(data->GetAbstractArray(validName));
119 }
120 if (!stringArr)
121 {
122 stringArr = vtkStringArray::New();
123 stringArr->SetName(name);
124 data->AddArray(stringArr);
125 stringArr->Delete();
126 if (maskArrays)
127 {
128 bitArr = vtkBitArray::New();
129 bitArr->SetName(validName);

Callers 1

RequestDataMethod · 0.85

Calls 11

GetVertexDataMethod · 0.80
GetAbstractArrayMethod · 0.80
DeleteMethod · 0.65
NewFunction · 0.50
AddVertexMethod · 0.45
AddEdgeMethod · 0.45
InsertValueMethod · 0.45
SetNameMethod · 0.45
AddArrayMethod · 0.45
GetNumberOfTuplesMethod · 0.45
InsertNextValueMethod · 0.45

Tested by

no test coverage detected