Python

Curses C API

curses 는 확장 모듈을 위한 작은 C 인터페이스를 제공합니다. 사용자는 py_curses.h 헤더 파일(기본적으로 Python.h 에 포함되지 않음)을 포함해야 하며, PyCurses_API 를 채우기 위해 보통 모듈 초기화 함수의 일부로 import_curses() 를 호출해야 합니다.

경고

C API와 순수 파이썬인 curses 모듈 모두 서브인터프리터(subinterpreters)와 호환되지 않습니다.

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) 타입의 예측(predicate) 함수 포인터입니다.

호출 시, 이 예측들은 각각 curses.setupterm(), curses.initscr(), 및 curses.start_color() 가 호출되었는지 여부를 반환합니다.

편의용 매크로인 PyCursesSetupTermCalled, PyCursesInitialised, 및 PyCursesInitialisedColor 를 참조하십시오.

참고

이 구조체의 항목 수는 변경될 수 있습니다. 새로운 필드가 사용 가능한지 확인하려면 PyCurses_API_pointers 를 사용하는 것을 고려하십시오.

PyCurses_API_pointers

PyCurses_API 에서 접근 가능한 필드 수(4)입니다. 새로운 필드가 추가될 때마다 이 숫자가 증가합니다.

PyTypeObject PyCursesWindow_Type

curses.window 클래스에 해당하는 힙 타입 입니다.

int PyCursesWindow_Check(PyObject *op)

op 이(가) curses.window 인스턴스이면 True를, 그렇지 않으면 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;
    }
}

내부 데이터

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

PyCurses_CAPSULE_NAME

PyCapsule_Import() 에 전달할 curses 캡슐의 이름입니다.

내부 사용 전용입니다. 대신 import_curses 를 사용하십시오.