From 99b753b00617a1456b7854ce2fa1d5ee2dd073ab Mon Sep 17 00:00:00 2001 From: bgbsww Date: Mon, 29 Jul 2024 15:37:21 -0400 Subject: [PATCH] Toponaming: Refactor out duplicated code using elementMap() --- src/App/ComplexGeoData.cpp | 9 ++++ src/App/ComplexGeoData.h | 1 + src/Mod/Part/App/TopoShapeExpansion.cpp | 70 +++---------------------- 3 files changed, 17 insertions(+), 63 deletions(-) diff --git a/src/App/ComplexGeoData.cpp b/src/App/ComplexGeoData.cpp index 19dbe6afa96e..33b48988b439 100644 --- a/src/App/ComplexGeoData.cpp +++ b/src/App/ComplexGeoData.cpp @@ -323,6 +323,15 @@ ElementMapPtr ComplexGeoData::elementMap(bool flush) const return _elementMap; } +ElementMapPtr ComplexGeoData::ensureElementMap(bool flush) +{ + if (!_elementMap) { + resetElementMap(std::make_shared()); + } + return elementMap(flush); + +} + void ComplexGeoData::flushElementMap() const {} diff --git a/src/App/ComplexGeoData.h b/src/App/ComplexGeoData.h index 73110093e7ae..07d3a65587c7 100644 --- a/src/App/ComplexGeoData.h +++ b/src/App/ComplexGeoData.h @@ -469,6 +469,7 @@ class AppExport ComplexGeoData: public Base::Persistence, public Base::Handled protected: ElementMapPtr elementMap(bool flush=true) const; + ElementMapPtr ensureElementMap(bool flush=true); private: ElementMapPtr _elementMap; diff --git a/src/Mod/Part/App/TopoShapeExpansion.cpp b/src/Mod/Part/App/TopoShapeExpansion.cpp index 50122c42e228..ff999bd0b01b 100644 --- a/src/Mod/Part/App/TopoShapeExpansion.cpp +++ b/src/Mod/Part/App/TopoShapeExpansion.cpp @@ -878,16 +878,8 @@ void TopoShape::mapSubElementTypeForShape(const TopoShape& other, } char elementType {shapeName(type)[0]}; - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - std::ostringstream ss; - elementMap()->encodeElementName(elementType, name, ss, &sids, Tag, op, other.Tag); + ensureElementMap()->encodeElementName(elementType, name, ss, &sids, Tag, op, other.Tag); elementMap()->setElementName(element, name, Tag, &sids); } } @@ -1033,15 +1025,7 @@ void TopoShape::mapSubElement(const TopoShape& other, const char* op, bool force } ss.str(""); - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap()->encodeElementName(shapetype[0], name, ss, &sids, Tag, op, other.Tag); + ensureElementMap()->encodeElementName(shapetype[0], name, ss, &sids, Tag, op, other.Tag); elementMap()->setElementName(element, name, Tag, &sids); } } @@ -1784,15 +1768,7 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, } Data::MappedName other_name = other_key.name; - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap()->encodeElementName(*other_info.shapetype, + ensureElementMap()->encodeElementName(*other_info.shapetype, other_name, ss2, &sids, @@ -1845,15 +1821,7 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, } ss << postfix; - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap() + ensureElementMap() ->encodeElementName(element[0], first_name, ss, &sids, Tag, op, first_key.tag); elementMap()->setElementName(element, first_name, Tag, &sids); if (!delayed && first_key.shapetype < 3) { @@ -1943,15 +1911,7 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, ss << nameInfo.index; } - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap()->encodeElementName(indexedName[0], newName, ss, &sids, Tag, op); + ensureElementMap()->encodeElementName(indexedName[0], newName, ss, &sids, Tag, op); elementMap()->setElementName(indexedName, newName, Tag, &sids); } } @@ -2049,15 +2009,7 @@ TopoShape& TopoShape::makeShapeWithElementMap(const TopoDS_Shape& shape, } } - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); + ensureElementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); elementMap()->setElementName(element, newName, Tag, &sids); } } @@ -5092,15 +5044,7 @@ Data::MappedName TopoShape::setElementComboName(const Data::IndexedName& element } } - // Originally in ComplexGeoData::setElementName - // LinkStable/src/App/ComplexGeoData.cpp#L1631 - // No longer possible after map separated in ElementMap.cpp - - if (!elementMap()) { - resetElementMap(std::make_shared()); - } - - elementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); + ensureElementMap()->encodeElementName(element[0], newName, ss, &sids, Tag, op); return elementMap()->setElementName(element, newName, Tag, &sids); }