Objeto célula
*************

Objetos "cell" são usados ​​para implementar variáveis ​​referenciadas
por múltiplos escopos. Para cada variável, um objeto célula é criado
para armazenar o valor; as variáveis ​​locais de cada quadro de pilha
que referencia o valor contém uma referência para as células de
escopos externos que também usam essa variável. Quando o valor é
acessado, o valor contido na célula é usado em vez do próprio objeto
da célula. Essa des-referência do objeto da célula requer suporte do
código de bytes gerado; estes não são automaticamente desprezados
quando acessados. Objetos de células provavelmente não serão úteis em
outro lugar.

PyCellObject

   A estrutura C usada para objetos célula.

PyTypeObject PyCell_Type

   O objeto de tipo correspondente aos objetos célula.

int PyCell_Check(ob)

   Retorna true se *ob* for um objeto de célula; *ob* não deve ser
   "NULL".

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

   Cria e retorna um novo objeto célula contendo o valor *ob*. O
   parâmetro pode ser "NULL".

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

   Retorna o conteúdo da célula *cell*.

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

   Retorna o conteúdo da célula *cell*, mas sem verificar se *cell*
   não é "NULL" e um objeto célula.

int PyCell_Set(PyObject *cell, PyObject *value)

   Define o conteúdo do objeto da célula *cell* como *value*. Isso
   libera a referência a qualquer conteúdo atual da célula. *value*
   pode ser "NULL". *cell* não pode ser "NULL"; se não for um objeto
   célula, "-1" será retornado. Em caso de sucesso, "0" será
   retornado.

void PyCell_SET(PyObject *cell, PyObject *value)

   Define o valor do objeto da célula *cell* como *value*. Nenhuma
   contagem de referência é ajustada e nenhuma verificação é feita
   quanto à segurança; *cell* não pode ser "NULL" e deve ser um objeto
   célula.
