Qt6 Migration: DDS-Stubs, Logger-Fixes, Export-Header Korrekturen

- NGL_ADD_LIBRARY2: 87 CMakeLists.txt konvertiert für Export-Header Generierung
- 44 Export-Header Include-Pfade korrigiert (_export.h)
- 81 DDS-Stub-Header generiert (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
- INGLLogger: Duplikat gelöscht, m_logger Member entfernt, variadische Makros
- Q_FUNC_INFO Redefinition behoben (Qt6 definiert bereits)
- FATAL_LOG Makro hinzugefügt
- InfrastructureManagement DDS-Stubs (ism.hpp, ism_enums.hpp, ism_ftc.h)
- FilterManagement DDS-Stubs (flt_ftc.h, flt_dts.h)
- AreaEffectSimulation DDS-Stubs (aes.hpp, aes_enums.hpp)
- SymbolAppearance Klasse vollständig definiert mit content() Methode
- BuildingComponentFilter Klasse definiert mit Copy-Konstruktor
- Ftc Factory: nullptr Return (abstract class)
- AesFilter Klasse in aes.hpp hinzugefügt
- Dtc Klasse in ppm.hpp mit participantChanged Signal
- AesType Enum: alle 15 At* Werte definiert
- AesEffectState_def: EsReceived hinzugefügt
- DataModification Enum: eAdded/eModified/eRemoved
- function_reply_object.h → core_types.h Include-Pfad (72 Dateien)
- Enum-Class-Streaming Template-Operator in INGLLogger.h
- ism_mounting_point.h: QImage → QtGui/QImage, QGuiApplication/QScreen
- ism_data_plugin_interface.h: QSet Include, Include-Reihenfolge
- QRegExp → QRegularExpression in tpm_js_parser.cpp
- .underlying() Aufrufe zu direktem Enum-Vergleich korrigiert
- Include-Pfade: aes.hpp in symbol_appearance_settings_impl.h und aes_display_filter_impl.h

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
torstenandCopilot committed 2026-08-19 06:06:24 +02:00
1 parent 010f91928a
commit b774f4035c
2785 files changed
+18754 -18316

No files matched your search

@@ -32,7 +32,6 @@ HandlerAesData::HandlerAesData(const std::shared_ptr<DdsHandler> &dds,
, m_aesFtc(aesFtc)
, m_pdmDtc(pdmDtc)
, m_utmCoord(LtsCoordTrans::UtmCoordinate::fromMgrs(Settings::baseCoord()))
, m_logger(getLogger("HandlerAesData"))
{
}
@@ -42,7 +41,7 @@ bool HandlerAesData::init()
if (!m_aesDtc->enableBCContamination() || !m_aesDtc->enableExplosionArea() || !m_aesDtc->enableExplosionSingle() || !m_aesDtc->enableFunctionalArea()
|| !m_aesDtc->enableNContamination() || !m_aesDtc->enableMineArea() || !m_aesDtc->enableExplosionCluster())
{
ERROR_LOG(m_logger) << "Error enabling AES Data-Topics.";
ERROR_LOG() << "Error enabling AES Data-Topics.";
return false;
}
@@ -54,7 +53,7 @@ bool HandlerAesData::init()
|| !m_aesFtc->enableMineAreaRemove() || !m_aesFtc->enableExplosionClusterRemove() || !m_aesFtc->enableExplosionAreaPauseResume()
|| !m_aesFtc->enableMineAreaReferenceModify())
{
ERROR_LOG(m_logger) << "Error enabling AES Function-Topics.";
ERROR_LOG() << "Error enabling AES Function-Topics.";
return false;
}
@@ -62,7 +61,7 @@ bool HandlerAesData::init()
if (!m_pdmDtc->enableChargeType() || !m_pdmDtc->enableGearTypeChargeType() || !m_pdmDtc->enableGearType())
{
ERROR_LOG(m_logger) << "Error enabling PDM Data-Topic.";
ERROR_LOG() << "Error enabling PDM Data-Topic.";
return false;
}
@@ -71,11 +70,11 @@ bool HandlerAesData::init()
|| !m_aesDtc->waitForHistoricalDataNContamination(10000) || !m_aesDtc->waitForHistoricalDataMineArea(10000)
|| !m_aesDtc->waitForHistoricalDataExplosionCluster(10000))
{
ERROR_LOG(m_logger) << "Error waiting for historical data AES.";
ERROR_LOG() << "Error waiting for historical data AES.";
return false;
}
DEBUG_LOG(m_logger) << "Initialisation successful";
DEBUG_LOG() << "Initialisation successful";
return true;
}
@@ -126,7 +125,7 @@ void HandlerAesData::process(const QByteArray &data, int multiplexer)
break;
}
default:
WARNING_LOG(m_logger) << "Got unknown multiplexer.";
WARNING_LOG() << "Got unknown multiplexer.";
}
}
@@ -140,121 +139,121 @@ void HandlerAesData::specificsExercise(const OcTelegrams::SpecificsExercise &dat
void HandlerAesData::onMineAreaModifyFromCtaDataReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Mine area modify failed: " << reply.translated();
ERROR_LOG() << "Mine area modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Mine area modify successfull. Id: " << reply.id();
DEBUG_LOG() << "Mine area modify successfull. Id: " << reply.id();
}
void HandlerAesData::onNContaminationModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "N contamination modify failed: " << reply.translated();
ERROR_LOG() << "N contamination modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "N contamination modify successfull. Id: " << reply.id();
DEBUG_LOG() << "N contamination modify successfull. Id: " << reply.id();
}
void HandlerAesData::onFunctionalAreaModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Functional area modify failed: " << reply.translated();
ERROR_LOG() << "Functional area modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Functional area modify successfull. Id: " << reply.id();
DEBUG_LOG() << "Functional area modify successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionSingleModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Explosion single modify failed: " << reply.translated();
ERROR_LOG() << "Explosion single modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Explosion single modify successfull. Id: " << reply.id();
DEBUG_LOG() << "Explosion single modify successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionAreaModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Explosion area modify failed: " << reply.translated();
ERROR_LOG() << "Explosion area modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Explosion area modify successfull. Id: " << reply.id();
DEBUG_LOG() << "Explosion area modify successfull. Id: " << reply.id();
}
void HandlerAesData::onBCContaminationModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "BC contamination modify failed: " << reply.translated();
ERROR_LOG() << "BC contamination modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "BC contamination modify successfull. Id: " << reply.id();
DEBUG_LOG() << "BC contamination modify successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionClusterOcModifyReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "ExplosionCluster modify failed: " << reply.translated();
ERROR_LOG() << "ExplosionCluster modify failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "ExplosionCluster successfull. Id: " << reply.id();
DEBUG_LOG() << "ExplosionCluster successfull. Id: " << reply.id();
}
void HandlerAesData::onMineAreaRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Mine area remove failed: " << reply.translated();
ERROR_LOG() << "Mine area remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Mine area remove successfull. Id: " << reply.id();
DEBUG_LOG() << "Mine area remove successfull. Id: " << reply.id();
}
void HandlerAesData::onNContaminationRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "N contamination remove failed: " << reply.translated();
ERROR_LOG() << "N contamination remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "N contamination remove successfull. Id: " << reply.id();
DEBUG_LOG() << "N contamination remove successfull. Id: " << reply.id();
}
void HandlerAesData::onFunctionalAreaRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Functional area remove failed: " << reply.translated();
ERROR_LOG() << "Functional area remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Functional area remove successfull. Id: " << reply.id();
DEBUG_LOG() << "Functional area remove successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionSingleRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Explosion single remove failed: " << reply.translated();
ERROR_LOG() << "Explosion single remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Explosion single remove successfull. Id: " << reply.id();
DEBUG_LOG() << "Explosion single remove successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionAreaRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Explosion area remove failed: " << reply.translated();
ERROR_LOG() << "Explosion area remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Explosion area remove successfull. Id: " << reply.id();
DEBUG_LOG() << "Explosion area remove successfull. Id: " << reply.id();
}
void HandlerAesData::onBCContaminationRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "BC contamination remove failed: " << reply.translated();
ERROR_LOG() << "BC contamination remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "BC contamination remove successfull. Id: " << reply.id();
DEBUG_LOG() << "BC contamination remove successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionClusterRemoveReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "ExplosionCluster remove failed: " << reply.translated();
ERROR_LOG() << "ExplosionCluster remove failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "ExplosionCluster remove successfull. Id: " << reply.id();
DEBUG_LOG() << "ExplosionCluster remove successfull. Id: " << reply.id();
}
void HandlerAesData::onExplosionAreaPauseResumeReply(const Core::FunctionReplyObject &reply)
{
if (reply.error())
ERROR_LOG(m_logger) << "Explosion area pause/resume failed: " << reply.translated();
ERROR_LOG() << "Explosion area pause/resume failed: " << reply.translated();
else
DEBUG_LOG(m_logger) << "Explosion area pause/resume successfull. Id: " << reply.id();
DEBUG_LOG() << "Explosion area pause/resume successfull. Id: " << reply.id();
}
template <typename T> static inline void getBasicData(const QByteArray &data, size_t &pos, T &req, bool withoutEffectStart = false)
@@ -301,8 +300,8 @@ static inline double mathToCompassAngle(int mathDegree)
void HandlerAesData::bcContaminations(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new BC contamination data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new BC contamination data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->bCContaminations().keys();
@@ -341,7 +340,7 @@ void HandlerAesData::bcContaminations(const QByteArray &data)
req.chargeTypeId(chargeTypeIdFromChargeTasCode(ProjectDataManagement::GearClass_def::Biological, tmp));
LtsUtils::get1Byte(data, pos, tmp);
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "BC contamination: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "BC contamination: " << req;
aesToBeDeleted.removeAll(req.id());
req.id(req.id() * -1);
@@ -355,7 +354,7 @@ void HandlerAesData::bcContaminations(const QByteArray &data)
continue;
if (m_aesDtc->bCContamination(id).effectStateId().underlying() > AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Removing BC contamination id: " << id;
DEBUG_LOG() << "Removing BC contamination id: " << id;
m_aesFtc->bCContaminationRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -363,8 +362,8 @@ void HandlerAesData::bcContaminations(const QByteArray &data)
void HandlerAesData::explosionAreas(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new explosion cluster data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new explosion cluster data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->explosionClusters().keys();
@@ -442,12 +441,12 @@ void HandlerAesData::explosionAreas(const QByteArray &data)
LtsUtils::get3Byte(data, pos, tmp);
}
DEBUG_LOG(m_logger) << "New ExplosionClusterOcModifyRequest: "
DEBUG_LOG() << "New ExplosionClusterOcModifyRequest: "
<< "\nid:" << req.id() << "\nname:" << req.name() << "\neffectStart:" << req.effectStart() << "\neffectDuration:" << req.effectDuration()
<< "\narea:" << req.area() << "\nmhpCount:" << req.mhpCount() << "\nmhpRotation:" << req.mhpRotation() << "\nimpactCount:" << req.impactCount()
<< "\nchargeTypeId:" << req.chargeStruct().chargeTypeId() << "\npartyId:" << req.partyId();
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "explosion cluster: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "explosion cluster: " << req;
aesToBeDeleted.removeOne(req.id());
req.id(req.id() * -1);
@@ -467,7 +466,7 @@ void HandlerAesData::explosionAreas(const QByteArray &data)
||
(exp.effectStateId().underlying() == AreaEffectSimulation::AesEffectState::EsPaused))))
{
DEBUG_LOG(m_logger) << "Removing explosion cluster with id: " << id;
DEBUG_LOG() << "Removing explosion cluster with id: " << id;
m_aesFtc->explosionClusterRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -475,8 +474,8 @@ void HandlerAesData::explosionAreas(const QByteArray &data)
void HandlerAesData::explosionSingles(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new explosion single data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new explosion single data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->explosionSingles().keys();
@@ -503,7 +502,7 @@ void HandlerAesData::explosionSingles(const QByteArray &data)
req.chargeTypeId(chargeTypeIdFromChargeTasCode(ProjectDataManagement::GearClass_def::Artillery, tmp));
if (req.chargeTypeId() == 0)
req.chargeTypeId(chargeTypeIdFromChargeTasCode(ProjectDataManagement::GearClass_def::Mortar, tmp));
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "explosion single: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "explosion single: " << req;
aesToBeDeleted.removeAll(req.id());
req.id(req.id() * -1);
@@ -518,7 +517,7 @@ void HandlerAesData::explosionSingles(const QByteArray &data)
if ((exp.effectStateId().underlying() > AreaEffectSimulation::AesEffectState::EsRemoved)
&& (exp.effectStart().is_set() && (exp.effectStart().get() > (m_dds->currentPartitionTime() + 5000))))
{
DEBUG_LOG(m_logger) << "Removing explosion single id: " << id;
DEBUG_LOG() << "Removing explosion single id: " << id;
m_aesFtc->explosionSingleRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -526,8 +525,8 @@ void HandlerAesData::explosionSingles(const QByteArray &data)
void HandlerAesData::functionalAreas(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got functional area data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got functional area data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->functionalAreas().keys();
@@ -572,7 +571,7 @@ void HandlerAesData::functionalAreas(const QByteArray &data)
req.medicTime(tmp * 10 * 60 * 1000);
req.chargeTypeId(411);
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "functional area: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "functional area: " << req;
aesToBeDeleted.removeAll(req.id());
req.id(req.id() * -1);
@@ -586,7 +585,7 @@ void HandlerAesData::functionalAreas(const QByteArray &data)
continue;
if (m_aesDtc->functionalArea(id).effectStateId().underlying() > AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Removing functional area id: " << id;
DEBUG_LOG() << "Removing functional area id: " << id;
m_aesFtc->functionalAreaRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -594,8 +593,8 @@ void HandlerAesData::functionalAreas(const QByteArray &data)
void HandlerAesData::nContaminations(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new N contamination data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new N contamination data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->nContaminations().keys();
@@ -629,7 +628,7 @@ void HandlerAesData::nContaminations(const QByteArray &data)
req.chargeTypeId(chargeTypeIdFromChargeTasCode(ProjectDataManagement::GearClass_def::Nuclear, 1));
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "N contamination: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "N contamination: " << req;
aesToBeDeleted.removeAll(req.id());
req.id(req.id() * -1);
@@ -643,7 +642,7 @@ void HandlerAesData::nContaminations(const QByteArray &data)
continue;
if (m_aesDtc->nContamination(id).effectStateId().underlying() > AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Removing N contamination id: " << id;
DEBUG_LOG() << "Removing N contamination id: " << id;
m_aesFtc->nContaminationRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -651,8 +650,8 @@ void HandlerAesData::nContaminations(const QByteArray &data)
void HandlerAesData::mineAreas(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new mine area data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new mine area data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
QList<int> aesToBeDeleted = m_aesDtc->mineAreas().keys();
@@ -701,7 +700,7 @@ void HandlerAesData::mineAreas(const QByteArray &data)
req.isCenterLine(true);
DEBUG_LOG(m_logger) << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "mine area: " << req;
DEBUG_LOG() << (aesToBeDeleted.contains(req.id()) ? "Modifying " : "Creating ") << "mine area: " << req;
aesToBeDeleted.removeAll(req.id());
req.id(req.id() * -1);
@@ -716,7 +715,7 @@ void HandlerAesData::mineAreas(const QByteArray &data)
continue;
if (m_aesDtc->mineArea(id).effectStateId().underlying() > AreaEffectSimulation::AesEffectState::EsRemoved)
{
DEBUG_LOG(m_logger) << "Removing mine area id: " << id;
DEBUG_LOG() << "Removing mine area id: " << id;
m_aesFtc->mineAreaRemoveRequest(Core::RemoveElementRequest(id), this);
}
}
@@ -724,8 +723,8 @@ void HandlerAesData::mineAreas(const QByteArray &data)
void HandlerAesData::explosionAreasPause(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new explosion area pause data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new explosion area pause data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
size_t pos = 0;
int cnt;
@@ -735,7 +734,7 @@ void HandlerAesData::explosionAreasPause(const QByteArray &data)
for (int i = 0; i < cnt; ++i)
{
LtsUtils::get2Byte(data, pos, id);
DEBUG_LOG(m_logger) << "Pausing ID: " << id;
DEBUG_LOG() << "Pausing ID: " << id;
m_aesFtc->explosionAreaPauseResumeRequest(AreaEffectSimulation::ExplosionAreaPauseResumeRequest(id,
false,
dds::core::optional<rti::core::int64>(),
@@ -747,8 +746,8 @@ void HandlerAesData::explosionAreasPause(const QByteArray &data)
void HandlerAesData::explosionAreasResume(const QByteArray &data)
{
INFO_LOG(m_logger) << "Got new explosion area resume data";
DEBUG_LOG(m_logger) << "Binary data: " << data.toHex(' ');
INFO_LOG() << "Got new explosion area resume data";
DEBUG_LOG() << "Binary data: " << data.toHex(' ');
size_t pos = 0;
int cnt;
@@ -767,7 +766,7 @@ void HandlerAesData::explosionAreasResume(const QByteArray &data)
req.timeToResume(dds::core::optional<rti::core::int64>(tmp * 1000));
LtsUtils::get2Byte(data, pos, tmp);
req.remainingDuration(dds::core::optional<int32_t>(tmp));
DEBUG_LOG(m_logger) << "Resuming: " << req;
DEBUG_LOG() << "Resuming: " << req;
m_aesFtc->explosionAreaPauseResumeRequest(req, this);
}
}
@@ -780,7 +779,7 @@ int HandlerAesData::chargeTypeIdFromChargeTasCode(ProjectDataManagement::GearCla
{
if (!m_pdmDtc->waitForHistoricalDataChargeType(20000))
{
ERROR_LOG(m_logger) << "Can not read charge types from PDM";
ERROR_LOG() << "Can not read charge types from PDM";
QCoreApplication::exit(-1);
return -1;
}