#!/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}")