Objets Cellules
***************

Les objets "Cellules" (*cell* en anglais) sont utilisés pour
implémenter des variables référencées dans de multiples
environnements. Pour chacune de ces variables, un objet cellule est
créé pour stocker sa valeur ; les variables locales de chaque pile
d'exécution qui référence cette valeur contiennent une référence sur
les cellules des autres environnements qui utilisent aussi cette
variable. Quand la valeur est accédée, la valeur de la cellule est
utilisée, au lei de celle de l'objet cellule proprement dit. Ce
dé-référencement de l'objet cellule requiert l'intervention du
*bytecode* généré ; il n'est pas automatiquement dé-référencé quand il
est accédé. Il est plausible que les objets cellules ne soit utilisés
ailleurs.

PyCellObject

   Structure C utilisée pour les objets cellules.

PyTypeObject PyCell_Type

   Type objet correspondant aux objets cellules.

int PyCell_Check(ob)

   Renvoie "True" si *ob* est un objet cellule ; *ob* ne doit pas être
   à *NULL*.

PyObject* PyCell_New(PyObject *ob)
    *Return value: New reference.*

   Crée et retourne un nouvel objet cellule contenant la valeur *ob*.
   Le paramètre peut être mis à *NULL*.

PyObject* PyCell_Get(PyObject *cell)
    *Return value: New reference.*

   Renvoie le contenu de la cellule *cell*.

PyObject* PyCell_GET(PyObject *cell)
    *Return value: Borrowed reference.*

   Renvoie le contenu de la cellule *cell*, mais sans vérifier si
   *cell* est non *NULL* et sans vérifier si c'est un objet cellule.

int PyCell_Set(PyObject *cell, PyObject *value)

   Définit le contenu de l'objet cellule à *value*. Cela libère la
   référence à toute valeur de la cellule. *value* peut être fixé à
   *NULL*. *cell* ne doit pas être *NULL* ; si ce n'est pas un objet
   cellule, "-1" est renvoyé. Si c'est un objet cellule, renvoie "0".

void PyCell_SET(PyObject *cell, PyObject *value)

   Définit la valeur de l'objet cellule à *value*. Pas de comptage de
   références n'est ajusté et il n'y' a pas de contrôle effectué pour
   vérifier la sûreté ; *cell* doit être à non *NULL* et doit être un
   objet cellule.
