From 318945a7b3e3ff4a015279dde444096d5e97bcd5 Mon Sep 17 00:00:00 2001 From: Alex Bilger Date: Thu, 10 Mar 2022 09:02:50 +0100 Subject: [PATCH] Restore xml and python different naming conventions --- .../SofaBaseCollision/BruteForceDetection.h | 4 ++-- .../src/sofa/core/ComponentNameHelper.cpp | 18 +++++++++++++----- .../src/sofa/core/ComponentNameHelper.h | 15 +++++++++++++-- .../SofaSimulationCommon/xml/ObjectElement.cpp | 2 +- .../src/sofa/simulation/Simulation.cpp | 4 ++-- .../SofaConstraint/FreeMotionAnimationLoop.cpp | 2 +- .../src/SofaGeneralMeshCollision/DirectSAP.h | 4 ++-- .../SofaGuiCommon/src/sofa/gui/BaseViewer.cpp | 4 ++-- 8 files changed, 36 insertions(+), 17 deletions(-) diff --git a/SofaKernel/modules/SofaBaseCollision/src/SofaBaseCollision/BruteForceDetection.h b/SofaKernel/modules/SofaBaseCollision/src/SofaBaseCollision/BruteForceDetection.h index 955c7d99d84..53190c07711 100644 --- a/SofaKernel/modules/SofaBaseCollision/src/SofaBaseCollision/BruteForceDetection.h +++ b/SofaKernel/modules/SofaBaseCollision/src/SofaBaseCollision/BruteForceDetection.h @@ -41,11 +41,11 @@ class SOFA_SOFABASECOLLISION_API BruteForceDetection final : public sofa::core:: static typename T::SPtr create(T*, sofa::core::objectmodel::BaseContext* context, sofa::core::objectmodel::BaseObjectDescription* arg) { BruteForceBroadPhase::SPtr broadPhase = sofa::core::objectmodel::New(); - broadPhase->setName(context->getNameHelper().resolveName(broadPhase->getClassName(), {})); + broadPhase->setName(context->getNameHelper().resolveName(broadPhase->getClassName(), core::ComponentNameHelper::Convention::python)); if (context) context->addObject(broadPhase); BVHNarrowPhase::SPtr narrowPhase = sofa::core::objectmodel::New(); - narrowPhase->setName(context->getNameHelper().resolveName(narrowPhase->getClassName(), {})); + narrowPhase->setName(context->getNameHelper().resolveName(narrowPhase->getClassName(), core::ComponentNameHelper::Convention::python)); if (context) context->addObject(narrowPhase); typename T::SPtr obj = sofa::core::objectmodel::New(); diff --git a/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.cpp b/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.cpp index 584d52c3a58..7f9568c12d1 100644 --- a/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.cpp +++ b/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.cpp @@ -26,16 +26,24 @@ namespace sofa::core { -std::string ComponentNameHelper::resolveName(const std::string& type, const std::string& name) +std::string ComponentNameHelper::resolveName(const std::string& type, const std::string& name, Convention convention) { if (name.empty()) { - const std::string radix = helper::NameDecoder::shortName(type); - std::ostringstream oss; - oss << radix << m_instanceCounter[radix]++; - return oss.str(); + return resolveName(type, convention); } return name; } +std::string ComponentNameHelper::resolveName(const std::string& type, Convention convention) +{ + std::string radix = helper::NameDecoder::shortName(type); + if (convention == Convention::xml) + { + return radix + std::to_string((m_instanceCounter[radix]++) + 1); + } + + return radix; +} + }//namespace sofa::core \ No newline at end of file diff --git a/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.h b/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.h index 838dd9e6681..4d904f8efc3 100644 --- a/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.h +++ b/SofaKernel/modules/SofaCore/src/sofa/core/ComponentNameHelper.h @@ -29,13 +29,24 @@ namespace sofa::core { /** - * Helper class to get a unique name for a component, based on a counter suffix. + * Helper class to name a component based on its type. + * + * Two conventions are available for legacy reasons: + * - XML: use a counter to add a unique suffix at the end of the name + * - Python: the short name of the type is returned */ class SOFA_CORE_API ComponentNameHelper { public: - std::string resolveName(const std::string& type, const std::string& name); + enum class Convention : char + { + xml, + python + }; + + std::string resolveName(const std::string& type, const std::string& name, Convention convention); + std::string resolveName(const std::string& type, Convention convention); private: diff --git a/SofaKernel/modules/SofaSimulationCommon/src/SofaSimulationCommon/xml/ObjectElement.cpp b/SofaKernel/modules/SofaSimulationCommon/src/SofaSimulationCommon/xml/ObjectElement.cpp index 551dcf24adf..89a63c9394e 100644 --- a/SofaKernel/modules/SofaSimulationCommon/src/SofaSimulationCommon/xml/ObjectElement.cpp +++ b/SofaKernel/modules/SofaSimulationCommon/src/SofaSimulationCommon/xml/ObjectElement.cpp @@ -94,7 +94,7 @@ bool ObjectElement::initNode() auto& objName = *obj->name.beginEdit(); if (objName.empty()) { - objName = ctx->getNameHelper().resolveName(obj->getClassName(), objName); + objName = ctx->getNameHelper().resolveName(obj->getClassName(), objName, sofa::core::ComponentNameHelper::Convention::xml); } obj->name.endEdit(); diff --git a/SofaKernel/modules/SofaSimulationCore/src/sofa/simulation/Simulation.cpp b/SofaKernel/modules/SofaSimulationCore/src/sofa/simulation/Simulation.cpp index 3d8aef962d2..121987ad781 100644 --- a/SofaKernel/modules/SofaSimulationCore/src/sofa/simulation/Simulation.cpp +++ b/SofaKernel/modules/SofaSimulationCore/src/sofa/simulation/Simulation.cpp @@ -165,7 +165,7 @@ void Simulation::init ( Node* root ) "Default Animation Manager Loop will be used. Add DefaultAnimationLoop to the root node of scene file to remove this warning"; DefaultAnimationLoop::SPtr aloop = sofa::core::objectmodel::New(root); - aloop->setName(root->getNameHelper().resolveName(aloop->getClassName(), {})); + aloop->setName(root->getNameHelper().resolveName(aloop->getClassName(), sofa::core::ComponentNameHelper::Convention::python)); root->addObject(aloop,sofa::core::objectmodel::TypeOfInsertion::AtBegin); } @@ -175,7 +175,7 @@ void Simulation::init ( Node* root ) "Default Visual Manager Loop will be used. Add DefaultVisualManagerLoop to the root node of scene file to remove this warning"; DefaultVisualManagerLoop::SPtr vloop = sofa::core::objectmodel::New(root); - vloop->setName(root->getNameHelper().resolveName(vloop->getClassName(), {})); + vloop->setName(root->getNameHelper().resolveName(vloop->getClassName(), sofa::core::ComponentNameHelper::Convention::python)); root->addObject(vloop,sofa::core::objectmodel::TypeOfInsertion::AtBegin); } diff --git a/modules/SofaConstraint/src/SofaConstraint/FreeMotionAnimationLoop.cpp b/modules/SofaConstraint/src/SofaConstraint/FreeMotionAnimationLoop.cpp index c9edf6cf84f..9229650f8c3 100644 --- a/modules/SofaConstraint/src/SofaConstraint/FreeMotionAnimationLoop.cpp +++ b/modules/SofaConstraint/src/SofaConstraint/FreeMotionAnimationLoop.cpp @@ -91,7 +91,7 @@ void FreeMotionAnimationLoop::parse ( sofa::core::objectmodel::BaseObjectDescrip defaultSolver = sofa::core::objectmodel::New(); defaultSolver->parse(arg); - defaultSolver->setName(defaultSolver->getContext()->getNameHelper().resolveName(defaultSolver->getClassName(), {})); + defaultSolver->setName(defaultSolver->getContext()->getNameHelper().resolveName(defaultSolver->getClassName(), core::ComponentNameHelper::Convention::python)); } diff --git a/modules/SofaGeneralMeshCollision/src/SofaGeneralMeshCollision/DirectSAP.h b/modules/SofaGeneralMeshCollision/src/SofaGeneralMeshCollision/DirectSAP.h index ce62239991e..1f754620bcc 100644 --- a/modules/SofaGeneralMeshCollision/src/SofaGeneralMeshCollision/DirectSAP.h +++ b/modules/SofaGeneralMeshCollision/src/SofaGeneralMeshCollision/DirectSAP.h @@ -42,11 +42,11 @@ class SOFA_SOFAGENERALMESHCOLLISION_API DirectSAP final : public sofa::core::obj static typename T::SPtr create(T*, sofa::core::objectmodel::BaseContext* context, sofa::core::objectmodel::BaseObjectDescription* arg) { BruteForceBroadPhase::SPtr broadPhase = sofa::core::objectmodel::New(); - broadPhase->setName(context->getNameHelper().resolveName(broadPhase->getClassName(), {})); + broadPhase->setName(context->getNameHelper().resolveName(broadPhase->getClassName(), core::ComponentNameHelper::Convention::python)); if (context) context->addObject(broadPhase); DirectSAPNarrowPhase::SPtr narrowPhase = sofa::core::objectmodel::New(); - narrowPhase->setName(context->getNameHelper().resolveName(narrowPhase->getClassName(), {})); + narrowPhase->setName(context->getNameHelper().resolveName(narrowPhase->getClassName(), core::ComponentNameHelper::Convention::python)); if (context) context->addObject(narrowPhase); typename T::SPtr obj = sofa::core::objectmodel::New(); diff --git a/modules/SofaGuiCommon/src/sofa/gui/BaseViewer.cpp b/modules/SofaGuiCommon/src/sofa/gui/BaseViewer.cpp index 1608cf8a6da..e335ee79554 100644 --- a/modules/SofaGuiCommon/src/sofa/gui/BaseViewer.cpp +++ b/modules/SofaGuiCommon/src/sofa/gui/BaseViewer.cpp @@ -208,7 +208,7 @@ bool BaseViewer::load() if (!currentCamera) { currentCamera = sofa::core::objectmodel::New(); - currentCamera->setName(groot->getNameHelper().resolveName(currentCamera->getClassName(), {})); + currentCamera->setName(groot->getNameHelper().resolveName(currentCamera->getClassName(), sofa::core::ComponentNameHelper::Convention::python)); groot->addObject(currentCamera); //currentCamera->p_position.forceSet(); //currentCamera->p_orientation.forceSet(); @@ -219,7 +219,7 @@ bool BaseViewer::load() if (!visualStyle) { visualStyle = sofa::core::objectmodel::New(); - visualStyle->setName(groot->getNameHelper().resolveName(visualStyle->getClassName(), {})); + visualStyle->setName(groot->getNameHelper().resolveName(visualStyle->getClassName(), sofa::core::ComponentNameHelper::Convention::python)); core::visual::DisplayFlags* displayFlags = visualStyle->displayFlags.beginEdit(); displayFlags->setShowVisualModels(sofa::core::visual::tristate::true_value);