Zellenobjekte

„Zellen“-Objekte werden verwendet, um Variablen zu implementieren, auf die von mehreren Gültigkeitsbereichen zugegriffen wird. Für jede solche Variable wird ein Zellenobjekt erstellt, um den Wert zu speichern. Die lokalen Variablen jedes Stack-Frames, die auf den Wert zugreifen, enthalten eine Referenz auf die Zellen aus äußeren Gültigkeitsbereichen, die diese Variable ebenfalls verwenden. Wenn auf den Wert zugegriffen wird, wird der im Zelle enthaltene Wert anstelle des Zellenobjekts selbst verwendet. Diese Dereferenzierung des Zellenobjekts erfordert Unterstützung durch den generierten Bytecode; diese werden beim Zugriff nicht automatisch dereferenziert. Zellenobjekte sind wahrscheinlich nirgendwo anders nützlich.

type PyCellObject

Die C-Struktur, die für Zellenobjekte verwendet wird.

PyTypeObject PyCell_Type

Das Typobjekt, das Zellenobjekten entspricht.

int PyCell_Check(PyObject *ob)

Gibt wahr zurück, wenn ob ein Zellenobjekt ist; ob darf nicht NULL sein. Diese Funktion ist immer erfolgreich.

PyObject *PyCell_New(PyObject *ob)
Rückgabewert: Neue Referenz.

Erstellt und gibt ein neues Zellenobjekt zurück, das den Wert ob enthält. Der Parameter darf NULL sein.

PyObject *PyCell_Get(PyObject *cell)
Rückgabewert: Neue Referenz.

Gibt den Inhalt der Zelle cell zurück, der NULL sein kann. Wenn cell kein Zellenobjekt ist, wird NULL mit gesetzter Ausnahme zurückgegeben.

PyObject *PyCell_GET(PyObject *cell)
Rückgabewert: Entliehene Referenz.

Gibt den Inhalt der Zelle cell zurück, ohne zu überprüfen, ob cell nicht NULL ist und ein Zellenobjekt ist.

int PyCell_Set(PyObject *cell, PyObject *value)

Setzt den Inhalt des Zellenobjekts cell auf value. Dies gibt die Referenz auf jeden aktuellen Inhalt der Zelle frei. value darf NULL sein. cell darf nicht NULL sein.

Bei Erfolg wird 0 zurückgegeben. Wenn cell kein Zellenobjekt ist, wird eine Ausnahme gesetzt und -1 zurückgegeben.

void PyCell_SET(PyObject *cell, PyObject *value)

Setzt den Wert des Zellenobjekts cell auf value. Es werden keine Referenzzähler angepasst und keine Sicherheitsprüfungen durchgeführt; cell darf nicht NULL sein und muss ein Zellenobjekt sein.