Python Swig [] ueberladen

Python in C/C++ embedden, C-Module, ctypes, Cython, SWIG, SIP etc sind hier richtig.
Antworten
thomas15
User
Beiträge: 98
Registriert: Montag 7. April 2008, 19:07

Hi alle,

ich habe ein C++ Objekt das einen array speichert. Bisher habe in per swig interface nur eine methode gehabt um auf einzelne Array Eintraege zuzugreifen:

v.getV(x,y,z)

Weiss jemand wie man mit swig den [][][] operator ueberladen kann dass man eleganter & klassisch auf einzelne Elemente zugreifen kann? Am besten lesen und schreiben.

v[x][y][z]

?

Gruesse und Danke schonmal!
T
BlackJack

@thomas15: Ich sehe jetzt den Übergang von ``v.getV(x, y, z)`` zu ``v[x][y][z]`` nicht ganz. Da müsste man ja zusäzliche Zwischenobjekte definieren die bei ``v[x]`` zurückgegeben werden. Einfacher wird sicher die Umsetzung ``v[x, y, z]`` sein. Wobei man auch da wahrscheinlich extra Python- oder C++-Code braucht. Andererseits kenne ich mich mit SWIG auch nicht aus.
thomas15
User
Beiträge: 98
Registriert: Montag 7. April 2008, 19:07

BlackJack hat geschrieben:@thomas15: Ich sehe jetzt den Übergang von ``v.getV(x, y, z)`` zu ``v[x][y][z]`` nicht ganz. Da müsste man ja zusäzliche Zwischenobjekte definieren die bei ``v[x]`` zurückgegeben werden. Einfacher wird sicher die Umsetzung ``v[x, y, z]`` sein. Wobei man auch da wahrscheinlich extra Python- oder C++-Code braucht. Andererseits kenne ich mich mit SWIG auch nicht aus.
Hi BJ,

tatsaechlich wuerden die zwischenobjekte wie du sie nennst auch sinn machen, da habe ich schon drueber nachgedacht. ja.
mir ist aber fuer den ersten schritt erstmal wurscht welche syntax es wird, da ich es einfach schoener machen will.

es handelt sich um eine toolbox fuer die konsole so dass die benutzung intuitiver wird wenn man es mit [] implementiert, wie bei numpy / matlab oder so. im endeffekt wird es nicht funktioneller, nur wie gesagt intuitiver zu benutzen.

wenn also jemand mit swig in dieser form erfahrung hat dann bitte melden... :D

danke schonmal
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi,

na ja, die unterschiedliche Syntax hat aber auch verschiedene Bedeutungen.

Wie dem auch sei, das Problem ist wohl eher auf der C++-Seite zu suchen: http://www.parashift.com/c++-faq-lite/o ... #faq-13.10

Andererseits finde ich diese Lösung recht gut: http://www.codeguru.com/forum/showthrea ... did=231046

Und das müsste sich standardmäßig wrappen lassen.

HTH
Christian
Antworten