diff --git a/Fwk/AppFwk/cafProjectDataModel/cafPdmDocument.h b/Fwk/AppFwk/cafProjectDataModel/cafPdmDocument.h index a46a592a05..4fb204edd1 100644 --- a/Fwk/AppFwk/cafProjectDataModel/cafPdmDocument.h +++ b/Fwk/AppFwk/cafProjectDataModel/cafPdmDocument.h @@ -75,38 +75,7 @@ public: } template - void createCopyByType(std::vector >* copyOfTypedObjects) const - { - std::vector > sourceTypedObjects; - objectsByType(&sourceTypedObjects); - - QString encodedXml; - { - // Write original objects to XML file - PdmObjectGroup typedObjectGroup; - for (size_t i = 0; i < sourceTypedObjects.size(); i++) - { - typedObjectGroup.addObject(sourceTypedObjects[i]); - PdmDocument::setupBeforeSaveTraversal(sourceTypedObjects[i]); - } - - QXmlStreamWriter xmlStream(&encodedXml); - xmlStream.setAutoFormatting(true); - - typedObjectGroup.writeFields(xmlStream); - } - - // Read back XML into object group, factory methods will be called that will create new objects - PdmObjectGroup destinationObjectGroup; - QXmlStreamReader xmlStream(encodedXml); - destinationObjectGroup.readFields(xmlStream); - - for (size_t it = 0; it < destinationObjectGroup.objects.size(); it++) - { - T* obj = dynamic_cast(destinationObjectGroup.objects[it]); - if (obj) copyOfTypedObjects->push_back(obj); - } - } + void createCopyByType(std::vector >* copyOfTypedObjects) const; }; //================================================================================================== @@ -135,6 +104,44 @@ class PdmDocument: public PdmObjectGroup }; +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +template +void PdmObjectGroup::createCopyByType(std::vector >* copyOfTypedObjects) const +{ + std::vector > sourceTypedObjects; + objectsByType(&sourceTypedObjects); + + QString encodedXml; + { + // Write original objects to XML file + PdmObjectGroup typedObjectGroup; + for (size_t i = 0; i < sourceTypedObjects.size(); i++) + { + typedObjectGroup.addObject(sourceTypedObjects[i]); + PdmDocument::setupBeforeSaveTraversal(sourceTypedObjects[i]); + } + + QXmlStreamWriter xmlStream(&encodedXml); + xmlStream.setAutoFormatting(true); + + typedObjectGroup.writeFields(xmlStream); + } + + // Read back XML into object group, factory methods will be called that will create new objects + PdmObjectGroup destinationObjectGroup; + QXmlStreamReader xmlStream(encodedXml); + destinationObjectGroup.readFields(xmlStream); + + for (size_t it = 0; it < destinationObjectGroup.objects.size(); it++) + { + T* obj = dynamic_cast(destinationObjectGroup.objects[it]); + if (obj) copyOfTypedObjects->push_back(obj); + } +} + + } // End of namespace caf