1 2#ifndef Py_CURSES_H 3#define Py_CURSES_H 4 5#ifdef __APPLE__ 6/* 7** On Mac OS X 10.2 [n]curses.h and stdlib.h use different guards 8** against multiple definition of wchar_t. 9*/ 10#ifdef _BSD_WCHAR_T_DEFINED_ 11#define _WCHAR_T 12#endif 13#endif /* __APPLE__ */ 14 15/* On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards 16 against multiple definition of wchar_t and wint_t. */ 17#if defined(__FreeBSD__) && defined(_XOPEN_SOURCE_EXTENDED) 18# ifndef __wchar_t 19# define __wchar_t 20# endif 21# ifndef __wint_t 22# define __wint_t 23# endif 24#endif 25 26#if !defined(HAVE_CURSES_IS_PAD) && defined(WINDOW_HAS_FLAGS) 27/* The following definition is necessary for ncurses 5.7; without it, 28 some of [n]curses.h set NCURSES_OPAQUE to 1, and then Python 29 can't get at the WINDOW flags field. */ 30#define NCURSES_OPAQUE 0 31#endif 32 33#ifdef HAVE_NCURSES_H 34#include <ncurses.h> 35#else 36#include <curses.h> 37#endif 38 39#ifdef HAVE_NCURSES_H 40/* configure was checking <curses.h>, but we will 41 use <ncurses.h>, which has some or all these features. */ 42#if !defined(WINDOW_HAS_FLAGS) && !(NCURSES_OPAQUE+0) 43#define WINDOW_HAS_FLAGS 1 44#endif 45#if !defined(HAVE_CURSES_IS_PAD) && NCURSES_VERSION_PATCH+0 >= 20090906 46#define HAVE_CURSES_IS_PAD 1 47#endif 48#ifndef MVWDELCH_IS_EXPRESSION 49#define MVWDELCH_IS_EXPRESSION 1 50#endif 51#endif 52 53#ifdef __cplusplus 54extern "C" { 55#endif 56 57#define PyCurses_API_pointers 4 58 59/* Type declarations */ 60 61typedef struct { 62 PyObject_HEAD 63 WINDOW *win; 64 char *encoding; 65} PyCursesWindowObject; 66 67#define PyCursesWindow_Check(v) Py_IS_TYPE(v, &PyCursesWindow_Type) 68 69#define PyCurses_CAPSULE_NAME "_curses._C_API" 70 71 72#ifdef CURSES_MODULE 73/* This section is used when compiling _cursesmodule.c */ 74 75#else 76/* This section is used in modules that use the _cursesmodule API */ 77 78static void **PyCurses_API; 79 80#define PyCursesWindow_Type (*_PyType_CAST(PyCurses_API[0])) 81#define PyCursesSetupTermCalled {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;} 82#define PyCursesInitialised {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;} 83#define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;} 84 85#define import_curses() \ 86 PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1); 87 88#endif 89 90/* general error messages */ 91static const char catchall_ERR[] = "curses function returned ERR"; 92static const char catchall_NULL[] = "curses function returned NULL"; 93 94#ifdef __cplusplus 95} 96#endif 97 98#endif /* !defined(Py_CURSES_H) */ 99 100