| 482 | } |
| 483 | |
| 484 | void ComplexGeoData::Restore(Base::XMLReader& reader) |
| 485 | { |
| 486 | resetElementMap(); |
| 487 | |
| 488 | reader.readElement("ElementMap"); |
| 489 | bool newTag = false; |
| 490 | if (reader.hasAttribute("new") && reader.getAttribute<bool>("new")) { |
| 491 | reader.readEndElement("ElementMap"); |
| 492 | reader.readElement("ElementMap2"); |
| 493 | newTag = true; |
| 494 | } |
| 495 | |
| 496 | const char* file = ""; |
| 497 | if (reader.hasAttribute("file")) { |
| 498 | file = reader.getAttribute<const char*>("file"); |
| 499 | } |
| 500 | if (*file != 0) { |
| 501 | reader.addFile(file, this); |
| 502 | return; |
| 503 | } |
| 504 | |
| 505 | std::size_t count = 0; |
| 506 | if (reader.hasAttribute("count")) { |
| 507 | count = reader.getAttribute<unsigned long>("count"); |
| 508 | } |
| 509 | if (count == 0) { |
| 510 | return; |
| 511 | } |
| 512 | |
| 513 | if (newTag) { |
| 514 | resetElementMap(std::make_shared<ElementMap>()); |
| 515 | _elementMap = |
| 516 | _elementMap->restore(Hasher, reader.beginCharStream(Base::CharStreamFormat::Raw)); |
| 517 | reader.endCharStream(); |
| 518 | reader.readEndElement("ElementMap2"); |
| 519 | return; |
| 520 | } |
| 521 | |
| 522 | if (reader.FileVersion > 1) { |
| 523 | restoreStream(reader.beginCharStream(Base::CharStreamFormat::Raw), count); |
| 524 | reader.endCharStream(); |
| 525 | return; |
| 526 | } |
| 527 | readElements(reader, count); |
| 528 | reader.readEndElement("ElementMap"); |
| 529 | } |
| 530 | |
| 531 | void ComplexGeoData::readElements(Base::XMLReader& reader, size_t count) |
| 532 | { |
nothing calls this directly
no test coverage detected