------------------------------------------------------------------------------
| 3348 | |
| 3349 | //------------------------------------------------------------------------------ |
| 3350 | vtkFieldData* vtkDataReader::ReadFieldData(FieldType fieldType) |
| 3351 | { |
| 3352 | int i, numArrays = 0, skipField = 0; |
| 3353 | vtkFieldData* f; |
| 3354 | char name[256], type[256]; |
| 3355 | vtkIdType numComp, numTuples; |
| 3356 | vtkAbstractArray* data; |
| 3357 | |
| 3358 | if (!(this->ReadString(name) && this->Read(&numArrays))) |
| 3359 | { |
| 3360 | const char* fname = this->CurrentFileName.c_str(); |
| 3361 | vtkErrorMacro(<< "Cannot read field header!" |
| 3362 | << " for file: " << (fname ? fname : "(Null FileName)")); |
| 3363 | return nullptr; |
| 3364 | } |
| 3365 | |
| 3366 | // See whether field data name (if specified) |
| 3367 | if ((this->FieldDataName && strcmp(name, this->FieldDataName) != 0)) |
| 3368 | { |
| 3369 | skipField = 1; |
| 3370 | } |
| 3371 | |
| 3372 | f = vtkFieldData::New(); |
| 3373 | f->AllocateArrays(numArrays); |
| 3374 | |
| 3375 | // Read the number of arrays specified |
| 3376 | for (i = 0; i < numArrays; i++) |
| 3377 | { |
| 3378 | char buffer[256]; |
| 3379 | this->ReadString(buffer); |
| 3380 | if (strcmp(buffer, "NULL_ARRAY") == 0) |
| 3381 | { |
| 3382 | continue; |
| 3383 | } |
| 3384 | this->DecodeString(name, buffer); |
| 3385 | this->Read(&numComp); |
| 3386 | this->Read(&numTuples); |
| 3387 | this->ReadString(type); |
| 3388 | data = this->ReadArray(type, numTuples, numComp); |
| 3389 | if (data != nullptr) |
| 3390 | { |
| 3391 | if (!skipField || this->ReadAllFields) |
| 3392 | { |
| 3393 | data->SetName(name); |
| 3394 | this->ConvertGhostLevelsToGhostType(fieldType, data); |
| 3395 | f->AddArray(data); |
| 3396 | } |
| 3397 | data->Delete(); |
| 3398 | } |
| 3399 | else |
| 3400 | { |
| 3401 | f->Delete(); |
| 3402 | return nullptr; |
| 3403 | } |
| 3404 | } |
| 3405 | |
| 3406 | if (skipField && !this->ReadAllFields) |
| 3407 | { |
no test coverage detected