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.

type PyCellObject

   A estrutura C usada para objetos célula.

PyTypeObject PyCell_Type

   O objeto de tipo correspondente aos objetos célula.

int PyCell_Check(PyObject *ob)

   Retorna verdadeiro se *ob* for um objeto célula; *ob* não deve ser
   "NULL". Esta função sempre tem sucesso.

PyObject *PyCell_New(PyObject *ob)
    *Retorna valor: Nova referência.*

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

PyObject *PyCell_Get(PyObject *cell)
    *Retorna valor: Nova referência.*

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

PyObject *PyCell_GET(PyObject *cell)
    *Retorna valor: Referência emprestada.*

   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.
