
On 2012-03-23 16:05:43 +0100, Diez B. Roggisch said:
Dazu nimmt man besser spezielle C++ wrapper Generatoren. Ich habe gute Erfahrungen mit SIP gemacht. SWIG, Cython, Boost::Python ebenfalls. Diez
Danke für diesen Hinweis, ich hatte mit SWIG mal bezüglich Java angeschaut, aber leider war das nicht so ganz, wie ich das wollte. Ich denke, da ich eh mit Boost arbeite, werde ich Boost::Python einmal probieren. Meine C++ Klassen sind Templates, so dass ich ohnehin wohl entsprechenden C++ Code schreiben muss, um die Typenbindung zu erreichen, ich denke der Generator kann mir das nicht umsetzen, oder?
Wenn ich das dann richtig verstehe, würde mir der Generator aus meiener CPP Implementation der Klasse entsprechenden Pythoncode erzeugen
Danke
Phil

Philipp Kraus, 23.03.2012 16:30:
On 2012-03-23 16:05:43 +0100, Diez B. Roggisch said:
Dazu nimmt man besser spezielle C++ wrapper Generatoren. Ich habe gute Erfahrungen mit SIP gemacht. SWIG, Cython, Boost::Python ebenfalls. Diez
Danke für diesen Hinweis, ich hatte mit SWIG mal bezüglich Java angeschaut, aber leider war das nicht so ganz, wie ich das wollte.
SIP und SWIG sind automatische Wapper-Generatoren. Entweder, sie tun was du willst - oder eben nicht. Und wenn nicht, dann wird's im besten Fall nur irre kompliziert und im schlechtesten Fall kannst du das Tool wechseln.
Ich denke, da ich eh mit Boost arbeite, werde ich Boost::Python einmal probieren. Meine C++ Klassen sind Templates, so dass ich ohnehin wohl entsprechenden C++ Code schreiben muss, um die Typenbindung zu erreichen, ich denke der Generator kann mir das nicht umsetzen, oder?
Doch, müsste eigentlich jeder C++-Wrapper-Generator unterstützen. Cython kann es in jedem Fall und generiert auch (erfahrungsgemäß) den schnellsten Code. Und: du kannst damit den Wrapper-Code in Python schreiben statt in C++. Hat also nur Vorteile gegenüber Boost::Python.
Wenn ich das dann richtig verstehe, würde mir der Generator aus meiener CPP Implementation der Klasse entsprechenden Pythoncode erzeugen
Grundsätzlich erstmal ja. Wie das genau geht und welche Arbeit der Generator dir abnimmt (oder zusätzlich aufbürdet), das ist bei jedem unterschiedlich.
Stefan

Stefan Behnel, 27.03.2012 10:54:
Philipp Kraus, 23.03.2012 16:30:
Wenn ich das dann richtig verstehe, würde mir der Generator aus meiener CPP Implementation der Klasse entsprechenden Pythoncode erzeugen
Grundsätzlich erstmal ja
Äh, hopsa - zu schnell geantwortet. "Python-Code" im Sinne von "Code für CPython" (oder andere Python-Implementierungen), nicht im Sinne von "Python Source-Code".
Der generierte Code ist in deinem Fall immer C++ (wenn auch wahrscheinlich mit hohem C-Anteil).
Stefan

On 03/27/2012 11:19 AM, Stefan Behnel wrote:
Stefan Behnel, 27.03.2012 10:54:
Philipp Kraus, 23.03.2012 16:30:
Wenn ich das dann richtig verstehe, würde mir der Generator aus meiener CPP Implementation der Klasse entsprechenden Pythoncode erzeugen
Grundsätzlich erstmal ja
Äh, hopsa - zu schnell geantwortet. "Python-Code" im Sinne von "Code für CPython" (oder andere Python-Implementierungen), nicht im Sinne von "Python Source-Code".
Der generierte Code ist in deinem Fall immer C++ (wenn auch wahrscheinlich mit hohem C-Anteil).
Und noch eigentlicher erzeugt er doch nur Glue-Code, der den Objekt-Code der entsprechenden Library instrumentiert und dieser Glue-Code ist für Python sichtbar. Die Original-Library wird ja dadurch nicht nach Python portiert sondern für Python nutzbar.
participants (3)
-
Christian Theune
-
Philipp Kraus
-
Stefan Behnel