Curses C API¶
curses exposes a small C interface for extension modules.
Consumers must include the header file py_curses.h (which is not
included by default by Python.h) and import_curses() must
be invoked, usually as part of the module initialisation function, to populate
PyCurses_API.
警告
Neither the C API nor the pure Python curses module are compatible
with subinterpreters.
-
import_curses()¶
Import the curses C API. The macro does not need a semi-colon to be called.
On success, populate the
PyCurses_APIpointer.On failure, set
PyCurses_APIto NULL and set an exception. The caller must check if an error occurred viaPyErr_Occurred():import_curses();// semi-colon is optional but recommended if(PyErr_Occurred()){/* cleanup */}
-
void**PyCurses_API¶
Dynamically allocated object containing the curses C API. This variable is only available once
import_cursessucceeds.PyCurses_API[0]corresponds toPyCursesWindow_Type.PyCurses_API[1],PyCurses_API[2], andPyCurses_API[3]are pointers to predicate functions of typeint (*)(void).When called, these predicates return whether
curses.setupterm(),curses.initscr(), andcurses.start_color()have been called respectively.See also the convenience macros
PyCursesSetupTermCalled,PyCursesInitialised, andPyCursesInitialisedColor.注釈
The number of entries in this structure is subject to changes. Consider using
PyCurses_API_pointersto check if new fields are available or not.
-
PyCurses_API_pointers¶
The number of accessible fields (
4) inPyCurses_API. This number is incremented whenever new fields are added.
-
PyTypeObject PyCursesWindow_Type¶
The heap type corresponding to
curses.window.
-
intPyCursesWindow_Check(PyObject *op)¶
Return true if op is a
curses.windowinstance, false otherwise.
The following macros are convenience macros expanding into C statements.
In particular, they can only be used as macro; or macro, but not
macro() or macro();.
-
PyCursesSetupTermCalled¶
Macro checking if
curses.setupterm()has been called.The macro expansion is roughly equivalent to:
{ typedefint(*predicate_t)(void); predicate_twas_setupterm_called=(predicate_t)PyCurses_API[1]; if(!was_setupterm_called()){ returnNULL; } }
-
PyCursesInitialised¶
Macro checking if
curses.initscr()has been called.The macro expansion is roughly equivalent to:
{ typedefint(*predicate_t)(void); predicate_twas_initscr_called=(predicate_t)PyCurses_API[2]; if(!was_initscr_called()){ returnNULL; } }
-
PyCursesInitialisedColor¶
Macro checking if
curses.start_color()has been called.The macro expansion is roughly equivalent to:
{ typedefint(*predicate_t)(void); predicate_twas_start_color_called=(predicate_t)PyCurses_API[3]; if(!was_start_color_called()){ returnNULL; } }
Internal data¶
The following objects are exposed by the C API but should be considered internal-only.
-
PyCurses_CAPSULE_NAME¶
Name of the curses capsule to pass to
PyCapsule_Import().Internal usage only. Use
import_cursesinstead.