/****************************************************************************
- * Copyright (c) 1998,2010,2011 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
/*
Version Control
- $Id: gen.c,v 1.60 2011/04/30 19:47:19 Nicolas.Boulenguez Exp $
+ $Id: gen.c,v 1.62 2014/01/26 00:21:52 Nicolas.Boulenguez Exp $
--------------------------------------------------------------------------*/
/*
This program generates various record structures and constants from the
* record type defined in the binding.
* We are only dealing with record types which are of 32 or 16
* bit size, i.e. they fit into an (u)int or a (u)short.
+ * Any pair with a 0 attr field will be ignored.
*/
static void
gen_reps(
assert(nap != NULL);
for (i = 0; nap[i].name != (char *)0; i++)
- {
- l = (int)strlen(nap[i].name);
- if (l > width)
- width = l;
- }
+ if (nap[i].attr)
+ {
+ l = (int)strlen(nap[i].name);
+ if (l > width)
+ width = l;
+ }
assert(width > 0);
printf(" type %s is\n", name);
printf(" record\n");
for (i = 0; nap[i].name != (char *)0; i++)
- {
- printf(" %-*s : Boolean;\n", width, nap[i].name);
- }
+ if (nap[i].attr)
+ {
+ printf(" %-*s : Boolean;\n", width, nap[i].name);
+ }
printf(" end record;\n");
printf(" pragma Convention (C, %s);\n\n", name);
printf(" record\n");
for (i = 0; nap[i].name != (char *)0; i++)
- {
- a = nap[i].attr;
- l = find_pos((char *)&a, sizeof(a), &low, &high);
- if (l >= 0)
- printf(" %-*s at 0 range %2d .. %2d;\n", width, nap[i].name,
- low - bias, high - bias);
- }
+ if (nap[i].attr)
+ {
+ a = nap[i].attr;
+ l = find_pos((char *)&a, sizeof(a), &low, &high);
+ if (l >= 0)
+ printf(" %-*s at 0 range %2d .. %2d;\n", width, nap[i].name,
+ low - bias, high - bias);
+ }
printf(" end record;\n");
printf(" pragma Warnings (Off);");
printf(" for %s'Size use %d;\n", name, len_bits);
* 1999-2000), the ifdef's also were needed since the proposed bit-layout
* for wide characters allocated 16-bits for A_CHARTEXT, leaving too few
* bits for a few of the A_xxx symbols.
+ * Some preprocessors are not able to test the values because they
+ * now (2014) contain an explicit cast to chtype, so we avoid ifdef.
*/
static const name_attribute_pair nap[] =
{
-#if A_STANDOUT
{"Stand_Out", A_STANDOUT},
-#endif
-#if A_UNDERLINE
{"Under_Line", A_UNDERLINE},
-#endif
-#if A_REVERSE
{"Reverse_Video", A_REVERSE},
-#endif
-#if A_BLINK
{"Blink", A_BLINK},
-#endif
-#if A_DIM
{"Dim_Character", A_DIM},
-#endif
-#if A_BOLD
{"Bold_Character", A_BOLD},
-#endif
-#if A_ALTCHARSET
{"Alternate_Character_Set", A_ALTCHARSET},
-#endif
-#if A_INVIS
{"Invisible_Character", A_INVIS},
-#endif
-#if A_PROTECT
{"Protected_Character", A_PROTECT},
-#endif
-#if A_HORIZONTAL
{"Horizontal", A_HORIZONTAL},
-#endif
-#if A_LEFT
{"Left", A_LEFT},
-#endif
-#if A_LOW
{"Low", A_LOW},
-#endif
-#if A_RIGHT
{"Right", A_RIGHT},
-#endif
-#if A_TOP
{"Top", A_TOP},
-#endif
-#if A_VERTICAL
{"Vertical", A_VERTICAL},
-#endif
{(char *)0, 0}
};
chtype attr = A_ATTRIBUTES & ~A_COLOR;