Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/mingw32/Python27/include/py_curses.h @ 87:2a2c65a20a8b
Add Python libs and headers
author | Chris Cannam |
---|---|
date | Wed, 25 Feb 2015 14:05:22 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
86:413a9d26189e | 87:2a2c65a20a8b |
---|---|
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 | |
14 /* the following define is necessary for OS X 10.6; without it, the | |
15 Apple-supplied ncurses.h sets NCURSES_OPAQUE to 1, and then Python | |
16 can't get at the WINDOW flags field. */ | |
17 #define NCURSES_OPAQUE 0 | |
18 #endif /* __APPLE__ */ | |
19 | |
20 #ifdef __FreeBSD__ | |
21 /* | |
22 ** On FreeBSD, [n]curses.h and stdlib.h/wchar.h use different guards | |
23 ** against multiple definition of wchar_t and wint_t. | |
24 */ | |
25 #ifdef _XOPEN_SOURCE_EXTENDED | |
26 #ifndef __FreeBSD_version | |
27 #include <osreldate.h> | |
28 #endif | |
29 #if __FreeBSD_version >= 500000 | |
30 #ifndef __wchar_t | |
31 #define __wchar_t | |
32 #endif | |
33 #ifndef __wint_t | |
34 #define __wint_t | |
35 #endif | |
36 #else | |
37 #ifndef _WCHAR_T | |
38 #define _WCHAR_T | |
39 #endif | |
40 #ifndef _WINT_T | |
41 #define _WINT_T | |
42 #endif | |
43 #endif | |
44 #endif | |
45 #endif | |
46 | |
47 #ifdef HAVE_NCURSES_H | |
48 #include <ncurses.h> | |
49 #else | |
50 #include <curses.h> | |
51 #ifdef HAVE_TERM_H | |
52 /* for tigetstr, which is not declared in SysV curses */ | |
53 #include <term.h> | |
54 #endif | |
55 #endif | |
56 | |
57 #ifdef HAVE_NCURSES_H | |
58 /* configure was checking <curses.h>, but we will | |
59 use <ncurses.h>, which has all these features. */ | |
60 #ifndef WINDOW_HAS_FLAGS | |
61 #define WINDOW_HAS_FLAGS 1 | |
62 #endif | |
63 #ifndef MVWDELCH_IS_EXPRESSION | |
64 #define MVWDELCH_IS_EXPRESSION 1 | |
65 #endif | |
66 #endif | |
67 | |
68 #ifdef __cplusplus | |
69 extern "C" { | |
70 #endif | |
71 | |
72 #define PyCurses_API_pointers 4 | |
73 | |
74 /* Type declarations */ | |
75 | |
76 typedef struct { | |
77 PyObject_HEAD | |
78 WINDOW *win; | |
79 } PyCursesWindowObject; | |
80 | |
81 #define PyCursesWindow_Check(v) (Py_TYPE(v) == &PyCursesWindow_Type) | |
82 | |
83 #define PyCurses_CAPSULE_NAME "_curses._C_API" | |
84 | |
85 | |
86 #ifdef CURSES_MODULE | |
87 /* This section is used when compiling _cursesmodule.c */ | |
88 | |
89 #else | |
90 /* This section is used in modules that use the _cursesmodule API */ | |
91 | |
92 static void **PyCurses_API; | |
93 | |
94 #define PyCursesWindow_Type (*(PyTypeObject *) PyCurses_API[0]) | |
95 #define PyCursesSetupTermCalled {if (! ((int (*)(void))PyCurses_API[1]) () ) return NULL;} | |
96 #define PyCursesInitialised {if (! ((int (*)(void))PyCurses_API[2]) () ) return NULL;} | |
97 #define PyCursesInitialisedColor {if (! ((int (*)(void))PyCurses_API[3]) () ) return NULL;} | |
98 | |
99 #define import_curses() \ | |
100 PyCurses_API = (void **)PyCapsule_Import(PyCurses_CAPSULE_NAME, 1); | |
101 | |
102 #endif | |
103 | |
104 /* general error messages */ | |
105 static char *catchall_ERR = "curses function returned ERR"; | |
106 static char *catchall_NULL = "curses function returned NULL"; | |
107 | |
108 /* Function Prototype Macros - They are ugly but very, very useful. ;-) | |
109 | |
110 X - function name | |
111 TYPE - parameter Type | |
112 ERGSTR - format string for construction of the return value | |
113 PARSESTR - format string for argument parsing | |
114 */ | |
115 | |
116 #define NoArgNoReturnFunction(X) \ | |
117 static PyObject *PyCurses_ ## X (PyObject *self) \ | |
118 { \ | |
119 PyCursesInitialised \ | |
120 return PyCursesCheckERR(X(), # X); } | |
121 | |
122 #define NoArgOrFlagNoReturnFunction(X) \ | |
123 static PyObject *PyCurses_ ## X (PyObject *self, PyObject *args) \ | |
124 { \ | |
125 int flag = 0; \ | |
126 PyCursesInitialised \ | |
127 switch(PyTuple_Size(args)) { \ | |
128 case 0: \ | |
129 return PyCursesCheckERR(X(), # X); \ | |
130 case 1: \ | |
131 if (!PyArg_ParseTuple(args, "i;True(1) or False(0)", &flag)) return NULL; \ | |
132 if (flag) return PyCursesCheckERR(X(), # X); \ | |
133 else return PyCursesCheckERR(no ## X (), # X); \ | |
134 default: \ | |
135 PyErr_SetString(PyExc_TypeError, # X " requires 0 or 1 arguments"); \ | |
136 return NULL; } } | |
137 | |
138 #define NoArgReturnIntFunction(X) \ | |
139 static PyObject *PyCurses_ ## X (PyObject *self) \ | |
140 { \ | |
141 PyCursesInitialised \ | |
142 return PyInt_FromLong((long) X()); } | |
143 | |
144 | |
145 #define NoArgReturnStringFunction(X) \ | |
146 static PyObject *PyCurses_ ## X (PyObject *self) \ | |
147 { \ | |
148 PyCursesInitialised \ | |
149 return PyString_FromString(X()); } | |
150 | |
151 #define NoArgTrueFalseFunction(X) \ | |
152 static PyObject *PyCurses_ ## X (PyObject *self) \ | |
153 { \ | |
154 PyCursesInitialised \ | |
155 if (X () == FALSE) { \ | |
156 Py_INCREF(Py_False); \ | |
157 return Py_False; \ | |
158 } \ | |
159 Py_INCREF(Py_True); \ | |
160 return Py_True; } | |
161 | |
162 #define NoArgNoReturnVoidFunction(X) \ | |
163 static PyObject *PyCurses_ ## X (PyObject *self) \ | |
164 { \ | |
165 PyCursesInitialised \ | |
166 X(); \ | |
167 Py_INCREF(Py_None); \ | |
168 return Py_None; } | |
169 | |
170 #ifdef __cplusplus | |
171 } | |
172 #endif | |
173 | |
174 #endif /* !defined(Py_CURSES_H) */ | |
175 | |
176 |