From 29002f2a48fdc857984b55660b0a7402cd9a3212 Mon Sep 17 00:00:00 2001 From: berrux_dev Date: Mon, 21 Sep 2026 02:47:50 +0200 Subject: [PATCH] Migrates remaining include, viewer and DDS headers to rtiddsgen API Converts accessor calls to plain member access and fixes SituationMap CMake. --- .../LtsElevation/lts_elevation_manager.cpp | 84 ++++++++++++++++--- .../DDS/DdsUnitTests/function_topic_tests.h | 1 - .../Lts/Viewer/SituationMap/CMakeLists.txt | 3 +- .../ism_mounting_point.h | 14 ++-- .../ElevationMap/elevation_map_manager.h | 4 +- 5 files changed, 85 insertions(+), 21 deletions(-) diff --git a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsElevation/lts_elevation_manager.cpp b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsElevation/lts_elevation_manager.cpp index 13d39068c..daf6603af 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Common/LtsElevation/lts_elevation_manager.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Common/LtsElevation/lts_elevation_manager.cpp @@ -6,6 +6,12 @@ #include #include #include +#include + +#include +#include +#include +#include static_assert((int)SituationMap::ElevationMapManager::LineOfSight::LOS_UNDEFINED == (int)LtsElevation::LineOfSight::LOS_UNDEFINED, @@ -106,15 +112,71 @@ LtsElevationManager::createInstance(int exerciseId, const std::shared_ptrtrainingAreaId + // caching and always returned nullptr here). #ifdef BUILD_RTI - filePaths_rough_to_fine = getFilenamesForExercise(exerciseId); + int trainingAreaId = -1; + + // remember for future calls + // (so createInstance should work WITHOUT dtcs) + // Idea: MainHandler: createInstance with exerciseId and valid dtcs + // Plugin or simular: createInstance with exerciseId and no dtcs + static QHash s_exIdToTaIdStore; + + const auto exTaIt = s_exIdToTaIdStore.find(exerciseId); + if (exTaIt != s_exIdToTaIdStore.end()) + { + // CASE 1: + // already created: + trainingAreaId = *exTaIt; + } + else + { + // CASE 2: + // ... or create on demand: + if (!exmDtc || !asmDtc) + { + ERROR_LOG(logger) << Q_FUNC_INFO << " no dtcs for exerciseId=" << exerciseId + << ", asmDtc=" << asmDtc + << ", exmDtc=" << exmDtc; + return nullptr; + } + + // exId to taId + trainingAreaId = exerciseIdToTrainingAreaId(exerciseId, exmDtc); + if (trainingAreaId <= 0) + { + ERROR_LOG(logger) << Q_FUNC_INFO << " Error getting trainingAreaId" + << ", exerciseId=" << exerciseId + << ", trainingAreaId=" << trainingAreaId; + return nullptr; + } + + // store and remember: + s_exIdToTaIdStore[exerciseId] = trainingAreaId; + } + + // CASE 1: Following should work even with invalid asmDtc: + LTS_ELEVATION_MANAGER_TYPE temp = createInstanceForTrainingAreaId(trainingAreaId, asmDtc); + if (!temp) + { + ERROR_LOG(logger) << Q_FUNC_INFO << " Error on createInstanceForTrainingAreaId" + << ", exerciseId=" << exerciseId + << ", trainingAreaId=" << trainingAreaId; + return nullptr; + } + + // add exmDtc + temp->initDDS(exmDtc, asmDtc); + + TRACE_LOG(logger) << Q_FUNC_INFO << " END, exerciseId=" << exerciseId; + return temp; #else - Q_UNUSED(exerciseId); - ERROR_LOG(logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, cannot get filenames for exercise"; -#endif - Q_UNUSED(filePaths_rough_to_fine); + Q_UNUSED(exmDtc); + Q_UNUSED(asmDtc); + ERROR_LOG(logger) << Q_FUNC_INFO << " BUILD_RTI=OFF, cannot create instance"; return nullptr; +#endif } LTS_ELEVATION_MANAGER_TYPE LtsElevationManager::getInstance(int exerciseId) @@ -291,19 +353,19 @@ QStringList LtsElevationManager::getFilenamesForTrainingArea(int trainingAreaId) { d->m_asmDtc->waitForHistoricalDataTrainingArea(1000); const AssetManagement::TrainingArea& ta = d->m_asmDtc->trainingArea(trainingAreaId); - if (ta.id() != trainingAreaId) + if (ta.id != trainingAreaId) { ERROR_LOG(m_logger) << Q_FUNC_INFO << " Error on s_asmDtc->trainingArea" << ", trainingAreaId=" << trainingAreaId; return {}; } - const std::vector& mdVec = ta.elevation(); + const std::vector& mdVec = ta.elevation; filePaths_rough_to_fine.reserve(mdVec.size()); for (const AssetManagement::MapDescription& md : std::as_const(mdVec)) { - QUrl url(QString::fromStdString(md.url())); + QUrl url(QString::fromStdString(md.url)); QString filePathAbs = url.toLocalFile(); if (QDir::isRelativePath(filePathAbs)) filePathAbs = SituationMap::getResourcePath() + QStringLiteral("/elevation/") + filePathAbs; @@ -372,13 +434,13 @@ int LtsElevationManager::exerciseIdToTrainingAreaId(int exerciseId, exmDtc->waitForHistoricalDataExercise(1000); const ExerciseManagement::Exercise& exm = exmDtc->exercise(exerciseId); - if (exm.id() != exerciseId) + if (exm.id != exerciseId) { ERROR_LOG(logger) << Q_FUNC_INFO << " Error on m_exmDtc->exercise" << ", exerciseId=" << exerciseId; return -1; } - trainingAreaId = exm.trainingAreaId(); + trainingAreaId = exm.trainingAreaId; if (trainingAreaId <= 0) { diff --git a/qt6-after/qt6-migrated-legatus/Lts/DDS/DdsUnitTests/function_topic_tests.h b/qt6-after/qt6-migrated-legatus/Lts/DDS/DdsUnitTests/function_topic_tests.h index 5151bd313..fe7d55ad0 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/DDS/DdsUnitTests/function_topic_tests.h +++ b/qt6-after/qt6-migrated-legatus/Lts/DDS/DdsUnitTests/function_topic_tests.h @@ -47,7 +47,6 @@ class FunctionTopicTests : public QObject const DdsUnitTests::FunctionRequestWithState& request); private: - NGL::INGLLogger& m_logger; void requestWithState(); private: diff --git a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/CMakeLists.txt index 79dd5fc8a..60b39164a 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Viewer/SituationMap/CMakeLists.txt @@ -9,7 +9,8 @@ ADD_SUBDIRECTORY(Common) ADD_SUBDIRECTORY(SymbologyXML) ADD_SUBDIRECTORY(Symbology) -# ADD_SUBDIRECTORY(ElevationMap) +# ElevationMapManager compatibility stub (src/ + include/ scaffolding) needed by LtsElevation +ADD_SUBDIRECTORY(ElevationMap) # Remaining subdirectories not yet migrated: # ADD_SUBDIRECTORY(SymbologyGui) diff --git a/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h b/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h index 5d08f2e72..d6ed96463 100755 --- a/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h +++ b/qt6-after/qt6-migrated-legatus/include/InfrastructureManagement/ism_mounting_point.h @@ -37,7 +37,7 @@ public: const StructureElement &data() const { return m_data; } void updateData(const StructureElement &data, int floorId) { m_data = data; m_floor = floorId; } - int32_t id() const { return m_data.id(); } + int32_t id() const { return m_data.id; } int32_t associatedAssetId() const { return m_associatedAssetId; } bool hasAssociatedAsset() const { return m_associatedAssetId > 0; } bool hasAssociatedAssetDefect() const { return m_hasAssociatedAssetDefect; } @@ -53,13 +53,13 @@ public: //@} bool isValid() const { return m_isValid; } - Core::GeoPosition geoPosition() const { return m_data.geoPosition(); } - Core::RelativePosition relPosition() const { return m_data.relPosition(); } - MountingPointType type() const { return m_data.mountingPointTypeId(); } - int32_t buildingId() const { return m_data.mainStructureElementId(); } + Core::GeoPosition geoPosition() const { return m_data.geoPosition; } + Core::RelativePosition relPosition() const { return m_data.relPosition; } + MountingPointType type() const { return m_data.mountingPointTypeId; } + int32_t buildingId() const { return m_data.mainStructureElementId; } QString name() const; QString fileName() const; - QByteArray properties() const { return m_data.properties().c_str(); } + QByteArray properties() const { return m_data.properties.c_str(); } QImage toImage(int32_t edgeLength = 100) const; bool writeFile(int32_t edgeLength = 25) const; @@ -126,7 +126,7 @@ public: private: static QMap &getImageTableInternal(); - static void insertHelper(MountingPointType_def::type type, + static void insertHelper(MountingPointType::type type, const QString &name, const QString &colorCodeGray, const QString &colorCodeGreen, diff --git a/qt6-after/qt6-migrated-legatus/include/Viewer/SituationMap/ElevationMap/elevation_map_manager.h b/qt6-after/qt6-migrated-legatus/include/Viewer/SituationMap/ElevationMap/elevation_map_manager.h index 695353530..152147df1 100644 --- a/qt6-after/qt6-migrated-legatus/include/Viewer/SituationMap/ElevationMap/elevation_map_manager.h +++ b/qt6-after/qt6-migrated-legatus/include/Viewer/SituationMap/ElevationMap/elevation_map_manager.h @@ -25,7 +25,9 @@ using LOSVector = std::vector; namespace SituationMap { -class ElevationMapManager final : public QObject +// The NGL build uses -fvisibility=hidden; LtsElevation links this class +// across the shared library boundary, so it needs default visibility. +class __attribute__((visibility("default"))) ElevationMapManager final : public QObject { Q_OBJECT