Lời nguyền C API

curses hiển thị giao diện C nhỏ cho các mô-đun mở rộng. Người tiêu dùng phải bao gồm tệp tiêu đề py_curses.h (không được bao gồm theo mặc định bởi Python.h) và import_curses() phải được gọi, thường là một phần của chức năng khởi tạo mô-đun, để điền vào PyCurses_API.

Cảnh báo

Cả mô-đun C API lẫn mô-đun curses Python thuần túy đều không tương thích với trình thông dịch phụ.

import_curses()

Nhập lời nguyền C API. Macro không cần dấu chấm phẩy để được gọi.

Khi thành công, hãy điền vào con trỏ PyCurses_API.

Nếu thất bại, hãy đặt PyCurses_API thành NULL và đặt ngoại lệ. Người gọi phải kiểm tra xem có xảy ra lỗi qua PyErr_Occurred() hay không:

import_curses();  // dấu chấm phẩy là tùy chọn nhưng được khuyến nghị
if (PyErr_Occurred()) { /* dọn dẹp */ }
void **PyCurses_API

Đối tượng được phân bổ động có chứa lời nguyền C API. Biến này chỉ khả dụng khi import_curses thành công.

PyCurses_API[0] tương ứng với PyCursesWindow_Type.

PyCurses_API[1], PyCurses_API[2]PyCurses_API[3] là các con trỏ tới các hàm vị ngữ thuộc loại int (*)(void).

Khi được gọi, các vị từ này trả về xem curses.setupterm(), curses.initscr()curses.start_color() có được gọi tương ứng hay không.

Xem thêm các macro tiện lợi PyCursesSetupTermCalled, PyCursesInitialisedPyCursesInitialisedColor.

Ghi chú

Số lượng mục trong cấu trúc này có thể thay đổi. Hãy cân nhắc sử dụng PyCurses_API_pointers để kiểm tra xem có trường mới hay không.

PyCurses_API_pointers

Số trường có thể truy cập (4) trong PyCurses_API. Con số này được tăng lên bất cứ khi nào các trường mới được thêm vào.

PyTypeObject PyCursesWindow_Type

heap type tương ứng với curses.window.

int PyCursesWindow_Check(PyObject *op)

Trả về true nếu op là một phiên bản curses.window, nếu không thì trả về false.

Các macro sau đây là các macro tiện lợi mở rộng thành câu lệnh C. Đặc biệt, chúng chỉ có thể được sử dụng là macro; hoặc macro chứ không thể sử dụng macro() hoặc macro();.

PyCursesSetupTermCalled

Kiểm tra macro xem curses.setupterm() đã được gọi chưa.

Việc mở rộng vĩ mô gần tương đương với:

{
    typedef int (*predicate_t)(void);
    vị ngữ_t was_setupterm_gọi = (predicate_t)PyCurses_API[1];
    nếu (!was_setupterm_gọi()) {
        trả về NULL;
    }
}
PyCursesInitialised

Kiểm tra macro xem curses.initscr() đã được gọi chưa.

Việc mở rộng vĩ mô gần tương đương với:

{
    typedef int (*predicate_t)(void);
    vị ngữ_t was_initscr_gọi = (predicate_t)PyCurses_API[2];
    nếu (!was_initscr_gọi()) {
        trả về NULL;
    }
}
PyCursesInitialisedColor

Kiểm tra macro xem curses.start_color() đã được gọi chưa.

Việc mở rộng vĩ mô gần tương đương với:

{
    typedef int (*predicate_t)(void);
    vị ngữ_t was_start_color_gọi = (predicate_t)PyCurses_API[3];
    nếu (!was_start_color_gọi()) {
        trả về NULL;
    }
}

Dữ liệu nội bộ

Các đối tượng sau đây được C API hiển thị nhưng chỉ được coi là nội bộ.

PyCurses_CAPSULE_NAME

Tên của hộp lời nguyền sẽ được chuyển tới PyCapsule_Import().

Chỉ sử dụng nội bộ. Thay vào đó hãy sử dụng import_curses.