| 455 | } |
| 456 | |
| 457 | void ComplexGeoData::Save(Base::Writer& writer) const |
| 458 | { |
| 459 | |
| 460 | if (getElementMapSize() == 0U) { |
| 461 | writer.Stream() << writer.ind() << "<ElementMap/>\n"; |
| 462 | return; |
| 463 | } |
| 464 | |
| 465 | // Store some dummy map entry to trigger recompute in older version. |
| 466 | writer.Stream() << writer.ind() << R"(<ElementMap new="1" count="1">)" |
| 467 | << R"(<Element key="Dummy" value="Dummy"/>)" |
| 468 | << "</ElementMap>\n"; |
| 469 | |
| 470 | // New layout of element map, so we use new xml tag, ElementMap2 |
| 471 | writer.Stream() << writer.ind() << "<ElementMap2"; |
| 472 | |
| 473 | if (!_persistenceName.empty()) { |
| 474 | writer.Stream() << " file=\"" << writer.addFile((_persistenceName + ".txt").c_str(), this) |
| 475 | << "\"/>\n"; |
| 476 | return; |
| 477 | } |
| 478 | writer.Stream() << " count=\"" << _elementMap->size() << "\">\n"; |
| 479 | _elementMap->save(writer.beginCharStream(Base::CharStreamFormat::Raw) << '\n'); |
| 480 | writer.endCharStream() << '\n'; |
| 481 | writer.Stream() << writer.ind() << "</ElementMap2>\n"; |
| 482 | } |
| 483 | |
| 484 | void ComplexGeoData::Restore(Base::XMLReader& reader) |
| 485 | { |