Spec-Zone.ru › Python 3.14

C API curses

curses предоставляет небольшой интерфейс на C для модулей расширения. Пользователи должны включить заголовочный файл py_curses.h (который не включается по умолчанию в Python.h) и вызвать import_curses(), обычно в составе функции инициализации модуля, чтобы заполнить PyCurses_API.

Предупреждение

Ни C API, ни модуль curses на чистом Python не совместимы с подинтерпретаторами.

import_curses()

Импортирует C API curses. Для вызова макроса точка с запятой не требуется.

В случае успеха заполняет указатель PyCurses_API.

В случае сбоя устанавливает для PyCurses_API значение NULL и устанавливает исключение. Вызывающий код должен проверить наличие ошибки с помощью PyErr_Occurred():

import_curses();  // semi-colon is optional but recommended
if (PyErr_Occurred()) { /* cleanup */ }
void **PyCurses_API

Динамически выделенный объект, содержащий C API curses. Эта переменная доступна только после успешного выполнения import_curses.

PyCurses_API[0] соответствует PyCursesWindow_Type.

PyCurses_API[1], PyCurses_API[2] и PyCurses_API[3] — указатели на функции-предикаты типа int (*)(void).

При вызове эти предикаты возвращают информацию о том, были ли вызваны соответственно curses.setupterm(), curses.initscr() и curses.start_color().

См. также вспомогательные макросы PyCursesSetupTermCalled, PyCursesInitialised и PyCursesInitialisedColor.

Примечание

Количество элементов в этой структуре может меняться. Используйте PyCurses_API_pointers, чтобы проверить, доступны ли новые поля.

PyCurses_API_pointers

Количество доступных полей (4) в PyCurses_API. Это число увеличивается при добавлении новых полей.

PyTypeObject PyCursesWindow_Type

Динамический тип, соответствующий curses.window.

int PyCursesWindow_Check(PyObject *op)

Возвращает true, если op является экземпляром curses.window, и false в противном случае.

Следующие макросы являются вспомогательными и раскрываются в операторы C. В частности, их можно использовать только как macro; или macro, но не как macro() или macro();.

PyCursesSetupTermCalled

Макрос проверяет, был ли вызван curses.setupterm().

Раскрытие макроса примерно эквивалентно:

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

Макрос проверяет, был ли вызван curses.initscr().

Раскрытие макроса примерно эквивалентно:

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

Макрос проверяет, был ли вызван curses.start_color().

Раскрытие макроса примерно эквивалентно:

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

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/c-api/curses.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API