ich bin noch relativ neu in python und erst recht im schreiben von C extensions, wenn das also irgendwie trivial ist, wäre mir auch schon mit ein paar links bzw. Schlagwörter geholfen Prinzipiell funktioniert die extension auch aber mit einem Teil habe ich Probleme:
Ich moechte einen wrapper fuer eine C lib schreiben die in etwa so aussieht:
Code: Alles auswählen
struct Class {
int data;
void (*modify)(Class *, int new);
Code: Alles auswählen
void myModify(Class *c, int new) {
if (new > 3)
modify(c, new);
}
struct Class *c;
c = malloc(sizeof(Class));
c->data = 0;
c->modify = &mymodify;
Umsetzen moechte ich das so:
in __init__ wird das struct initialisiert, als modify wird ein pointer zu einer Hilfsfunktion uebergeben, diese Hilfsfunktion ruft dann die python methode mymodify auf, welche wiederum das echte modify (C lib) aufruft (Hoffe das war verständlich).
Das Problem ist jetzt, wie kann ich von der Hilfsfunktion die python Methode mymodify aufrufen, also wie komme ich an die richtige Klasse ran, denn wenn der User die Klasse abgeleitet hat soll ja die neue mymodify Methode aufgerufen werden (die dann gegebenenfalls die baseclass mymodify Methode aufruft)?
Vielleicht habe ich aber nur einen Denkfehler und man löst sowas ganz anders, wäre um jeden Hinweis/Denkanstoss dankbar