Files
qt6-migration-pipeline/create_dds_stubs.py
T
torstenandCopilot 342ffd3e5c Update submodule to latest BUILD_RTI fixes
- HandlerMinelayerData: BUILD_RTI Guards für RTI-Abhängigkeiten
- svcTabCommon: Export-Header-Fix via Fallback-Target
- TrainingAreaBase: Stub-Header für BUILD_RTI=OFF
- ddsfts: Include-Pfad und Dependency-Fixes
- BUILD_RTI=OFF Compilation vollständig unterstützt

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0JNZA586SACX1PRZ2DJAE5S
2026-08-21 19:30:20 +02:00

256 lines
8.9 KiB
Python

#!/usr/bin/env python3
"""
Erstellt Stub-Header für DDS-generierte Dateien die im Repository fehlen.
Diese Header werden normalerweise von ddsdtc aus IDL-Dateien generiert.
"""
import os
from pathlib import Path
# Basis-Pfad
BASE_PATH = Path("/home/torsten/swy/sandbox/qt-migration-legatus/qt6-after/qt6-migrated-legatus")
# Stub-Inhalte für verschiedene Header-Typen
DTC_STUB = """#pragma once
// STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert
// Für die Migration erstellen wir minimale Forward-Declarations
namespace {namespace_name}
{{
namespace Interface
{{
class Dtc;
class Ftc;
}}
}}
"""
ENUMS_STUB = """#pragma once
// STUB-HEADER: Diese Datei wird normalerweise von ddsdtc generiert
// Für die Migration erstellen wir minimale Typ-Definitionen
namespace {namespace_name}
{{
// Placeholder enums - werden durch echte DDS-Typen ersetzt
enum class SymbolAppearance : int {{
Solid = 0,
Dashed = 1,
Dotted = 2
}};
enum class SymbolVisibility : int {{
Visible = 0,
Hidden = 1
}};
struct UnitSymbolPosition {{
double x = 0.0;
double y = 0.0;
double z = 0.0;
}};
}}
"""
def create_stub_header(file_path, stub_type, namespace_name):
"""Erstellt einen Stub-Header an der gegebenen Position"""
full_path = BASE_PATH / file_path
# Verzeichnis erstellen falls nicht vorhanden
full_path.parent.mkdir(parents=True, exist_ok=True)
if stub_type == "dtc":
content = DTC_STUB.format(namespace_name=namespace_name)
elif stub_type == "enums":
content = ENUMS_STUB.format(namespace_name=namespace_name)
else:
content = f"#pragma once\n// STUB for {file_path}\n"
if not full_path.exists():
with open(full_path, 'w') as f:
f.write(content)
print(f"✓ Created: {file_path}")
return True
else:
print(f" Exists: {file_path}")
return False
# Liste der zu erstellenden Stub-Header
stubs = [
# InfrastructureManagement
("Services/InfrastructureManagement/ism_dtc.h", "dtc", "InfrastructureManagement"),
("Services/InfrastructureManagement/ism_enums.hpp", "enums", "InfrastructureManagement"),
("InfrastructureManagement/ism_dtc.h", "dtc", "InfrastructureManagement"),
("InfrastructureManagement/ism_enums.hpp", "enums", "InfrastructureManagement"),
# AreaEffectSimulation (bereits erstellt, aber prüfen)
("AreaEffectSimulation/aes_enums.hpp", "enums", "AreaEffectSimulation"),
("Services/AreaEffectSimulation/aes_enums.hpp", "enums", "AreaEffectSimulation"),
# AlarmManagement
("Services/AlarmManagement/alm_dtc.h", "dtc", "AlarmManagement"),
("AlarmManagement/alm_dtc.h", "dtc", "AlarmManagement"),
# AssetManagement
("AssetManagement/asm_dtc.h", "dtc", "AssetManagement"),
("AssetManagement/asm_enums.hpp", "enums", "AssetManagement"),
# AudioVideoManagement
("Services/AudioVideoManagement/avm_dtc.h", "dtc", "AudioVideoManagement"),
("AudioVideoManagement/avm_dtc.h", "dtc", "AudioVideoManagement"),
("AudioVideoManagement/avm_enums.hpp", "enums", "AudioVideoManagement"),
# Buildings
("Buildings/bld_dtc.h", "dtc", "Buildings"),
("Buildings/bld_enums.hpp", "enums", "Buildings"),
("Proxies/Buildings/bld_dtc.h", "dtc", "Buildings"),
# CentralEffectSimulation
("CentralEffectSimulation/ces_dtc.h", "dtc", "CentralEffectSimulation"),
# CodificationManagement
("Services/CodificationManagement/cod_dtc.h", "dtc", "CodificationManagement"),
("CodificationManagement/cod_dtc.h", "dtc", "CodificationManagement"),
# ComponentMonitor
("ComponentMonitor/cmo_dtc.h", "dtc", "ComponentMonitor"),
# Core
("Core/core_dtc.h", "dtc", "Core"),
("Core/core_enums.hpp", "enums", "Core"),
("DDS/Core/core_dtc.h", "dtc", "Core"),
("DDS/Core/core_enums.hpp", "enums", "Core"),
# DDS Generic
("DDS/DTC/generic_dtc.h", "dtc", "DDS"),
("generic_dtc.h", "dtc", "DDS"),
# EffectShowClient
("Services/EffectShowClient/esc_dtc.h", "dtc", "EffectShowClient"),
("EffectShowClient/esc_dtc.h", "dtc", "EffectShowClient"),
# EffectShowManagement
("Services/EffectShowManagement/esm_dtc.h", "dtc", "EffectShowManagement"),
("EffectShowManagement/esm_dtc.h", "dtc", "EffectShowManagement"),
# Evaluations
("Evaluations/evl_dtc.h", "dtc", "Evaluations"),
# ExerciseEventManagement
("Services/ExerciseEventManagement/eem_enums.hpp", "enums", "ExerciseEventManagement"),
("ExerciseEventManagement/eem_dtc.h", "dtc", "ExerciseEventManagement"),
# ExerciseManagement
("Services/ExerciseManagement/exm_dtc.h", "dtc", "ExerciseManagement"),
("ExerciseManagement/exm_dtc.h", "dtc", "ExerciseManagement"),
("ExerciseManagement/exm_enums.hpp", "enums", "ExerciseManagement"),
# FileManagement
("Services/FileManagement/flm_dtc.h", "dtc", "FileManagement"),
("FileManagement/flm_dtc.h", "dtc", "FileManagement"),
("FileManagement/flm_enums.hpp", "enums", "FileManagement"),
# GuezIedManagement
("GuezIedManagement/gim_dtc.h", "dtc", "GuezIedManagement"),
# GuezNasat
("GuezNasat/gna_dtc.h", "dtc", "GuezNasat"),
# MarkerManagement
("MarkerManagement/mrk_dtc.h", "dtc", "MarkerManagement"),
# Messaging
("Services/Messaging/msg_dtc.h", "dtc", "Messaging"),
("Messaging/msg_dtc.h", "dtc", "Messaging"),
# MeteoDataManagement
("Services/MeteoDataManagement/mdm_dtc.h", "dtc", "MeteoDataManagement"),
("MeteoDataManagement/mdm_dtc.h", "dtc", "MeteoDataManagement"),
# NotificationManagement
("NotificationManagement/nom_dtc.h", "dtc", "NotificationManagement"),
("NotificationManagement/nom_enums.hpp", "enums", "NotificationManagement"),
# OcSituationServer
("OcSituationServer/oss_dtc.h", "dtc", "OcSituationServer"),
# OperatorManagement
("Services/OperatorManagement/opm_dtc.h", "dtc", "OperatorManagement"),
("OperatorManagement/opm_dtc.h", "dtc", "OperatorManagement"),
# ParticipantManagement
("Services/ParticipantManagement/ppm_dtc.h", "dtc", "ParticipantManagement"),
("ParticipantManagement/ppm_dtc.h", "dtc", "ParticipantManagement"),
("ParticipantManagement/ppm_enums.hpp", "enums", "ParticipantManagement"),
# pdm_enums (root level)
("pdm_enums.hpp", "enums", "ProjectDataManagement"),
# PresentationManagement
("Services/PresentationManagement/pre_dtc.h", "dtc", "PresentationManagement"),
("PresentationManagement/pre_dtc.h", "dtc", "PresentationManagement"),
# ProjectDataManagement
("ProjectDataManagement/pdm_dtc.h", "dtc", "ProjectDataManagement"),
("ProjectDataManagement/pdm_enums.hpp", "enums", "ProjectDataManagement"),
("Services/ProjectDataManagement/pdm_enums.hpp", "enums", "ProjectDataManagement"),
# Proxies TrainingAreaBase
("Proxies/TrainingAreaBase/tab_dtc.h", "dtc", "TrainingAreaBase"),
("TrainingAreaBase/tab_dtc.h", "dtc", "TrainingAreaBase"),
# Proxies TrainingAreaBaseOC
("Proxies/TrainingAreaBaseOC/taboc_dtc.h", "dtc", "TrainingAreaBaseOC"),
("TrainingAreaBaseOC/taboc_dtc.h", "dtc", "TrainingAreaBaseOC"),
("taboc_dtc.h", "dtc", "TrainingAreaBaseOC"),
# ReportManagement
("Services/ReportManagement/rep_dtc.h", "dtc", "ReportManagement"),
("ReportManagement/rep_dtc.h", "dtc", "ReportManagement"),
("ReportManagement/rep_enums.hpp", "enums", "ReportManagement"),
# ServiceManagement
("ServiceManagement/scm_dtc.h", "dtc", "ServiceManagement"),
# SituationReplay
("SituationReplay/srp_dtc.h", "dtc", "SituationReplay"),
("SituationReplay/srp_enums.hpp", "enums", "SituationReplay"),
# SituationReplayManagement
("SituationReplayManagement/srm_dtc.h", "dtc", "SituationReplayManagement"),
("Services/SituationReplayManagement/srm_dtc.h", "dtc", "SituationReplayManagement"),
# Skeleton
("Services/Skeleton/skl_dtc.h", "dtc", "Skeleton"),
# SoundManagement
("SoundManagement/som_dtc.h", "dtc", "SoundManagement"),
# TargetManagement
("Services/TargetManagement/tgt_dtc.h", "dtc", "TargetManagement"),
("TargetManagement/tgt_dtc.h", "dtc", "TargetManagement"),
# WarehouseGuez
("WarehouseGuez/whg_dtc.h", "dtc", "WarehouseGuez"),
# AreaEffectSimulation aes_dtc
("AreaEffectSimulation/aes_dtc.h", "dtc", "AreaEffectSimulation"),
("Services/AreaEffectSimulation/aes_dtc.h", "dtc", "AreaEffectSimulation"),
# aes_dtc.h (root level)
("aes_dtc.h", "dtc", "AreaEffectSimulation"),
]
if __name__ == "__main__":
print("Creating DDS stub headers...")
created = 0
exists = 0
for file_path, stub_type, namespace in stubs:
if create_stub_header(file_path, stub_type, namespace):
created += 1
else:
exists += 1
print(f"\n✓ Created: {created} stub headers")
print(f" Already exists: {exists}")