API C de curses

curses expõe uma pequena interface C para módulos de extensão. Os usuários devem incluir o arquivo de cabeçalho py_curses.h (que não é incluído por padrão em Python.h) e import_curses() deve ser invocada, geralmente como parte da função de inicialização do módulo, para popular PyCurses_API.

Aviso

Nem a API C nem o módulo curses do Python puro são compatíveis com subinterpretadores.

import_curses()

Importa a API C do curses. A macro não precisa de ponto e vírgula para ser chamada.

Em caso de sucesso, popula o ponteiro PyCurses_API.

Em caso de falha, define PyCurses_API como NULL e levanta uma exceção. O chamador deve verificar se ocorreu um erro através de PyErr_Occurred():

import_curses();  // O ponto e vírgula é opcional, mas recomendado.
if (PyErr_Occurred()) { /* cleanup */ }
void **PyCurses_API

Objeto alocado dinamicamente contendo a API C do curses. Esta variável só estará disponível após a execução bem-sucedida da macro import_curses.

PyCurses_API[0] corresponde a PyCursesWindow_Type.

PyCurses_API[1], PyCurses_API[2] e PyCurses_API[3] são ponteiros para funções predicativas do tipo int (*)(void).

Quando chamados, esses predicados retornam se curses.setupterm(), curses.initscr() e curses.start_color() foram chamados, respectivamente.

Veja também as macros de conveniência PyCursesSetupTermCalled, PyCursesInitialised e PyCursesInitialisedColor.

Nota

O número de entradas nesta estrutura está sujeito a alterações. Considere usar PyCurses_API_pointers para verificar se novos campos estão disponíveis.

PyCurses_API_pointers

O número de campos acessíveis (4) em PyCurses_API. Esse número é incrementado sempre que novos campos são adicionados.

PyTypeObject PyCursesWindow_Type

O tipo de heap correspondente a curses.window.

int PyCursesWindow_Check(PyObject *op)

Retorna verdadeiro se op for uma instância de curses.window, falso caso contrário.

As macros a seguir são macros de conveniência que se expandem em instruções C. Em particular, elas só podem ser usadas como macro; ou macro, mas não como macro() ou macro();.

PyCursesSetupTermCalled

Macro que verifica se curses.setupterm() foi chamada.

A expansão de macro é aproximadamente equivalente a:

{
    typedef int (*predicate_t)(void);
    predicate_t was_setupterm_called = (predicate_t)PyCurses_API[1];
    if (!was_setupterm_called()) {
        return NULL;
    }
}
PyCursesInitialised

Macro que verifica se curses.initscr() foi chamada.

A expansão de macro é aproximadamente equivalente a:

{
    typedef int (*predicate_t)(void);
    predicate_t was_initscr_called = (predicate_t)PyCurses_API[2];
    if (!was_initscr_called()) {
        return NULL;
    }
}
PyCursesInitialisedColor

Macro que verifica se curses.start_color() foi chamada.

A expansão de macro é aproximadamente equivalente a:

{
    typedef int (*predicate_t)(void);
    predicate_t was_start_color_called = (predicate_t)PyCurses_API[3];
    if (!was_start_color_called()) {
        return NULL;
    }
}

Dados internos

Os seguintes objetos são expostos pela API C, mas devem ser considerados apenas para uso interno.

PyCurses_CAPSULE_NAME

Nome da cápsula do curses a ser passada para PyCapsule_Import().

Uso interno apenas. Use import_curses em vez disso.