Check für Referenz in embedded Python

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hi! :)

Ich habe eine kurze Frage, und zwar habe ich Python in meine App eingebettet und ein kleines Problem. Ich habe eine Klasse gewrappt und demnach ist im struct ein Pointer zum Objekt vorhanden.

Um es zu vereinfachen: Stelt euch vor das App ist Photoshop und ich habe die Klasse "Ebene" gewrappt. Ich kann also eine Ebene per Python erzeugen. Python besitzt das Objekt also und ist dafür zuständig beim refcount=0 das Objekt zu löschen.

Jetzt erzeuge ich also eine Ebene und übergebe diese an Photoshop das sie im aktuellen Dokument vorhanden ist. Jetzt hat Photoshop den Besitz des Objektes. Wenn ich die Ebene jetzt als User außerhalb vo Python und selbst in Photshop lösche, wird automatisch der Pointer im struct auf NULL gesetzt, das habe ich soweit erreicht. Soweit so gut, jetzt möchte ich aber nicht in jeder Methode des Python Layer Objects auf NULL checken, sondern hoffe, dass ich eventuell eine Methode im PyTypeObject angeben kann, die dauernd ausgeführt wird, bevor ich ein eine Refernez benutze.

Zum Beispiel:

Code: Alles auswählen

PyObject* CheckForNull(LayerObject* self)
{
      if(self->obj==NULL)
         Py_RETURN_NONE
      else
        return (PyObject*)self;
}
Das hieße, dass ich von der Referenz den Typ auf None setzen könnte, und ich mir sparen könnte, bei allen hunderten von Methoden auf NULL zu checken.

Hat irgendeiner eine Idee? ICH DANKE EUCH!
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

hi, hat keiner eine idee?
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Nur die, die du schon im IRC nicht hören wolltest...
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Antworten