Python

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)

opcurses.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;
    }
}
PyCursesInitialised

:func:`curses.initscr`가 호출되었는지 확인하는 매크로입니다.

매크로 전개는 대략적으로 다음과 같습니다:

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

:func:`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;
    }
}

내부 데이터

다음 객체들은 C API에 의해 노출되지만 내부 전용으로 간주되어야 합니다.

PyCurses_CAPSULE_NAME

:c:func:`PyCapsule_Import`에 전달할 curses 캡슐 이름입니다.

내부 용도로만 사용하십시오. 대신 :c:macro:`import_curses`를 사용하십시오.