Curses C API¶
curses`는 확장 모듈을 위한 작은 C 인터페이스를 노출합니다. 사용자는 헤더 파일 :file:`py_curses.h (이는 :file:`Python.h`에 기본 포함되지 않습니다.)를 포함해야 하며, :c:func:`import_curses`가 호출되어 :c:var:`PyCurses_API`를 채워야 합니다. 이는 보통 모듈 초기화 함수의 일부로 수행됩니다.
경고
C API와 순수 Python curses 모듈 모두 서브인터프리터와 호환되지 않습니다.
-
import_curses()¶
curses C API를 가져오십시오. 매크로는 콜하기 위해 세미콜론이 필요하지 않습니다.
성공하면
PyCurses_API포인터를 채웁니다.실패하면 :c:var:`PyCurses_API`를 NULL로 설정하고 예외를 설정합니다. 호출자는 :c:func:`PyErr_Occurred`를 통해 오류 발생 여부를 확인해야 합니다:
import_curses(); // 세미콜론은 선택적이지만 권장됨 if (PyErr_Occurred()) { /* 정리 */ }
-
void **PyCurses_API¶
curses C API를 포함하는 동적으로 할당된 객체입니다. 이 변수는 :c:macro:`import_curses`가 성공해야만 사용할 수 있습니다.
PyCurses_API[0]은PyCursesWindow_Type에 해당합니다.PyCurses_API[1],PyCurses_API[2], 및PyCurses_API[3]``은 ``int (*)(void)타입의 프리디케이트 함수에 대한 포인터입니다.이 프리디케이티들은 호출될 때 각각
curses.setupterm(),curses.initscr(), 및 :func:`curses.start_color`가 호출되었는지 여부를 반환합니다.또한 편의 매크로
PyCursesSetupTermCalled,PyCursesInitialised, 및 :c:macro:`PyCursesInitialisedColor`를 참조하십시오.참고
이 구조체의 항목 수는 변경될 수 있습니다. 새 필드가 사용 가능한지 확인하려면
PyCurses_API_pointers사용을 고려해 보십시오.
-
PyCurses_API_pointers¶
PyCurses_API에서 액세스 가능한 필드의 수 (4)입니다. 새 필드가 추가될 때마다 이 숫자는 증가합니다.
-
PyTypeObject PyCursesWindow_Type¶
:class:`curses.window`에 해당하는 :ref:`heap type <heap-types>`입니다.
-
int PyCursesWindow_Check(PyObject *op)¶
op 이
curses.window인스턴스인 경우 true를, 그렇지 않은 경우 false를 반환합니다.
다음 매크로는 C 문장으로 전개되는 편의 매크로입니다. 특히, 이들은 macro; 또는 macro 형태로만 사용될 수 있으며, macro() 나 macro(); 로는 사용할 수 없습니다.
-
PyCursesSetupTermCalled¶
:func:`curses.setupterm`이 호출되었는지 확인하는 매크로입니다.
매크로 전개는 대략적으로 다음과 같습니다:
{ typedef int (*predicate_t)(void); predicate_t was_setupterm_called = (predicate_t)PyCurses_API[1]; if (!was_setupterm_called()) { return NULL; } }
내부 데이터¶
다음 객체들은 C API에 의해 노출되지만 내부 전용으로 간주되어야 합니다.