Curses C API¶
curses предоставляет небольшой C-интерфейс для модулей расширения.
Потребители должны включать заголовочный файл py_curses.h (который по умолчанию не включается Python.h), а import_curses() должна
вызываться, обычно как часть функции инициализации модуля, для заполнения
PyCurses_API.
Предупреждение
Ни C API, ни чистый Python-модуль curses не совместимы
с субинтерпретаторами.
-
import_curses()¶
Импортирует curses C API. Для вызова макроса не требуется точка с запятой.
При успехе заполняет указатель
PyCurses_API.При ошибке устанавливает
PyCurses_APIв NULL и устанавливает исключение. Вызывающий код должен проверить, произошла ли ошибка, с помощьюPyErr_Occurred():import_curses(); // точка с запятой необязательна, но рекомендуется if (PyErr_Occurred()) { /* очистка */ }
-
void **PyCurses_API¶
Динамически размещаемый объект, содержащий curses C API. Эта переменная доступна только после успешного выполнения
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; } }
Внутренние данные¶Internal data
Следующие объекты предоставляются C API, но предназначены только для внутреннего использования.
-
PyCurses_CAPSULE_NAME¶
Имя капсулы curses, передаваемое в
PyCapsule_Import().Только для внутреннего использования. Используйте
import_curses.