Konvertierung von Python nach C ++ mit Boost.Python

8

Ich habe eine Reihe von Klassen und APIs in C ++ geschrieben und Python mit Hilfe von Boost.Python

ausgesetzt

Ich untersuche derzeit die Möglichkeiten, die folgende Architektur zu erstellen.
In Python:

%Vor%

In C ++:

%Vor%

Im Grunde versuche ich alle Funktionen auf den nativen Teil meines Programms zu reduzieren. Die Sache ist, dass ich nicht sicher bin, ob es möglich ist, alle erforderlichen Daten aus Boost metainfo zu extrahieren, um dies auf generische Weise zu tun - zur Kompilierzeit sollte ich nicht wissen, welche Funktionen ich aufrufen werde und welche Argumente sie akzeptieren.

Wenige Fragen:
1. Gibt es geteilte Python-Infotabellen, auf die ich zugreifen kann, um nach etwas von diesem Zeug zu suchen?
2. Boost.Python schreibt Argumente. Kann es separat wiederverwendet werden?

Lass mich deine Gedanken wissen.

Danke

    
Alex 15.10.2010, 20:54
quelle

1 Antwort

1

Ich würde über Caching-Funktionen und ihre Argumente auf Python-Ebene nachdenken - speichern Sie die Argumente mit dem neuesten Formular aus Keyword-Argumente Abschnitt des Tutorials und rufen Sie Ihre C ++ - Funktionen später entpackte Argumente Das Entpacken auf Python-Ebene wird Sie von jeglichen Komplikationen bei der Sicherheit von Boost-Typen isolieren (die gesamte Typisierung wird auf der RunAll-Stufe durchgeführt, wodurch sie langsamer und weniger sicher wird).

Geschwindigkeit optimierte Ansatz wäre, eine C ++ - Klasse mit einer gemeinsamen Schnittstelle zu implementieren, die eine Funktion akzeptiert Aufrufe akzeptieren Argumente und Zwischenspeichern ihrer Werte intern für die Verwendung in späteren Lauf.

%Vor%

Bei diesem Ansatz wird das Parsen von Argumenten außerhalb des RunAll-Abschnitts behandelt, wodurch es so schnell wie möglich gemacht wird.

    
Basilevs 07.04.2011 13:12
quelle

Tags und Links