MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / Restore

Method Restore

src/App/ComplexGeoData.cpp:484–529  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

482}
483
484void 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
531void ComplexGeoData::readElements(Base::XMLReader& reader, size_t count)
532{

Callers

nothing calls this directly

Calls 7

readElementsFunction · 0.85
readElementMethod · 0.80
hasAttributeMethod · 0.80
readEndElementMethod · 0.80
endCharStreamMethod · 0.80
addFileMethod · 0.45
restoreMethod · 0.45

Tested by

no test coverage detected