Check für Referenz in embedded Python
Verfasst: Samstag 27. September 2008, 20:43
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:
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!

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;
}
Hat irgendeiner eine Idee? ICH DANKE EUCH!