API زبان C برای Curses¶
curses یک رابط C کوچک را برای ماژولهای توسعهای در اختیار قرار میدهد. مصرفکنندگان باید پروندهی سرآیند py_curses.h (که بهطور پیشفرض توسط Python.h گنجانده نمیشود) را گنجانده باشند و import_curses() باید، معمولاً بهعنوان بخشی از تابع مقداردهی اولیه ماژول، برای پر کردن PyCurses_API فراخوانی شود.
هشدار
نه API زبان C و نه ماژول curses پایتون خالص با زیرمفسرها سازگار است.
-
import_curses()¶
API سی curses را ایمپورت میکند. این ماکرو برای فراخوانی به نقطهویرگول نیاز ندارد.
در صورت موفقیت، اشارهگر
PyCurses_APIرا پر میکند.در صورت شکست، مقدار
PyCurses_APIرا برابر NULL قرار دهید و یک استثنا تنظیم کنید. فراخواننده باید از طریقPyErr_Occurred()بررسی کند که آیا خطایی رخ داده است:import_curses(); // نقطهویرگول اختیاری است اما توصیه میشود if (PyErr_Occurred()) { /* پاکسازی */ }
-
void **PyCurses_API¶
شیء تخصیصیافته بهطور پویا که API زبان C ماژول curses را در بر دارد. این متغیر تنها پس از موفقیت
import_cursesدر دسترس است.PyCurses_API[0]متناظر باPyCursesWindow_Typeاست.PyCurses_API[1]،PyCurses_API[2]وPyCurses_API[3]اشارهگرهایی به توابع محمول از نوعint (*)(void)هستند.هنگام فراخوانی، این محمولها به ترتیب برمیگردانند که
curses.setupterm()،curses.initscr()وcurses.start_color()فراخوانی شدهاند یا نه.همچنین ماکروهای کمکی
PyCursesSetupTermCalled،PyCursesInitialisedوPyCursesInitialisedColorرا ببینید.توجه
تعداد ورودیهای این ساختار ممکن است تغییر کند. برای بررسی موجود بودن یا نبودن فیلدهای جدید، استفاده از
PyCurses_API_pointersرا در نظر بگیرید.
-
PyCurses_API_pointers¶
تعداد فیلدهای دسترسیپذیر (
4) درPyCurses_API. این عدد هر زمان که فیلدهای جدیدی افزوده شوند، افزایش مییابد.
-
PyTypeObject PyCursesWindow_Type¶
نوع هیپ متناظر با
curses.window.
-
int PyCursesWindow_Check(PyObject *op)¶
اگر op نمونهای از
curses.windowباشد، مقدار درست و در غیر این صورت مقدار نادرست برمیگرداند.
ماکروهای زیر ماکروهای کمکی هستند که به دستورهای 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; } }
دادههای داخلی¶
اشیاء زیر توسط API زبان C ارائه شدهاند، اما باید صرفاً داخلی در نظر گرفته شوند.
-
PyCurses_CAPSULE_NAME¶
نام کپسول curses برای ارسال به
PyCapsule_Import().فقط برای استفادهی داخلی. به جای آن از
import_cursesاستفاده کنید.