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

Method restoreObject

src/App/ProjectFile.cpp:474–513  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

472}
473
474bool ProjectFile::restoreObject(const std::string& name, App::PropertyContainer* obj, bool verbose)
475{
476 Base::FileInfo fi(stdFile);
477 Base::ifstream file(fi, std::ios::in | std::ios::binary);
478
479 zipios::ZipInputStream zipstream(file);
480 Base::XMLReader reader(stdFile.c_str(), zipstream);
481 reader.setVerbose(verbose);
482
483 if (!reader.isValid()) {
484 return false;
485 }
486
487 // skip document properties
488 reader.readElement("Properties");
489 reader.readEndElement("Properties");
490
491 // skip objects
492 reader.readElement("Objects");
493 reader.readEndElement("Objects");
494
495 reader.readElement("ObjectData");
496 long Cnt = reader.getAttribute<long>("Count");
497 for (long i = 0; i < Cnt; i++) {
498 reader.readElement("Object");
499 std::string nameAttr = reader.getAttribute<const char*>("name");
500
501 if (nameAttr == name) {
502 // obj->StatusBits.set(4);
503 obj->Restore(reader);
504 // obj->StatusBits.reset(4);
505 }
506 reader.readEndElement("Object");
507 }
508 reader.readEndElement("ObjectData");
509
510 reader.readFiles(zipstream);
511
512 return true;
513}
514
515Base::Type ProjectFile::getTypeId(const std::string& name) const
516{

Callers 1

TEST_FFunction · 0.45

Calls 6

readElementMethod · 0.80
readEndElementMethod · 0.80
readFilesMethod · 0.80
c_strMethod · 0.45
isValidMethod · 0.45
RestoreMethod · 0.45

Tested by

no test coverage detected