From 6195b5e9ef2cef22100f860df9da09f10c7876e9 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 6 Sep 2019 12:37:09 +0200 Subject: [PATCH] avoid explicit cast to ZipInputStream in Gui::Dcoument class --- src/Gui/Document.cpp | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index 9091ae943c..a72397b53f 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -1429,9 +1429,9 @@ void Document::importObjects(const std::vector& obj, Base: const std::map& nameMapping) { // We must create an XML parser to read from the input stream - Base::XMLReader xmlReader("GuiDocument.xml", reader); - xmlReader.readElement("Document"); - long scheme = xmlReader.getAttributeAsInteger("SchemaVersion"); + std::shared_ptr localreader = std::make_shared("GuiDocument.xml", reader); + localreader->readElement("Document"); + long scheme = localreader->getAttributeAsInteger("SchemaVersion"); // At this stage all the document objects and their associated view providers exist. // Now we must restore the properties of the view providers only. @@ -1439,21 +1439,21 @@ void Document::importObjects(const std::vector& obj, Base: // SchemeVersion "1" if (scheme == 1) { // read the viewproviders itself - xmlReader.readElement("ViewProviderData"); - int Cnt = xmlReader.getAttributeAsInteger("Count"); + localreader->readElement("ViewProviderData"); + int Cnt = localreader->getAttributeAsInteger("Count"); std::vector::const_iterator it = obj.begin(); for (int i=0;ireadElement("ViewProvider"); + std::string name = localreader->getAttribute("name"); std::map::const_iterator jt = nameMapping.find(name); if (jt != nameMapping.end()) name = jt->second; bool expanded = false; - if (xmlReader.hasAttribute("expanded")) { - const char* attr = xmlReader.getAttribute("expanded"); + if (localreader->hasAttribute("expanded")) { + const char* attr = localreader->getAttribute("expanded"); if (strcmp(attr,"1") == 0) { expanded = true; } @@ -1463,22 +1463,22 @@ void Document::importObjects(const std::vector& obj, Base: pObj->setStatus(Gui::isRestoring,true); auto vpd = Base::freecad_dynamic_cast(pObj); if(vpd) vpd->startRestoring(); - pObj->Restore(xmlReader); + pObj->Restore(*localreader); if (expanded && vpd) this->signalExpandObject(*vpd, Gui::ExpandItem,0,0); } - xmlReader.readEndElement("ViewProvider"); + localreader->readEndElement("ViewProvider"); if (it == obj.end()) break; } - xmlReader.readEndElement("ViewProviderData"); + localreader->readEndElement("ViewProviderData"); } - xmlReader.readEndElement("Document"); + localreader->readEndElement("Document"); // In the file GuiDocument.xml new data files might be added - if (!xmlReader.getFilenames().empty()) - xmlReader.readFiles(static_cast(reader.getStream())); + if (!localreader->getFilenames().empty()) + reader.initLocalReader(localreader); } void Document::slotFinishImportObjects(const std::vector &objs) {