X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=Ada95%2Fgen%2Fgen.c;h=682f7101236a99390f47d0cfeca34a3ff32d90c6;hp=3ab2b5e1d31e6b86baf065a66da78d6b71660cfa;hb=22fd3b236834311f1682b09d16eacec0d17f8683;hpb=92e187a3459ab7ce1613a3684ca6642447c73620
diff --git a/Ada95/gen/gen.c b/Ada95/gen/gen.c
index 3ab2b5e1..682f7101 100644
--- a/Ada95/gen/gen.c
+++ b/Ada95/gen/gen.c
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,2009,2010 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,2010,2011 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 *
@@ -32,7 +32,7 @@
/*
Version Control
- $Id: gen.c,v 1.53 2010/05/01 17:08:30 tom Exp $
+ $Id: gen.c,v 1.60 2011/04/30 19:47:19 Nicolas.Boulenguez Exp $
--------------------------------------------------------------------------*/
/*
This program generates various record structures and constants from the
@@ -57,6 +57,7 @@
#include
#include
+#define UChar(c) ((unsigned char)(c))
#define RES_NAME "Reserved"
static const char *model = "";
@@ -123,16 +124,15 @@ gen_reps(
int len, /* size of the record in bytes */
int bias)
{
- int i, n, l, cnt = 0, low, high;
+ const int len_bits = (8 * len);
+ int i, l, low, high;
int width = strlen(RES_NAME) + 3;
unsigned long a;
- unsigned long mask = 0;
assert(nap != NULL);
for (i = 0; nap[i].name != (char *)0; i++)
{
- cnt++;
l = (int)strlen(nap[i].name);
if (l > width)
width = l;
@@ -154,16 +154,15 @@ gen_reps(
for (i = 0; nap[i].name != (char *)0; i++)
{
a = nap[i].attr;
- mask |= a;
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);
}
- i = 1;
- n = cnt;
printf(" end record;\n");
- printf(" for %s'Size use %d;\n", name, 8 * len);
+ printf(" pragma Warnings (Off);");
+ printf(" for %s'Size use %d;\n", name, len_bits);
+ printf(" pragma Warnings (On);\n");
printf(" -- Please note: this rep. clause is generated and may be\n");
printf(" -- different on your system.");
}
@@ -240,7 +239,10 @@ static void
gen_attr_set(const char *name)
{
/* All of the A_xxx symbols are defined in ncurses, but not all are nonzero
- * if "configure --enable-widec" is specified.
+ * if "configure --enable-widec" is not specified. Originally (in
+ * 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.
*/
static const name_attribute_pair nap[] =
{
@@ -331,6 +333,7 @@ gen_trace(const char *name)
{"Internal_Calls", TRACE_ICALLS},
{"Character_Calls", TRACE_CCALLS},
{"Termcap_TermInfo", TRACE_DATABASE},
+ {"Attributes_And_Colors", TRACE_ATTRS},
{(char *)0, 0}
};
gen_reps(nap, name, sizeof(int), 0);
@@ -445,13 +448,14 @@ keydef(const char *name, const char *old_name, int value, int mode)
if (mode == 0) /* Generate the new name */
printf(" %-30s : constant Special_Key_Code := 8#%3o#;\n", name, value);
else
- { /* generate the old name, but only if it doesn't conflict with the old
- * name (Ada95 isn't case sensitive!)
- */
+ {
const char *s = old_name;
const char *t = name;
- while (*s && *t && (toupper(*s++) == toupper(*t++)));
+ /* generate the old name, but only if it doesn't conflict with the old
+ * name (Ada95 isn't case sensitive!)
+ */
+ while (*s && *t && (toupper(UChar(*s++)) == toupper(UChar(*t++))));
if (*s || *t)
printf(" %-16s : Special_Key_Code renames %s;\n", old_name, name);
}
@@ -768,10 +772,10 @@ gen_keydefs(int mode)
static void
acs_def(const char *name, chtype *a)
{
- int c = a - &acs_map[0];
+ int c = (int)(a - &acs_map[0]);
printf(" %-24s : constant Character := ", name);
- if (isprint(c) && (c != '`'))
+ if (isprint(UChar(c)) && (c != '`'))
printf("'%c';\n", c);
else
printf("Character'Val (%d);\n", c);
@@ -1276,12 +1280,6 @@ gen_offsets(void)
printf(" Sizeof%-*s : constant Natural := %2ld; -- %s\n",
12, "_bool", (long)sizeof(bool), "bool");
- /* In ncurses _maxy and _maxx needs an offset for the "public"
- * value
- */
- printf(" Offset%-*s : constant Natural := %2d; -- %s\n",
- 12, "_XY", 1, "int");
- printf("\n");
printf(" type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n", s_bool);
}