[C-API] tuple <> list - Kompabilität?

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Hallo.
Gibt es eine Möglichkeit, Aufrufe an ``tuple`` oder ``list`` anzugleichen?
Angenommen, ich rufe eine Funktion auf, anhand dessen Rückgabe ich etwas auswerten möchte.
Da mehrere Daten zurückgegeben werden sollen, bietet sich ein ``tuple`` oder ein ``list`` an.
Ich möchte - wenn möglich - die Autoren von Scripts nicht so weit einschränken um zu sagen, das sie entweder ``tuple`` oder ``list`` benutzen müssen.
Also könnte theoretisch ein ``tuple`` oder ein ``list`` returnt werden.

Gibt es nun eine Möglichkeit, die Aufrufe wie PyTuple_Size, PyTuple_GetItem und so weiter zusammenzufassen?
Bisher mache ich immer mittels PyTuple_Check einen Check und gehe dann entweder den Weg mit PyTuple_X oder PyList_X.

Gruß
Grüßle.
BlackJack

@Chrisber: Du könntest anstelle der auf Typen spezialisierten Funktionen, die allgemeinen verwenden.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Da die wären? PySequence_X oder welche meinst du?

Gruß
Grüßle.
BlackJack

@Chrisber: Jup, die meinte ich.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Okay, funktioniert. Danke!

Gibt es auch eine Möglichkeit, den "in"-Operator (falls das einer ist) zu implementieren?
Also so, dass

Code: Alles auswählen

if "blah" in x:
funktioniert?

Finde dazu nichts passendes.

Gruß
Grüßle.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Danke :o
Wieso finde ich so etwas nie?! ...

Gruß
Grüßle.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Mhh, und wie implementiere ich dass nun in der C-API? :K
Ein tp_contains o.Ä. gibt es ja nicht...

Gruß
Grüßle.
BlackJack

@Chrisber: Sag mal wie suchst Du denn in der Dokumentation das Du da nie was findest? Zum Beispiel `sq_contains`.
Antworten