blob: b37de1b0219b6cdcdea82e15951bb563ff60a550 [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301/****************************************************************************
micky3879b9f5e72025-07-08 18:04:53 -04002 * Copyright 2020-2021,2024 Thomas E. Dickey *
3 * Copyright 1998-2014,2016 Free Software Foundation, Inc. *
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05304 * *
5 * Permission is hereby granted, free of charge, to any person obtaining a *
6 * copy of this software and associated documentation files (the *
7 * "Software"), to deal in the Software without restriction, including *
8 * without limitation the rights to use, copy, modify, merge, publish, *
9 * distribute, distribute with modifications, sublicense, and/or sell *
10 * copies of the Software, and to permit persons to whom the Software is *
11 * furnished to do so, subject to the following conditions: *
12 * *
13 * The above copyright notice and this permission notice shall be included *
14 * in all copies or substantial portions of the Software. *
15 * *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
19 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
21 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
22 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
23 * *
24 * Except as contained in this notice, the name(s) of the above copyright *
25 * holders shall not be used in advertising or otherwise to promote the *
26 * sale, use or other dealings in this Software without prior written *
27 * authorization. *
28 ****************************************************************************/
29
30/****************************************************************************
31 * Author: Juergen Pfeifer, 1996 *
micky3879b9f5e72025-07-08 18:04:53 -040032 * and: Thomas E. Dickey, 1998 *
33 * and: Nicolas Boulenguez, 2011 *
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053034 ****************************************************************************/
35
36/*
37 Version Control
micky3879b9f5e72025-07-08 18:04:53 -040038 $Id: gen.c,v 1.79 2024/01/19 13:41:45 tom Exp $
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053039 --------------------------------------------------------------------------*/
40/*
Steve Kondikae271bc2015-11-15 02:50:53 +010041 This program prints on its standard output the source for the
42 Terminal_Interface.Curses_Constants Ada package specification. This pure
43 package only exports C constants to the Ada compiler.
44 */
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053045
Steve Kondikae271bc2015-11-15 02:50:53 +010046#ifdef HAVE_CONFIG_H
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053047#include <ncurses_cfg.h>
Steve Kondikae271bc2015-11-15 02:50:53 +010048#else
49#include <ncurses.h>
50#endif
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053051
52#include <stdlib.h>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053053#include <string.h>
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053054
55#include <menu.h>
56#include <form.h>
57
Steve Kondikae271bc2015-11-15 02:50:53 +010058#undef UCHAR
59#undef UINT
micky3879b9f5e72025-07-08 18:04:53 -040060#undef ULONG
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053061
Steve Kondikae271bc2015-11-15 02:50:53 +010062typedef unsigned char UCHAR;
63typedef unsigned int UINT;
micky3879b9f5e72025-07-08 18:04:53 -040064typedef unsigned long ULONG;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053065
Steve Kondikae271bc2015-11-15 02:50:53 +010066/* These global variables will be set by main () */
67static int little_endian;
68static const char *my_program_invocation_name = NULL;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053069
Steve Kondikae271bc2015-11-15 02:50:53 +010070static void
71my_error(const char *message)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053072{
Steve Kondikae271bc2015-11-15 02:50:53 +010073 fprintf(stderr, "%s: %s\n", my_program_invocation_name, message);
74 exit(EXIT_FAILURE);
75}
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053076
Steve Kondikae271bc2015-11-15 02:50:53 +010077static void
micky3879b9f5e72025-07-08 18:04:53 -040078print_constant(FILE * fp,
79 const char *name,
80 UINT value)
81{
82 fprintf(fp, " %-28s : constant := %u;\n", name, value);
83}
84
85static void
86print_long_val(FILE * fp,
87 const char *name,
Steve Kondikae271bc2015-11-15 02:50:53 +010088 long value)
89{
micky3879b9f5e72025-07-08 18:04:53 -040090 fprintf(fp, " %-28s : constant := %ld;\n", name, value);
91}
92
93static void
94print_size_of(FILE * fp,
95 const char *name,
96 size_t value)
97{
98 fprintf(fp, " %-28s : constant := %lu;\n", name, (unsigned long)value);
Steve Kondikae271bc2015-11-15 02:50:53 +010099}
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530100
Steve Kondikae271bc2015-11-15 02:50:53 +0100101#define PRINT_NAMED_CONSTANT(name) \
micky3879b9f5e72025-07-08 18:04:53 -0400102 print_long_val (fp, #name, name)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530103
Steve Kondikae271bc2015-11-15 02:50:53 +0100104static void
micky3879b9f5e72025-07-08 18:04:53 -0400105print_comment(FILE * fp, const char *message)
Steve Kondikae271bc2015-11-15 02:50:53 +0100106{
micky3879b9f5e72025-07-08 18:04:53 -0400107 fprintf(fp, "\n -- %s\n\n", message);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530108}
109
110/*
Steve Kondikae271bc2015-11-15 02:50:53 +0100111 * Make sure that KEY_MIN and KEY_MAX are defined.
112 * main () will protest if KEY_MIN == 256
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530113 */
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530114#ifndef KEY_MAX
115# define KEY_MAX 0777
116#endif
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530117#ifndef KEY_MIN
118# define KEY_MIN 0401
119#endif
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530120
Steve Kondikae271bc2015-11-15 02:50:53 +0100121static UCHAR
122bit_is_set(const UCHAR * const data,
123 const UINT offset)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530124{
Steve Kondikae271bc2015-11-15 02:50:53 +0100125 const UCHAR byte = data[offset >> 3];
126 UINT bit;
127
128 if (little_endian)
129 bit = offset; /* offset */
130 else /* or */
131 bit = ~offset; /* 7 - offset */
132 bit &= 7; /* modulo 8 */
micky3879b9f5e72025-07-08 18:04:53 -0400133 return (UCHAR) (byte & (1 << bit));
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530134}
135
Steve Kondikae271bc2015-11-15 02:50:53 +0100136/* Find lowest and highest used offset in a byte array. */
137/* Returns 0 if and only if all bits are unset. */
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530138static int
Steve Kondikae271bc2015-11-15 02:50:53 +0100139find_pos(const UCHAR * const data,
140 const UINT sizeof_data,
141 UINT * const low,
142 UINT * const high)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530143{
Steve Kondikae271bc2015-11-15 02:50:53 +0100144 const UINT last = (sizeof_data << 3) - 1;
145 UINT offset;
146
147 for (offset = last; !bit_is_set(data, offset); offset--)
148 if (!offset) /* All bits are 0. */
149 return 0;
150 *high = offset;
151
152 for (offset = 0; !bit_is_set(data, offset); offset++)
153 {
154 }
155 *low = offset;
156
157 return -1;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530158}
159
Steve Kondikae271bc2015-11-15 02:50:53 +0100160#define PRINT_BITMASK(c_type, ada_name, mask_macro) \
161 { \
162 UINT first, last; \
163 c_type mask = (mask_macro); \
164 if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \
165 my_error ("failed to locate " ada_name); \
micky3879b9f5e72025-07-08 18:04:53 -0400166 print_constant (fp, ada_name "_First", first); \
167 print_constant (fp, ada_name "_Last", last); \
Steve Kondikae271bc2015-11-15 02:50:53 +0100168 }
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530169
Steve Kondikae271bc2015-11-15 02:50:53 +0100170#define PRINT_NAMED_BITMASK(c_type, mask_macro) \
171 PRINT_BITMASK (c_type, #mask_macro, mask_macro)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530172
Steve Kondikae271bc2015-11-15 02:50:53 +0100173#define STRUCT_OFFSET(record, field) \
174 { \
175 UINT first, last; \
176 record mask; \
177 memset (&mask, 0, sizeof (mask)); \
178 memset (&mask.field, 0xff, sizeof(mask.field)); \
179 if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \
180 my_error ("failed to locate" #record "_" #field); \
micky3879b9f5e72025-07-08 18:04:53 -0400181 print_constant (fp, #record "_" #field "_First", first); \
182 print_constant (fp, #record "_" #field "_Last", last); \
Steve Kondikae271bc2015-11-15 02:50:53 +0100183 }
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530184
Steve Kondikae271bc2015-11-15 02:50:53 +0100185/*--------------------*/
186/* Start of main (). */
187/*--------------------*/
188
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530189int
Steve Kondikae271bc2015-11-15 02:50:53 +0100190main(int argc, const char *argv[])
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530191{
micky3879b9f5e72025-07-08 18:04:53 -0400192 FILE *fp = 0;
Steve Kondikae271bc2015-11-15 02:50:53 +0100193 const int x = 0x12345678;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530194
Steve Kondikae271bc2015-11-15 02:50:53 +0100195 little_endian = (*((const char *)&x) == 0x78);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530196
Steve Kondikae271bc2015-11-15 02:50:53 +0100197 my_program_invocation_name = argv[0];
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530198
Steve Kondikae271bc2015-11-15 02:50:53 +0100199 if (KEY_MIN == 256)
200 my_error("unexpected value for KEY_MIN: 256");
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530201
micky3879b9f5e72025-07-08 18:04:53 -0400202 if (argc == 3)
203 {
204 fp = fopen(argv[2], "wb");
205 }
206 else if (argc == 2)
207 {
208 fp = stdout;
209 }
210 else
211 {
212 my_error("Only one or two arguments expected (DFT_ARG_SUFFIX)");
213 }
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530214
micky3879b9f5e72025-07-08 18:04:53 -0400215 if ((strlen(argv[0]) + strlen(__FILE__)) > 25)
216 {
217 fprintf(fp, "-- Generated by the C program %.40s.\n",
218 my_program_invocation_name);
219 }
220 else
221 {
222 fprintf(fp, "-- Generated by the C program %s (source %s).\n",
223 my_program_invocation_name,
224 __FILE__);
225 }
226 fprintf(fp, "-- Do not edit this file directly.\n");
227 fprintf(fp, "-- The values provided here may vary on your system.\n");
228 fprintf(fp, "\n");
229 fprintf(fp, "with System;\n");
230 fprintf(fp, "package Terminal_Interface.Curses_Constants is\n");
231 fprintf(fp, " pragma Pure;\n");
232 fprintf(fp, "\n");
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530233
micky3879b9f5e72025-07-08 18:04:53 -0400234 fprintf(fp, " DFT_ARG_SUFFIX : constant String := \"%s\";\n", argv[1]);
235 fprintf(fp,
236 " Bit_Order : constant System.Bit_Order := System.%s_Order_First;\n",
237 little_endian ? "Low" : "High");
238 print_size_of(fp, "Sizeof_Bool", 8 * sizeof(bool));
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530239
Steve Kondikae271bc2015-11-15 02:50:53 +0100240 PRINT_NAMED_CONSTANT(OK);
241 PRINT_NAMED_CONSTANT(ERR);
micky3879b9f5e72025-07-08 18:04:53 -0400242 fprintf(fp,
243 " pragma Warnings (Off); -- redefinition of Standard.True and False\n");
Steve Kondikae271bc2015-11-15 02:50:53 +0100244 PRINT_NAMED_CONSTANT(TRUE);
245 PRINT_NAMED_CONSTANT(FALSE);
micky3879b9f5e72025-07-08 18:04:53 -0400246 fprintf(fp, " pragma Warnings (On);\n");
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530247
micky3879b9f5e72025-07-08 18:04:53 -0400248 print_comment(fp, "Version of the ncurses library from extensions(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100249 PRINT_NAMED_CONSTANT(NCURSES_VERSION_MAJOR);
250 PRINT_NAMED_CONSTANT(NCURSES_VERSION_MINOR);
micky3879b9f5e72025-07-08 18:04:53 -0400251 fprintf(fp, " Version : constant String := \"%d.%d\";\n",
252 NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530253
micky3879b9f5e72025-07-08 18:04:53 -0400254 print_comment(fp, "Character non-color attributes from attr(3NCURSES)");
255 fprintf(fp, " -- attr_t and chtype may be signed in C.\n");
256 fprintf(fp, " type attr_t is mod 2 ** %lu;\n", (long unsigned)(8 * sizeof(attr_t)));
Steve Kondikae271bc2015-11-15 02:50:53 +0100257 PRINT_NAMED_BITMASK(attr_t, A_CHARTEXT);
258 PRINT_NAMED_BITMASK(attr_t, A_COLOR);
259 PRINT_BITMASK(attr_t, "Attr", A_ATTRIBUTES & ~A_COLOR);
260 PRINT_NAMED_BITMASK(attr_t, A_STANDOUT);
261 PRINT_NAMED_BITMASK(attr_t, A_UNDERLINE);
262 PRINT_NAMED_BITMASK(attr_t, A_REVERSE);
263 PRINT_NAMED_BITMASK(attr_t, A_BLINK);
264 PRINT_NAMED_BITMASK(attr_t, A_DIM);
265 PRINT_NAMED_BITMASK(attr_t, A_BOLD);
266 PRINT_NAMED_BITMASK(attr_t, A_PROTECT);
267 PRINT_NAMED_BITMASK(attr_t, A_INVIS);
268 PRINT_NAMED_BITMASK(attr_t, A_ALTCHARSET);
269 PRINT_NAMED_BITMASK(attr_t, A_HORIZONTAL);
270 PRINT_NAMED_BITMASK(attr_t, A_LEFT);
271 PRINT_NAMED_BITMASK(attr_t, A_LOW);
272 PRINT_NAMED_BITMASK(attr_t, A_RIGHT);
273 PRINT_NAMED_BITMASK(attr_t, A_TOP);
274 PRINT_NAMED_BITMASK(attr_t, A_VERTICAL);
micky3879b9f5e72025-07-08 18:04:53 -0400275 print_size_of(fp, "chtype_Size", 8 * sizeof(chtype));
Steve Kondikae271bc2015-11-15 02:50:53 +0100276
micky3879b9f5e72025-07-08 18:04:53 -0400277 print_comment(fp, "predefined color numbers from color(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100278 PRINT_NAMED_CONSTANT(COLOR_BLACK);
279 PRINT_NAMED_CONSTANT(COLOR_RED);
280 PRINT_NAMED_CONSTANT(COLOR_GREEN);
281 PRINT_NAMED_CONSTANT(COLOR_YELLOW);
282 PRINT_NAMED_CONSTANT(COLOR_BLUE);
283 PRINT_NAMED_CONSTANT(COLOR_MAGENTA);
284 PRINT_NAMED_CONSTANT(COLOR_CYAN);
285 PRINT_NAMED_CONSTANT(COLOR_WHITE);
286
micky3879b9f5e72025-07-08 18:04:53 -0400287 print_comment(fp, "ETI return codes from ncurses.h");
Steve Kondikae271bc2015-11-15 02:50:53 +0100288 PRINT_NAMED_CONSTANT(E_OK);
289 PRINT_NAMED_CONSTANT(E_SYSTEM_ERROR);
290 PRINT_NAMED_CONSTANT(E_BAD_ARGUMENT);
291 PRINT_NAMED_CONSTANT(E_POSTED);
292 PRINT_NAMED_CONSTANT(E_CONNECTED);
293 PRINT_NAMED_CONSTANT(E_BAD_STATE);
294 PRINT_NAMED_CONSTANT(E_NO_ROOM);
295 PRINT_NAMED_CONSTANT(E_NOT_POSTED);
296 PRINT_NAMED_CONSTANT(E_UNKNOWN_COMMAND);
297 PRINT_NAMED_CONSTANT(E_NO_MATCH);
298 PRINT_NAMED_CONSTANT(E_NOT_SELECTABLE);
299 PRINT_NAMED_CONSTANT(E_NOT_CONNECTED);
300 PRINT_NAMED_CONSTANT(E_REQUEST_DENIED);
301 PRINT_NAMED_CONSTANT(E_INVALID_FIELD);
302 PRINT_NAMED_CONSTANT(E_CURRENT);
303
micky3879b9f5e72025-07-08 18:04:53 -0400304 print_comment(fp, "Input key codes not defined in any ncurses manpage");
Steve Kondikae271bc2015-11-15 02:50:53 +0100305 PRINT_NAMED_CONSTANT(KEY_MIN);
306 PRINT_NAMED_CONSTANT(KEY_MAX);
307#ifdef KEY_CODE_YES
308 PRINT_NAMED_CONSTANT(KEY_CODE_YES);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530309#endif
Steve Kondikae271bc2015-11-15 02:50:53 +0100310
micky3879b9f5e72025-07-08 18:04:53 -0400311 print_comment(fp, "Input key codes from getch(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100312 PRINT_NAMED_CONSTANT(KEY_BREAK);
313 PRINT_NAMED_CONSTANT(KEY_DOWN);
314 PRINT_NAMED_CONSTANT(KEY_UP);
315 PRINT_NAMED_CONSTANT(KEY_LEFT);
316 PRINT_NAMED_CONSTANT(KEY_RIGHT);
317 PRINT_NAMED_CONSTANT(KEY_HOME);
318 PRINT_NAMED_CONSTANT(KEY_BACKSPACE);
319 PRINT_NAMED_CONSTANT(KEY_F0);
micky3879b9f5e72025-07-08 18:04:53 -0400320#define PRINT_NAMED_FUNC_KEY(name) print_constant(fp, "KEY_F"#name, KEY_F(name))
321 PRINT_NAMED_FUNC_KEY(1);
322 PRINT_NAMED_FUNC_KEY(2);
323 PRINT_NAMED_FUNC_KEY(3);
324 PRINT_NAMED_FUNC_KEY(4);
325 PRINT_NAMED_FUNC_KEY(5);
326 PRINT_NAMED_FUNC_KEY(6);
327 PRINT_NAMED_FUNC_KEY(7);
328 PRINT_NAMED_FUNC_KEY(8);
329 PRINT_NAMED_FUNC_KEY(9);
330 PRINT_NAMED_FUNC_KEY(10);
331 PRINT_NAMED_FUNC_KEY(11);
332 PRINT_NAMED_FUNC_KEY(12);
333 PRINT_NAMED_FUNC_KEY(13);
334 PRINT_NAMED_FUNC_KEY(14);
335 PRINT_NAMED_FUNC_KEY(15);
336 PRINT_NAMED_FUNC_KEY(16);
337 PRINT_NAMED_FUNC_KEY(17);
338 PRINT_NAMED_FUNC_KEY(18);
339 PRINT_NAMED_FUNC_KEY(19);
340 PRINT_NAMED_FUNC_KEY(20);
341 PRINT_NAMED_FUNC_KEY(21);
342 PRINT_NAMED_FUNC_KEY(22);
343 PRINT_NAMED_FUNC_KEY(23);
344 PRINT_NAMED_FUNC_KEY(24);
Steve Kondikae271bc2015-11-15 02:50:53 +0100345 PRINT_NAMED_CONSTANT(KEY_DL);
346 PRINT_NAMED_CONSTANT(KEY_IL);
347 PRINT_NAMED_CONSTANT(KEY_DC);
348 PRINT_NAMED_CONSTANT(KEY_IC);
349 PRINT_NAMED_CONSTANT(KEY_EIC);
350 PRINT_NAMED_CONSTANT(KEY_CLEAR);
351 PRINT_NAMED_CONSTANT(KEY_EOS);
352 PRINT_NAMED_CONSTANT(KEY_EOL);
353 PRINT_NAMED_CONSTANT(KEY_SF);
354 PRINT_NAMED_CONSTANT(KEY_SR);
355 PRINT_NAMED_CONSTANT(KEY_NPAGE);
356 PRINT_NAMED_CONSTANT(KEY_PPAGE);
357 PRINT_NAMED_CONSTANT(KEY_STAB);
358 PRINT_NAMED_CONSTANT(KEY_CTAB);
359 PRINT_NAMED_CONSTANT(KEY_CATAB);
360 PRINT_NAMED_CONSTANT(KEY_ENTER);
361 PRINT_NAMED_CONSTANT(KEY_SRESET);
362 PRINT_NAMED_CONSTANT(KEY_RESET);
363 PRINT_NAMED_CONSTANT(KEY_PRINT);
364 PRINT_NAMED_CONSTANT(KEY_LL);
365 PRINT_NAMED_CONSTANT(KEY_A1);
366 PRINT_NAMED_CONSTANT(KEY_A3);
367 PRINT_NAMED_CONSTANT(KEY_B2);
368 PRINT_NAMED_CONSTANT(KEY_C1);
369 PRINT_NAMED_CONSTANT(KEY_C3);
370 PRINT_NAMED_CONSTANT(KEY_BTAB);
371 PRINT_NAMED_CONSTANT(KEY_BEG);
372 PRINT_NAMED_CONSTANT(KEY_CANCEL);
373 PRINT_NAMED_CONSTANT(KEY_CLOSE);
374 PRINT_NAMED_CONSTANT(KEY_COMMAND);
375 PRINT_NAMED_CONSTANT(KEY_COPY);
376 PRINT_NAMED_CONSTANT(KEY_CREATE);
377 PRINT_NAMED_CONSTANT(KEY_END);
378 PRINT_NAMED_CONSTANT(KEY_EXIT);
379 PRINT_NAMED_CONSTANT(KEY_FIND);
380 PRINT_NAMED_CONSTANT(KEY_HELP);
381 PRINT_NAMED_CONSTANT(KEY_MARK);
382 PRINT_NAMED_CONSTANT(KEY_MESSAGE);
383 PRINT_NAMED_CONSTANT(KEY_MOVE);
384 PRINT_NAMED_CONSTANT(KEY_NEXT);
385 PRINT_NAMED_CONSTANT(KEY_OPEN);
386 PRINT_NAMED_CONSTANT(KEY_OPTIONS);
387 PRINT_NAMED_CONSTANT(KEY_PREVIOUS);
388 PRINT_NAMED_CONSTANT(KEY_REDO);
389 PRINT_NAMED_CONSTANT(KEY_REFERENCE);
390 PRINT_NAMED_CONSTANT(KEY_REFRESH);
391 PRINT_NAMED_CONSTANT(KEY_REPLACE);
392 PRINT_NAMED_CONSTANT(KEY_RESTART);
393 PRINT_NAMED_CONSTANT(KEY_RESUME);
394 PRINT_NAMED_CONSTANT(KEY_SAVE);
395 PRINT_NAMED_CONSTANT(KEY_SBEG);
396 PRINT_NAMED_CONSTANT(KEY_SCANCEL);
397 PRINT_NAMED_CONSTANT(KEY_SCOMMAND);
398 PRINT_NAMED_CONSTANT(KEY_SCOPY);
399 PRINT_NAMED_CONSTANT(KEY_SCREATE);
400 PRINT_NAMED_CONSTANT(KEY_SDC);
401 PRINT_NAMED_CONSTANT(KEY_SDL);
402 PRINT_NAMED_CONSTANT(KEY_SELECT);
403 PRINT_NAMED_CONSTANT(KEY_SEND);
404 PRINT_NAMED_CONSTANT(KEY_SEOL);
405 PRINT_NAMED_CONSTANT(KEY_SEXIT);
406 PRINT_NAMED_CONSTANT(KEY_SFIND);
407 PRINT_NAMED_CONSTANT(KEY_SHELP);
408 PRINT_NAMED_CONSTANT(KEY_SHOME);
409 PRINT_NAMED_CONSTANT(KEY_SIC);
410 PRINT_NAMED_CONSTANT(KEY_SLEFT);
411 PRINT_NAMED_CONSTANT(KEY_SMESSAGE);
412 PRINT_NAMED_CONSTANT(KEY_SMOVE);
413 PRINT_NAMED_CONSTANT(KEY_SNEXT);
414 PRINT_NAMED_CONSTANT(KEY_SOPTIONS);
415 PRINT_NAMED_CONSTANT(KEY_SPREVIOUS);
416 PRINT_NAMED_CONSTANT(KEY_SPRINT);
417 PRINT_NAMED_CONSTANT(KEY_SREDO);
418 PRINT_NAMED_CONSTANT(KEY_SREPLACE);
419 PRINT_NAMED_CONSTANT(KEY_SRIGHT);
420 PRINT_NAMED_CONSTANT(KEY_SRSUME);
421 PRINT_NAMED_CONSTANT(KEY_SSAVE);
422 PRINT_NAMED_CONSTANT(KEY_SSUSPEND);
423 PRINT_NAMED_CONSTANT(KEY_SUNDO);
424 PRINT_NAMED_CONSTANT(KEY_SUSPEND);
425 PRINT_NAMED_CONSTANT(KEY_UNDO);
426 PRINT_NAMED_CONSTANT(KEY_MOUSE);
micky3879b9f5e72025-07-08 18:04:53 -0400427#ifdef KEY_RESIZE
Steve Kondikae271bc2015-11-15 02:50:53 +0100428 PRINT_NAMED_CONSTANT(KEY_RESIZE);
micky3879b9f5e72025-07-08 18:04:53 -0400429#endif
Steve Kondikae271bc2015-11-15 02:50:53 +0100430
micky3879b9f5e72025-07-08 18:04:53 -0400431 print_comment(fp, "alternate character codes (ACS) from addch(3NCURSES)");
432#define PRINT_ACS(name) print_size_of (fp, #name, (size_t)(&name - &acs_map[0]))
Steve Kondikae271bc2015-11-15 02:50:53 +0100433 PRINT_ACS(ACS_ULCORNER);
434 PRINT_ACS(ACS_LLCORNER);
435 PRINT_ACS(ACS_URCORNER);
436 PRINT_ACS(ACS_LRCORNER);
437 PRINT_ACS(ACS_LTEE);
438 PRINT_ACS(ACS_RTEE);
439 PRINT_ACS(ACS_BTEE);
440 PRINT_ACS(ACS_TTEE);
441 PRINT_ACS(ACS_HLINE);
442 PRINT_ACS(ACS_VLINE);
443 PRINT_ACS(ACS_PLUS);
444 PRINT_ACS(ACS_S1);
445 PRINT_ACS(ACS_S9);
446 PRINT_ACS(ACS_DIAMOND);
447 PRINT_ACS(ACS_CKBOARD);
448 PRINT_ACS(ACS_DEGREE);
449 PRINT_ACS(ACS_PLMINUS);
450 PRINT_ACS(ACS_BULLET);
451 PRINT_ACS(ACS_LARROW);
452 PRINT_ACS(ACS_RARROW);
453 PRINT_ACS(ACS_DARROW);
454 PRINT_ACS(ACS_UARROW);
455 PRINT_ACS(ACS_BOARD);
456 PRINT_ACS(ACS_LANTERN);
457 PRINT_ACS(ACS_BLOCK);
458 PRINT_ACS(ACS_S3);
459 PRINT_ACS(ACS_S7);
460 PRINT_ACS(ACS_LEQUAL);
461 PRINT_ACS(ACS_GEQUAL);
462 PRINT_ACS(ACS_PI);
463 PRINT_ACS(ACS_NEQUAL);
464 PRINT_ACS(ACS_STERLING);
465
micky3879b9f5e72025-07-08 18:04:53 -0400466 print_comment(fp, "Menu_Options from opts(3MENU)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100467 PRINT_NAMED_BITMASK(Menu_Options, O_ONEVALUE);
468 PRINT_NAMED_BITMASK(Menu_Options, O_SHOWDESC);
469 PRINT_NAMED_BITMASK(Menu_Options, O_ROWMAJOR);
470 PRINT_NAMED_BITMASK(Menu_Options, O_IGNORECASE);
471 PRINT_NAMED_BITMASK(Menu_Options, O_SHOWMATCH);
472 PRINT_NAMED_BITMASK(Menu_Options, O_NONCYCLIC);
micky3879b9f5e72025-07-08 18:04:53 -0400473 print_size_of(fp, "Menu_Options_Size", 8 * sizeof(Menu_Options));
Steve Kondikae271bc2015-11-15 02:50:53 +0100474
micky3879b9f5e72025-07-08 18:04:53 -0400475 print_comment(fp, "Item_Options from menu_opts(3MENU)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100476 PRINT_NAMED_BITMASK(Item_Options, O_SELECTABLE);
micky3879b9f5e72025-07-08 18:04:53 -0400477 print_size_of(fp, "Item_Options_Size", 8 * sizeof(Item_Options));
Steve Kondikae271bc2015-11-15 02:50:53 +0100478
micky3879b9f5e72025-07-08 18:04:53 -0400479 print_comment(fp, "Field_Options from field_opts(3FORM)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100480 PRINT_NAMED_BITMASK(Field_Options, O_VISIBLE);
481 PRINT_NAMED_BITMASK(Field_Options, O_ACTIVE);
482 PRINT_NAMED_BITMASK(Field_Options, O_PUBLIC);
483 PRINT_NAMED_BITMASK(Field_Options, O_EDIT);
484 PRINT_NAMED_BITMASK(Field_Options, O_WRAP);
485 PRINT_NAMED_BITMASK(Field_Options, O_BLANK);
486 PRINT_NAMED_BITMASK(Field_Options, O_AUTOSKIP);
487 PRINT_NAMED_BITMASK(Field_Options, O_NULLOK);
488 PRINT_NAMED_BITMASK(Field_Options, O_PASSOK);
489 PRINT_NAMED_BITMASK(Field_Options, O_STATIC);
micky3879b9f5e72025-07-08 18:04:53 -0400490 print_size_of(fp, "Field_Options_Size", 8 * sizeof(Field_Options));
Steve Kondikae271bc2015-11-15 02:50:53 +0100491
micky3879b9f5e72025-07-08 18:04:53 -0400492 print_comment(fp, "Field_Options from opts(3FORM)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100493 PRINT_NAMED_BITMASK(Field_Options, O_NL_OVERLOAD);
494 PRINT_NAMED_BITMASK(Field_Options, O_BS_OVERLOAD);
micky3879b9f5e72025-07-08 18:04:53 -0400495
Steve Kondikae271bc2015-11-15 02:50:53 +0100496 /* Field_Options_Size is defined below */
497
micky3879b9f5e72025-07-08 18:04:53 -0400498 print_comment(fp, "MEVENT structure from mouse(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100499 STRUCT_OFFSET(MEVENT, id);
500 STRUCT_OFFSET(MEVENT, x);
501 STRUCT_OFFSET(MEVENT, y);
502 STRUCT_OFFSET(MEVENT, z);
503 STRUCT_OFFSET(MEVENT, bstate);
micky3879b9f5e72025-07-08 18:04:53 -0400504 print_size_of(fp, "MEVENT_Size", 8 * sizeof(MEVENT));
Steve Kondikae271bc2015-11-15 02:50:53 +0100505
micky3879b9f5e72025-07-08 18:04:53 -0400506 print_comment(fp, "mouse events from mouse(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100507 {
508 mmask_t all_events;
509
510#define PRINT_MOUSE_EVENT(event) \
micky3879b9f5e72025-07-08 18:04:53 -0400511 print_constant (fp, #event, event); \
Steve Kondikae271bc2015-11-15 02:50:53 +0100512 all_events |= event
513
514 all_events = 0;
515 PRINT_MOUSE_EVENT(BUTTON1_RELEASED);
516 PRINT_MOUSE_EVENT(BUTTON1_PRESSED);
517 PRINT_MOUSE_EVENT(BUTTON1_CLICKED);
518 PRINT_MOUSE_EVENT(BUTTON1_DOUBLE_CLICKED);
519 PRINT_MOUSE_EVENT(BUTTON1_TRIPLE_CLICKED);
520#ifdef BUTTON1_RESERVED_EVENT
521 PRINT_MOUSE_EVENT(BUTTON1_RESERVED_EVENT);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530522#endif
micky3879b9f5e72025-07-08 18:04:53 -0400523 print_constant(fp, "all_events_button_1", (UINT) all_events);
Steve Kondikae271bc2015-11-15 02:50:53 +0100524
525 all_events = 0;
526 PRINT_MOUSE_EVENT(BUTTON2_RELEASED);
527 PRINT_MOUSE_EVENT(BUTTON2_PRESSED);
528 PRINT_MOUSE_EVENT(BUTTON2_CLICKED);
529 PRINT_MOUSE_EVENT(BUTTON2_DOUBLE_CLICKED);
530 PRINT_MOUSE_EVENT(BUTTON2_TRIPLE_CLICKED);
531#ifdef BUTTON2_RESERVED_EVENT
532 PRINT_MOUSE_EVENT(BUTTON2_RESERVED_EVENT);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530533#endif
micky3879b9f5e72025-07-08 18:04:53 -0400534 print_constant(fp, "all_events_button_2", (UINT) all_events);
Steve Kondikae271bc2015-11-15 02:50:53 +0100535
536 all_events = 0;
537 PRINT_MOUSE_EVENT(BUTTON3_RELEASED);
538 PRINT_MOUSE_EVENT(BUTTON3_PRESSED);
539 PRINT_MOUSE_EVENT(BUTTON3_CLICKED);
540 PRINT_MOUSE_EVENT(BUTTON3_DOUBLE_CLICKED);
541 PRINT_MOUSE_EVENT(BUTTON3_TRIPLE_CLICKED);
542#ifdef BUTTON3_RESERVED_EVENT
543 PRINT_MOUSE_EVENT(BUTTON3_RESERVED_EVENT);
544#endif
micky3879b9f5e72025-07-08 18:04:53 -0400545 print_constant(fp, "all_events_button_3", (UINT) all_events);
Steve Kondikae271bc2015-11-15 02:50:53 +0100546
547 all_events = 0;
548 PRINT_MOUSE_EVENT(BUTTON4_RELEASED);
549 PRINT_MOUSE_EVENT(BUTTON4_PRESSED);
550 PRINT_MOUSE_EVENT(BUTTON4_CLICKED);
551 PRINT_MOUSE_EVENT(BUTTON4_DOUBLE_CLICKED);
552 PRINT_MOUSE_EVENT(BUTTON4_TRIPLE_CLICKED);
553#ifdef BUTTON4_RESERVED_EVENT
554 PRINT_MOUSE_EVENT(BUTTON4_RESERVED_EVENT);
555#endif
micky3879b9f5e72025-07-08 18:04:53 -0400556 print_constant(fp, "all_events_button_4", (UINT) all_events);
Steve Kondikae271bc2015-11-15 02:50:53 +0100557 }
558 PRINT_NAMED_CONSTANT(BUTTON_CTRL);
559 PRINT_NAMED_CONSTANT(BUTTON_SHIFT);
560 PRINT_NAMED_CONSTANT(BUTTON_ALT);
561 PRINT_NAMED_CONSTANT(REPORT_MOUSE_POSITION);
562 PRINT_NAMED_CONSTANT(ALL_MOUSE_EVENTS);
563
micky3879b9f5e72025-07-08 18:04:53 -0400564 print_comment(fp, "trace selection from trace(3NCURSES)");
Steve Kondikae271bc2015-11-15 02:50:53 +0100565 PRINT_NAMED_BITMASK(UINT, TRACE_TIMES);
566 PRINT_NAMED_BITMASK(UINT, TRACE_TPUTS);
567 PRINT_NAMED_BITMASK(UINT, TRACE_UPDATE);
568 PRINT_NAMED_BITMASK(UINT, TRACE_MOVE);
569 PRINT_NAMED_BITMASK(UINT, TRACE_CHARPUT);
570 PRINT_NAMED_BITMASK(UINT, TRACE_CALLS);
571 PRINT_NAMED_BITMASK(UINT, TRACE_VIRTPUT);
572 PRINT_NAMED_BITMASK(UINT, TRACE_IEVENT);
573 PRINT_NAMED_BITMASK(UINT, TRACE_BITS);
574 PRINT_NAMED_BITMASK(UINT, TRACE_ICALLS);
575 PRINT_NAMED_BITMASK(UINT, TRACE_CCALLS);
576 PRINT_NAMED_BITMASK(UINT, TRACE_DATABASE);
577 PRINT_NAMED_BITMASK(UINT, TRACE_ATTRS);
micky3879b9f5e72025-07-08 18:04:53 -0400578 print_size_of(fp, "Trace_Size", 8 * sizeof(UINT));
Steve Kondikae271bc2015-11-15 02:50:53 +0100579
micky3879b9f5e72025-07-08 18:04:53 -0400580 fprintf(fp, "end Terminal_Interface.Curses_Constants;\n");
Steve Kondikae271bc2015-11-15 02:50:53 +0100581 exit(EXIT_SUCCESS);
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +0530582}