| 1114 | } |
| 1115 | |
| 1116 | void vtkXMLReader::ReadFieldData() |
| 1117 | { |
| 1118 | if (this->FieldDataElement) // read the field data information |
| 1119 | { |
| 1120 | vtkIdType numTuples; |
| 1121 | vtkFieldData* fieldData = this->GetCurrentOutput()->GetFieldData(); |
| 1122 | std::vector<vtkXMLDataElement*> elementsToRemove; |
| 1123 | for (int i = 0; i < this->FieldDataElement->GetNumberOfNestedElements() && !this->AbortExecute; |
| 1124 | i++) |
| 1125 | { |
| 1126 | vtkXMLDataElement* eNested = this->FieldDataElement->GetNestedElement(i); |
| 1127 | const char* ename = eNested->GetAttribute("Name"); |
| 1128 | if (!fieldData->HasArray(ename)) |
| 1129 | { |
| 1130 | vtkAbstractArray* array = this->CreateArray(eNested); |
| 1131 | if (array) |
| 1132 | { |
| 1133 | if (eNested->GetScalarAttribute("NumberOfTuples", numTuples)) |
| 1134 | { |
| 1135 | array->SetNumberOfTuples(numTuples); |
| 1136 | } |
| 1137 | else |
| 1138 | { |
| 1139 | numTuples = 0; |
| 1140 | } |
| 1141 | fieldData->AddArray(array); |
| 1142 | array->Delete(); |
| 1143 | if (!this->ReadArrayValues( |
| 1144 | eNested, 0, array, 0, numTuples * array->GetNumberOfComponents()) && |
| 1145 | numTuples) |
| 1146 | { |
| 1147 | this->DataError = 1; |
| 1148 | } |
| 1149 | } |
| 1150 | } |
| 1151 | else |
| 1152 | { |
| 1153 | vtkWarningMacro("Another cell data array named " << ename << " already exists. Ignoring."); |
| 1154 | elementsToRemove.push_back(eNested); |
| 1155 | } |
| 1156 | } |
| 1157 | for (const auto& elem : elementsToRemove) |
| 1158 | { |
| 1159 | this->FieldDataElement->RemoveNestedElement(elem); |
| 1160 | } |
| 1161 | } |
| 1162 | } |
| 1163 | |
| 1164 | //------------------------------------------------------------------------------ |
| 1165 | // Methods used for deserializing vtkInformation. ---------------------------- |
no test coverage detected