X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FModelHighAPI%2FModelHighAPI_Dumper.cpp;h=5f9bf3d8dd86e53fa7662472398a5cc8e0c9fb1d;hb=db7c51ff3d57d1d699799257ba0699f7d6a837e7;hp=6d8affba893069289e3e0b5ae1a3b8d62f4a3d9c;hpb=ae3e12ab08ba2c98c74c9f4b93812faace2af798;p=modules%2Fshaper.git diff --git a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp index 6d8affba8..5f9bf3d8d 100644 --- a/src/ModelHighAPI/ModelHighAPI_Dumper.cpp +++ b/src/ModelHighAPI/ModelHighAPI_Dumper.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2020 CEA/DEN, EDF R&D +// Copyright (C) 2014-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -687,7 +687,7 @@ void ModelHighAPI_Dumper::saveResultNames(const FeaturePtr& theFeature) std::list allRes; ModelAPI_Tools::allResults(theFeature, allRes); for(std::list::iterator aRes = allRes.begin(); aRes != allRes.end(); aRes++) { - std::pair aName = ModelAPI_Tools::getDefaultName(*aRes); + std::pair aName = ModelAPI_Tools::getDefaultName(*aRes, true, true); std::string aDefaultName = Locale::Convert::toString(aName.first); std::string aResName = Locale::Convert::toString((*aRes)->data()->name()); bool isUserDefined = !(isFeatureDefaultName && aDefaultName == aResName); @@ -992,6 +992,18 @@ bool ModelHighAPI_Dumper::isDumped(const AttributeRefListPtr& theRefList) const return true; } +size_t ModelHighAPI_Dumper::indexOfFirstNotDumped( + const std::shared_ptr& theRefList) const +{ + size_t anIndex = 0; + std::list anObjects = theRefList->list(); + for (std::list::const_iterator anIt = anObjects.begin(); + anIt != anObjects.end(); ++anIt, ++anIndex) + if (!isDumped(ModelAPI_Feature::feature(*anIt))) + break; + return anIndex; +} + static bool isSketchSub(const FeaturePtr& theFeature) { static const std::string SKETCH("Sketch"); @@ -1071,7 +1083,7 @@ bool ModelHighAPI_Dumper::dumpCommentBeforeFeature(const FeaturePtr& theFeature) if (aFilters) return false; // all other features should be commented before the dump - return true; + return !isDumped(theFeature); } ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<(const char theChar) @@ -1263,7 +1275,26 @@ ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( const std::shared_ptr& theAttrStr) { - *myDumpStorage << "\"" << theAttrStr->value() << "\""; + // escaping the quote signs in the string under dumping + std::string aStr = theAttrStr->value(); + /* + size_t aPos = aStr.find("\""); + while (aPos != std::string::npos) { + aStr.insert(aPos, "\\"); + aPos = aStr.find("\"", aPos + 2); + } + aPos = aStr.find("\'"); + while (aPos != std::string::npos) { + aStr.insert(aPos, "\\"); + aPos = aStr.find("\'", aPos + 2); + } + */ + size_t aPos = aStr.find_first_of("\"\'"); + while (aPos != std::string::npos) { + aStr.insert(aPos, "\\"); + aPos = aStr.find_first_of("\"\'", aPos + 2); + } + *myDumpStorage << "'" << aStr << "'"; return *this; } @@ -1445,6 +1476,11 @@ ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( bool isAdded = false; std::list::const_iterator anIt = aList.begin(); for (; anIt != aList.end(); ++anIt) { + if (!(*anIt)) + continue; + if (!isDumped(ModelAPI_Feature::feature(*anIt))) + break; // stop if the object is not dumped yet (parent feature should be postponed) + if (isAdded) *myDumpStorage << ", "; else @@ -1505,12 +1541,12 @@ ModelHighAPI_Dumper& ModelHighAPI_Dumper::operator<<( } if(isAdded) { - *myDumpStorage << ", "; // print each attribute on separate line with the appropriate shift if (aNbSpaces > 0) { std::string aSpaces(aNbSpaces + 1, ' '); - *myDumpStorage << "\n" << aSpaces; - } + *myDumpStorage << ",\n" << aSpaces; + } else + *myDumpStorage << ", "; } else { isAdded = true; }