Python in C++ - Übergabe von boolschen Variablen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
MrSherenai
User
Beiträge: 5
Registriert: Dienstag 28. Mai 2013, 23:15

Hallo,

ich habe eine Python Funktion deren Rückgabetyp ein boolscher Typ ist. Allerdings finde ich in der Python3 Dokumentation keine Methode die es mir erlaubt das zurück erhaltene PyObject in bool zu casten bzw. auf den Typ zu testen, ich kann ja testen ob es vom Typ PyBool ist mit PyBool_check(), aber welcher der beiden Typen das ist bekomm ich nicht zurück.

Meine Überlegung bisher war das einfach auf long zu casten:

Code: Alles auswählen

Value = PyObject_CallObject(checkZusammengefuegte, Args);
cout << PyLong_AsLong(Value) << endl;
Habs schon getestet, Value ist sowohl vom Typ PyLong als auch PyBool, da PyBool nen subtyp von PyLong ist sollte das ja funktionieren oder nicht? Naja tuts aber nicht deshalb die Frage, wie bekomme ich die Rückgabewerte sauber in C++ übergeben?

Das Python Skript läuft Fehlerfrei.

P.S. Wenn irgendjemand irgendwo eine übersichtliche Dokumentation hat wie man die Typen ordentlich von Python nach C++ castet, da würd ich mich auch drüber freuen, find die Dokumentation der API was das angeht recht dürftig. Hab mich bisher immer damit über Wasser gehalten in der Dokumenation nach Datentypen zu suchen in der Hoffnung was brauchbares zu finden.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Was stört dich an PyObject_IsTrue(PyObject *o)?
MrSherenai
User
Beiträge: 5
Registriert: Dienstag 28. Mai 2013, 23:15

Das ichs nicht allein gefunden hab, werds gleich mal ausprobieren, danke.
MrSherenai
User
Beiträge: 5
Registriert: Dienstag 28. Mai 2013, 23:15

So einfach kanns gehen, funktioniert perfekt für meine Zwecke, danke :).
Antworten