Moin moin.
Bin etwas eingerostet in Sachen Delphi und hatte da letztens eine Anfrage aus Akademikerkreisen zum Thema Headerkonvertierung. Vielleicht ist der Anfragende sogar ein Forenmitglied. Bin da nicht sicher.
Einerlei. Forschung zu unterstützen ist eine noble Sache, also nahm ich mir ein paar Stunden um mir das Problem näher anzuschauen.
Es ging um die Konvertierung eines Headers für eine Bibliothek die zum Ansteuern eines Meßgerätes benutzt wird. Ich nehme an nachdem ich trotz vieler investierter Stunden keine Lösung bieten konnte (s.u.) hat der Anfragende mittlerweile aufgegeben auf eine Lösung von meiner Seite zu hoffen.
Zuerst schaute ich mir halt die Headerdatei an. Nix besonderes, ein paar Aliase für übliche Typen, hier und da ein paar #ifdef. Danach die beigefügte Konvertierung welche wohl mit headconv erstellt wurde.
Ein Blick auf die Projektseite für headconv/JDarth zeigte, daß es seit meinem Ausstieg aus
JEDI keinerlei Fortschritt mehr gab.
Mein Plan war nun wie folgt:
1. Headerdatei manuell anpassen um headconv möglichst viele Hürden zu ersparen
2. headconv auf die Headerdatei ansetzen
3. iterativ anhand des Gelernten wieder bei 1. Anpassungen vornehmen.
Zu meinem Entsetzen mußte ich feststellen, daß headconv ganze Arbeit leistete die Ausgabe zu zerpflücken. Da wurden offenbar teils Strings an der falschen Stelle eingefügt, was bei einigen Funktionen dazu führte, daß die Übersetzung nun deutlich mehr Parameter für Funktionsprototypen veranschlagte als der Header und daß einige der Typen von Parametern total verkorkste Namen bekamen.
Nunja, mein Delphi-Foo ist ziemlich eingerostet, daher gab ich schnell die Idee auf headconv anzupassen.
Daher meine Frage:
Kennt jemand von euch gute Übersichten darüber, welche Grundtypen in C/C++ welchem Delphityp entsprechen? Bitte vorzugsweise inklusive Fußnoten zum Problemen wie bei 64-bittigen vorzeichenlosen Ganzzahlen, welche zwar dem Namen nach in älteren Delphiversionen existierten, aber lange Zeit eben doch vorzeichenbehaftet waren.
Meine Idee ist, daß ich in Python mithilfe von pycparser und anderen bereits existierenden Modulen vielleicht den Grundstein für eine Python-basierte Version von headconv legen könnte.
Falls jemandem aber aktuellere Forks von headconv oder gar ähnliche Projekte wie das von mir beschriebene bekannt sein sollten, bitte ich um Rückmeldung.
Vielen Dank.