ncurses 5.9 - patch 20140524
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 25 May 2014 01:22:18 +0000 (01:22 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 25 May 2014 01:22:18 +0000 (01:22 +0000)
+ fix typo in ncurses manpage for the NCURSES_NO_MAGIC_COOKIE
  environment variable.
+ improve discussion of input-echoing in curs_getch.3x
+ clarify discussion in curs_addch.3x of wrapping.
+ modify parametrized.h to make fln non-padded.
+ correct several entries which had termcap-style padding used in
  terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD
+ correct syntax for padding in some entries: dg211, h19 -TD
+ correct ti924-8 which had confused padding versus octal escapes -TD
+ correct padding in sbi entry -TD
+ fix an old bug in the termcap emulation; "%i" was ignored in tparm()
  because the parameters to be incremented were already on the internal
  stack (report by Corinna Vinschen).
+ modify tic's "-c" option to take into account the "-C" option to
  activate additional checks which compare the results from running
  tparm() on the terminfo expressions versus the translated termcap
  expressions.
+ modify tic to allow it to read from FIFOs (report by Matthieu Fronton,
  cf: 20120324).
> patches by Nicolas Boulenguez:
+ explicit dereferences to suppress some style warnings.
+ when c_varargs_to_ada.c includes its header, use double quotes
  instead of <>.
+ samples/ncurses2-util.adb:  removed unused with clause.  The warning
  was removed by an obsolete pragma.
+ replaced Unreferenced pragmas with Warnings (Off).  The latter,
  available with older GNATs, needs no configure test.  This also
  replaces 3 untested Unreferenced pragmas.
+ simplified To_C usage in trace handling.  Using two parameters allows
  some basic formatting, and avoids a warning about security with some
  compiler flags.
+ for generated Ada sources, replace many snippets with one pure
  package.
+ removed C_Chtype and its conversions.
+ removed C_AttrType and its conversions.
+ removed conversions between int, Item_Option_Set, Menu_Option_Set.
+ removed int, Field_Option_Set, Item_Option_Set conversions.
+ removed C_TraceType, Attribute_Option_Set conversions.
+ replaced C.int with direct use of Eti_Error, now enumerated.  As it
  was used in a case statement, values were tested by the Ada compiler
  to be consecutive anyway.
+ src/Makefile.in: remove duplicate stanza
+ only consider using a project for shared libraries.
+ style. Silent gnat-4.9 warning about misplaced "then".
+ generate shared library project to honor ADAFLAGS, LDFLAGS.

182 files changed:
Ada95/aclocal.m4
Ada95/configure
Ada95/configure.in
Ada95/gen/Makefile.in
Ada95/gen/gen.c
Ada95/gen/terminal_interface-curses-aux.ads.m4
Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
Ada95/gen/terminal_interface-curses-forms.ads.m4
Ada95/gen/terminal_interface-curses-menus.ads.m4
Ada95/gen/terminal_interface-curses-mouse.ads.m4
Ada95/gen/terminal_interface-curses-panels.ads.m4
Ada95/gen/terminal_interface-curses-trace.ads.m4
Ada95/gen/terminal_interface-curses.adb.m4
Ada95/gen/terminal_interface-curses.ads.m4
Ada95/samples/ncurses2-util.adb
Ada95/src/Makefile.in
Ada95/src/c_threaded_variables.c [new file with mode: 0644]
Ada95/src/c_threaded_variables.h [new file with mode: 0644]
Ada95/src/c_varargs_to_ada.c
Ada95/src/library.gpr.sed [moved from Ada95/src/library.gpr with 79% similarity]
Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb
Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb
Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb
Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb
Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb
Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb
Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb
Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb
Ada95/src/terminal_interface-curses-forms-field_types-user.adb
Ada95/src/terminal_interface-curses-forms-field_types.adb
Ada95/src/terminal_interface-curses-forms-field_user_data.adb
Ada95/src/terminal_interface-curses-forms-form_user_data.adb
Ada95/src/terminal_interface-curses-forms.adb
Ada95/src/terminal_interface-curses-menus-item_user_data.adb
Ada95/src/terminal_interface-curses-menus-menu_user_data.adb
Ada95/src/terminal_interface-curses-menus.adb
Ada95/src/terminal_interface-curses-text_io.adb
Ada95/src/terminal_interface-curses-trace.adb_p
MANIFEST
NEWS
aclocal.m4
configure
configure.in
dist.mk
doc/html/ada/files/T.htm
doc/html/ada/funcs/A.htm
doc/html/ada/funcs/B.htm
doc/html/ada/funcs/C.htm
doc/html/ada/funcs/D.htm
doc/html/ada/funcs/E.htm
doc/html/ada/funcs/F.htm
doc/html/ada/funcs/G.htm
doc/html/ada/funcs/H.htm
doc/html/ada/funcs/I.htm
doc/html/ada/funcs/K.htm
doc/html/ada/funcs/L.htm
doc/html/ada/funcs/M.htm
doc/html/ada/funcs/N.htm
doc/html/ada/funcs/O.htm
doc/html/ada/funcs/P.htm
doc/html/ada/funcs/Q.htm
doc/html/ada/funcs/R.htm
doc/html/ada/funcs/S.htm
doc/html/ada/funcs/T.htm
doc/html/ada/funcs/U.htm
doc/html/ada/funcs/V.htm
doc/html/ada/funcs/W.htm
doc/html/ada/main.htm
doc/html/ada/terminal_interface-curses-aux__adb.htm
doc/html/ada/terminal_interface-curses-aux__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm
doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm
doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
doc/html/ada/terminal_interface-curses-forms__adb.htm
doc/html/ada/terminal_interface-curses-forms__ads.htm
doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm
doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm
doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
doc/html/ada/terminal_interface-curses-menus__adb.htm
doc/html/ada/terminal_interface-curses-menus__ads.htm
doc/html/ada/terminal_interface-curses-mouse__adb.htm
doc/html/ada/terminal_interface-curses-mouse__ads.htm
doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
doc/html/ada/terminal_interface-curses-panels__adb.htm
doc/html/ada/terminal_interface-curses-panels__ads.htm
doc/html/ada/terminal_interface-curses-putwin__adb.htm
doc/html/ada/terminal_interface-curses-putwin__ads.htm
doc/html/ada/terminal_interface-curses-termcap__adb.htm
doc/html/ada/terminal_interface-curses-termcap__ads.htm
doc/html/ada/terminal_interface-curses-terminfo__adb.htm
doc/html/ada/terminal_interface-curses-terminfo__ads.htm
doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
doc/html/ada/terminal_interface-curses-text_io__adb.htm
doc/html/ada/terminal_interface-curses-text_io__ads.htm
doc/html/ada/terminal_interface-curses-trace__adb.htm
doc/html/ada/terminal_interface-curses-trace__ads.htm
doc/html/ada/terminal_interface-curses__adb.htm
doc/html/ada/terminal_interface-curses__ads.htm
doc/html/ada/terminal_interface-curses_constants__ads.htm [new file with mode: 0644]
doc/html/man/adacurses-config.1.html
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/curs_addch.3x.html
doc/html/man/curs_getch.3x.html
doc/html/man/curs_initscr.3x.html
doc/html/man/curs_opaque.3x.html
doc/html/man/curs_threads.3x.html
doc/html/man/curs_window.3x.html
doc/html/man/form.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/menu.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/ncurses5-config.1.html
doc/html/man/panel.3x.html
doc/html/man/tabs.1.html
doc/html/man/term_variables.3x.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
include/MKparametrized.sh
man/curs_addch.3x
man/curs_getch.3x
man/ncurses.3x
man/tic.1m
misc/terminfo.src
ncurses/tinfo/lib_tparm.c
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
progs/Makefile.in
progs/modules
progs/progs.priv.h
progs/tic.c
progs/tparm_type.c [new file with mode: 0644]
progs/tparm_type.h [new file with mode: 0644]
progs/tput.c

index c107052a6a259bfaf0f66f56b91ff9d329e4e038..14d5188c9cb0b40b678d86692c5576082d6c73c7 100644 (file)
@@ -28,7 +28,7 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey
 dnl
-dnl $Id: aclocal.m4,v 1.80 2014/05/10 21:08:22 tom Exp $
+dnl $Id: aclocal.m4,v 1.82 2014/05/24 21:09:10 Nicolas.Boulenguez Exp $
 dnl Macros used in NCURSES Ada95 auto-configuration script.
 dnl
 dnl These macros are maintained separately from NCURSES.  The copyright on
@@ -1207,35 +1207,6 @@ AC_SUBST(cf_compile_generics)
 AC_SUBST(cf_generic_objects)
 ])dnl
 dnl ---------------------------------------------------------------------------
-dnl CF_GNAT_PRAGMA_UNREF version: 1 updated: 2010/06/19 15:22:18
-dnl --------------------
-dnl Check if the gnat pragma "Unreferenced" works.
-AC_DEFUN([CF_GNAT_PRAGMA_UNREF],[
-AC_CACHE_CHECK(if GNAT pragma Unreferenced works,cf_cv_pragma_unreferenced,[
-CF_GNAT_TRY_LINK([procedure conftest;],
-[with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
-   test : Integer;
-   pragma Unreferenced (test);
-begin
-   test := 1;
-   Text_IO.Put ("Hello World");
-   Text_IO.New_Line;
-   GNAT.OS_Lib.OS_Exit (0);
-end conftest;],
-       [cf_cv_pragma_unreferenced=yes],
-       [cf_cv_pragma_unreferenced=no])])
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
-       PRAGMA_UNREF=TRUE
-else
-       PRAGMA_UNREF=FALSE
-fi
-AC_SUBST(PRAGMA_UNREF)
-])dnl
-dnl ---------------------------------------------------------------------------
 dnl CF_GNAT_PROJECTS version: 4 updated: 2013/09/07 14:05:46
 dnl ----------------
 dnl GNAT projects are configured with ".gpr" project files.
@@ -1244,7 +1215,6 @@ AC_DEFUN([CF_GNAT_PROJECTS],
 [
 AC_REQUIRE([CF_GNAT_VERSION])
 
-cf_gnat_libraries=no
 cf_gnat_projects=no
 
 AC_MSG_CHECKING(if GNAT supports project files)
@@ -1256,28 +1226,17 @@ case $cf_gnat_version in #(vi
        cygwin*|msys*) #(vi
                ;;
        *)
-               mkdir conftest.src conftest.bin conftest.lib
-               cd conftest.src
-               rm -rf conftest* *~conftest*
+               mkdir conftest
+               cd conftest
+               mkdir lib obj
                cat >>library.gpr <<CF_EOF
 project Library is
-  Kind := External ("LIB_KIND");
   for Library_Name use "ConfTest";
-  for Object_Dir use ".";
-  for Library_ALI_Dir use External("LIBRARY_DIR");
-  for Library_Version use External ("SONAME");
-  for Library_Kind use Kind;
-  for Library_Dir use External("BUILD_DIR");
-  Source_Dir := External ("SOURCE_DIR");
-  for Source_Dirs use (Source_Dir);
-  package Compiler is
-     for Default_Switches ("Ada") use
-       ("-g",
-        "-O2",
-        "-gnatafno",
-        "-gnatVa",   -- All validity checks
-        "-gnatwa");  -- Activate all optional errors
-  end Compiler;
+  for Object_Dir use "obj";
+  for Library_Version use "libConfTest.so.1";
+  for Library_Kind use "dynamic";
+  for Library_Dir use "lib";
+  for Source_Dirs use (".");
 end Library;
 CF_EOF
                cat >>confpackage.ads <<CF_EOF
@@ -1295,52 +1254,16 @@ package body ConfPackage is
    end conftest;
 end ConfPackage;
 CF_EOF
-               if ( $cf_ada_make $ADAFLAGS \
-                               -Plibrary.gpr \
-                               -XBUILD_DIR=`cd ../conftest.bin;pwd` \
-                               -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
-                               -XSOURCE_DIR=`pwd` \
-                               -XSONAME=libConfTest.so.1 \
-                               -XLIB_KIND=static 1>&AC_FD_CC 2>&1 ) ; then
+               if ( $cf_ada_make -Plibrary.gpr 1>&AC_FD_CC 2>&1 ); then
                        cf_gnat_projects=yes
                fi
                cd ..
-               if test -f conftest.lib/confpackage.ali
-               then
-                       cf_gnat_libraries=yes
-               fi
-               rm -rf conftest* *~conftest*
+               rm -rf conftest
                ;;
        esac
        ;;
 esac
 AC_MSG_RESULT($cf_gnat_projects)
-
-if test $cf_gnat_projects = yes
-then
-       AC_MSG_CHECKING(if GNAT supports libraries)
-       AC_MSG_RESULT($cf_gnat_libraries)
-fi
-
-if test "$cf_gnat_projects" = yes
-then
-       USE_OLD_MAKERULES="#"
-       USE_GNAT_PROJECTS=""
-else
-       USE_OLD_MAKERULES=""
-       USE_GNAT_PROJECTS="#"
-fi
-
-if test "$cf_gnat_libraries" = yes
-then
-       USE_GNAT_LIBRARIES=""
-else
-       USE_GNAT_LIBRARIES="#"
-fi
-
-AC_SUBST(USE_OLD_MAKERULES)
-AC_SUBST(USE_GNAT_PROJECTS)
-AC_SUBST(USE_GNAT_LIBRARIES)
 ])dnl
 dnl ---------------------------------------------------------------------------
 dnl CF_GNAT_SIGINT version: 1 updated: 2011/03/27 20:07:59
@@ -3519,9 +3442,10 @@ dnl ---------------------
 dnl Command-line option to specify if an Ada95 shared-library should be built,
 dnl and optionally what its soname should be.
 AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[
+AC_REQUIRE([CF_GNAT_PROJECTS])
 AC_MSG_CHECKING(if an Ada95 shared-library should be built)
 AC_ARG_WITH(ada-sharedlib,
-       [  --with-ada-sharedlib=XX build Ada95 shared-library],
+       [  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)],
        [with_ada_sharedlib=$withval],
        [with_ada_sharedlib=no])
 AC_MSG_RESULT($with_ada_sharedlib)
@@ -3531,6 +3455,10 @@ MAKE_ADA_SHAREDLIB="#"
 
 if test "x$with_ada_sharedlib" != xno
 then
+       if test "$cf_gnat_projects" != yes
+       then
+               AC_MSG_ERROR(ada-sharedlib requires GNAT support for shared library projects,1)
+       fi
        MAKE_ADA_SHAREDLIB=
        if test "x$with_ada_sharedlib" != xyes
        then
index a21bbc9fc86581951c9a6edb4c6ea9c13161e31a..4963f156614404812b37d86122ab14edefe13d8f 100644 (file)
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.in Revision: 1.49 .
+# From configure.in Revision: 1.51 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by Autoconf 2.52.20121002.
 #
@@ -698,7 +698,7 @@ Ada95 Binding Options:
   --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)
   --with-ada-include=DIR  Ada includes are in DIR (default: PREFIX/share/ada/adainclude)
   --with-ada-objects=DIR  Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
-  --with-ada-sharedlib=XX build Ada95 shared-library
+  --with-ada-sharedlib=soname build shared-library (requires GNAT projects)
 
 Some influential environment variables:
   CC          C compiler command
@@ -11553,146 +11553,7 @@ else
        USE_GNAT_SIGINT="#"
 fi
 
-echo "$as_me:11556: checking if GNAT pragma Unreferenced works" >&5
-echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6
-if test "${cf_cv_pragma_unreferenced+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-
-rm -rf conftest* *~conftest*
-cat >>conftest.ads <<CF_EOF
-procedure conftest;
-CF_EOF
-cat >>conftest.adb <<CF_EOF
-with Text_IO;
-with GNAT.OS_Lib;
-procedure conftest is
-   test : Integer;
-   pragma Unreferenced (test);
-begin
-   test := 1;
-   Text_IO.Put ("Hello World");
-   Text_IO.New_Line;
-   GNAT.OS_Lib.OS_Exit (0);
-end conftest;
-CF_EOF
-if ( $cf_ada_make $ADAFLAGS conftest 1>&5 2>&1 ) ; then
-      cf_cv_pragma_unreferenced=yes
-else
-   cf_cv_pragma_unreferenced=no
-fi
-rm -rf conftest* *~conftest*
-
-fi
-echo "$as_me:11587: result: $cf_cv_pragma_unreferenced" >&5
-echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6
-
-# if the pragma is supported, use it (needed in the Trace code).
-if test $cf_cv_pragma_unreferenced = yes ; then
-       PRAGMA_UNREF=TRUE
-else
-       PRAGMA_UNREF=FALSE
-fi
-
-cf_gnat_libraries=no
-cf_gnat_projects=no
-
-echo "$as_me:11600: checking if GNAT supports project files" >&5
-echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
-case $cf_gnat_version in #(vi
-3.[0-9]*) #(vi
-       ;;
-*)
-       case $cf_cv_system_name in #(vi
-       cygwin*|msys*) #(vi
-               ;;
-       *)
-               mkdir conftest.src conftest.bin conftest.lib
-               cd conftest.src
-               rm -rf conftest* *~conftest*
-               cat >>library.gpr <<CF_EOF
-project Library is
-  Kind := External ("LIB_KIND");
-  for Library_Name use "ConfTest";
-  for Object_Dir use ".";
-  for Library_ALI_Dir use External("LIBRARY_DIR");
-  for Library_Version use External ("SONAME");
-  for Library_Kind use Kind;
-  for Library_Dir use External("BUILD_DIR");
-  Source_Dir := External ("SOURCE_DIR");
-  for Source_Dirs use (Source_Dir);
-  package Compiler is
-     for Default_Switches ("Ada") use
-       ("-g",
-        "-O2",
-        "-gnatafno",
-        "-gnatVa",   -- All validity checks
-        "-gnatwa");  -- Activate all optional errors
-  end Compiler;
-end Library;
-CF_EOF
-               cat >>confpackage.ads <<CF_EOF
-package ConfPackage is
-   procedure conftest;
-end ConfPackage;
-CF_EOF
-               cat >>confpackage.adb <<CF_EOF
-with Text_IO;
-package body ConfPackage is
-   procedure conftest is
-   begin
-      Text_IO.Put ("Hello World");
-      Text_IO.New_Line;
-   end conftest;
-end ConfPackage;
-CF_EOF
-               if ( $cf_ada_make $ADAFLAGS \
-                               -Plibrary.gpr \
-                               -XBUILD_DIR=`cd ../conftest.bin;pwd` \
-                               -XLIBRARY_DIR=`cd ../conftest.lib;pwd` \
-                               -XSOURCE_DIR=`pwd` \
-                               -XSONAME=libConfTest.so.1 \
-                               -XLIB_KIND=static 1>&5 2>&1 ) ; then
-                       cf_gnat_projects=yes
-               fi
-               cd ..
-               if test -f conftest.lib/confpackage.ali
-               then
-                       cf_gnat_libraries=yes
-               fi
-               rm -rf conftest* *~conftest*
-               ;;
-       esac
-       ;;
-esac
-echo "$as_me:11668: result: $cf_gnat_projects" >&5
-echo "${ECHO_T}$cf_gnat_projects" >&6
-
-if test $cf_gnat_projects = yes
-then
-       echo "$as_me:11673: checking if GNAT supports libraries" >&5
-echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6
-       echo "$as_me:11675: result: $cf_gnat_libraries" >&5
-echo "${ECHO_T}$cf_gnat_libraries" >&6
-fi
-
-if test "$cf_gnat_projects" = yes
-then
-       USE_OLD_MAKERULES="#"
-       USE_GNAT_PROJECTS=""
-else
-       USE_OLD_MAKERULES=""
-       USE_GNAT_PROJECTS="#"
-fi
-
-if test "$cf_gnat_libraries" = yes
-then
-       USE_GNAT_LIBRARIES=""
-else
-       USE_GNAT_LIBRARIES="#"
-fi
-
-echo "$as_me:11695: checking for ada-compiler" >&5
+echo "$as_me:11556: checking for ada-compiler" >&5
 echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6
 
 # Check whether --with-ada-compiler or --without-ada-compiler was given.
@@ -11703,12 +11564,12 @@ else
   cf_ada_compiler=gnatmake
 fi;
 
-echo "$as_me:11706: result: $cf_ada_compiler" >&5
+echo "$as_me:11567: result: $cf_ada_compiler" >&5
 echo "${ECHO_T}$cf_ada_compiler" >&6
 
                cf_ada_package=terminal_interface
 
-echo "$as_me:11711: checking for ada-include" >&5
+echo "$as_me:11572: checking for ada-include" >&5
 echo $ECHO_N "checking for ada-include... $ECHO_C" >&6
 
 # Check whether --with-ada-include or --without-ada-include was given.
@@ -11744,7 +11605,7 @@ case ".$withval" in #(vi
   withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
   ;;
 *)
-  { { echo "$as_me:11747: error: expected a pathname, not \"$withval\"" >&5
+  { { echo "$as_me:11608: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
   ;;
@@ -11753,10 +11614,10 @@ esac
 fi
 eval ADA_INCLUDE="$withval"
 
-echo "$as_me:11756: result: $ADA_INCLUDE" >&5
+echo "$as_me:11617: result: $ADA_INCLUDE" >&5
 echo "${ECHO_T}$ADA_INCLUDE" >&6
 
-echo "$as_me:11759: checking for ada-objects" >&5
+echo "$as_me:11620: checking for ada-objects" >&5
 echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6
 
 # Check whether --with-ada-objects or --without-ada-objects was given.
@@ -11792,7 +11653,7 @@ case ".$withval" in #(vi
   withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%`
   ;;
 *)
-  { { echo "$as_me:11795: error: expected a pathname, not \"$withval\"" >&5
+  { { echo "$as_me:11656: error: expected a pathname, not \"$withval\"" >&5
 echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;}
    { (exit 1); exit 1; }; }
   ;;
@@ -11801,10 +11662,62 @@ esac
 fi
 eval ADA_OBJECTS="$withval"
 
-echo "$as_me:11804: result: $ADA_OBJECTS" >&5
+echo "$as_me:11665: result: $ADA_OBJECTS" >&5
 echo "${ECHO_T}$ADA_OBJECTS" >&6
 
-echo "$as_me:11807: checking if an Ada95 shared-library should be built" >&5
+cf_gnat_projects=no
+
+echo "$as_me:11670: checking if GNAT supports project files" >&5
+echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6
+case $cf_gnat_version in #(vi
+3.[0-9]*) #(vi
+       ;;
+*)
+       case $cf_cv_system_name in #(vi
+       cygwin*|msys*) #(vi
+               ;;
+       *)
+               mkdir conftest
+               cd conftest
+               mkdir lib obj
+               cat >>library.gpr <<CF_EOF
+project Library is
+  for Library_Name use "ConfTest";
+  for Object_Dir use "obj";
+  for Library_Version use "libConfTest.so.1";
+  for Library_Kind use "dynamic";
+  for Library_Dir use "lib";
+  for Source_Dirs use (".");
+end Library;
+CF_EOF
+               cat >>confpackage.ads <<CF_EOF
+package ConfPackage is
+   procedure conftest;
+end ConfPackage;
+CF_EOF
+               cat >>confpackage.adb <<CF_EOF
+with Text_IO;
+package body ConfPackage is
+   procedure conftest is
+   begin
+      Text_IO.Put ("Hello World");
+      Text_IO.New_Line;
+   end conftest;
+end ConfPackage;
+CF_EOF
+               if ( $cf_ada_make -Plibrary.gpr 1>&5 2>&1 ); then
+                       cf_gnat_projects=yes
+               fi
+               cd ..
+               rm -rf conftest
+               ;;
+       esac
+       ;;
+esac
+echo "$as_me:11717: result: $cf_gnat_projects" >&5
+echo "${ECHO_T}$cf_gnat_projects" >&6
+
+echo "$as_me:11720: checking if an Ada95 shared-library should be built" >&5
 echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6
 
 # Check whether --with-ada-sharedlib or --without-ada-sharedlib was given.
@@ -11814,7 +11727,7 @@ if test "${with_ada_sharedlib+set}" = set; then
 else
   with_ada_sharedlib=no
 fi;
-echo "$as_me:11817: result: $with_ada_sharedlib" >&5
+echo "$as_me:11730: result: $with_ada_sharedlib" >&5
 echo "${ECHO_T}$with_ada_sharedlib" >&6
 
 ADA_SHAREDLIB='lib$(LIB_NAME).so.1'
@@ -11822,6 +11735,12 @@ MAKE_ADA_SHAREDLIB="#"
 
 if test "x$with_ada_sharedlib" != xno
 then
+       if test "$cf_gnat_projects" != yes
+       then
+               { { echo "$as_me:11740: error: ada-sharedlib requires GNAT support for shared library projects" >&5
+echo "$as_me: error: ada-sharedlib requires GNAT support for shared library projects" >&2;}
+   { (exit 1); exit 1; }; }
+       fi
        MAKE_ADA_SHAREDLIB=
        if test "x$with_ada_sharedlib" != xyes
        then
@@ -11830,12 +11749,12 @@ then
 fi
 
        else
-               { { echo "$as_me:11833: error: No usable Ada compiler found" >&5
+               { { echo "$as_me:11752: error: No usable Ada compiler found" >&5
 echo "$as_me: error: No usable Ada compiler found" >&2;}
    { (exit 1); exit 1; }; }
        fi
 else
-       { { echo "$as_me:11838: error: The Ada compiler is needed for this package" >&5
+       { { echo "$as_me:11757: error: The Ada compiler is needed for this package" >&5
 echo "$as_me: error: The Ada compiler is needed for this package" >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -11882,7 +11801,7 @@ elif test "$includedir" != "/usr/include"; then
 fi
 
 ### Build up pieces for makefile rules
-echo "$as_me:11885: checking default library suffix" >&5
+echo "$as_me:11804: checking default library suffix" >&5
 echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -11893,10 +11812,10 @@ echo $ECHO_N "checking default library suffix... $ECHO_C" >&6
        shared)  DFT_ARG_SUFFIX=''   ;;
        esac
        test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}"
-echo "$as_me:11896: result: $DFT_ARG_SUFFIX" >&5
+echo "$as_me:11815: result: $DFT_ARG_SUFFIX" >&5
 echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6
 
-echo "$as_me:11899: checking default library-dependency suffix" >&5
+echo "$as_me:11818: checking default library-dependency suffix" >&5
 echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
 
        case X$DFT_LWR_MODEL in #(vi
@@ -11951,10 +11870,10 @@ echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6
        esac
        test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}"
        test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
-echo "$as_me:11954: result: $DFT_DEP_SUFFIX" >&5
+echo "$as_me:11873: result: $DFT_DEP_SUFFIX" >&5
 echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6
 
-echo "$as_me:11957: checking default object directory" >&5
+echo "$as_me:11876: checking default object directory" >&5
 echo $ECHO_N "checking default object directory... $ECHO_C" >&6
 
        case $DFT_LWR_MODEL in
@@ -11970,7 +11889,7 @@ echo $ECHO_N "checking default object directory... $ECHO_C" >&6
                        DFT_OBJ_SUBDIR='obj_s' ;;
                esac
        esac
-echo "$as_me:11973: result: $DFT_OBJ_SUBDIR" >&5
+echo "$as_me:11892: result: $DFT_OBJ_SUBDIR" >&5
 echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6
 
 ### Set up low-level terminfo dependencies for makefiles.
@@ -12189,7 +12108,7 @@ DEFS=-DHAVE_CONFIG_H
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
 ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ echo "$as_me:12192: creating $CONFIG_STATUS" >&5
+{ echo "$as_me:12111: creating $CONFIG_STATUS" >&5
 echo "$as_me: creating $CONFIG_STATUS" >&6;}
 cat >$CONFIG_STATUS <<_ACEOF
 #! $SHELL
@@ -12365,7 +12284,7 @@ cat >>$CONFIG_STATUS <<\EOF
     echo "$ac_cs_version"; exit 0 ;;
   --he | --h)
     # Conflict between --help and --header
-    { { echo "$as_me:12368: error: ambiguous option: $1
+    { { echo "$as_me:12287: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: ambiguous option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -12384,7 +12303,7 @@ Try \`$0 --help' for more information." >&2;}
     ac_need_defaults=false;;
 
   # This is an error.
-  -*) { { echo "$as_me:12387: error: unrecognized option: $1
+  -*) { { echo "$as_me:12306: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&5
 echo "$as_me: error: unrecognized option: $1
 Try \`$0 --help' for more information." >&2;}
@@ -12432,7 +12351,6 @@ LN_S="$LN_S"
 NCURSES_MAJOR="$NCURSES_MAJOR"
 NCURSES_MINOR="$NCURSES_MINOR"
 NCURSES_PATCH="$NCURSES_PATCH"
-USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
 cf_cv_abi_version="$cf_cv_abi_version"
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
@@ -12455,7 +12373,7 @@ do
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
   "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
   "include/ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS include/ncurses_cfg.h:include/ncurses_cfg.hin" ;;
-  *) { { echo "$as_me:12458: error: invalid argument: $ac_config_target" >&5
+  *) { { echo "$as_me:12376: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
    { (exit 1); exit 1; }; };;
   esac
@@ -12641,10 +12559,6 @@ s,@cf_ada_make@,$cf_ada_make,;t t
 s,@cf_compile_generics@,$cf_compile_generics,;t t
 s,@cf_generic_objects@,$cf_generic_objects,;t t
 s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t
-s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t
-s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t
-s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t
-s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t
 s,@cf_ada_compiler@,$cf_ada_compiler,;t t
 s,@cf_ada_package@,$cf_ada_package,;t t
 s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t
@@ -12780,7 +12694,7 @@ done; }
   esac
 
   if test x"$ac_file" != x-; then
-    { echo "$as_me:12783: creating $ac_file" >&5
+    { echo "$as_me:12697: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
     rm -f "$ac_file"
   fi
@@ -12798,7 +12712,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo $tmp/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:12801: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:12715: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo $f;;
@@ -12811,7 +12725,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo $srcdir/$f
          else
            # /dev/null tree
-           { { echo "$as_me:12814: error: cannot find input file: $f" >&5
+           { { echo "$as_me:12728: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -12827,7 +12741,7 @@ cat >>$CONFIG_STATUS <<\EOF
       if test -n "$ac_seen"; then
         ac_used=`grep '@datarootdir@' $ac_item`
         if test -z "$ac_used"; then
-          { echo "$as_me:12830: WARNING: datarootdir was used implicitly but not set:
+          { echo "$as_me:12744: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used implicitly but not set:
 $ac_seen" >&2;}
@@ -12836,7 +12750,7 @@ $ac_seen" >&2;}
       fi
       ac_seen=`grep '${datarootdir}' $ac_item`
       if test -n "$ac_seen"; then
-        { echo "$as_me:12839: WARNING: datarootdir was used explicitly but not set:
+        { echo "$as_me:12753: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: datarootdir was used explicitly but not set:
 $ac_seen" >&2;}
@@ -12873,7 +12787,7 @@ s,@INSTALL@,$ac_INSTALL,;t t
             ac_init=`egrep '[  ]*'$ac_name'[   ]*=' $ac_file`
             if test -z "$ac_init"; then
               ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'`
-              { echo "$as_me:12876: WARNING: Variable $ac_name is used but was not set:
+              { echo "$as_me:12790: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&5
 echo "$as_me: WARNING: Variable $ac_name is used but was not set:
 $ac_seen" >&2;}
@@ -12884,7 +12798,7 @@ $ac_seen" >&2;}
     egrep -n '@[A-Z_][A-Z_0-9]+@' $ac_file >>$tmp/out
     if test -s $tmp/out; then
       ac_seen=`sed -e 's,^,'$ac_file':,' < $tmp/out`
-      { echo "$as_me:12887: WARNING: Some variables may not be substituted:
+      { echo "$as_me:12801: WARNING: Some variables may not be substituted:
 $ac_seen" >&5
 echo "$as_me: WARNING: Some variables may not be substituted:
 $ac_seen" >&2;}
@@ -12933,7 +12847,7 @@ for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue
   * )   ac_file_in=$ac_file.in ;;
   esac
 
-  test x"$ac_file" != x- && { echo "$as_me:12936: creating $ac_file" >&5
+  test x"$ac_file" != x- && { echo "$as_me:12850: creating $ac_file" >&5
 echo "$as_me: creating $ac_file" >&6;}
 
   # First look for the input files in the build tree, otherwise in the
@@ -12944,7 +12858,7 @@ echo "$as_me: creating $ac_file" >&6;}
       -) echo $tmp/stdin ;;
       [\\/$]*)
          # Absolute (can't be DOS-style, as IFS=:)
-         test -f "$f" || { { echo "$as_me:12947: error: cannot find input file: $f" >&5
+         test -f "$f" || { { echo "$as_me:12861: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          echo $f;;
@@ -12957,7 +12871,7 @@ echo "$as_me: error: cannot find input file: $f" >&2;}
            echo $srcdir/$f
          else
            # /dev/null tree
-           { { echo "$as_me:12960: error: cannot find input file: $f" >&5
+           { { echo "$as_me:12874: error: cannot find input file: $f" >&5
 echo "$as_me: error: cannot find input file: $f" >&2;}
    { (exit 1); exit 1; }; }
          fi;;
@@ -13015,7 +12929,7 @@ cat >>$CONFIG_STATUS <<\EOF
   rm -f $tmp/in
   if test x"$ac_file" != x-; then
     if cmp -s $ac_file $tmp/config.h 2>/dev/null; then
-      { echo "$as_me:13018: $ac_file is unchanged" >&5
+      { echo "$as_me:12932: $ac_file is unchanged" >&5
 echo "$as_me: $ac_file is unchanged" >&6;}
     else
       ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
@@ -13066,9 +12980,7 @@ for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue
 
   case $ac_dest in
     default )
-if test -z "$USE_OLD_MAKERULES" ; then
        $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
-fi
  ;;
   esac
 done
index 8d6e101354b45ea88431e3884d9441bfd033ecea..e1281f46cdf10238293fcdc40c7264e4f17e8196 100644 (file)
@@ -1,5 +1,5 @@
 dnl***************************************************************************
-dnl Copyright (c) 2010-2012,2013 Free Software Foundation, Inc.              *
+dnl Copyright (c) 2010-2013,2014 Free Software Foundation, Inc.              *
 dnl                                                                          *
 dnl Permission is hereby granted, free of charge, to any person obtaining a  *
 dnl copy of this software and associated documentation files (the            *
@@ -28,14 +28,14 @@ dnl***************************************************************************
 dnl
 dnl Author: Thomas E. Dickey
 dnl
-dnl $Id: configure.in,v 1.49 2013/11/16 20:06:37 tom Exp $
+dnl $Id: configure.in,v 1.52 2014/05/24 21:31:05 tom Exp $
 dnl Process this file with autoconf to produce a configure script.
 dnl
 dnl See http://invisible-island.net/autoconf/ for additional information.
 dnl
 dnl ---------------------------------------------------------------------------
 AC_PREREQ(2.52.20030208)
-AC_REVISION($Revision: 1.49 $)
+AC_REVISION($Revision: 1.52 $)
 AC_INIT(gen/gen.c)
 AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
 
@@ -478,8 +478,6 @@ if test "$cf_with_ada" != "no" ; then
 
                CF_GNAT_GENERICS
                CF_GNAT_SIGINT
-               CF_GNAT_PRAGMA_UNREF
-               CF_GNAT_PROJECTS
 
                CF_WITH_ADA_COMPILER
 
@@ -594,9 +592,7 @@ AC_OUTPUT( \
        $SUB_MAKEFILES \
        doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \
        Makefile,[
-if test -z "$USE_OLD_MAKERULES" ; then
        $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile
-fi
 ],[
 ### Special initialization commands, used to pass information from the
 ### configuration-run into config.status
@@ -611,7 +607,6 @@ LN_S="$LN_S"
 NCURSES_MAJOR="$NCURSES_MAJOR"
 NCURSES_MINOR="$NCURSES_MINOR"
 NCURSES_PATCH="$NCURSES_PATCH"
-USE_OLD_MAKERULES="$USE_OLD_MAKERULES"
 cf_cv_abi_version="$cf_cv_abi_version"
 cf_cv_rel_version="$cf_cv_rel_version"
 cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
index 302ad94f4424548bf9b267019b5a27197430cc17..f64c0f93690fa4dc0f3e5f18d57cc8dff0a154ca 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.                #
+# Copyright (c) 1998-2012,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 "Software"), #
@@ -28,7 +28,7 @@
 #
 #  Author:  Juergen Pfeifer, 1996
 #
-#  $Id: Makefile.in,v 1.77 2012/10/06 18:58:48 tom Exp $
+#  $Id: Makefile.in,v 1.80 2014/05/24 21:31:05 tom Exp $
 #
 .SUFFIXES:
 
@@ -97,39 +97,6 @@ ABASE                = $(ALIB)-curses
 
 ADA_SRCDIR     = ../src
 
-GEN_FILES0      = Base_Defs
-
-GEN_FILES1      = ACS_Map                                      \
-                 AC_Rep                                \
-                 Base_Defs                             \
-                 Character_Attribute_Set_Rep           \
-                 Color_Defs                            \
-                 Key_Definitions                       \
-                 Linker_Options                        \
-                 Old_Keys                              \
-                 Public_Variables                      \
-                 Trace_Defs                            \
-                 Version_Info                          \
-                 Window_Offsets
-
-GEN_FILES2      = Menu_Opt_Rep                         \
-                 Menu_Base_Defs                        \
-                 Menu_Linker_Options                   \
-                 Item_Rep
-
-GEN_FILES3      = Form_Opt_Rep                                 \
-                 Form_Base_Defs                        \
-                 Form_Linker_Options                   \
-                 Field_Rep
-
-GEN_FILES4      = Mouse_Base_Defs                              \
-                 Mouse_Event_Rep                       \
-                 Mouse_Events                          \
-                 Panel_Linker_Options
-
-GEN_FILES5     = Chtype_Def                            \
-                 Eti_Defs
-
 GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                           \
                  $(ADA_SRCDIR)/$(ABASE).adb                            \
                  $(ADA_SRCDIR)/$(ABASE)-aux.ads                        \
@@ -143,7 +110,8 @@ GEN_TARGETS     = $(ADA_SRCDIR)/$(ABASE).ads                                \
                  $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads       \
                  $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads          \
                  $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads      \
-                 $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads
+                 $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads           \
+                  $(ADA_SRCDIR)/$(ABASE)_constants.ads
 
 GEN_SRC                = $(srcdir)/$(ABASE).ads.m4                             \
                  $(srcdir)/$(ABASE).adb.m4                             \
@@ -183,129 +151,53 @@ $(PROG_GENERATE):  gen.o
 
 gen.o: $(srcdir)/gen.c
        $(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c
-################################################################################
-Character_Attribute_Set_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B A" >$@
-
-Base_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B B" >$@
-
-Color_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B C" >$@
-
-Window_Offsets: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B D" >$@
-
-Key_Definitions: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B K" >$@
-
-Linker_Options: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B L" >$@
-
-ACS_Map: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B M" >$@
-
-Old_Keys: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B O" >$@
-
-Public_Variables: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B P" >$@
-
-AC_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B R" >$@
-
-Version_Info: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B V" >$@
-
-Trace_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B T" >$@
-################################################################################
-Menu_Opt_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) M R" >$@
-
-Menu_Base_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) M B" >$@
-
-Menu_Linker_Options: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) M L" >$@
-
-Item_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) M I" >$@
-################################################################################
-Form_Opt_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) F R" >$@
-
-Form_Base_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) F B" >$@
-
-Form_Linker_Options: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) F L" >$@
-
-Field_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) F I" >$@
-################################################################################
-Mouse_Base_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) P B" >$@
-
-Mouse_Event_Rep: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) P M" >$@
-
-Mouse_Events: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) B E" >$@
-
-Panel_Linker_Options: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) P L" >$@
-
-Chtype_Def: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) E C" >$@
 
-Eti_Defs: $(PROG_GENERATE)
-       $(WRAPPER) "$(GENERATE) E E" >$@
+$(ADA_SRCDIR)/$(ABASE)_constants.ads: $(PROG_GENERATE)
+       $(WRAPPER) "$(GENERATE)" >$@
 ################################################################################
 $(ADA_SRCDIR)/$(ABASE).ads:    $(srcdir)/$(ABASE).ads.m4 \
-                               $(GEN_FILES1) $(srcdir)/normal.m4
+                               $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE).ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE).adb:    $(srcdir)/$(ABASE).adb.m4 \
-                               $(GEN_FILES1) $(srcdir)/normal.m4
+                               $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE).adb.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \
-                               $(GEN_FILES5) $(srcdir)/normal.m4
+                               $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-aux.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \
-                               $(GEN_FILES5) $(srcdir)/normal.m4
+                                 $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-trace.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \
-                                 $(GEN_FILES2) $(srcdir)/normal.m4
+                                 $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-menus.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \
-                                 $(GEN_FILES3) $(srcdir)/normal.m4
+                                 $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-forms.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \
-                                 $(GEN_FILES4) $(srcdir)/normal.m4
+                                 $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-mouse.ads.m4 |\
        $(DEL_ADAMODE) >$@
 
 $(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \
-                                  $(GEN_FILES4) \
                                   $(srcdir)/normal.m4
        $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \
        $(srcdir)/$(ABASE)-panels.ads.m4 |\
@@ -363,11 +255,6 @@ tags:
 
 mostlyclean ::
        -rm -f a.out core $(PROG_GENERATE) *.o
-       -rm -f $(GEN_FILES1)
-       -rm -f $(GEN_FILES2)
-       -rm -f $(GEN_FILES3)
-       -rm -f $(GEN_FILES4)
-       -rm -f $(GEN_FILES5)
 
 clean :: mostlyclean
        -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
@@ -410,8 +297,7 @@ adahtml:
        @find $(HTML_DIR) -type f -exec rm -f {} \;
        @mkdir -p $(HTML_DIR)
        cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb]
-@USE_OLD_MAKERULES@    ln -sf ../src/*.ali .
-@USE_GNAT_PROJECTS@    ln -sf ../static-ali/*.ali .
+       ln -sf ../src/*.ali .
        @echo "Filtering generated files"
        @for f in $(GEN_SRC); do \
           h=`basename $$f` ;\
index 082315b6ceee042fa397139dd19550687d626e90..3d4596f7278101614282a360ada7521921fc2f8f 100644 (file)
 
 /*
     Version Control
-    $Id: gen.c,v 1.64 2014/02/01 19:52:47 tom Exp $
+    $Id: gen.c,v 1.68 2014/05/24 21:34:53 tom Exp $
   --------------------------------------------------------------------------*/
 /*
-  This program generates various record structures and constants from the
-  ncurses header file for the Ada95 packages. Essentially it produces
-  Ada95 source on stdout, which is then merged using m4 into a template
-  to produce the real source.
-  */
+  This program prints on its standard output the source for the
+  Terminal_Interface.Curses_Constants Ada package specification. This pure
+  package only exports C constants to the Ada compiler.
+ */
 
 #ifdef HAVE_CONFIG_H
 #include <ncurses_cfg.h>
 #else
 #include <ncurses.h>
-#define HAVE_USE_DEFAULT_COLORS 1
 #endif
 
 #include <stdlib.h>
-#include <stddef.h>
 #include <string.h>
-#include <assert.h>
-#include <ctype.h>
 
 #include <menu.h>
 #include <form.h>
 
 #undef UCHAR
 #undef UINT
-#define UChar(c)       ((UCHAR)(c))
-#define RES_NAME "Reserved"
 
 typedef unsigned char UCHAR;
 typedef unsigned int UINT;
 
-static const char *model = "";
-static int little_endian = 0;
+/* These global variables will be set by main () */
+static int little_endian;
+static const char *my_program_invocation_name = NULL;
 
-typedef struct
-  {
-    const char *name;
-    unsigned long attr;
-  }
-name_attribute_pair;
+static void
+my_error(const char *message)
+{
+  fprintf(stderr, "%s: %s\n", my_program_invocation_name, message);
+  exit(EXIT_FAILURE);
+}
+
+static void
+print_constant(const char *name,
+              long value)
+{
+  printf("   %-28s : constant := %ld;\n", name, value);
+}
+
+#define PRINT_NAMED_CONSTANT(name) \
+  print_constant (#name, name)
+
+static void
+print_comment(const char *message)
+{
+  printf("\n   --  %s\n\n", message);
+}
+
+/*
+ * Make sure that KEY_MIN and KEY_MAX are defined.
+ * main () will protest if KEY_MIN == 256
+ */
+#ifndef KEY_MAX
+#  define KEY_MAX 0777
+#endif
+#ifndef KEY_MIN
+#  define KEY_MIN 0401
+#endif
 
 static UCHAR
 bit_is_set(const UCHAR * const data,
@@ -114,1407 +135,400 @@ find_pos(const UCHAR * const data,
   return -1;
 }
 
-/*
- * This helper routine generates a representation clause for a
- * 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(
-         const name_attribute_pair * nap,      /* array of name_attribute_pair records */
-         const char *name,     /* name of the represented record type  */
-         const UINT len,       /* size of the record in bytes          */
-         const UINT bias)
-{
-  const UINT len_bits = len << 3;
-  int i, l;
-  UINT low, high;
-  int width = strlen(RES_NAME) + 3;
-
-  assert(nap != NULL);
-
-  for (i = 0; nap[i].name != (char *)0; i++)
-    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++)
-    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("   for %s use\n", name);
-  printf("      record\n");
-
-  for (i = 0; nap[i].name != (char *)0; i++)
-    if (nap[i].attr)
-      {
-       if (find_pos((const UCHAR *)(&(nap[i].attr)) + bias, len, &low, &high))
-         printf("         %-*s at 0 range %2d .. %2d;\n", width, nap[i].name,
-                low, high);
-      }
-  printf("      end record;\n");
-  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.");
-}
-
-static void
-chtype_rep(const char *name, attr_t mask)
-{
-  attr_t x = (attr_t)-1;
-  attr_t t = x & mask;
-  UINT low, high;
-
-  if (find_pos((const UCHAR *)(&t), sizeof(t), &low, &high))
-    printf("         %-5s at 0 range %2d .. %2d;\n", name, low, high);
-}
-
-static void
-gen_chtype_rep(const char *name)
-{
-  printf("   for %s use\n      record\n", name);
-  chtype_rep("Ch", A_CHARTEXT);
-  chtype_rep("Color", A_COLOR);
-  chtype_rep("Attr", (A_ATTRIBUTES & ~A_COLOR));
-  printf("      end record;\n   for %s'Size use %ld;\n",
-        name, (long)(8 * sizeof(chtype)));
-
-  printf("      --  Please note: this rep. clause is generated and may be\n");
-  printf("      --               different on your system.\n");
-}
-
-static void
-mrep_rep(const char *name, void *rec)
-{
-  UINT low, high;
-
-  if (find_pos((const UCHAR *)rec, sizeof(MEVENT), &low, &high))
-    printf("         %-7s at 0 range %3d .. %3d;\n", name, low, high);
-}
-
-static void
-gen_mrep_rep(const char *name)
-{
-  MEVENT x;
-
-  printf("   for %s use\n      record\n", name);
-
-  memset(&x, 0, sizeof(x));
-  x.id = -1;
-  mrep_rep("Id", &x);
-
-  memset(&x, 0, sizeof(x));
-  x.x = -1;
-  mrep_rep("X", &x);
-
-  memset(&x, 0, sizeof(x));
-  x.y = -1;
-  mrep_rep("Y", &x);
-
-  memset(&x, 0, sizeof(x));
-  x.z = -1;
-  mrep_rep("Z", &x);
-
-  memset(&x, 0, sizeof(x));
-  x.bstate = (mmask_t) - 1;
-  mrep_rep("Bstate", &x);
-
-  printf("      end record;\n");
-  printf("      --  Please note: this rep. clause is generated and may be\n");
-  printf("      --               different on your system.\n");
-}
-
-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 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.
-   * 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[] =
-  {
-    {"Stand_Out", A_STANDOUT},
-    {"Under_Line", A_UNDERLINE},
-    {"Reverse_Video", A_REVERSE},
-    {"Blink", A_BLINK},
-    {"Dim_Character", A_DIM},
-    {"Bold_Character", A_BOLD},
-    {"Alternate_Character_Set", A_ALTCHARSET},
-    {"Invisible_Character", A_INVIS},
-    {"Protected_Character", A_PROTECT},
-    {"Horizontal", A_HORIZONTAL},
-    {"Left", A_LEFT},
-    {"Low", A_LOW},
-    {"Right", A_RIGHT},
-    {"Top", A_TOP},
-    {"Vertical", A_VERTICAL},
-    {(char *)0, 0}
-  };
-  chtype attr = A_ATTRIBUTES & ~A_COLOR;
-  int start = -1;
-  int len = 0;
-  int i;
-  chtype set;
-  for (i = 0; i < (int)(8 * sizeof(chtype)); i++)
-
-    {
-      set = (attr & 1);
-      if (set)
-       {
-         if (start < 0)
-           start = i;
-         if (start >= 0)
-           {
-             len++;
-           }
-       }
-      attr = attr >> 1;
-    }
-  gen_reps(nap, name,
-          (UINT) ((len + 7) / 8),
-          (UINT) (little_endian ? start >> 3 : 0));
-}
-
-static void
-gen_trace(const char *name)
-{
-  static const name_attribute_pair nap[] =
-  {
-    {"Times", TRACE_TIMES},
-    {"Tputs", TRACE_TPUTS},
-    {"Update", TRACE_UPDATE},
-    {"Cursor_Move", TRACE_MOVE},
-    {"Character_Output", TRACE_CHARPUT},
-    {"Calls", TRACE_CALLS},
-    {"Virtual_Puts", TRACE_VIRTPUT},
-    {"Input_Events", TRACE_IEVENT},
-    {"TTY_State", TRACE_BITS},
-    {"Internal_Calls", TRACE_ICALLS},
-    {"Character_Calls", TRACE_CCALLS},
-    {"Termcap_TermInfo", TRACE_DATABASE},
-    {"Attributes_And_Colors", TRACE_ATTRS},
-    {(char *)0, 0}
-  };
+#define PRINT_BITMASK(c_type, ada_name, mask_macro)                     \
+  {                                                                     \
+    UINT first, last;                                                   \
+    c_type mask = (mask_macro);                                         \
+    if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last))       \
+      my_error ("failed to locate " ada_name);                          \
+    print_constant (ada_name "_First", first);                          \
+    print_constant (ada_name "_Last", last);                            \
+  }
 
-  gen_reps(nap, name, sizeof(UINT),
-          little_endian ? 0 : sizeof(nap[0].attr) - sizeof(UINT));
-}
+#define PRINT_NAMED_BITMASK(c_type, mask_macro)         \
+  PRINT_BITMASK (c_type, #mask_macro, mask_macro)
+
+#define STRUCT_OFFSET(record, field)                                    \
+  {                                                                     \
+    UINT first, last;                                                   \
+    record mask;                                                        \
+    memset (&mask, 0, sizeof (mask));                                   \
+    mask.field = -1;                                                    \
+    if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last))       \
+      my_error ("failed to locate" #record "_" #field);                 \
+    print_constant (#record "_" #field "_First", first);                \
+    print_constant (#record "_" #field "_Last", last);                  \
+  }
 
-static void
-gen_menu_opt_rep(const char *name)
-{
-  static const name_attribute_pair nap[] =
-  {
-#ifdef O_ONEVALUE
-    {"One_Valued", O_ONEVALUE},
-#endif
-#ifdef O_SHOWDESC
-    {"Show_Descriptions", O_SHOWDESC},
-#endif
-#ifdef O_ROWMAJOR
-    {"Row_Major_Order", O_ROWMAJOR},
-#endif
-#ifdef O_IGNORECASE
-    {"Ignore_Case", O_IGNORECASE},
-#endif
-#ifdef O_SHOWMATCH
-    {"Show_Matches", O_SHOWMATCH},
-#endif
-#ifdef O_NONCYCLIC
-    {"Non_Cyclic", O_NONCYCLIC},
-#endif
-    {(char *)0, 0}
-  };
+/*--------------------*/
+/*  Start of main (). */
+/*--------------------*/
 
-  gen_reps(nap, name, sizeof(Menu_Options),
-          little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Menu_Options));
-}
-
-static void
-gen_item_opt_rep(const char *name)
+int
+main(int argc, const char *argv[])
 {
-  static const name_attribute_pair nap[] =
-  {
-#ifdef O_SELECTABLE
-    {"Selectable", O_SELECTABLE},
-#endif
-    {(char *)0, 0}
-  };
-
-  gen_reps(nap, name, sizeof(Item_Options),
-          little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Item_Options));
-}
+  const int x = 0x12345678;
 
-static void
-gen_form_opt_rep(const char *name)
-{
-  static const name_attribute_pair nap[] =
-  {
-#ifdef O_NL_OVERLOAD
-    {"NL_Overload", O_NL_OVERLOAD},
-#endif
-#ifdef O_BS_OVERLOAD
-    {"BS_Overload", O_BS_OVERLOAD},
-#endif
-    {(char *)0, 0}
-  };
+  little_endian = (*((const char *)&x) == 0x78);
 
-  gen_reps(nap, name, sizeof(Form_Options),
-          little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Form_Options));
-}
+  my_program_invocation_name = argv[0];
 
-/*
- * Generate the representation clause for the Field_Option_Set record
- */
-static void
-gen_field_opt_rep(const char *name)
-{
-  static const name_attribute_pair nap[] =
-  {
-#ifdef O_VISIBLE
-    {"Visible", O_VISIBLE},
-#endif
-#ifdef O_ACTIVE
-    {"Active", O_ACTIVE},
-#endif
-#ifdef O_PUBLIC
-    {"Public", O_PUBLIC},
-#endif
-#ifdef O_EDIT
-    {"Edit", O_EDIT},
-#endif
-#ifdef O_WRAP
-    {"Wrap", O_WRAP},
-#endif
-#ifdef O_BLANK
-    {"Blank", O_BLANK},
-#endif
-#ifdef O_AUTOSKIP
-    {"Auto_Skip", O_AUTOSKIP},
-#endif
-#ifdef O_NULLOK
-    {"Null_Ok", O_NULLOK},
-#endif
-#ifdef O_PASSOK
-    {"Pass_Ok", O_PASSOK},
-#endif
-#ifdef O_STATIC
-    {"Static", O_STATIC},
-#endif
-    {(char *)0, 0}
-  };
+  if (KEY_MIN == 256)
+    my_error("unexpected value for KEY_MIN: 256");
 
-  gen_reps(nap, name, sizeof(Field_Options),
-          little_endian ? 0 : sizeof(nap[0].attr) - sizeof(Field_Options));
-}
+  if (argc != 2)
+    my_error("Only one argument expected (DFT_ARG_SUFFIX)");
 
-/*
- * Generate a single key code constant definition.
- */
-static void
-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
-    {
-      const char *s = old_name;
-      const char *t = name;
+  printf("--  Generated by the C program %s (source " __FILE__ ").\n",
+        my_program_invocation_name);
+  printf("--  Do not edit this file directly.\n");
+  printf("--  The values provided here may vary on your system.\n");
+  printf("\n");
+  printf("with System;\n");
+  printf("package Terminal_Interface.Curses_Constants is\n");
+  printf("   pragma Pure;\n");
+  printf("\n");
 
-      /* 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);
-    }
-}
+  printf("   DFT_ARG_SUFFIX : constant String := \"%s\";\n", argv[1]);
+  printf("   Bit_Order : constant System.Bit_Order := System.%s_Order_First;\n",
+        little_endian ? "Low" : "High");
+  print_constant("Sizeof_Bool", 8 * sizeof(bool));
 
-/*
- * Generate constants for the key codes. When called with mode==0, a
- * complete list with nice constant names in proper casing style will
- * be generated. Otherwise a list of old (i.e. C-style) names will be
- * generated, given that the name wasn't already defined in the "nice"
- * list.
- */
-static void
-gen_keydefs(int mode)
-{
-  char buf[16];
-  char obuf[16];
-  int i;
+  PRINT_NAMED_CONSTANT(OK);
+  PRINT_NAMED_CONSTANT(ERR);
+  printf("   pragma Warnings (Off); -- redefinition of Standard.True and False\n");
+  PRINT_NAMED_CONSTANT(TRUE);
+  PRINT_NAMED_CONSTANT(FALSE);
+  printf("   pragma Warnings (On);\n");
 
+  print_comment("Version of the ncurses library from extensions(3NCURSES)");
+  PRINT_NAMED_CONSTANT(NCURSES_VERSION_MAJOR);
+  PRINT_NAMED_CONSTANT(NCURSES_VERSION_MINOR);
+  printf("   Version : constant String := \"%d.%d\";\n",
+        NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR);
+
+  print_comment("Character non-color attributes from attr(3NCURSES)");
+  printf("   --  attr_t and chtype may be signed in C.\n");
+  printf("   type attr_t is mod 2 ** %lu;\n", (long unsigned)(8 * sizeof(attr_t)));
+  PRINT_NAMED_BITMASK(attr_t, A_CHARTEXT);
+  PRINT_NAMED_BITMASK(attr_t, A_COLOR);
+  PRINT_BITMASK(attr_t, "Attr", A_ATTRIBUTES & ~A_COLOR);
+  PRINT_NAMED_BITMASK(attr_t, A_STANDOUT);
+  PRINT_NAMED_BITMASK(attr_t, A_UNDERLINE);
+  PRINT_NAMED_BITMASK(attr_t, A_REVERSE);
+  PRINT_NAMED_BITMASK(attr_t, A_BLINK);
+  PRINT_NAMED_BITMASK(attr_t, A_DIM);
+  PRINT_NAMED_BITMASK(attr_t, A_BOLD);
+  PRINT_NAMED_BITMASK(attr_t, A_PROTECT);
+  PRINT_NAMED_BITMASK(attr_t, A_INVIS);
+  PRINT_NAMED_BITMASK(attr_t, A_ALTCHARSET);
+  PRINT_NAMED_BITMASK(attr_t, A_HORIZONTAL);
+  PRINT_NAMED_BITMASK(attr_t, A_LEFT);
+  PRINT_NAMED_BITMASK(attr_t, A_LOW);
+  PRINT_NAMED_BITMASK(attr_t, A_RIGHT);
+  PRINT_NAMED_BITMASK(attr_t, A_TOP);
+  PRINT_NAMED_BITMASK(attr_t, A_VERTICAL);
+  print_constant("chtype_Size", 8 * sizeof(chtype));
+
+  print_comment("predefined color numbers from color(3NCURSES)");
+  PRINT_NAMED_CONSTANT(COLOR_BLACK);
+  PRINT_NAMED_CONSTANT(COLOR_RED);
+  PRINT_NAMED_CONSTANT(COLOR_GREEN);
+  PRINT_NAMED_CONSTANT(COLOR_YELLOW);
+  PRINT_NAMED_CONSTANT(COLOR_BLUE);
+  PRINT_NAMED_CONSTANT(COLOR_MAGENTA);
+  PRINT_NAMED_CONSTANT(COLOR_CYAN);
+  PRINT_NAMED_CONSTANT(COLOR_WHITE);
+
+  print_comment("ETI return codes from ncurses.h");
+  PRINT_NAMED_CONSTANT(E_OK);
+  PRINT_NAMED_CONSTANT(E_SYSTEM_ERROR);
+  PRINT_NAMED_CONSTANT(E_BAD_ARGUMENT);
+  PRINT_NAMED_CONSTANT(E_POSTED);
+  PRINT_NAMED_CONSTANT(E_CONNECTED);
+  PRINT_NAMED_CONSTANT(E_BAD_STATE);
+  PRINT_NAMED_CONSTANT(E_NO_ROOM);
+  PRINT_NAMED_CONSTANT(E_NOT_POSTED);
+  PRINT_NAMED_CONSTANT(E_UNKNOWN_COMMAND);
+  PRINT_NAMED_CONSTANT(E_NO_MATCH);
+  PRINT_NAMED_CONSTANT(E_NOT_SELECTABLE);
+  PRINT_NAMED_CONSTANT(E_NOT_CONNECTED);
+  PRINT_NAMED_CONSTANT(E_REQUEST_DENIED);
+  PRINT_NAMED_CONSTANT(E_INVALID_FIELD);
+  PRINT_NAMED_CONSTANT(E_CURRENT);
+
+  print_comment("Input key codes not defined in any ncurses manpage");
+  PRINT_NAMED_CONSTANT(KEY_MIN);
+  PRINT_NAMED_CONSTANT(KEY_MAX);
 #ifdef KEY_CODE_YES
-  keydef("Key_Code_Yes", "KEY_CODE_YES", KEY_CODE_YES, mode);
-#endif
-#ifdef KEY_MIN
-  keydef("Key_Min", "KEY_MIN", KEY_MIN, mode);
-#endif
-#ifdef KEY_BREAK
-  keydef("Key_Break", "KEY_BREAK", KEY_BREAK, mode);
-#endif
-#ifdef KEY_DOWN
-  keydef("Key_Cursor_Down", "KEY_DOWN", KEY_DOWN, mode);
-#endif
-#ifdef KEY_UP
-  keydef("Key_Cursor_Up", "KEY_UP", KEY_UP, mode);
-#endif
-#ifdef KEY_LEFT
-  keydef("Key_Cursor_Left", "KEY_LEFT", KEY_LEFT, mode);
-#endif
-#ifdef KEY_RIGHT
-  keydef("Key_Cursor_Right", "KEY_RIGHT", KEY_RIGHT, mode);
-#endif
-#ifdef KEY_HOME
-  keydef("Key_Home", "KEY_HOME", KEY_HOME, mode);
-#endif
-#ifdef KEY_BACKSPACE
-  keydef("Key_Backspace", "KEY_BACKSPACE", KEY_BACKSPACE, mode);
-#endif
-#ifdef KEY_F0
-  keydef("Key_F0", "KEY_F0", KEY_F0, mode);
-#endif
-#ifdef KEY_F
-  for (i = 1; i <= 24; i++)
-    {
-      sprintf(buf, "Key_F%d", i);
-      sprintf(obuf, "KEY_F%d", i);
-      keydef(buf, obuf, KEY_F(i), mode);
-    }
-#endif
-#ifdef KEY_DL
-  keydef("Key_Delete_Line", "KEY_DL", KEY_DL, mode);
-#endif
-#ifdef KEY_IL
-  keydef("Key_Insert_Line", "KEY_IL", KEY_IL, mode);
-#endif
-#ifdef KEY_DC
-  keydef("Key_Delete_Char", "KEY_DC", KEY_DC, mode);
-#endif
-#ifdef KEY_IC
-  keydef("Key_Insert_Char", "KEY_IC", KEY_IC, mode);
-#endif
-#ifdef KEY_EIC
-  keydef("Key_Exit_Insert_Mode", "KEY_EIC", KEY_EIC, mode);
-#endif
-#ifdef KEY_CLEAR
-  keydef("Key_Clear_Screen", "KEY_CLEAR", KEY_CLEAR, mode);
-#endif
-#ifdef KEY_EOS
-  keydef("Key_Clear_End_Of_Screen", "KEY_EOS", KEY_EOS, mode);
-#endif
-#ifdef KEY_EOL
-  keydef("Key_Clear_End_Of_Line", "KEY_EOL", KEY_EOL, mode);
-#endif
-#ifdef KEY_SF
-  keydef("Key_Scroll_1_Forward", "KEY_SF", KEY_SF, mode);
-#endif
-#ifdef KEY_SR
-  keydef("Key_Scroll_1_Backward", "KEY_SR", KEY_SR, mode);
-#endif
-#ifdef KEY_NPAGE
-  keydef("Key_Next_Page", "KEY_NPAGE", KEY_NPAGE, mode);
-#endif
-#ifdef KEY_PPAGE
-  keydef("Key_Previous_Page", "KEY_PPAGE", KEY_PPAGE, mode);
-#endif
-#ifdef KEY_STAB
-  keydef("Key_Set_Tab", "KEY_STAB", KEY_STAB, mode);
-#endif
-#ifdef KEY_CTAB
-  keydef("Key_Clear_Tab", "KEY_CTAB", KEY_CTAB, mode);
-#endif
-#ifdef KEY_CATAB
-  keydef("Key_Clear_All_Tabs", "KEY_CATAB", KEY_CATAB, mode);
-#endif
-#ifdef KEY_ENTER
-  keydef("Key_Enter_Or_Send", "KEY_ENTER", KEY_ENTER, mode);
-#endif
-#ifdef KEY_SRESET
-  keydef("Key_Soft_Reset", "KEY_SRESET", KEY_SRESET, mode);
-#endif
-#ifdef KEY_RESET
-  keydef("Key_Reset", "KEY_RESET", KEY_RESET, mode);
-#endif
-#ifdef KEY_PRINT
-  keydef("Key_Print", "KEY_PRINT", KEY_PRINT, mode);
-#endif
-#ifdef KEY_LL
-  keydef("Key_Bottom", "KEY_LL", KEY_LL, mode);
-#endif
-#ifdef KEY_A1
-  keydef("Key_Upper_Left_Of_Keypad", "KEY_A1", KEY_A1, mode);
-#endif
-#ifdef KEY_A3
-  keydef("Key_Upper_Right_Of_Keypad", "KEY_A3", KEY_A3, mode);
-#endif
-#ifdef KEY_B2
-  keydef("Key_Center_Of_Keypad", "KEY_B2", KEY_B2, mode);
-#endif
-#ifdef KEY_C1
-  keydef("Key_Lower_Left_Of_Keypad", "KEY_C1", KEY_C1, mode);
-#endif
-#ifdef KEY_C3
-  keydef("Key_Lower_Right_Of_Keypad", "KEY_C3", KEY_C3, mode);
-#endif
-#ifdef KEY_BTAB
-  keydef("Key_Back_Tab", "KEY_BTAB", KEY_BTAB, mode);
-#endif
-#ifdef KEY_BEG
-  keydef("Key_Beginning", "KEY_BEG", KEY_BEG, mode);
-#endif
-#ifdef KEY_CANCEL
-  keydef("Key_Cancel", "KEY_CANCEL", KEY_CANCEL, mode);
-#endif
-#ifdef KEY_CLOSE
-  keydef("Key_Close", "KEY_CLOSE", KEY_CLOSE, mode);
-#endif
-#ifdef KEY_COMMAND
-  keydef("Key_Command", "KEY_COMMAND", KEY_COMMAND, mode);
-#endif
-#ifdef KEY_COPY
-  keydef("Key_Copy", "KEY_COPY", KEY_COPY, mode);
-#endif
-#ifdef KEY_CREATE
-  keydef("Key_Create", "KEY_CREATE", KEY_CREATE, mode);
-#endif
-#ifdef KEY_END
-  keydef("Key_End", "KEY_END", KEY_END, mode);
-#endif
-#ifdef KEY_EXIT
-  keydef("Key_Exit", "KEY_EXIT", KEY_EXIT, mode);
-#endif
-#ifdef KEY_FIND
-  keydef("Key_Find", "KEY_FIND", KEY_FIND, mode);
-#endif
-#ifdef KEY_HELP
-  keydef("Key_Help", "KEY_HELP", KEY_HELP, mode);
-#endif
-#ifdef KEY_MARK
-  keydef("Key_Mark", "KEY_MARK", KEY_MARK, mode);
-#endif
-#ifdef KEY_MESSAGE
-  keydef("Key_Message", "KEY_MESSAGE", KEY_MESSAGE, mode);
-#endif
-#ifdef KEY_MOVE
-  keydef("Key_Move", "KEY_MOVE", KEY_MOVE, mode);
-#endif
-#ifdef KEY_NEXT
-  keydef("Key_Next", "KEY_NEXT", KEY_NEXT, mode);
-#endif
-#ifdef KEY_OPEN
-  keydef("Key_Open", "KEY_OPEN", KEY_OPEN, mode);
-#endif
-#ifdef KEY_OPTIONS
-  keydef("Key_Options", "KEY_OPTIONS", KEY_OPTIONS, mode);
-#endif
-#ifdef KEY_PREVIOUS
-  keydef("Key_Previous", "KEY_PREVIOUS", KEY_PREVIOUS, mode);
-#endif
-#ifdef KEY_REDO
-  keydef("Key_Redo", "KEY_REDO", KEY_REDO, mode);
-#endif
-#ifdef KEY_REFERENCE
-  keydef("Key_Reference", "KEY_REFERENCE", KEY_REFERENCE, mode);
-#endif
-#ifdef KEY_REFRESH
-  keydef("Key_Refresh", "KEY_REFRESH", KEY_REFRESH, mode);
-#endif
-#ifdef KEY_REPLACE
-  keydef("Key_Replace", "KEY_REPLACE", KEY_REPLACE, mode);
-#endif
-#ifdef KEY_RESTART
-  keydef("Key_Restart", "KEY_RESTART", KEY_RESTART, mode);
-#endif
-#ifdef KEY_RESUME
-  keydef("Key_Resume", "KEY_RESUME", KEY_RESUME, mode);
-#endif
-#ifdef KEY_SAVE
-  keydef("Key_Save", "KEY_SAVE", KEY_SAVE, mode);
-#endif
-#ifdef KEY_SBEG
-  keydef("Key_Shift_Begin", "KEY_SBEG", KEY_SBEG, mode);
-#endif
-#ifdef KEY_SCANCEL
-  keydef("Key_Shift_Cancel", "KEY_SCANCEL", KEY_SCANCEL, mode);
-#endif
-#ifdef KEY_SCOMMAND
-  keydef("Key_Shift_Command", "KEY_SCOMMAND", KEY_SCOMMAND, mode);
-#endif
-#ifdef KEY_SCOPY
-  keydef("Key_Shift_Copy", "KEY_SCOPY", KEY_SCOPY, mode);
-#endif
-#ifdef KEY_SCREATE
-  keydef("Key_Shift_Create", "KEY_SCREATE", KEY_SCREATE, mode);
-#endif
-#ifdef KEY_SDC
-  keydef("Key_Shift_Delete_Char", "KEY_SDC", KEY_SDC, mode);
-#endif
-#ifdef KEY_SDL
-  keydef("Key_Shift_Delete_Line", "KEY_SDL", KEY_SDL, mode);
-#endif
-#ifdef KEY_SELECT
-  keydef("Key_Select", "KEY_SELECT", KEY_SELECT, mode);
-#endif
-#ifdef KEY_SEND
-  keydef("Key_Shift_End", "KEY_SEND", KEY_SEND, mode);
-#endif
-#ifdef KEY_SEOL
-  keydef("Key_Shift_Clear_End_Of_Line", "KEY_SEOL", KEY_SEOL, mode);
-#endif
-#ifdef KEY_SEXIT
-  keydef("Key_Shift_Exit", "KEY_SEXIT", KEY_SEXIT, mode);
-#endif
-#ifdef KEY_SFIND
-  keydef("Key_Shift_Find", "KEY_SFIND", KEY_SFIND, mode);
-#endif
-#ifdef KEY_SHELP
-  keydef("Key_Shift_Help", "KEY_SHELP", KEY_SHELP, mode);
-#endif
-#ifdef KEY_SHOME
-  keydef("Key_Shift_Home", "KEY_SHOME", KEY_SHOME, mode);
-#endif
-#ifdef KEY_SIC
-  keydef("Key_Shift_Insert_Char", "KEY_SIC", KEY_SIC, mode);
-#endif
-#ifdef KEY_SLEFT
-  keydef("Key_Shift_Cursor_Left", "KEY_SLEFT", KEY_SLEFT, mode);
-#endif
-#ifdef KEY_SMESSAGE
-  keydef("Key_Shift_Message", "KEY_SMESSAGE", KEY_SMESSAGE, mode);
-#endif
-#ifdef KEY_SMOVE
-  keydef("Key_Shift_Move", "KEY_SMOVE", KEY_SMOVE, mode);
-#endif
-#ifdef KEY_SNEXT
-  keydef("Key_Shift_Next_Page", "KEY_SNEXT", KEY_SNEXT, mode);
-#endif
-#ifdef KEY_SOPTIONS
-  keydef("Key_Shift_Options", "KEY_SOPTIONS", KEY_SOPTIONS, mode);
-#endif
-#ifdef KEY_SPREVIOUS
-  keydef("Key_Shift_Previous_Page", "KEY_SPREVIOUS", KEY_SPREVIOUS, mode);
-#endif
-#ifdef KEY_SPRINT
-  keydef("Key_Shift_Print", "KEY_SPRINT", KEY_SPRINT, mode);
-#endif
-#ifdef KEY_SREDO
-  keydef("Key_Shift_Redo", "KEY_SREDO", KEY_SREDO, mode);
-#endif
-#ifdef KEY_SREPLACE
-  keydef("Key_Shift_Replace", "KEY_SREPLACE", KEY_SREPLACE, mode);
-#endif
-#ifdef KEY_SRIGHT
-  keydef("Key_Shift_Cursor_Right", "KEY_SRIGHT", KEY_SRIGHT, mode);
-#endif
-#ifdef KEY_SRSUME
-  keydef("Key_Shift_Resume", "KEY_SRSUME", KEY_SRSUME, mode);
-#endif
-#ifdef KEY_SSAVE
-  keydef("Key_Shift_Save", "KEY_SSAVE", KEY_SSAVE, mode);
-#endif
-#ifdef KEY_SSUSPEND
-  keydef("Key_Shift_Suspend", "KEY_SSUSPEND", KEY_SSUSPEND, mode);
-#endif
-#ifdef KEY_SUNDO
-  keydef("Key_Shift_Undo", "KEY_SUNDO", KEY_SUNDO, mode);
-#endif
-#ifdef KEY_SUSPEND
-  keydef("Key_Suspend", "KEY_SUSPEND", KEY_SUSPEND, mode);
-#endif
-#ifdef KEY_UNDO
-  keydef("Key_Undo", "KEY_UNDO", KEY_UNDO, mode);
-#endif
-#ifdef KEY_MOUSE
-  keydef("Key_Mouse", "KEY_MOUSE", KEY_MOUSE, mode);
-#endif
-#ifdef KEY_RESIZE
-  keydef("Key_Resize", "KEY_RESIZE", KEY_RESIZE, mode);
-#endif
-}
-
-/*
- * Generate a constant with the given name. The second parameter
- * is a reference to the ACS character in the acs_map[] array and
- * will be translated into an index.
- */
-static void
-acs_def(const char *name, chtype *a)
-{
-  int c = (int)(a - &acs_map[0]);
-
-  printf("   %-24s : constant Character := ", name);
-  if (isprint(UChar(c)) && (c != '`'))
-    printf("'%c';\n", c);
-  else
-    printf("Character'Val (%d);\n", c);
-}
-
-/*
- * Generate the constants for the ACS characters
- */
-static void
-gen_acs(void)
-{
-  printf("   type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))\n");
-  printf("        of Attributed_Character;\n");
-#if USE_REENTRANT || BROKEN_LINKER
-  printf("   type C_ACS_Ptr is access C_ACS_Map;\n");
-  printf("   function ACS_Map return C_ACS_Ptr;\n");
-  printf("   pragma Import (C, ACS_Map, \""
-        NCURSES_WRAP_PREFIX
-        "acs_map\");\n");
-#else
-  printf("   ACS_Map : C_ACS_Map;\n");
-  printf("   pragma Import (C, ACS_Map, \"acs_map\");\n");
-#endif
-  printf("   --\n");
-  printf("   --\n");
-  printf("   --  Constants for several characters from the Alternate Character Set\n");
-  printf("   --  You must use these constants as indices into the ACS_Map array\n");
-  printf("   --  to get the corresponding attributed character at runtime.\n");
-  printf("   --\n");
-
-#ifdef ACS_ULCORNER
-  acs_def("ACS_Upper_Left_Corner", &ACS_ULCORNER);
-#endif
-#ifdef ACS_LLCORNER
-  acs_def("ACS_Lower_Left_Corner", &ACS_LLCORNER);
-#endif
-#ifdef ACS_URCORNER
-  acs_def("ACS_Upper_Right_Corner", &ACS_URCORNER);
-#endif
-#ifdef ACS_LRCORNER
-  acs_def("ACS_Lower_Right_Corner", &ACS_LRCORNER);
-#endif
-#ifdef ACS_LTEE
-  acs_def("ACS_Left_Tee", &ACS_LTEE);
-#endif
-#ifdef ACS_RTEE
-  acs_def("ACS_Right_Tee", &ACS_RTEE);
-#endif
-#ifdef ACS_BTEE
-  acs_def("ACS_Bottom_Tee", &ACS_BTEE);
-#endif
-#ifdef ACS_TTEE
-  acs_def("ACS_Top_Tee", &ACS_TTEE);
-#endif
-#ifdef ACS_HLINE
-  acs_def("ACS_Horizontal_Line", &ACS_HLINE);
-#endif
-#ifdef ACS_VLINE
-  acs_def("ACS_Vertical_Line", &ACS_VLINE);
-#endif
-#ifdef ACS_PLUS
-  acs_def("ACS_Plus_Symbol", &ACS_PLUS);
-#endif
-#ifdef ACS_S1
-  acs_def("ACS_Scan_Line_1", &ACS_S1);
-#endif
-#ifdef ACS_S9
-  acs_def("ACS_Scan_Line_9", &ACS_S9);
-#endif
-#ifdef ACS_DIAMOND
-  acs_def("ACS_Diamond", &ACS_DIAMOND);
-#endif
-#ifdef ACS_CKBOARD
-  acs_def("ACS_Checker_Board", &ACS_CKBOARD);
-#endif
-#ifdef ACS_DEGREE
-  acs_def("ACS_Degree", &ACS_DEGREE);
-#endif
-#ifdef ACS_PLMINUS
-  acs_def("ACS_Plus_Minus", &ACS_PLMINUS);
-#endif
-#ifdef ACS_BULLET
-  acs_def("ACS_Bullet", &ACS_BULLET);
-#endif
-#ifdef ACS_LARROW
-  acs_def("ACS_Left_Arrow", &ACS_LARROW);
-#endif
-#ifdef ACS_RARROW
-  acs_def("ACS_Right_Arrow", &ACS_RARROW);
-#endif
-#ifdef ACS_DARROW
-  acs_def("ACS_Down_Arrow", &ACS_DARROW);
-#endif
-#ifdef ACS_UARROW
-  acs_def("ACS_Up_Arrow", &ACS_UARROW);
-#endif
-#ifdef ACS_BOARD
-  acs_def("ACS_Board_Of_Squares", &ACS_BOARD);
-#endif
-#ifdef ACS_LANTERN
-  acs_def("ACS_Lantern", &ACS_LANTERN);
-#endif
-#ifdef ACS_BLOCK
-  acs_def("ACS_Solid_Block", &ACS_BLOCK);
-#endif
-#ifdef ACS_S3
-  acs_def("ACS_Scan_Line_3", &ACS_S3);
-#endif
-#ifdef ACS_S7
-  acs_def("ACS_Scan_Line_7", &ACS_S7);
-#endif
-#ifdef ACS_LEQUAL
-  acs_def("ACS_Less_Or_Equal", &ACS_LEQUAL);
-#endif
-#ifdef ACS_GEQUAL
-  acs_def("ACS_Greater_Or_Equal", &ACS_GEQUAL);
-#endif
-#ifdef ACS_PI
-  acs_def("ACS_PI", &ACS_PI);
-#endif
-#ifdef ACS_NEQUAL
-  acs_def("ACS_Not_Equal", &ACS_NEQUAL);
-#endif
-#ifdef ACS_STERLING
-  acs_def("ACS_Sterling", &ACS_STERLING);
-#endif
-}
-
-#define GEN_EVENT(name,value) \
-   printf("   %-25s : constant Event_Mask := 8#%011lo#;\n", \
-          #name, value)
-
-#define GEN_MEVENT(name) \
-   printf("   %-25s : constant Event_Mask := 8#%011lo#;\n", \
-          #name, name)
-
-static void
-gen_mouse_events(void)
-{
-  mmask_t all1 = 0;
-  mmask_t all2 = 0;
-  mmask_t all3 = 0;
-  mmask_t all4 = 0;
-
-#ifdef BUTTON1_RELEASED
-  GEN_MEVENT(BUTTON1_RELEASED);
-  all1 |= BUTTON1_RELEASED;
-#endif
-#ifdef BUTTON1_PRESSED
-  GEN_MEVENT(BUTTON1_PRESSED);
-  all1 |= BUTTON1_PRESSED;
-#endif
-#ifdef BUTTON1_CLICKED
-  GEN_MEVENT(BUTTON1_CLICKED);
-  all1 |= BUTTON1_CLICKED;
-#endif
-#ifdef BUTTON1_DOUBLE_CLICKED
-  GEN_MEVENT(BUTTON1_DOUBLE_CLICKED);
-  all1 |= BUTTON1_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON1_TRIPLE_CLICKED
-  GEN_MEVENT(BUTTON1_TRIPLE_CLICKED);
-  all1 |= BUTTON1_TRIPLE_CLICKED;
-#endif
+  PRINT_NAMED_CONSTANT(KEY_CODE_YES);
+#endif
+
+  print_comment("Input key codes from getch(3NCURSES)");
+  PRINT_NAMED_CONSTANT(KEY_BREAK);
+  PRINT_NAMED_CONSTANT(KEY_DOWN);
+  PRINT_NAMED_CONSTANT(KEY_UP);
+  PRINT_NAMED_CONSTANT(KEY_LEFT);
+  PRINT_NAMED_CONSTANT(KEY_RIGHT);
+  PRINT_NAMED_CONSTANT(KEY_HOME);
+  PRINT_NAMED_CONSTANT(KEY_BACKSPACE);
+  PRINT_NAMED_CONSTANT(KEY_F0);
+  print_constant("KEY_F1", KEY_F(1));
+  print_constant("KEY_F2", KEY_F(2));
+  print_constant("KEY_F3", KEY_F(3));
+  print_constant("KEY_F4", KEY_F(4));
+  print_constant("KEY_F5", KEY_F(5));
+  print_constant("KEY_F6", KEY_F(6));
+  print_constant("KEY_F7", KEY_F(7));
+  print_constant("KEY_F8", KEY_F(8));
+  print_constant("KEY_F9", KEY_F(9));
+  print_constant("KEY_F10", KEY_F(10));
+  print_constant("KEY_F11", KEY_F(11));
+  print_constant("KEY_F12", KEY_F(12));
+  print_constant("KEY_F13", KEY_F(13));
+  print_constant("KEY_F14", KEY_F(14));
+  print_constant("KEY_F15", KEY_F(15));
+  print_constant("KEY_F16", KEY_F(16));
+  print_constant("KEY_F17", KEY_F(17));
+  print_constant("KEY_F18", KEY_F(18));
+  print_constant("KEY_F19", KEY_F(19));
+  print_constant("KEY_F20", KEY_F(20));
+  print_constant("KEY_F21", KEY_F(21));
+  print_constant("KEY_F22", KEY_F(22));
+  print_constant("KEY_F23", KEY_F(23));
+  print_constant("KEY_F24", KEY_F(24));
+  PRINT_NAMED_CONSTANT(KEY_DL);
+  PRINT_NAMED_CONSTANT(KEY_IL);
+  PRINT_NAMED_CONSTANT(KEY_DC);
+  PRINT_NAMED_CONSTANT(KEY_IC);
+  PRINT_NAMED_CONSTANT(KEY_EIC);
+  PRINT_NAMED_CONSTANT(KEY_CLEAR);
+  PRINT_NAMED_CONSTANT(KEY_EOS);
+  PRINT_NAMED_CONSTANT(KEY_EOL);
+  PRINT_NAMED_CONSTANT(KEY_SF);
+  PRINT_NAMED_CONSTANT(KEY_SR);
+  PRINT_NAMED_CONSTANT(KEY_NPAGE);
+  PRINT_NAMED_CONSTANT(KEY_PPAGE);
+  PRINT_NAMED_CONSTANT(KEY_STAB);
+  PRINT_NAMED_CONSTANT(KEY_CTAB);
+  PRINT_NAMED_CONSTANT(KEY_CATAB);
+  PRINT_NAMED_CONSTANT(KEY_ENTER);
+  PRINT_NAMED_CONSTANT(KEY_SRESET);
+  PRINT_NAMED_CONSTANT(KEY_RESET);
+  PRINT_NAMED_CONSTANT(KEY_PRINT);
+  PRINT_NAMED_CONSTANT(KEY_LL);
+  PRINT_NAMED_CONSTANT(KEY_A1);
+  PRINT_NAMED_CONSTANT(KEY_A3);
+  PRINT_NAMED_CONSTANT(KEY_B2);
+  PRINT_NAMED_CONSTANT(KEY_C1);
+  PRINT_NAMED_CONSTANT(KEY_C3);
+  PRINT_NAMED_CONSTANT(KEY_BTAB);
+  PRINT_NAMED_CONSTANT(KEY_BEG);
+  PRINT_NAMED_CONSTANT(KEY_CANCEL);
+  PRINT_NAMED_CONSTANT(KEY_CLOSE);
+  PRINT_NAMED_CONSTANT(KEY_COMMAND);
+  PRINT_NAMED_CONSTANT(KEY_COPY);
+  PRINT_NAMED_CONSTANT(KEY_CREATE);
+  PRINT_NAMED_CONSTANT(KEY_END);
+  PRINT_NAMED_CONSTANT(KEY_EXIT);
+  PRINT_NAMED_CONSTANT(KEY_FIND);
+  PRINT_NAMED_CONSTANT(KEY_HELP);
+  PRINT_NAMED_CONSTANT(KEY_MARK);
+  PRINT_NAMED_CONSTANT(KEY_MESSAGE);
+  PRINT_NAMED_CONSTANT(KEY_MOVE);
+  PRINT_NAMED_CONSTANT(KEY_NEXT);
+  PRINT_NAMED_CONSTANT(KEY_OPEN);
+  PRINT_NAMED_CONSTANT(KEY_OPTIONS);
+  PRINT_NAMED_CONSTANT(KEY_PREVIOUS);
+  PRINT_NAMED_CONSTANT(KEY_REDO);
+  PRINT_NAMED_CONSTANT(KEY_REFERENCE);
+  PRINT_NAMED_CONSTANT(KEY_REFRESH);
+  PRINT_NAMED_CONSTANT(KEY_REPLACE);
+  PRINT_NAMED_CONSTANT(KEY_RESTART);
+  PRINT_NAMED_CONSTANT(KEY_RESUME);
+  PRINT_NAMED_CONSTANT(KEY_SAVE);
+  PRINT_NAMED_CONSTANT(KEY_SBEG);
+  PRINT_NAMED_CONSTANT(KEY_SCANCEL);
+  PRINT_NAMED_CONSTANT(KEY_SCOMMAND);
+  PRINT_NAMED_CONSTANT(KEY_SCOPY);
+  PRINT_NAMED_CONSTANT(KEY_SCREATE);
+  PRINT_NAMED_CONSTANT(KEY_SDC);
+  PRINT_NAMED_CONSTANT(KEY_SDL);
+  PRINT_NAMED_CONSTANT(KEY_SELECT);
+  PRINT_NAMED_CONSTANT(KEY_SEND);
+  PRINT_NAMED_CONSTANT(KEY_SEOL);
+  PRINT_NAMED_CONSTANT(KEY_SEXIT);
+  PRINT_NAMED_CONSTANT(KEY_SFIND);
+  PRINT_NAMED_CONSTANT(KEY_SHELP);
+  PRINT_NAMED_CONSTANT(KEY_SHOME);
+  PRINT_NAMED_CONSTANT(KEY_SIC);
+  PRINT_NAMED_CONSTANT(KEY_SLEFT);
+  PRINT_NAMED_CONSTANT(KEY_SMESSAGE);
+  PRINT_NAMED_CONSTANT(KEY_SMOVE);
+  PRINT_NAMED_CONSTANT(KEY_SNEXT);
+  PRINT_NAMED_CONSTANT(KEY_SOPTIONS);
+  PRINT_NAMED_CONSTANT(KEY_SPREVIOUS);
+  PRINT_NAMED_CONSTANT(KEY_SPRINT);
+  PRINT_NAMED_CONSTANT(KEY_SREDO);
+  PRINT_NAMED_CONSTANT(KEY_SREPLACE);
+  PRINT_NAMED_CONSTANT(KEY_SRIGHT);
+  PRINT_NAMED_CONSTANT(KEY_SRSUME);
+  PRINT_NAMED_CONSTANT(KEY_SSAVE);
+  PRINT_NAMED_CONSTANT(KEY_SSUSPEND);
+  PRINT_NAMED_CONSTANT(KEY_SUNDO);
+  PRINT_NAMED_CONSTANT(KEY_SUSPEND);
+  PRINT_NAMED_CONSTANT(KEY_UNDO);
+  PRINT_NAMED_CONSTANT(KEY_MOUSE);
+  PRINT_NAMED_CONSTANT(KEY_RESIZE);
+
+  print_comment("alternate character codes (ACS) from addch(3NCURSES)");
+#define PRINT_ACS(name) print_constant (#name, &name - &acs_map[0])
+  PRINT_ACS(ACS_ULCORNER);
+  PRINT_ACS(ACS_LLCORNER);
+  PRINT_ACS(ACS_URCORNER);
+  PRINT_ACS(ACS_LRCORNER);
+  PRINT_ACS(ACS_LTEE);
+  PRINT_ACS(ACS_RTEE);
+  PRINT_ACS(ACS_BTEE);
+  PRINT_ACS(ACS_TTEE);
+  PRINT_ACS(ACS_HLINE);
+  PRINT_ACS(ACS_VLINE);
+  PRINT_ACS(ACS_PLUS);
+  PRINT_ACS(ACS_S1);
+  PRINT_ACS(ACS_S9);
+  PRINT_ACS(ACS_DIAMOND);
+  PRINT_ACS(ACS_CKBOARD);
+  PRINT_ACS(ACS_DEGREE);
+  PRINT_ACS(ACS_PLMINUS);
+  PRINT_ACS(ACS_BULLET);
+  PRINT_ACS(ACS_LARROW);
+  PRINT_ACS(ACS_RARROW);
+  PRINT_ACS(ACS_DARROW);
+  PRINT_ACS(ACS_UARROW);
+  PRINT_ACS(ACS_BOARD);
+  PRINT_ACS(ACS_LANTERN);
+  PRINT_ACS(ACS_BLOCK);
+  PRINT_ACS(ACS_S3);
+  PRINT_ACS(ACS_S7);
+  PRINT_ACS(ACS_LEQUAL);
+  PRINT_ACS(ACS_GEQUAL);
+  PRINT_ACS(ACS_PI);
+  PRINT_ACS(ACS_NEQUAL);
+  PRINT_ACS(ACS_STERLING);
+
+  print_comment("Menu_Options from opts(3MENU)");
+  PRINT_NAMED_BITMASK(Menu_Options, O_ONEVALUE);
+  PRINT_NAMED_BITMASK(Menu_Options, O_SHOWDESC);
+  PRINT_NAMED_BITMASK(Menu_Options, O_ROWMAJOR);
+  PRINT_NAMED_BITMASK(Menu_Options, O_IGNORECASE);
+  PRINT_NAMED_BITMASK(Menu_Options, O_SHOWMATCH);
+  PRINT_NAMED_BITMASK(Menu_Options, O_NONCYCLIC);
+  print_constant("Menu_Options_Size", 8 * sizeof(Menu_Options));
+
+  print_comment("Item_Options from menu_opts(3MENU)");
+  PRINT_NAMED_BITMASK(Item_Options, O_SELECTABLE);
+  print_constant("Item_Options_Size", 8 * sizeof(Item_Options));
+
+  print_comment("Field_Options from field_opts(3FORM)");
+  PRINT_NAMED_BITMASK(Field_Options, O_VISIBLE);
+  PRINT_NAMED_BITMASK(Field_Options, O_ACTIVE);
+  PRINT_NAMED_BITMASK(Field_Options, O_PUBLIC);
+  PRINT_NAMED_BITMASK(Field_Options, O_EDIT);
+  PRINT_NAMED_BITMASK(Field_Options, O_WRAP);
+  PRINT_NAMED_BITMASK(Field_Options, O_BLANK);
+  PRINT_NAMED_BITMASK(Field_Options, O_AUTOSKIP);
+  PRINT_NAMED_BITMASK(Field_Options, O_NULLOK);
+  PRINT_NAMED_BITMASK(Field_Options, O_PASSOK);
+  PRINT_NAMED_BITMASK(Field_Options, O_STATIC);
+  print_constant("Field_Options_Size", 8 * sizeof(Field_Options));
+
+  print_comment("Field_Options from opts(3FORM)");
+  PRINT_NAMED_BITMASK(Field_Options, O_NL_OVERLOAD);
+  PRINT_NAMED_BITMASK(Field_Options, O_BS_OVERLOAD);
+  /*  Field_Options_Size is defined below */
+
+  print_comment("MEVENT structure from mouse(3NCURSES)");
+  STRUCT_OFFSET(MEVENT, id);
+  STRUCT_OFFSET(MEVENT, x);
+  STRUCT_OFFSET(MEVENT, y);
+  STRUCT_OFFSET(MEVENT, z);
+  STRUCT_OFFSET(MEVENT, bstate);
+  print_constant("MEVENT_Size", 8 * sizeof(MEVENT));
+
+  print_comment("mouse events from mouse(3NCURSES)");
+  {
+    mmask_t all_events;
+
+#define PRINT_MOUSE_EVENT(event)                \
+    print_constant (#event, event);             \
+    all_events |= event
+
+    all_events = 0;
+    PRINT_MOUSE_EVENT(BUTTON1_RELEASED);
+    PRINT_MOUSE_EVENT(BUTTON1_PRESSED);
+    PRINT_MOUSE_EVENT(BUTTON1_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON1_DOUBLE_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON1_TRIPLE_CLICKED);
 #ifdef BUTTON1_RESERVED_EVENT
-  GEN_MEVENT(BUTTON1_RESERVED_EVENT);
-  all1 |= BUTTON1_RESERVED_EVENT;
-#endif
-#ifdef BUTTON2_RELEASED
-  GEN_MEVENT(BUTTON2_RELEASED);
-  all2 |= BUTTON2_RELEASED;
-#endif
-#ifdef BUTTON2_PRESSED
-  GEN_MEVENT(BUTTON2_PRESSED);
-  all2 |= BUTTON2_PRESSED;
-#endif
-#ifdef BUTTON2_CLICKED
-  GEN_MEVENT(BUTTON2_CLICKED);
-  all2 |= BUTTON2_CLICKED;
-#endif
-#ifdef BUTTON2_DOUBLE_CLICKED
-  GEN_MEVENT(BUTTON2_DOUBLE_CLICKED);
-  all2 |= BUTTON2_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON2_TRIPLE_CLICKED
-  GEN_MEVENT(BUTTON2_TRIPLE_CLICKED);
-  all2 |= BUTTON2_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON2_RESERVED_EVENT
-  GEN_MEVENT(BUTTON2_RESERVED_EVENT);
-  all2 |= BUTTON2_RESERVED_EVENT;
-#endif
-#ifdef BUTTON3_RELEASED
-  GEN_MEVENT(BUTTON3_RELEASED);
-  all3 |= BUTTON3_RELEASED;
-#endif
-#ifdef BUTTON3_PRESSED
-  GEN_MEVENT(BUTTON3_PRESSED);
-  all3 |= BUTTON3_PRESSED;
-#endif
-#ifdef BUTTON3_CLICKED
-  GEN_MEVENT(BUTTON3_CLICKED);
-  all3 |= BUTTON3_CLICKED;
-#endif
-#ifdef BUTTON3_DOUBLE_CLICKED
-  GEN_MEVENT(BUTTON3_DOUBLE_CLICKED);
-  all3 |= BUTTON3_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON3_TRIPLE_CLICKED
-  GEN_MEVENT(BUTTON3_TRIPLE_CLICKED);
-  all3 |= BUTTON3_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON3_RESERVED_EVENT
-  GEN_MEVENT(BUTTON3_RESERVED_EVENT);
-  all3 |= BUTTON3_RESERVED_EVENT;
-#endif
-#ifdef BUTTON4_RELEASED
-  GEN_MEVENT(BUTTON4_RELEASED);
-  all4 |= BUTTON4_RELEASED;
-#endif
-#ifdef BUTTON4_PRESSED
-  GEN_MEVENT(BUTTON4_PRESSED);
-  all4 |= BUTTON4_PRESSED;
-#endif
-#ifdef BUTTON4_CLICKED
-  GEN_MEVENT(BUTTON4_CLICKED);
-  all4 |= BUTTON4_CLICKED;
-#endif
-#ifdef BUTTON4_DOUBLE_CLICKED
-  GEN_MEVENT(BUTTON4_DOUBLE_CLICKED);
-  all4 |= BUTTON4_DOUBLE_CLICKED;
-#endif
-#ifdef BUTTON4_TRIPLE_CLICKED
-  GEN_MEVENT(BUTTON4_TRIPLE_CLICKED);
-  all4 |= BUTTON4_TRIPLE_CLICKED;
-#endif
-#ifdef BUTTON4_RESERVED_EVENT
-  GEN_MEVENT(BUTTON4_RESERVED_EVENT);
-  all4 |= BUTTON4_RESERVED_EVENT;
-#endif
-#ifdef BUTTON_CTRL
-  GEN_MEVENT(BUTTON_CTRL);
-#endif
-#ifdef BUTTON_SHIFT
-  GEN_MEVENT(BUTTON_SHIFT);
-#endif
-#ifdef BUTTON_ALT
-  GEN_MEVENT(BUTTON_ALT);
+    PRINT_MOUSE_EVENT(BUTTON1_RESERVED_EVENT);
 #endif
-#ifdef REPORT_MOUSE_POSITION
-  GEN_MEVENT(REPORT_MOUSE_POSITION);
-#endif
-#ifdef ALL_MOUSE_EVENTS
-  GEN_MEVENT(ALL_MOUSE_EVENTS);
-#endif
-
-  GEN_EVENT(BUTTON1_EVENTS, all1);
-  GEN_EVENT(BUTTON2_EVENTS, all2);
-  GEN_EVENT(BUTTON3_EVENTS, all3);
-  GEN_EVENT(BUTTON4_EVENTS, all4);
-}
-
-static void
-wrap_one_var(const char *c_var,
-            const char *c_type,
-            const char *ada_func,
-            const char *ada_type)
-{
-#if USE_REENTRANT
-  /* must wrap variables */
-  printf("\n");
-  printf("   function %s return %s\n", ada_func, ada_type);
-  printf("   is\n");
-  printf("      function Result return %s;\n", c_type);
-  printf("      pragma Import (C, Result, \"" NCURSES_WRAP_PREFIX "%s\");\n", c_var);
-  printf("   begin\n");
-  if (strcmp(c_type, ada_type))
-    printf("      return %s (Result);\n", ada_type);
-  else
-    printf("      return Result;\n");
-  printf("   end %s;\n", ada_func);
-#else
-  /* global variables are really global */
-  printf("\n");
-  printf("   function %s return %s\n", ada_func, ada_type);
-  printf("   is\n");
-  printf("      Result : %s;\n", c_type);
-  printf("      pragma Import (C, Result, \"%s\");\n", c_var);
-  printf("   begin\n");
-  if (strcmp(c_type, ada_type))
-    printf("      return %s (Result);\n", ada_type);
-  else
-    printf("      return Result;\n");
-  printf("   end %s;\n", ada_func);
-#endif
-}
-
-#define GEN_PUBLIC_VAR(c_var, c_type, ada_func, ada_type) \
-       wrap_one_var(#c_var, #c_type, #ada_func, #ada_type)
-
-static void
-gen_public_vars(void)
-{
-  GEN_PUBLIC_VAR(stdscr, Window, Standard_Window, Window);
-  GEN_PUBLIC_VAR(curscr, Window, Current_Window, Window);
-  GEN_PUBLIC_VAR(LINES, C_Int, Lines, Line_Count);
-  GEN_PUBLIC_VAR(COLS, C_Int, Columns, Column_Count);
-  GEN_PUBLIC_VAR(TABSIZE, C_Int, Tab_Size, Natural);
-  GEN_PUBLIC_VAR(COLORS, C_Int, Number_Of_Colors, Natural);
-  GEN_PUBLIC_VAR(COLOR_PAIRS, C_Int, Number_Of_Color_Pairs, Natural);
-}
-
-/*
- * Output some comment lines indicating that the file is generated.
- * The name parameter is the name of the facility to be used in
- * the comment.
- */
-static void
-prologue(const char *name)
-{
-  printf("--  %s binding.\n", name);
-  printf("--  This module is generated. Please don't change it manually!\n");
-  printf("--  Run the generator instead.\n--  |");
-
-  printf("define(`M4_BIT_ORDER',`%s_Order_First')",
-        little_endian ? "Low" : "High");
-}
+    print_constant("all_events_button_1", (long)all_events);
 
-/*
- * Write the prologue for the curses facility and make sure that
- * KEY_MIN and KEY_MAX are defined for the rest of this source.
- */
-static void
-basedefs(void)
-{
-  prologue("curses");
-#ifndef KEY_MAX
-#  define KEY_MAX 0777
-#endif
-  printf("define(`M4_KEY_MAX',`8#%o#')", KEY_MAX);
-#ifndef KEY_MIN
-#  define KEY_MIN 0401
+    all_events = 0;
+    PRINT_MOUSE_EVENT(BUTTON2_RELEASED);
+    PRINT_MOUSE_EVENT(BUTTON2_PRESSED);
+    PRINT_MOUSE_EVENT(BUTTON2_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON2_DOUBLE_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON2_TRIPLE_CLICKED);
+#ifdef BUTTON2_RESERVED_EVENT
+    PRINT_MOUSE_EVENT(BUTTON2_RESERVED_EVENT);
 #endif
-  if (KEY_MIN == 256)
-    {
-      fprintf(stderr, "Unexpected value for KEY_MIN: %d\n", KEY_MIN);
-      exit(1);
-    }
-  printf("define(`M4_SPECIAL_FIRST',`8#%o#')", KEY_MIN - 1);
-}
-
-/*
- * Write out the comment lines for the menu facility
- */
-static void
-menu_basedefs(void)
-{
-  prologue("menu");
-}
-
-/*
- * Write out the comment lines for the form facility
- */
-static void
-form_basedefs(void)
-{
-  prologue("form");
-}
-
-/*
- * Write out the comment lines for the mouse facility
- */
-static void
-mouse_basedefs(void)
-{
-  prologue("mouse");
-}
+    print_constant("all_events_button_2", (long)all_events);
 
-/*
- * Write the definition of a single color
- */
-static void
-color_def(const char *name, int value)
-{
-  printf("   %-16s : constant Color_Number := %d;\n", name, value);
-}
-
-/*
- * Generate all color definitions
- */
-static void
-gen_color(void)
-{
-#if HAVE_USE_DEFAULT_COLORS
-  color_def("Default_Color", -1);
-#endif
-#ifdef COLOR_BLACK
-  color_def("Black", COLOR_BLACK);
-#endif
-#ifdef COLOR_RED
-  color_def("Red", COLOR_RED);
-#endif
-#ifdef COLOR_GREEN
-  color_def("Green", COLOR_GREEN);
-#endif
-#ifdef COLOR_YELLOW
-  color_def("Yellow", COLOR_YELLOW);
-#endif
-#ifdef COLOR_BLUE
-  color_def("Blue", COLOR_BLUE);
-#endif
-#ifdef COLOR_MAGENTA
-  color_def("Magenta", COLOR_MAGENTA);
-#endif
-#ifdef COLOR_CYAN
-  color_def("Cyan", COLOR_CYAN);
-#endif
-#ifdef COLOR_WHITE
-  color_def("White", COLOR_WHITE);
+    all_events = 0;
+    PRINT_MOUSE_EVENT(BUTTON3_RELEASED);
+    PRINT_MOUSE_EVENT(BUTTON3_PRESSED);
+    PRINT_MOUSE_EVENT(BUTTON3_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON3_DOUBLE_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON3_TRIPLE_CLICKED);
+#ifdef BUTTON3_RESERVED_EVENT
+    PRINT_MOUSE_EVENT(BUTTON3_RESERVED_EVENT);
 #endif
-}
-
-/*
- * Generate the linker options for the base facility
- */
-static void
-gen_linkopts(void)
-{
-  printf("   pragma Linker_Options (\"-lncurses%s\");\n", model);
-}
+    print_constant("all_events_button_3", (long)all_events);
 
-/*
- * Generate the linker options for the menu facility
- */
-static void
-gen_menu_linkopts(void)
-{
-  printf("   pragma Linker_Options (\"-lmenu%s\");\n", model);
-}
-
-/*
- * Generate the linker options for the form facility
- */
-static void
-gen_form_linkopts(void)
-{
-  printf("   pragma Linker_Options (\"-lform%s\");\n", model);
-}
-
-/*
- * Generate the linker options for the panel facility
- */
-static void
-gen_panel_linkopts(void)
-{
-  printf("   pragma Linker_Options (\"-lpanel%s\");\n", model);
-}
-
-static void
-gen_version_info(void)
-{
-  static const char *v1 =
-  "   NC_Major_Version : constant := %d; --  Major version of the library\n";
-  static const char *v2 =
-  "   NC_Minor_Version : constant := %d; --  Minor version of the library\n";
-  static const char *v3 =
-  "   NC_Version : constant String := %c%d.%d%c;  --  Version of library\n";
-
-  printf(v1, NCURSES_VERSION_MAJOR);
-  printf(v2, NCURSES_VERSION_MINOR);
-  printf(v3, '"', NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR, '"');
-}
-
-static int
-eti_gen(char *buf, int code, const char *name, int *etimin, int *etimax)
-{
-  sprintf(buf, "   E_%-16s : constant Eti_Error := %d;\n", name, code);
-  if (code < *etimin)
-    *etimin = code;
-  if (code > *etimax)
-    *etimax = code;
-  return (int)strlen(buf);
-}
-
-static void
-gen_offsets(void)
-{
-  const char *s_bool = "";
-
-  if (sizeof(bool) == sizeof(char))
-    {
-      s_bool = "char";
-    }
-  else if (sizeof(bool) == sizeof(short))
-    {
-      s_bool = "short";
-    }
-  else if (sizeof(bool) == sizeof(int))
-    {
-      s_bool = "int";
-    }
-  printf("   Sizeof%-*s : constant Natural := %2ld; --  %s\n",
-        12, "_bool", (long)sizeof(bool), "bool");
-
-  printf("   type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n", s_bool);
-}
-
-/*
- * main() expects two arguments on the commandline, both single characters.
- * The first character denotes the facility for which we generate output.
- * Possible values are
- *   B - Base
- *   M - Menus
- *   F - Forms
- *   P - Pointer Device (Mouse)
- *   E - ETI base definitions
- *
- * The second character then denotes the specific output that should be
- * generated for the selected facility.
- */
-int
-main(int argc, char *argv[])
-{
-  int x = 0x12345678;
-  char *s = (char *)&x;
-
-  if (*s == 0x78)
-    little_endian = 1;
-
-  if (argc != 4)
-    exit(1);
-  model = *++argv;
-
-  switch (argv[1][0])
-    {
-      /* --------------------------------------------------------------- */
-    case 'B':                  /* The Base facility */
-      switch (argv[2][0])
-       {
-       case 'A':               /* chtype translation into Ada95 record type */
-         gen_attr_set("Character_Attribute_Set");
-         break;
-       case 'B':               /* write some initial comment lines */
-         basedefs();
-         break;
-       case 'C':               /* generate color constants */
-         gen_color();
-         break;
-       case 'D':               /* generate displacements of fields in WINDOW struct. */
-         gen_offsets();
-         break;
-       case 'E':               /* generate Mouse Event codes */
-         gen_mouse_events();
-         break;
-       case 'K':               /* translation of keycodes */
-         gen_keydefs(0);
-         break;
-       case 'L':               /* generate the Linker_Options pragma */
-         gen_linkopts();
-         break;
-       case 'M':               /* generate constants for the ACS characters */
-         gen_acs();
-         break;
-       case 'O':               /* generate definitions of the old key code names */
-         gen_keydefs(1);
-         break;
-       case 'P':               /* generate definitions of the public variables */
-         gen_public_vars();
-         break;
-       case 'R':               /* generate representation clause for Attributed character */
-         gen_chtype_rep("Attributed_Character");
-         break;
-       case 'T':               /* generate the Trace info */
-         gen_trace("Trace_Attribute_Set");
-         break;
-       case 'V':               /* generate version info */
-         gen_version_info();
-         break;
-       default:
-         break;
-       }
-      break;
-      /* --------------------------------------------------------------- */
-    case 'M':                  /* The Menu facility */
-      switch (argv[2][0])
-       {
-       case 'R':               /* generate representation clause for Menu_Option_Set */
-         gen_menu_opt_rep("Menu_Option_Set");
-         break;
-       case 'B':               /* write some initial comment lines */
-         menu_basedefs();
-         break;
-       case 'L':               /* generate the Linker_Options pragma */
-         gen_menu_linkopts();
-         break;
-       case 'I':               /* generate representation clause for Item_Option_Set */
-         gen_item_opt_rep("Item_Option_Set");
-         break;
-       default:
-         break;
-       }
-      break;
-      /* --------------------------------------------------------------- */
-    case 'F':                  /* The Form facility */
-      switch (argv[2][0])
-       {
-       case 'R':               /* generate representation clause for Form_Option_Set */
-         gen_form_opt_rep("Form_Option_Set");
-         break;
-       case 'B':               /* write some initial comment lines */
-         form_basedefs();
-         break;
-       case 'L':               /* generate the Linker_Options pragma */
-         gen_form_linkopts();
-         break;
-       case 'I':               /* generate representation clause for Field_Option_Set */
-         gen_field_opt_rep("Field_Option_Set");
-         break;
-       default:
-         break;
-       }
-      break;
-      /* --------------------------------------------------------------- */
-    case 'P':                  /* The Pointer(=Mouse) facility */
-      switch (argv[2][0])
-       {
-       case 'B':               /* write some initial comment lines */
-         mouse_basedefs();
-         break;
-       case 'M':               /* generate representation clause for Mouse_Event */
-         gen_mrep_rep("Mouse_Event");
-         break;
-       case 'L':               /* generate the Linker_Options pragma */
-         gen_panel_linkopts();
-         break;
-       default:
-         break;
-       }
-      break;
-      /* --------------------------------------------------------------- */
-    case 'E':                  /* chtype size detection */
-      switch (argv[2][0])
-       {
-       case 'C':
-         {
-           const char *fmt = "   type    C_Chtype   is new %s;\n";
-           const char *afmt = "   type    C_AttrType is new %s;\n";
-
-           if (sizeof(chtype) == sizeof(int))
-             {
-               if (sizeof(int) == sizeof(long))
-                   printf(fmt, "C_ULong");
-
-               else
-                 printf(fmt, "C_UInt");
-             }
-           else if (sizeof(chtype) == sizeof(long))
-             {
-               printf(fmt, "C_ULong");
-             }
-           else
-             printf("Error\n");
-
-           if (sizeof(attr_t) == sizeof(int))
-             {
-               if (sizeof(int) == sizeof(long))
-                   printf(afmt, "C_ULong");
-
-               else
-                 printf(afmt, "C_UInt");
-             }
-           else if (sizeof(attr_t) == sizeof(long))
-             {
-               printf(afmt, "C_ULong");
-             }
-           else
-             printf("Error\n");
-
-           printf("define(`CF_CURSES_OK',`%d')", OK);
-           printf("define(`CF_CURSES_ERR',`%d')", ERR);
-           printf("define(`CF_CURSES_TRUE',`%d')", TRUE);
-           printf("define(`CF_CURSES_FALSE',`%d')", FALSE);
-         }
-         break;
-       case 'E':
-         {
-           char *buf = (char *)malloc(2048);
-           char *p = buf;
-           int etimin = E_OK;
-           int etimax = E_OK;
-
-           if (p)
-             {
-               p += eti_gen(p, E_OK, "Ok", &etimin, &etimax);
-               p += eti_gen(p, E_SYSTEM_ERROR, "System_Error", &etimin, &etimax);
-               p += eti_gen(p, E_BAD_ARGUMENT, "Bad_Argument", &etimin, &etimax);
-               p += eti_gen(p, E_POSTED, "Posted", &etimin, &etimax);
-               p += eti_gen(p, E_CONNECTED, "Connected", &etimin, &etimax);
-               p += eti_gen(p, E_BAD_STATE, "Bad_State", &etimin, &etimax);
-               p += eti_gen(p, E_NO_ROOM, "No_Room", &etimin, &etimax);
-               p += eti_gen(p, E_NOT_POSTED, "Not_Posted", &etimin, &etimax);
-               p += eti_gen(p, E_UNKNOWN_COMMAND,
-                            "Unknown_Command", &etimin, &etimax);
-               p += eti_gen(p, E_NO_MATCH, "No_Match", &etimin, &etimax);
-               p += eti_gen(p, E_NOT_SELECTABLE,
-                            "Not_Selectable", &etimin, &etimax);
-               p += eti_gen(p, E_NOT_CONNECTED,
-                            "Not_Connected", &etimin, &etimax);
-               p += eti_gen(p, E_REQUEST_DENIED,
-                            "Request_Denied", &etimin, &etimax);
-               p += eti_gen(p, E_INVALID_FIELD,
-                            "Invalid_Field", &etimin, &etimax);
-               p += eti_gen(p, E_CURRENT,
-                            "Current", &etimin, &etimax);
-             }
-           printf("   subtype Eti_Error is C_Int range %d .. %d;\n\n",
-                  etimin, etimax);
-           printf("%s", buf);
-         }
-         break;
-       default:
-         break;
-       }
-      break;
-      /* --------------------------------------------------------------- */
-    case 'V':                  /* plain version dump */
-      {
-       switch (argv[2][0])
-         {
-         case '1':             /* major version */
-#ifdef NCURSES_VERSION_MAJOR
-           printf("%d", NCURSES_VERSION_MAJOR);
-#endif
-           break;
-         case '2':             /* minor version */
-#ifdef NCURSES_VERSION_MINOR
-           printf("%d", NCURSES_VERSION_MINOR);
-#endif
-           break;
-         case '3':             /* patch level */
-#ifdef NCURSES_VERSION_PATCH
-           printf("%d", NCURSES_VERSION_PATCH);
+    all_events = 0;
+    PRINT_MOUSE_EVENT(BUTTON4_RELEASED);
+    PRINT_MOUSE_EVENT(BUTTON4_PRESSED);
+    PRINT_MOUSE_EVENT(BUTTON4_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON4_DOUBLE_CLICKED);
+    PRINT_MOUSE_EVENT(BUTTON4_TRIPLE_CLICKED);
+#ifdef BUTTON4_RESERVED_EVENT
+    PRINT_MOUSE_EVENT(BUTTON4_RESERVED_EVENT);
 #endif
-           break;
-         default:
-           break;
-         }
-      }
-      break;
-      /* --------------------------------------------------------------- */
-    default:
-      break;
-    }
-  return 0;
+    print_constant("all_events_button_4", (long)all_events);
+  }
+  PRINT_NAMED_CONSTANT(BUTTON_CTRL);
+  PRINT_NAMED_CONSTANT(BUTTON_SHIFT);
+  PRINT_NAMED_CONSTANT(BUTTON_ALT);
+  PRINT_NAMED_CONSTANT(REPORT_MOUSE_POSITION);
+  PRINT_NAMED_CONSTANT(ALL_MOUSE_EVENTS);
+
+  print_comment("trace selection from trace(3NCURSES)");
+  PRINT_NAMED_BITMASK(UINT, TRACE_TIMES);
+  PRINT_NAMED_BITMASK(UINT, TRACE_TPUTS);
+  PRINT_NAMED_BITMASK(UINT, TRACE_UPDATE);
+  PRINT_NAMED_BITMASK(UINT, TRACE_MOVE);
+  PRINT_NAMED_BITMASK(UINT, TRACE_CHARPUT);
+  PRINT_NAMED_BITMASK(UINT, TRACE_CALLS);
+  PRINT_NAMED_BITMASK(UINT, TRACE_VIRTPUT);
+  PRINT_NAMED_BITMASK(UINT, TRACE_IEVENT);
+  PRINT_NAMED_BITMASK(UINT, TRACE_BITS);
+  PRINT_NAMED_BITMASK(UINT, TRACE_ICALLS);
+  PRINT_NAMED_BITMASK(UINT, TRACE_CCALLS);
+  PRINT_NAMED_BITMASK(UINT, TRACE_DATABASE);
+  PRINT_NAMED_BITMASK(UINT, TRACE_ATTRS);
+  print_constant("Trace_Size", 8 * sizeof(UINT));
+
+  printf("end Terminal_Interface.Curses_Constants;\n");
+  exit(EXIT_SUCCESS);
 }
index 111ec698a493c6911ceb4c52f5795e2073f088b5..b90b8dd61d504d4eb37f7c33a6427a1f4a21fdae 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -38,14 +38,12 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.18 $
+--  $Revision: 1.23 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
-include(`Base_Defs')
 with System;
 with Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Unchecked_Conversion;
 
 package Terminal_Interface.Curses.Aux is
    pragma Preelaborate (Terminal_Interface.Curses.Aux);
@@ -60,39 +58,39 @@ package Terminal_Interface.Curses.Aux is
    subtype C_ULong    is Interfaces.C.unsigned_long;
    subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr;
    type    C_Void_Ptr is new System.Address;
-include(`Chtype_Def')
+
    --  This is how those constants are defined in ncurses. I see them also
    --  exactly like this in all ETI implementations I ever tested. So it
    --  could be that this is quite general, but please check with your curses.
    --  This is critical, because curses sometime mixes Boolean returns with
    --  returning an error status.
-   Curses_Ok    : constant C_Int := CF_CURSES_OK;
-   Curses_Err   : constant C_Int := CF_CURSES_ERR;
+   Curses_Ok    : constant C_Int := Curses_Constants.OK;
+   Curses_Err   : constant C_Int := Curses_Constants.ERR;
 
-   Curses_True  : constant C_Int := CF_CURSES_TRUE;
-   Curses_False : constant C_Int := CF_CURSES_FALSE;
+   Curses_True  : constant C_Int := Curses_Constants.TRUE;
+   Curses_False : constant C_Int := Curses_Constants.FALSE;
 
    --  Eti_Error: type for error codes returned by the menu and form subsystem
-include(`Eti_Defs')
-   procedure Eti_Exception (Code : Eti_Error);
-   --  Dispatch the error code and raise the appropriate exception
-   --
-   --
-   --  Some helpers
-   function Chtype_To_AttrChar is new
-     Unchecked_Conversion (Source => C_Chtype,
-                           Target => Attributed_Character);
-   function AttrChar_To_Chtype is new
-     Unchecked_Conversion (Source => Attributed_Character,
-                           Target => C_Chtype);
+   type Eti_Error is
+     (E_Current,
+      E_Invalid_Field,
+      E_Request_Denied,
+      E_Not_Connected,
+      E_Not_Selectable,
+      E_No_Match,
+      E_Unknown_Command,
+      E_Not_Posted,
+      E_No_Room,
+      E_Bad_State,
+      E_Connected,
+      E_Posted,
+      E_Bad_Argument,
+      E_System_Error,
+      E_Ok);
 
-   function AttrChar_To_AttrType is new
-     Unchecked_Conversion (Source => Attributed_Character,
-                           Target => C_AttrType);
-
-   function AttrType_To_AttrChar is new
-     Unchecked_Conversion (Source => C_AttrType,
-                           Target => Attributed_Character);
+   procedure Eti_Exception (Code : Eti_Error);
+   --  Do nothing if Code = E_Ok.
+   --  Else dispatch the error code and raise the appropriate exception.
 
    procedure Fill_String (Cp  : chars_ptr;
                           Str : out String);
@@ -102,4 +100,23 @@ include(`Eti_Defs')
    function Fill_String (Cp : chars_ptr) return String;
    --  Same but as function.
 
+private
+   for Eti_Error'Size use C_Int'Size;
+   pragma Convention (C, Eti_Error);
+   for Eti_Error use
+     (E_Current         => Curses_Constants.E_CURRENT,
+      E_Invalid_Field   => Curses_Constants.E_INVALID_FIELD,
+      E_Request_Denied  => Curses_Constants.E_REQUEST_DENIED,
+      E_Not_Connected   => Curses_Constants.E_NOT_CONNECTED,
+      E_Not_Selectable  => Curses_Constants.E_NOT_SELECTABLE,
+      E_No_Match        => Curses_Constants.E_NO_MATCH,
+      E_Unknown_Command => Curses_Constants.E_UNKNOWN_COMMAND,
+      E_Not_Posted      => Curses_Constants.E_NOT_POSTED,
+      E_No_Room         => Curses_Constants.E_NO_ROOM,
+      E_Bad_State       => Curses_Constants.E_BAD_STATE,
+      E_Connected       => Curses_Constants.E_CONNECTED,
+      E_Posted          => Curses_Constants.E_POSTED,
+      E_Bad_Argument    => Curses_Constants.E_BAD_ARGUMENT,
+      E_System_Error    => Curses_Constants.E_SYSTEM_ERROR,
+      E_Ok              => Curses_Constants.E_OK);
 end Terminal_Interface.Curses.Aux;
index f9784007f46147f8ec7508290c0f6e8c60922250..51682cd7ec8c912e3ad7910ddc53aba636c39087 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -38,10 +38,11 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.17 $
+--  $Revision: 1.19 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
+with Terminal_Interface.Curses.Aux;
 
 package Terminal_Interface.Curses.Forms.Field_Types is
    pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
@@ -227,12 +228,12 @@ private
                                Mak : Makearg_Function := Make_Arg'Access;
                                Cop : Copyarg_Function := Copy_Arg'Access;
                                Fre : Freearg_Function := Free_Arg'Access)
-     return C_Int;
+     return Aux.Eti_Error;
    pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
 
    function Set_Fieldtype_Choice (Cft : C_Field_Type;
                                   Next, Prev : Choice_Function)
-     return C_Int;
+     return Aux.Eti_Error;
    pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
 
 end Terminal_Interface.Curses.Forms.Field_Types;
index a4329ba9f0cfe1f20e72fb42d79de0c1d6bf9551..b269f4c447d73609eb1c63db3b9784407a97faf5 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -38,18 +38,17 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.30 $
---  $Date: 2009/12/26 17:31:35 $
+--  $Revision: 1.33 $
+--  $Date: 2014/05/24 21:31:57 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
-include(`Form_Base_Defs')
 with System;
 with Ada.Characters.Latin_1;
 
 package Terminal_Interface.Curses.Forms is
    pragma Preelaborate (Terminal_Interface.Curses.Forms);
-include(`Form_Linker_Options')dnl
-include(`Linker_Options')
+   pragma Linker_Options ("-lform" & Curses_Constants.DFT_ARG_SUFFIX);
+
    Space : Character renames Ada.Characters.Latin_1.Space;
 
    type Field        is private;
@@ -63,18 +62,68 @@ include(`Linker_Options')
                                 Center,
                                 Right);
 
+   type Field_Option_Set is
+      record
+         Visible   : Boolean;
+         Active    : Boolean;
+         Public    : Boolean;
+         Edit      : Boolean;
+         Wrap      : Boolean;
+         Blank     : Boolean;
+         Auto_Skip : Boolean;
+         Null_Ok   : Boolean;
+         Pass_Ok   : Boolean;
+         Static    : Boolean;
+      end record;
+   pragma Convention (C_Pass_By_Copy, Field_Option_Set);
+
+   for Field_Option_Set use
+      record
+         Visible   at 0 range Curses_Constants.O_VISIBLE_First
+           .. Curses_Constants.O_VISIBLE_Last;
+         Active    at 0 range Curses_Constants.O_ACTIVE_First
+           .. Curses_Constants.O_ACTIVE_Last;
+         Public    at 0 range Curses_Constants.O_PUBLIC_First
+           .. Curses_Constants.O_PUBLIC_Last;
+         Edit      at 0 range Curses_Constants.O_EDIT_First
+           .. Curses_Constants.O_EDIT_Last;
+         Wrap      at 0 range Curses_Constants.O_WRAP_First
+           .. Curses_Constants.O_WRAP_Last;
+         Blank     at 0 range Curses_Constants.O_BLANK_First
+           .. Curses_Constants.O_BLANK_Last;
+         Auto_Skip at 0 range Curses_Constants.O_AUTOSKIP_First
+           .. Curses_Constants.O_AUTOSKIP_Last;
+         Null_Ok   at 0 range Curses_Constants.O_NULLOK_First
+           .. Curses_Constants.O_NULLOK_Last;
+         Pass_Ok   at 0 range Curses_Constants.O_PASSOK_First
+           .. Curses_Constants.O_PASSOK_Last;
+         Static    at 0 range Curses_Constants.O_STATIC_First
+           .. Curses_Constants.O_STATIC_Last;
+      end record;
    pragma Warnings (Off);
-include(`Field_Rep')Dnl
-
+   for Field_Option_Set'Size use Curses_Constants.Field_Options_Size;
    pragma Warnings (On);
 
    function Default_Field_Options return Field_Option_Set;
    --  The initial defaults for the field options.
    pragma Inline (Default_Field_Options);
 
+   type Form_Option_Set is
+      record
+         NL_Overload : Boolean;
+         BS_Overload : Boolean;
+      end record;
+   pragma Convention (C_Pass_By_Copy, Form_Option_Set);
+
+   for Form_Option_Set use
+      record
+         NL_Overload at 0 range Curses_Constants.O_NL_OVERLOAD_First
+           .. Curses_Constants.O_NL_OVERLOAD_Last;
+         BS_Overload at 0 range Curses_Constants.O_BS_OVERLOAD_First
+           .. Curses_Constants.O_BS_OVERLOAD_Last;
+      end record;
    pragma Warnings (Off);
-include(`Form_Opt_Rep')Dnl
-
+   for Form_Option_Set'Size use Curses_Constants.Field_Options_Size;
    pragma Warnings (On);
 
    function Default_Form_Options return Form_Option_Set;
index 6274b6ed8f2db098a4a5ccdcc052305a6b87ed3d..0ad9c456dbda78c1201fe03923487c287527401b 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2007,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -38,18 +38,17 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.28 $
---  $Date: 2009/12/26 18:35:22 $
+--  $Revision: 1.31 $
+--  $Date: 2014/05/24 21:31:57 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
-include(`Menu_Base_Defs')
 with System;
 with Ada.Characters.Latin_1;
 
 package Terminal_Interface.Curses.Menus is
    pragma Preelaborate (Terminal_Interface.Curses.Menus);
-include(`Menu_Linker_Options')dnl
-include(`Linker_Options')
+   pragma Linker_Options ("-lmenu" & Curses_Constants.DFT_ARG_SUFFIX);
+
    Space : Character renames Ada.Characters.Latin_1.Space;
 
    type Item is private;
@@ -116,9 +115,34 @@ include(`Linker_Options')
    --
    --  Menu options
    --
+   type Menu_Option_Set is
+      record
+         One_Valued        : Boolean;
+         Show_Descriptions : Boolean;
+         Row_Major_Order   : Boolean;
+         Ignore_Case       : Boolean;
+         Show_Matches      : Boolean;
+         Non_Cyclic        : Boolean;
+      end record;
+   pragma Convention (C_Pass_By_Copy, Menu_Option_Set);
+
+   for Menu_Option_Set use
+      record
+         One_Valued        at 0 range Curses_Constants.O_ONEVALUE_First
+           .. Curses_Constants.O_ONEVALUE_Last;
+         Show_Descriptions at 0 range Curses_Constants.O_SHOWDESC_First
+           .. Curses_Constants.O_SHOWDESC_Last;
+         Row_Major_Order   at 0 range Curses_Constants.O_ROWMAJOR_First
+           .. Curses_Constants.O_ROWMAJOR_Last;
+         Ignore_Case       at 0 range Curses_Constants.O_IGNORECASE_First
+           .. Curses_Constants.O_IGNORECASE_Last;
+         Show_Matches      at 0 range Curses_Constants.O_SHOWMATCH_First
+           .. Curses_Constants.O_SHOWMATCH_Last;
+         Non_Cyclic        at 0 range Curses_Constants.O_NONCYCLIC_First
+           .. Curses_Constants.O_NONCYCLIC_Last;
+      end record;
    pragma Warnings (Off);
-include(`Menu_Opt_Rep')dnl
-
+   for Menu_Option_Set'Size use Curses_Constants.Menu_Options_Size;
    pragma Warnings (On);
 
    function Default_Menu_Options return Menu_Option_Set;
@@ -127,9 +151,19 @@ include(`Menu_Opt_Rep')dnl
    --
    --  Item options
    --
+   type Item_Option_Set is
+      record
+         Selectable : Boolean;
+      end record;
+   pragma Convention (C_Pass_By_Copy, Item_Option_Set);
+
+   for Item_Option_Set use
+      record
+         Selectable at 0 range Curses_Constants.O_SELECTABLE_First
+           ..  Curses_Constants.O_SELECTABLE_Last;
+      end record;
    pragma Warnings (Off);
-include(`Item_Rep')dnl
-
+   for Item_Option_Set'Size use Curses_Constants.Item_Options_Size;
    pragma Warnings (On);
 
    function Default_Item_Options return Item_Option_Set;
index a4fb661ef84a35681674806f7a4199f5575cfca5..dd58421ca5277c7f774807ac04a7d8abac83a95d 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -38,11 +38,10 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.29 $
---  $Date: 2011/03/19 12:35:58 $
+--  $Revision: 1.31 $
+--  $Date: 2014/05/24 21:31:57 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
-include(`Mouse_Base_Defs')
 with System;
 
 package Terminal_Interface.Curses.Mouse is
@@ -167,12 +166,35 @@ private
       end record;
    pragma Convention (C, Mouse_Event);
 
-include(`Mouse_Event_Rep')
-   Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER;
-   --  This constant may be different on your system.
-
-include(`Mouse_Events')
-   No_Events  : constant Event_Mask := 0;
-   All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
+   for Mouse_Event use
+      record
+         Id     at 0 range Curses_Constants.MEVENT_id_First
+           .. Curses_Constants.MEVENT_id_Last;
+         X      at 0 range Curses_Constants.MEVENT_x_First
+           .. Curses_Constants.MEVENT_x_Last;
+         Y      at 0 range Curses_Constants.MEVENT_y_First
+           .. Curses_Constants.MEVENT_y_Last;
+         Z      at 0 range Curses_Constants.MEVENT_z_First
+           .. Curses_Constants.MEVENT_z_Last;
+         Bstate at 0 range Curses_Constants.MEVENT_bstate_First
+           .. Curses_Constants.MEVENT_bstate_Last;
+      end record;
+   for Mouse_Event'Size use Curses_Constants.MEVENT_Size;
+   Generation_Bit_Order : System.Bit_Order renames Curses_Constants.Bit_Order;
+
+   BUTTON_CTRL      : constant Event_Mask := Curses_Constants.BUTTON_CTRL;
+   BUTTON_SHIFT     : constant Event_Mask := Curses_Constants.BUTTON_SHIFT;
+   BUTTON_ALT       : constant Event_Mask := Curses_Constants.BUTTON_ALT;
+   BUTTON1_EVENTS   : constant Event_Mask
+     := Curses_Constants.all_events_button_1;
+   BUTTON2_EVENTS   : constant Event_Mask
+     := Curses_Constants.all_events_button_2;
+   BUTTON3_EVENTS   : constant Event_Mask
+     := Curses_Constants.all_events_button_3;
+   BUTTON4_EVENTS   : constant Event_Mask
+     := Curses_Constants.all_events_button_4;
+   ALL_MOUSE_EVENTS : constant Event_Mask := Curses_Constants.ALL_MOUSE_EVENTS;
+   No_Events        : constant Event_Mask := 0;
+   All_Events       : constant Event_Mask := ALL_MOUSE_EVENTS;
 
 end Terminal_Interface.Curses.Mouse;
index dc06fa42171cb1de6981cd85481cf28ad234d6ce..b0eda4d427d3ce71bc258f931cb47e8b84b8707c 100644 (file)
@@ -10,7 +10,7 @@ include(M4MACRO)dnl
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -38,16 +38,16 @@ include(M4MACRO)dnl
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.20 $
---  $Date: 2009/12/26 17:38:58 $
+--  $Revision: 1.22 $
+--  $Date: 2014/05/24 21:31:57 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
 
 package Terminal_Interface.Curses.Panels is
    pragma Preelaborate (Terminal_Interface.Curses.Panels);
-include(`Panel_Linker_Options')dnl
-include(`Linker_Options')
+   pragma Linker_Options ("-lpanel" & Curses_Constants.DFT_ARG_SUFFIX);
+
    type Panel is private;
 
    ---------------------------
index 546004fd493898df57e9f9a79a2f79f46f16d514..e22734358a5e906fda2a817685dfe2c1c243cc0d 100644 (file)
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 2000 Free Software Foundation, Inc.                        --
+-- Copyright (c) 2000,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            --
@@ -37,16 +37,62 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
 --  Version Control:
---  $Revision: 1.1 $
+--  $Revision: 1.4 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 
 package Terminal_Interface.Curses.Trace is
    pragma Preelaborate (Terminal_Interface.Curses.Trace);
 
-   pragma Warnings (Off);
-include(`Trace_Defs')
+   type Trace_Attribute_Set is
+      record
+         Times            : Boolean;
+         Tputs            : Boolean;
+         Update           : Boolean;
+         Cursor_Move      : Boolean;
+         Character_Output : Boolean;
+         Calls            : Boolean;
+         Virtual_Puts     : Boolean;
+         Input_Events     : Boolean;
+         TTY_State        : Boolean;
+         Internal_Calls   : Boolean;
+         Character_Calls  : Boolean;
+         Termcap_TermInfo : Boolean;
+         Attribute_Color  : Boolean;
+      end record;
+   pragma Convention (C_Pass_By_Copy, Trace_Attribute_Set);
 
+   for Trace_Attribute_Set use
+      record
+         Times            at 0 range Curses_Constants.TRACE_TIMES_First
+           .. Curses_Constants.TRACE_TIMES_Last;
+         Tputs            at 0 range Curses_Constants.TRACE_TPUTS_First
+           .. Curses_Constants.TRACE_TPUTS_Last;
+         Update           at 0 range Curses_Constants.TRACE_UPDATE_First
+           .. Curses_Constants.TRACE_UPDATE_Last;
+         Cursor_Move      at 0 range Curses_Constants.TRACE_MOVE_First
+           .. Curses_Constants.TRACE_MOVE_Last;
+         Character_Output at 0 range Curses_Constants.TRACE_CHARPUT_First
+           .. Curses_Constants.TRACE_CHARPUT_Last;
+         Calls            at 0 range Curses_Constants.TRACE_CALLS_First
+           .. Curses_Constants.TRACE_CALLS_Last;
+         Virtual_Puts     at 0 range Curses_Constants.TRACE_VIRTPUT_First
+           .. Curses_Constants.TRACE_VIRTPUT_Last;
+         Input_Events     at 0 range Curses_Constants.TRACE_IEVENT_First
+           .. Curses_Constants.TRACE_IEVENT_Last;
+         TTY_State        at 0 range Curses_Constants.TRACE_BITS_First
+           .. Curses_Constants.TRACE_BITS_Last;
+         Internal_Calls   at 0 range Curses_Constants.TRACE_ICALLS_First
+           .. Curses_Constants.TRACE_ICALLS_Last;
+         Character_Calls  at 0 range Curses_Constants.TRACE_CCALLS_First
+           .. Curses_Constants.TRACE_CCALLS_Last;
+         Termcap_TermInfo at 0 range Curses_Constants.TRACE_DATABASE_First
+           .. Curses_Constants.TRACE_DATABASE_Last;
+         Attribute_Color  at 0 range Curses_Constants.TRACE_ATTRS_First
+           .. Curses_Constants.TRACE_ATTRS_Last;
+      end record;
+   pragma Warnings (Off);
+   for Trace_Attribute_Set'Size use Curses_Constants.Trace_Size;
    pragma Warnings (On);
 
    Trace_Disable  : constant Trace_Attribute_Set := (others => False);
index 1f89a5a35233d788e1365d24da0a2e19bb14f300..b98782ba0054b305b8604ca7fb40d16b29f98aed 100644 (file)
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -37,8 +37,8 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author: Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.8 $
---  $Date: 2011/03/22 23:02:14 $
+--  $Revision: 1.14 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System;
@@ -151,10 +151,10 @@ package body Terminal_Interface.Curses is
                   Ch  : Attributed_Character)
    is
       function Waddch (W  : Window;
-                       Ch : C_Chtype) return C_Int;
+                       Ch : Attributed_Character) return C_Int;
       pragma Import (C, Waddch, "waddch");
    begin
-      if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if Waddch (Win, Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add;
@@ -178,12 +178,13 @@ package body Terminal_Interface.Curses is
       function mvwaddch (W  : Window;
                          Y  : C_Int;
                          X  : C_Int;
-                         Ch : C_Chtype) return C_Int;
+                         Ch : Attributed_Character) return C_Int;
       pragma Import (C, mvwaddch, "mvwaddch");
    begin
       if mvwaddch (Win, C_Int (Line),
                    C_Int (Column),
-                   AttrChar_To_Chtype (Ch)) = Curses_Err then
+                   Ch) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Add;
@@ -208,10 +209,10 @@ package body Terminal_Interface.Curses is
       Ch  : Attributed_Character)
    is
       function Wechochar (W  : Window;
-                          Ch : C_Chtype) return C_Int;
+                          Ch : Attributed_Character) return C_Int;
       pragma Import (C, Wechochar, "wechochar");
    begin
-      if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if Wechochar (Win, Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add_With_Immediate_Echo;
@@ -419,7 +420,8 @@ package body Terminal_Interface.Curses is
       Txt (Str'Length) := Default_Character;
       if Waddchnstr (Win,
                      Txt,
-                     C_Int (Len)) = Curses_Err then
+                     C_Int (Len)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Add;
@@ -448,26 +450,25 @@ package body Terminal_Interface.Curses is
       Lower_Right_Corner_Symbol : Attributed_Character := Default_Character)
    is
       function Wborder (W   : Window;
-                        LS  : C_Chtype;
-                        RS  : C_Chtype;
-                        TS  : C_Chtype;
-                        BS  : C_Chtype;
-                        ULC : C_Chtype;
-                        URC : C_Chtype;
-                        LLC : C_Chtype;
-                        LRC : C_Chtype) return C_Int;
+                        LS  : Attributed_Character;
+                        RS  : Attributed_Character;
+                        TS  : Attributed_Character;
+                        BS  : Attributed_Character;
+                        ULC : Attributed_Character;
+                        URC : Attributed_Character;
+                        LLC : Attributed_Character;
+                        LRC : Attributed_Character) return C_Int;
       pragma Import (C, Wborder, "wborder");
    begin
       if Wborder (Win,
-                  AttrChar_To_Chtype (Left_Side_Symbol),
-                  AttrChar_To_Chtype (Right_Side_Symbol),
-                  AttrChar_To_Chtype (Top_Side_Symbol),
-                  AttrChar_To_Chtype (Bottom_Side_Symbol),
-                  AttrChar_To_Chtype (Upper_Left_Corner_Symbol),
-                  AttrChar_To_Chtype (Upper_Right_Corner_Symbol),
-                  AttrChar_To_Chtype (Lower_Left_Corner_Symbol),
-                  AttrChar_To_Chtype (Lower_Right_Corner_Symbol)
-                  ) = Curses_Err
+                  Left_Side_Symbol,
+                  Right_Side_Symbol,
+                  Top_Side_Symbol,
+                  Bottom_Side_Symbol,
+                  Upper_Left_Corner_Symbol,
+                  Upper_Right_Corner_Symbol,
+                  Lower_Left_Corner_Symbol,
+                  Lower_Right_Corner_Symbol) = Curses_Err
       then
          raise Curses_Exception;
       end if;
@@ -490,13 +491,14 @@ package body Terminal_Interface.Curses is
       Line_Symbol : Attributed_Character := Default_Character)
    is
       function Whline (W   : Window;
-                       Ch  : C_Chtype;
+                       Ch  : Attributed_Character;
                        Len : C_Int) return C_Int;
       pragma Import (C, Whline, "whline");
    begin
       if Whline (Win,
-                 AttrChar_To_Chtype (Line_Symbol),
-                 C_Int (Line_Size)) = Curses_Err then
+                 Line_Symbol,
+                 C_Int (Line_Size)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Horizontal_Line;
@@ -507,13 +509,14 @@ package body Terminal_Interface.Curses is
       Line_Symbol : Attributed_Character := Default_Character)
    is
       function Wvline (W   : Window;
-                       Ch  : C_Chtype;
+                       Ch  : Attributed_Character;
                        Len : C_Int) return C_Int;
       pragma Import (C, Wvline, "wvline");
    begin
       if Wvline (Win,
-                 AttrChar_To_Chtype (Line_Symbol),
-                 C_Int (Line_Size)) = Curses_Err then
+                 Line_Symbol,
+                 C_Int (Line_Size)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Vertical_Line;
@@ -611,10 +614,10 @@ package body Terminal_Interface.Curses is
       On   : Boolean := True)
    is
       function Wattron (Win    : Window;
-                        C_Attr : C_AttrType) return C_Int;
+                        C_Attr : Attributed_Character) return C_Int;
       pragma Import (C, Wattron, "wattr_on");
       function Wattroff (Win    : Window;
-                         C_Attr : C_AttrType) return C_Int;
+                         C_Attr : Attributed_Character) return C_Int;
       pragma Import (C, Wattroff, "wattr_off");
       --  In Ada we use the On Boolean to control whether or not we want to
       --  switch on or off the attributes in the set.
@@ -624,9 +627,9 @@ package body Terminal_Interface.Curses is
                                               Attr  => Attr);
    begin
       if On then
-         Err := Wattron  (Win, AttrChar_To_AttrType (AC));
+         Err := Wattron  (Win, AC);
       else
-         Err := Wattroff (Win, AttrChar_To_AttrType (AC));
+         Err := Wattroff (Win, AC);
       end if;
       if Err = Curses_Err then
          raise Curses_Exception;
@@ -639,14 +642,13 @@ package body Terminal_Interface.Curses is
       Color : Color_Pair := Color_Pair'First)
    is
       function Wattrset (Win    : Window;
-                         C_Attr : C_AttrType) return C_Int;
+                         C_Attr : Attributed_Character) return C_Int;
       pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set
    begin
-      if Wattrset (Win,
-                   AttrChar_To_AttrType (Attributed_Character'
-                                         (Ch    => Character'First,
-                                          Color => Color,
-                                          Attr  => Attr))) = Curses_Err then
+      if Wattrset (Win, (Ch => Character'First,
+                         Color => Color,
+                         Attr => Attr)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Set_Character_Attributes;
@@ -655,20 +657,18 @@ package body Terminal_Interface.Curses is
                                      return Character_Attribute_Set
    is
       function Wattrget (Win : Window;
-                         Atr : access C_AttrType;
+                         Atr : access Attributed_Character;
                          Col : access C_Short;
                          Opt : System.Address) return C_Int;
       pragma Import (C, Wattrget, "wattr_get");
 
-      Attr : aliased C_AttrType;
+      Attr : aliased Attributed_Character;
       Col  : aliased C_Short;
       Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
                                          System.Null_Address);
-      Ch   : Attributed_Character;
    begin
       if Res = Curses_Ok then
-         Ch := AttrType_To_AttrChar (Attr);
-         return Ch.Attr;
+         return Attr.Attr;
       else
          raise Curses_Exception;
       end if;
@@ -678,20 +678,18 @@ package body Terminal_Interface.Curses is
                                      return Color_Pair
    is
       function Wattrget (Win : Window;
-                         Atr : access C_AttrType;
+                         Atr : access Attributed_Character;
                          Col : access C_Short;
                          Opt : System.Address) return C_Int;
       pragma Import (C, Wattrget, "wattr_get");
 
-      Attr : aliased C_AttrType;
+      Attr : aliased Attributed_Character;
       Col  : aliased C_Short;
       Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
                                          System.Null_Address);
-      Ch   : Attributed_Character;
    begin
       if Res = Curses_Ok then
-         Ch := AttrType_To_AttrChar (Attr);
-         return Ch.Color;
+         return Attr.Color;
       else
          raise Curses_Exception;
       end if;
@@ -707,7 +705,8 @@ package body Terminal_Interface.Curses is
    begin
       if Wset_Color (Win,
                      C_Short (Pair),
-                     C_Void_Ptr (System.Null_Address)) = Curses_Err then
+                     C_Void_Ptr (System.Null_Address)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Set_Color;
@@ -720,17 +719,19 @@ package body Terminal_Interface.Curses is
    is
       function Wchgat (Win   : Window;
                        Cnt   : C_Int;
-                       Attr  : C_AttrType;
+                       Attr  : Attributed_Character;
                        Color : C_Short;
                        Opts  : System.Address := System.Null_Address)
                        return C_Int;
       pragma Import (C, Wchgat, "wchgat");
-
-      Ch : constant Attributed_Character :=
-        (Ch => Character'First, Color => Color_Pair'First, Attr => Attr);
    begin
-      if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch),
-                 C_Short (Color)) = Curses_Err then
+      if Wchgat (Win,
+                 C_Int (Count),
+                 (Ch => Character'First,
+                  Color => Color_Pair'First,
+                  Attr => Attr),
+                 C_Short (Color)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Change_Attributes;
@@ -938,7 +939,8 @@ package body Terminal_Interface.Curses is
       pragma Import (C, Notimeout, "notimeout");
    begin
       if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off)))
-        = Curses_Err then
+        = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Set_Escape_Timer_Mode;
@@ -1051,7 +1053,8 @@ package body Terminal_Interface.Curses is
       pragma Import (C, Wsetscrreg, "wsetscrreg");
    begin
       if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line))
-        = Curses_Err then
+        = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Set_Scroll_Region;
@@ -1108,7 +1111,8 @@ package body Terminal_Interface.Curses is
    begin
       if Wredrawln (Win,
                     C_Int (Begin_Line),
-                    C_Int (Line_Count)) = Curses_Err then
+                    C_Int (Line_Count)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Redraw;
@@ -1158,20 +1162,21 @@ package body Terminal_Interface.Curses is
      (Win : Window := Standard_Window;
       Ch  : Attributed_Character)
    is
-      procedure WBackground (W : Window; Ch : C_Chtype);
+      procedure WBackground (W : Window; Ch : Attributed_Character);
       pragma Import (C, WBackground, "wbkgdset");
    begin
-      WBackground (Win, AttrChar_To_Chtype (Ch));
+      WBackground (Win, Ch);
    end Set_Background;
 
    procedure Change_Background
      (Win : Window := Standard_Window;
       Ch  : Attributed_Character)
    is
-      function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int;
+      function WChangeBkgd (W : Window; Ch : Attributed_Character)
+         return C_Int;
       pragma Import (C, WChangeBkgd, "wbkgd");
    begin
-      if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if WChangeBkgd (Win, Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Change_Background;
@@ -1179,10 +1184,10 @@ package body Terminal_Interface.Curses is
    function Get_Background (Win : Window := Standard_Window)
      return Attributed_Character
    is
-      function Wgetbkgd (Win : Window) return C_Chtype;
+      function Wgetbkgd (Win : Window) return Attributed_Character;
       pragma Import (C, Wgetbkgd, "getbkgd");
    begin
-      return Chtype_To_AttrChar (Wgetbkgd (Win));
+      return Wgetbkgd (Win);
    end Get_Background;
 ------------------------------------------------------------------------------
    procedure Change_Lines_Status (Win   : Window := Standard_Window;
@@ -1197,7 +1202,8 @@ package body Terminal_Interface.Curses is
       pragma Import (C, Wtouchln, "wtouchln");
    begin
       if Wtouchln (Win, C_Int (Start), C_Int (Count),
-                   C_Int (Boolean'Pos (State))) = Curses_Err then
+                   C_Int (Boolean'Pos (State))) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Change_Lines_Status;
@@ -1208,7 +1214,7 @@ package body Terminal_Interface.Curses is
       X : Column_Position;
    begin
       Get_Size (Win, Y, X);
-      pragma Unreferenced (X);
+      pragma Warnings (Off, X);         --  unreferenced
       Change_Lines_Status (Win, 0, Positive (Y), True);
    end Touch;
 
@@ -1218,7 +1224,7 @@ package body Terminal_Interface.Curses is
       X : Column_Position;
    begin
       Get_Size (Win, Y, X);
-      pragma Unreferenced (X);
+      pragma Warnings (Off, X);         --  unreferenced
       Change_Lines_Status (Win, 0, Positive (Y), False);
    end Untouch;
 
@@ -1288,7 +1294,8 @@ package body Terminal_Interface.Curses is
                   C_Int (Destination_Bottom_Row),
                   C_Int (Destination_Right_Column),
                   Boolean'Pos (Non_Destructive_Mode)
-                ) = Curses_Err then
+                 ) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Copy;
@@ -1491,7 +1498,8 @@ package body Terminal_Interface.Curses is
                    C_Int (Destination_Top_Row),
                    C_Int (Destination_Left_Column),
                    C_Int (Destination_Bottom_Row),
-                   C_Int (Destination_Right_Column)) = Curses_Err then
+                   C_Int (Destination_Right_Column)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Refresh;
@@ -1521,7 +1529,8 @@ package body Terminal_Interface.Curses is
                        C_Int (Destination_Top_Row),
                        C_Int (Destination_Left_Column),
                        C_Int (Destination_Bottom_Row),
-                       C_Int (Destination_Right_Column)) = Curses_Err then
+                       C_Int (Destination_Right_Column)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Refresh_Without_Update;
@@ -1530,11 +1539,11 @@ package body Terminal_Interface.Curses is
      (Pad : Window;
       Ch  : Attributed_Character)
    is
-      function Pechochar (Pad : Window; Ch : C_Chtype)
+      function Pechochar (Pad : Window; Ch : Attributed_Character)
                           return C_Int;
       pragma Import (C, Pechochar, "pechochar");
    begin
-      if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if Pechochar (Pad, Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Add_Character_To_Pad_And_Echo_It;
@@ -1592,10 +1601,10 @@ package body Terminal_Interface.Curses is
    function Peek (Win : Window := Standard_Window)
      return Attributed_Character
    is
-      function Winch (Win : Window) return C_Chtype;
+      function Winch (Win : Window) return Attributed_Character;
       pragma Import (C, Winch, "winch");
    begin
-      return Chtype_To_AttrChar (Winch (Win));
+      return Winch (Win);
    end Peek;
 
    function Peek
@@ -1605,19 +1614,19 @@ package body Terminal_Interface.Curses is
    is
       function Mvwinch (Win : Window;
                         Lin : C_Int;
-                        Col : C_Int) return C_Chtype;
+                        Col : C_Int) return Attributed_Character;
       pragma Import (C, Mvwinch, "mvwinch");
    begin
-      return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column)));
+      return Mvwinch (Win, C_Int (Line), C_Int (Column));
    end Peek;
 ------------------------------------------------------------------------------
    procedure Insert (Win : Window := Standard_Window;
                      Ch  : Attributed_Character)
    is
-      function Winsch (Win : Window; Ch : C_Chtype) return C_Int;
+      function Winsch (Win : Window; Ch : Attributed_Character) return C_Int;
       pragma Import (C, Winsch, "winsch");
    begin
-      if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if Winsch (Win, Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Insert;
@@ -1631,13 +1640,14 @@ package body Terminal_Interface.Curses is
       function Mvwinsch (Win : Window;
                          Lin : C_Int;
                          Col : C_Int;
-                         Ch  : C_Chtype) return C_Int;
+                         Ch  : Attributed_Character) return C_Int;
       pragma Import (C, Mvwinsch, "mvwinsch");
    begin
       if Mvwinsch (Win,
                    C_Int (Line),
                    C_Int (Column),
-                   AttrChar_To_Chtype (Ch)) = Curses_Err then
+                   Ch) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Insert;
@@ -1679,7 +1689,8 @@ package body Terminal_Interface.Curses is
    begin
       To_C (Str, Txt, Length);
       if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len))
-        = Curses_Err then
+        = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Insert;
@@ -1840,7 +1851,8 @@ package body Terminal_Interface.Curses is
    begin
       To_C (Text, Txt, Len);
       if Slk_Set (C_Int (Label), Txt,
-                  C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then
+                  C_Int (Label_Justification'Pos (Fmt))) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Set_Soft_Label_Key;
@@ -1916,9 +1928,9 @@ package body Terminal_Interface.Curses is
      (Attr : Character_Attribute_Set;
       On   : Boolean := True)
    is
-      function Slk_Attron (Ch : C_Chtype) return C_Int;
+      function Slk_Attron (Ch : Attributed_Character) return C_Int;
       pragma Import (C, Slk_Attron, "slk_attron");
-      function Slk_Attroff (Ch : C_Chtype) return C_Int;
+      function Slk_Attroff (Ch : Attributed_Character) return C_Int;
       pragma Import (C, Slk_Attroff, "slk_attroff");
 
       Err : C_Int;
@@ -1927,9 +1939,9 @@ package body Terminal_Interface.Curses is
                                               Color => Color_Pair'First);
    begin
       if On then
-         Err := Slk_Attron  (AttrChar_To_Chtype (Ch));
+         Err := Slk_Attron  (Ch);
       else
-         Err := Slk_Attroff (AttrChar_To_Chtype (Ch));
+         Err := Slk_Attroff (Ch);
       end if;
       if Err = Curses_Err then
          raise Curses_Exception;
@@ -1940,36 +1952,36 @@ package body Terminal_Interface.Curses is
      (Attr  : Character_Attribute_Set := Normal_Video;
       Color : Color_Pair := Color_Pair'First)
    is
-      function Slk_Attrset (Ch : C_Chtype) return C_Int;
+      function Slk_Attrset (Ch : Attributed_Character) return C_Int;
       pragma Import (C, Slk_Attrset, "slk_attrset");
 
       Ch : constant Attributed_Character := (Ch    => Character'First,
                                              Attr  => Attr,
                                              Color => Color);
    begin
-      if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then
+      if Slk_Attrset (Ch) = Curses_Err then
          raise Curses_Exception;
       end if;
    end Set_Soft_Label_Key_Attributes;
 
    function Get_Soft_Label_Key_Attributes return Character_Attribute_Set
    is
-      function Slk_Attr return C_Chtype;
+      function Slk_Attr return Attributed_Character;
       pragma Import (C, Slk_Attr, "slk_attr");
 
-      Attr : constant C_Chtype := Slk_Attr;
+      Attr : constant Attributed_Character := Slk_Attr;
    begin
-      return Chtype_To_AttrChar (Attr).Attr;
+      return Attr.Attr;
    end Get_Soft_Label_Key_Attributes;
 
    function Get_Soft_Label_Key_Attributes return Color_Pair
    is
-      function Slk_Attr return C_Chtype;
+      function Slk_Attr return Attributed_Character;
       pragma Import (C, Slk_Attr, "slk_attr");
 
-      Attr : constant C_Chtype := Slk_Attr;
+      Attr : constant Attributed_Character := Slk_Attr;
    begin
-      return Chtype_To_AttrChar (Attr).Color;
+      return Attr.Color;
    end Get_Soft_Label_Key_Attributes;
 
    procedure Set_Soft_Label_Key_Color (Pair : Color_Pair)
@@ -1991,7 +2003,8 @@ package body Terminal_Interface.Curses is
       pragma Import (C, Keyok, "keyok");
    begin
       if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable)))
-        = Curses_Err then
+        = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Enable_Key;
@@ -2015,18 +2028,18 @@ package body Terminal_Interface.Curses is
    procedure Un_Control (Ch  : Attributed_Character;
                          Str : out String)
    is
-      function Unctrl (Ch : C_Chtype) return chars_ptr;
+      function Unctrl (Ch : Attributed_Character) return chars_ptr;
       pragma Import (C, Unctrl, "unctrl");
    begin
-      Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str);
+      Fill_String (Unctrl (Ch), Str);
    end Un_Control;
 
    function Un_Control (Ch : Attributed_Character) return String
    is
-      function Unctrl (Ch : C_Chtype) return chars_ptr;
+      function Unctrl (Ch : Attributed_Character) return chars_ptr;
       pragma Import (C, Unctrl, "unctrl");
    begin
-      return Fill_String (Unctrl (AttrChar_To_Chtype (Ch)));
+      return Fill_String (Unctrl (Ch));
    end Un_Control;
 
    procedure Delay_Output (Msecs : Natural)
@@ -2099,10 +2112,10 @@ package body Terminal_Interface.Curses is
 
    function Supported_Attributes return Character_Attribute_Set
    is
-      function Termattrs return C_Chtype;
+      function Termattrs return Attributed_Character;
       pragma Import (C, Termattrs, "termattrs");
 
-      Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs);
+      Ch : constant Attributed_Character := Termattrs;
    begin
       return Ch.Attr;
    end Supported_Attributes;
@@ -2152,11 +2165,13 @@ package body Terminal_Interface.Curses is
          raise Constraint_Error;
       end if;
       if Integer (Fore) >= Number_Of_Colors or else
-         Integer (Back) >= Number_Of_Colors then
+         Integer (Back) >= Number_Of_Colors
+      then
          raise Constraint_Error;
       end if;
       if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back))
-        = Curses_Err then
+        = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Init_Pair;
@@ -2205,7 +2220,8 @@ package body Terminal_Interface.Curses is
       pragma Import (C, Initcolor, "init_color");
    begin
       if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green),
-                    C_Short (Blue)) = Curses_Err then
+                    C_Short (Blue)) = Curses_Err
+      then
             raise Curses_Exception;
       end if;
    end Init_Color;
@@ -2236,7 +2252,8 @@ package body Terminal_Interface.Curses is
       R, G, B : aliased C_Short;
    begin
       if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) =
-        Curses_Err then
+        Curses_Err
+      then
          raise Curses_Exception;
       else
          Red   := RGB_Value (R);
@@ -2337,7 +2354,46 @@ package body Terminal_Interface.Curses is
       end if;
    end Nap_Milli_Seconds;
 ------------------------------------------------------------------------------
-include(`Public_Variables')
+   function Lines return Line_Count
+   is
+      function LINES_As_Function return Interfaces.C.int;
+      pragma Import (C, LINES_As_Function, "LINES_as_function");
+   begin
+      return Line_Count (LINES_As_Function);
+   end Lines;
+
+   function Columns return Column_Count
+   is
+      function COLS_As_Function return Interfaces.C.int;
+      pragma Import (C, COLS_As_Function, "COLS_as_function");
+   begin
+      return Column_Count (COLS_As_Function);
+   end Columns;
+
+   function Tab_Size return Natural
+   is
+      function TABSIZE_As_Function return Interfaces.C.int;
+      pragma Import (C, TABSIZE_As_Function, "TABSIZE_as_function");
+
+   begin
+      return Natural (TABSIZE_As_Function);
+   end Tab_Size;
+
+   function Number_Of_Colors return Natural
+   is
+      function COLORS_As_Function return Interfaces.C.int;
+      pragma Import (C, COLORS_As_Function, "COLORS_as_function");
+   begin
+      return Natural (COLORS_As_Function);
+   end Number_Of_Colors;
+
+   function Number_Of_Color_Pairs return Natural
+   is
+      function COLOR_PAIRS_As_Function return Interfaces.C.int;
+      pragma Import (C, COLOR_PAIRS_As_Function, "COLOR_PAIRS_as_function");
+   begin
+      return Natural (COLOR_PAIRS_As_Function);
+   end Number_Of_Color_Pairs;
 ------------------------------------------------------------------------------
    procedure Transform_Coordinates
      (W      : Window := Standard_Window;
@@ -2493,7 +2549,8 @@ include(`Public_Variables')
    begin
       if wresize (Win,
                   C_Int (Number_Of_Lines),
-                  C_Int (Number_Of_Columns)) = Curses_Err then
+                  C_Int (Number_Of_Columns)) = Curses_Err
+      then
          raise Curses_Exception;
       end if;
    end Resize;
index 28cc9d19877956f9a3bcf49d9d5a8f13ee4b06ce..25bb5d9b5f4c0710f632ebe9d981e831c7af584b 100644 (file)
@@ -9,7 +9,7 @@ include(M4MACRO)----------------------------------------------------------------
 --                                 S P E C                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -37,18 +37,23 @@ include(M4MACRO)----------------------------------------------------------------
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.44 $
---  $Date: 2011/03/19 23:05:56 $
+--  $Revision: 1.47 $
+--  $Date: 2014/05/24 21:31:57 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
-include(`Base_Defs')
 with System.Storage_Elements;
 with Interfaces.C;   --  We need this for some assertions.
 
+with Terminal_Interface.Curses_Constants;
+
 package Terminal_Interface.Curses is
    pragma Preelaborate (Terminal_Interface.Curses);
-include(`Linker_Options')
-include(`Version_Info')
+   pragma Linker_Options ("-lncurses" & Curses_Constants.DFT_ARG_SUFFIX);
+
+   Major_Version : constant := Curses_Constants.NCURSES_VERSION_MAJOR;
+   Minor_Version : constant := Curses_Constants.NCURSES_VERSION_MINOR;
+   NC_Version : String renames Curses_Constants.Version;
+
    type Window is private;
    Null_Window : constant Window;
 
@@ -65,24 +70,315 @@ include(`Version_Info')
    --  request codes.
 
    --  FIXME: The "-1" should be Curses_Err
-   subtype Real_Key_Code is Key_Code range -1 .. M4_KEY_MAX;
+   subtype Real_Key_Code is Key_Code range -1 .. Curses_Constants.KEY_MAX;
    --  This are the codes that potentially represent a real keystroke.
    --  Not all codes may be possible on a specific terminal. To check the
    --  availability of a special key, the Has_Key function is provided.
 
    subtype Special_Key_Code is Real_Key_Code
-     range M4_SPECIAL_FIRST .. Real_Key_Code'Last;
+     range Curses_Constants. KEY_MIN - 1 .. Real_Key_Code'Last;
    --  Type for a function- or special key number
 
    subtype Normal_Key_Code is Real_Key_Code range
      Character'Pos (Character'First) .. Character'Pos (Character'Last);
    --  This are the codes for regular (incl. non-graphical) characters.
 
+   --  For those who like to use the original key names we produce them were
+   --  they differ from the original.
+
    --  Constants for function- and special keys
-   --
-   Key_None                       : constant Special_Key_Code := M4_SPECIAL_FIRST;
-include(`Key_Definitions')
-   Key_Max                        : constant Special_Key_Code
+   Key_None                    : constant Special_Key_Code
+     := Curses_Constants.KEY_MIN - 1;
+   Key_Min                     : constant Special_Key_Code
+     := Curses_Constants.KEY_MIN;
+   Key_Break                   : constant Special_Key_Code
+     := Curses_Constants.KEY_BREAK;
+   KEY_DOWN                    : constant Special_Key_Code
+     := Curses_Constants.KEY_DOWN;
+   Key_Cursor_Down             : Special_Key_Code renames KEY_DOWN;
+   KEY_UP                      : constant Special_Key_Code
+     := Curses_Constants.KEY_UP;
+   Key_Cursor_Up               : Special_Key_Code renames KEY_UP;
+   KEY_LEFT                    : constant Special_Key_Code
+     := Curses_Constants.KEY_LEFT;
+   Key_Cursor_Left             : Special_Key_Code renames KEY_LEFT;
+   KEY_RIGHT                   : constant Special_Key_Code
+     := Curses_Constants.KEY_RIGHT;
+   Key_Cursor_Right            : Special_Key_Code renames KEY_RIGHT;
+   Key_Home                    : constant Special_Key_Code
+     := Curses_Constants.KEY_HOME;
+   Key_Backspace               : constant Special_Key_Code
+     := Curses_Constants.KEY_BACKSPACE;
+   Key_F0                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F0;
+   Key_F1                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F1;
+   Key_F2                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F2;
+   Key_F3                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F3;
+   Key_F4                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F4;
+   Key_F5                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F5;
+   Key_F6                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F6;
+   Key_F7                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F7;
+   Key_F8                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F8;
+   Key_F9                      : constant Special_Key_Code
+     := Curses_Constants.KEY_F9;
+   Key_F10                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F10;
+   Key_F11                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F11;
+   Key_F12                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F12;
+   Key_F13                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F13;
+   Key_F14                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F14;
+   Key_F15                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F15;
+   Key_F16                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F16;
+   Key_F17                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F17;
+   Key_F18                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F18;
+   Key_F19                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F19;
+   Key_F20                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F20;
+   Key_F21                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F21;
+   Key_F22                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F22;
+   Key_F23                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F23;
+   Key_F24                     : constant Special_Key_Code
+     := Curses_Constants.KEY_F24;
+   KEY_DL                      : constant Special_Key_Code
+     := Curses_Constants.KEY_DL;
+   Key_Delete_Line             : Special_Key_Code renames KEY_DL;
+   KEY_IL                      : constant Special_Key_Code
+     := Curses_Constants.KEY_IL;
+   Key_Insert_Line             : Special_Key_Code renames KEY_IL;
+   KEY_DC                      : constant Special_Key_Code
+     := Curses_Constants.KEY_DC;
+   Key_Delete_Char             : Special_Key_Code renames KEY_DC;
+   KEY_IC                      : constant Special_Key_Code
+     := Curses_Constants.KEY_IC;
+   Key_Insert_Char             : Special_Key_Code renames KEY_IC;
+   KEY_EIC                     : constant Special_Key_Code
+     := Curses_Constants.KEY_EIC;
+   Key_Exit_Insert_Mode        : Special_Key_Code renames KEY_EIC;
+   KEY_CLEAR                   : constant Special_Key_Code
+     := Curses_Constants.KEY_CLEAR;
+   Key_Clear_Screen            : Special_Key_Code renames KEY_CLEAR;
+   KEY_EOS                     : constant Special_Key_Code
+     := Curses_Constants.KEY_EOS;
+   Key_Clear_End_Of_Screen     : Special_Key_Code renames KEY_EOS;
+   KEY_EOL                     : constant Special_Key_Code
+     := Curses_Constants.KEY_EOL;
+   Key_Clear_End_Of_Line       : Special_Key_Code renames KEY_EOL;
+   KEY_SF                      : constant Special_Key_Code
+     := Curses_Constants.KEY_SF;
+   Key_Scroll_1_Forward        : Special_Key_Code renames KEY_SF;
+   KEY_SR                      : constant Special_Key_Code
+     := Curses_Constants.KEY_SR;
+   Key_Scroll_1_Backward       : Special_Key_Code renames KEY_SR;
+   KEY_NPAGE                   : constant Special_Key_Code
+     := Curses_Constants.KEY_NPAGE;
+   Key_Next_Page               : Special_Key_Code renames KEY_NPAGE;
+   KEY_PPAGE                   : constant Special_Key_Code
+     := Curses_Constants.KEY_PPAGE;
+   Key_Previous_Page           : Special_Key_Code renames KEY_PPAGE;
+   KEY_STAB                    : constant Special_Key_Code
+     := Curses_Constants.KEY_STAB;
+   Key_Set_Tab                 : Special_Key_Code renames KEY_STAB;
+   KEY_CTAB                    : constant Special_Key_Code
+     := Curses_Constants.KEY_CTAB;
+   Key_Clear_Tab               : Special_Key_Code renames KEY_CTAB;
+   KEY_CATAB                   : constant Special_Key_Code
+     := Curses_Constants.KEY_CATAB;
+   Key_Clear_All_Tabs          : Special_Key_Code renames KEY_CATAB;
+   KEY_ENTER                   : constant Special_Key_Code
+     := Curses_Constants.KEY_ENTER;
+   Key_Enter_Or_Send           : Special_Key_Code renames KEY_ENTER;
+   KEY_SRESET                  : constant Special_Key_Code
+     := Curses_Constants.KEY_SRESET;
+   Key_Soft_Reset              : Special_Key_Code renames KEY_SRESET;
+   Key_Reset                   : constant Special_Key_Code
+     := Curses_Constants.KEY_RESET;
+   Key_Print                   : constant Special_Key_Code
+     := Curses_Constants.KEY_PRINT;
+   KEY_LL                      : constant Special_Key_Code
+     := Curses_Constants.KEY_LL;
+   Key_Bottom                  : Special_Key_Code renames KEY_LL;
+   KEY_A1                      : constant Special_Key_Code
+     := Curses_Constants.KEY_A1;
+   Key_Upper_Left_Of_Keypad    : Special_Key_Code renames KEY_A1;
+   KEY_A3                      : constant Special_Key_Code
+     := Curses_Constants.KEY_A3;
+   Key_Upper_Right_Of_Keypad   : Special_Key_Code renames KEY_A3;
+   KEY_B2                      : constant Special_Key_Code
+     := Curses_Constants.KEY_B2;
+   Key_Center_Of_Keypad        : Special_Key_Code renames KEY_B2;
+   KEY_C1                      : constant Special_Key_Code
+     := Curses_Constants.KEY_C1;
+   Key_Lower_Left_Of_Keypad    : Special_Key_Code renames KEY_C1;
+   KEY_C3                      : constant Special_Key_Code
+     := Curses_Constants.KEY_C3;
+   Key_Lower_Right_Of_Keypad   : Special_Key_Code renames KEY_C3;
+   KEY_BTAB                    : constant Special_Key_Code
+     := Curses_Constants.KEY_BTAB;
+   Key_Back_Tab                : Special_Key_Code renames KEY_BTAB;
+   KEY_BEG                     : constant Special_Key_Code
+     := Curses_Constants.KEY_BEG;
+   Key_Beginning               : Special_Key_Code renames KEY_BEG;
+   Key_Cancel                  : constant Special_Key_Code
+     := Curses_Constants.KEY_CANCEL;
+   Key_Close                   : constant Special_Key_Code
+     := Curses_Constants.KEY_CLOSE;
+   Key_Command                 : constant Special_Key_Code
+     := Curses_Constants.KEY_COMMAND;
+   Key_Copy                    : constant Special_Key_Code
+     := Curses_Constants.KEY_COPY;
+   Key_Create                  : constant Special_Key_Code
+     := Curses_Constants.KEY_CREATE;
+   Key_End                     : constant Special_Key_Code
+     := Curses_Constants.KEY_END;
+   Key_Exit                    : constant Special_Key_Code
+     := Curses_Constants.KEY_EXIT;
+   Key_Find                    : constant Special_Key_Code
+     := Curses_Constants.KEY_FIND;
+   Key_Help                    : constant Special_Key_Code
+     := Curses_Constants.KEY_HELP;
+   Key_Mark                    : constant Special_Key_Code
+     := Curses_Constants.KEY_MARK;
+   Key_Message                 : constant Special_Key_Code
+     := Curses_Constants.KEY_MESSAGE;
+   Key_Move                    : constant Special_Key_Code
+     := Curses_Constants.KEY_MOVE;
+   Key_Next                    : constant Special_Key_Code
+     := Curses_Constants.KEY_NEXT;
+   Key_Open                    : constant Special_Key_Code
+     := Curses_Constants.KEY_OPEN;
+   Key_Options                 : constant Special_Key_Code
+     := Curses_Constants.KEY_OPTIONS;
+   Key_Previous                : constant Special_Key_Code
+     := Curses_Constants.KEY_PREVIOUS;
+   Key_Redo                    : constant Special_Key_Code
+     := Curses_Constants.KEY_REDO;
+   Key_Reference               : constant Special_Key_Code
+     := Curses_Constants.KEY_REFERENCE;
+   Key_Refresh                 : constant Special_Key_Code
+     := Curses_Constants.KEY_REFRESH;
+   Key_Replace                 : constant Special_Key_Code
+     := Curses_Constants.KEY_REPLACE;
+   Key_Restart                 : constant Special_Key_Code
+     := Curses_Constants.KEY_RESTART;
+   Key_Resume                  : constant Special_Key_Code
+     := Curses_Constants.KEY_RESUME;
+   Key_Save                    : constant Special_Key_Code
+     := Curses_Constants.KEY_SAVE;
+   KEY_SBEG                    : constant Special_Key_Code
+     := Curses_Constants.KEY_SBEG;
+   Key_Shift_Begin             : Special_Key_Code renames KEY_SBEG;
+   KEY_SCANCEL                 : constant Special_Key_Code
+     := Curses_Constants.KEY_SCANCEL;
+   Key_Shift_Cancel            : Special_Key_Code renames KEY_SCANCEL;
+   KEY_SCOMMAND                : constant Special_Key_Code
+     := Curses_Constants.KEY_SCOMMAND;
+   Key_Shift_Command           : Special_Key_Code renames KEY_SCOMMAND;
+   KEY_SCOPY                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SCOPY;
+   Key_Shift_Copy              : Special_Key_Code renames KEY_SCOPY;
+   KEY_SCREATE                 : constant Special_Key_Code
+     := Curses_Constants.KEY_SCREATE;
+   Key_Shift_Create            : Special_Key_Code renames KEY_SCREATE;
+   KEY_SDC                     : constant Special_Key_Code
+     := Curses_Constants.KEY_SDC;
+   Key_Shift_Delete_Char       : Special_Key_Code renames KEY_SDC;
+   KEY_SDL                     : constant Special_Key_Code
+     := Curses_Constants.KEY_SDL;
+   Key_Shift_Delete_Line       : Special_Key_Code renames KEY_SDL;
+   Key_Select                  : constant Special_Key_Code
+     := Curses_Constants.KEY_SELECT;
+   KEY_SEND                    : constant Special_Key_Code
+     := Curses_Constants.KEY_SEND;
+   Key_Shift_End               : Special_Key_Code renames KEY_SEND;
+   KEY_SEOL                    : constant Special_Key_Code
+     := Curses_Constants.KEY_SEOL;
+   Key_Shift_Clear_End_Of_Line : Special_Key_Code renames KEY_SEOL;
+   KEY_SEXIT                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SEXIT;
+   Key_Shift_Exit              : Special_Key_Code renames KEY_SEXIT;
+   KEY_SFIND                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SFIND;
+   Key_Shift_Find              : Special_Key_Code renames KEY_SFIND;
+   KEY_SHELP                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SHELP;
+   Key_Shift_Help              : Special_Key_Code renames KEY_SHELP;
+   KEY_SHOME                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SHOME;
+   Key_Shift_Home              : Special_Key_Code renames KEY_SHOME;
+   KEY_SIC                     : constant Special_Key_Code
+     := Curses_Constants.KEY_SIC;
+   Key_Shift_Insert_Char       : Special_Key_Code renames KEY_SIC;
+   KEY_SLEFT                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SLEFT;
+   Key_Shift_Cursor_Left       : Special_Key_Code renames KEY_SLEFT;
+   KEY_SMESSAGE                : constant Special_Key_Code
+     := Curses_Constants.KEY_SMESSAGE;
+   Key_Shift_Message           : Special_Key_Code renames KEY_SMESSAGE;
+   KEY_SMOVE                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SMOVE;
+   Key_Shift_Move              : Special_Key_Code renames KEY_SMOVE;
+   KEY_SNEXT                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SNEXT;
+   Key_Shift_Next_Page         : Special_Key_Code renames KEY_SNEXT;
+   KEY_SOPTIONS                : constant Special_Key_Code
+     := Curses_Constants.KEY_SOPTIONS;
+   Key_Shift_Options           : Special_Key_Code renames KEY_SOPTIONS;
+   KEY_SPREVIOUS               : constant Special_Key_Code
+     := Curses_Constants.KEY_SPREVIOUS;
+   Key_Shift_Previous_Page     : Special_Key_Code renames KEY_SPREVIOUS;
+   KEY_SPRINT                  : constant Special_Key_Code
+     := Curses_Constants.KEY_SPRINT;
+   Key_Shift_Print             : Special_Key_Code renames KEY_SPRINT;
+   KEY_SREDO                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SREDO;
+   Key_Shift_Redo              : Special_Key_Code renames KEY_SREDO;
+   KEY_SREPLACE                : constant Special_Key_Code
+     := Curses_Constants.KEY_SREPLACE;
+   Key_Shift_Replace           : Special_Key_Code renames KEY_SREPLACE;
+   KEY_SRIGHT                  : constant Special_Key_Code
+     := Curses_Constants.KEY_SRIGHT;
+   Key_Shift_Cursor_Right      : Special_Key_Code renames KEY_SRIGHT;
+   KEY_SRSUME                  : constant Special_Key_Code
+     := Curses_Constants.KEY_SRSUME;
+   Key_Shift_Resume            : Special_Key_Code renames KEY_SRSUME;
+   KEY_SSAVE                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SSAVE;
+   Key_Shift_Save              : Special_Key_Code renames KEY_SSAVE;
+   KEY_SSUSPEND                : constant Special_Key_Code
+     := Curses_Constants.KEY_SSUSPEND;
+   Key_Shift_Suspend           : Special_Key_Code renames KEY_SSUSPEND;
+   KEY_SUNDO                   : constant Special_Key_Code
+     := Curses_Constants.KEY_SUNDO;
+   Key_Shift_Undo              : Special_Key_Code renames KEY_SUNDO;
+   Key_Suspend                 : constant Special_Key_Code
+     := Curses_Constants.KEY_SUSPEND;
+   Key_Undo                    : constant Special_Key_Code
+     := Curses_Constants.KEY_UNDO;
+   Key_Mouse                   : constant Special_Key_Code
+     := Curses_Constants.KEY_MOUSE;
+   Key_Resize                  : constant Special_Key_Code
+     := Curses_Constants.KEY_RESIZE;
+   Key_Max                     : constant Special_Key_Code
      := Special_Key_Code'Last;
 
    subtype User_Key_Code is Key_Code
@@ -90,12 +386,7 @@ include(`Key_Definitions')
    --  This is reserved for user defined key codes. The range between Key_Max
    --  and the first user code is reserved for subsystems like menu and forms.
 
-   --  For those who like to use the original key names we produce them were
-   --  they differ from the original. Please note that they may differ in
-   --  lower/upper case.
-include(`Old_Keys')dnl
-
-------------------------------------------------------------------------------
+   --------------------------------------------------------------------------
 
    type Color_Number is range -1 .. Integer (Interfaces.C.short'Last);
    for Color_Number'Size use Interfaces.C.short'Size;
@@ -104,7 +395,15 @@ include(`Old_Keys')dnl
    --  (potentially) definable colors. Some of those indices are
    --  predefined (see below), although they may not really exist.
 
-include(`Color_Defs')
+   Black   : constant Color_Number := Curses_Constants.COLOR_BLACK;
+   Red     : constant Color_Number := Curses_Constants.COLOR_RED;
+   Green   : constant Color_Number := Curses_Constants.COLOR_GREEN;
+   Yellow  : constant Color_Number := Curses_Constants.COLOR_YELLOW;
+   Blue    : constant Color_Number := Curses_Constants.COLOR_BLUE;
+   Magenta : constant Color_Number := Curses_Constants.COLOR_MAGENTA;
+   Cyan    : constant Color_Number := Curses_Constants.COLOR_CYAN;
+   White   : constant Color_Number := Curses_Constants.COLOR_WHITE;
+
    type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last);
    for RGB_Value'Size use Interfaces.C.short'Size;
    --  Some system may allow to redefine a color by setting RGB values.
@@ -117,8 +416,73 @@ include(`Color_Defs')
    --  two colors described by Color_Numbers, one for the foreground and
    --  the other for the background
 
-include(`Character_Attribute_Set_Rep')
-   --  (n)curses uses all but the lowest 16 Bits for Attributes.
+   type Character_Attribute_Set is
+      record
+         Stand_Out               : Boolean;
+         Under_Line              : Boolean;
+         Reverse_Video           : Boolean;
+         Blink                   : Boolean;
+         Dim_Character           : Boolean;
+         Bold_Character          : Boolean;
+         Protected_Character     : Boolean;
+         Invisible_Character     : Boolean;
+         Alternate_Character_Set : Boolean;
+         Horizontal              : Boolean;
+         Left                    : Boolean;
+         Low                     : Boolean;
+         Right                   : Boolean;
+         Top                     : Boolean;
+         Vertical                : Boolean;
+      end record;
+
+   for Character_Attribute_Set use
+      record
+         Stand_Out at 0 range
+           Curses_Constants.A_STANDOUT_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_STANDOUT_Last - Curses_Constants.Attr_First;
+         Under_Line at 0 range
+           Curses_Constants.A_UNDERLINE_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_UNDERLINE_Last - Curses_Constants.Attr_First;
+         Reverse_Video at 0 range
+           Curses_Constants.A_REVERSE_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_REVERSE_Last - Curses_Constants.Attr_First;
+         Blink at 0 range
+           Curses_Constants.A_BLINK_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_BLINK_Last - Curses_Constants.Attr_First;
+         Dim_Character at 0 range
+           Curses_Constants.A_DIM_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_DIM_Last - Curses_Constants.Attr_First;
+         Bold_Character at 0 range
+           Curses_Constants.A_BOLD_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_BOLD_Last - Curses_Constants.Attr_First;
+         Protected_Character at 0 range
+           Curses_Constants.A_PROTECT_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_PROTECT_Last - Curses_Constants.Attr_First;
+         Invisible_Character at 0 range
+           Curses_Constants.A_INVIS_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_INVIS_Last - Curses_Constants.Attr_First;
+         Alternate_Character_Set at 0 range
+           Curses_Constants.A_ALTCHARSET_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_ALTCHARSET_Last - Curses_Constants.Attr_First;
+         Horizontal at 0 range
+           Curses_Constants.A_HORIZONTAL_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_HORIZONTAL_Last - Curses_Constants.Attr_First;
+         Left at 0 range
+           Curses_Constants.A_LEFT_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_LEFT_Last - Curses_Constants.Attr_First;
+         Low at 0 range
+           Curses_Constants.A_LOW_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_LOW_Last - Curses_Constants.Attr_First;
+         Right at 0 range
+           Curses_Constants.A_RIGHT_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_RIGHT_Last - Curses_Constants.Attr_First;
+         Top at 0 range
+           Curses_Constants.A_TOP_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_TOP_Last - Curses_Constants.Attr_First;
+         Vertical at 0 range
+           Curses_Constants.A_VERTICAL_First - Curses_Constants.Attr_First
+           .. Curses_Constants.A_VERTICAL_Last - Curses_Constants.Attr_First;
+      end record;
 
    Normal_Video : constant Character_Attribute_Set := (others => False);
 
@@ -128,17 +492,29 @@ include(`Character_Attribute_Set_Rep')
          Color : Color_Pair;
          Ch    : Character;
       end record;
-   pragma Convention (C, Attributed_Character);
+   pragma Convention (C_Pass_By_Copy, Attributed_Character);
    --  This is the counterpart for the chtype in C.
 
-include(`AC_Rep')
+   for Attributed_Character use
+      record
+         Ch    at 0 range Curses_Constants.A_CHARTEXT_First
+           .. Curses_Constants.A_CHARTEXT_Last;
+         Color at 0 range Curses_Constants.A_COLOR_First
+           .. Curses_Constants.A_COLOR_Last;
+         pragma Warnings (Off);
+         Attr  at 0 range Curses_Constants.Attr_First
+           .. Curses_Constants.Attr_Last;
+         pragma Warnings (On);
+      end record;
+   for Attributed_Character'Size use Curses_Constants.chtype_Size;
+
    Default_Character : constant Attributed_Character
      := (Ch    => Character'First,
          Color => Color_Pair'First,
          Attr  => (others => False));  --  preelaboratable Normal_Video
 
    type Attributed_String is array (Positive range <>) of Attributed_Character;
-   pragma Pack (Attributed_String);
+   pragma Convention (C, Attributed_String);
    --  In this binding we allow strings of attributed characters.
 
    ------------------
@@ -188,7 +564,78 @@ include(`AC_Rep')
    function Number_Of_Color_Pairs return Natural;
    pragma Inline (Number_Of_Color_Pairs);
 
-include(`ACS_Map')dnl
+   subtype ACS_Index is Character range
+     Character'Val (0) .. Character'Val (127);
+   function ACS_Map (Index : ACS_Index) return Attributed_Character;
+   pragma Import (C, ACS_Map, "acs_map_as_function");
+
+   --  Constants for several characters from the Alternate Character Set
+   --  You must use these constants as indices into the ACS_Map function
+   --  to get the corresponding attributed character at runtime
+   ACS_Upper_Left_Corner  : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_ULCORNER);
+   ACS_Lower_Left_Corner  : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LLCORNER);
+   ACS_Upper_Right_Corner : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_URCORNER);
+   ACS_Lower_Right_Corner : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LRCORNER);
+   ACS_Left_Tee           : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LTEE);
+   ACS_Right_Tee          : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_RTEE);
+   ACS_Bottom_Tee         : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_BTEE);
+   ACS_Top_Tee            : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_TTEE);
+   ACS_Horizontal_Line    : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_HLINE);
+   ACS_Vertical_Line      : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_VLINE);
+   ACS_Plus_Symbol        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_PLUS);
+   ACS_Scan_Line_1        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_S1);
+   ACS_Scan_Line_9        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_S9);
+   ACS_Diamond            : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_DIAMOND);
+   ACS_Checker_Board      : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_CKBOARD);
+   ACS_Degree             : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_DEGREE);
+   ACS_Plus_Minus         : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_PLMINUS);
+   ACS_Bullet             : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_BULLET);
+   ACS_Left_Arrow         : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LARROW);
+   ACS_Right_Arrow        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_RARROW);
+   ACS_Down_Arrow         : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_DARROW);
+   ACS_Up_Arrow           : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_UARROW);
+   ACS_Board_Of_Squares   : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_BOARD);
+   ACS_Lantern            : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LANTERN);
+   ACS_Solid_Block        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_BLOCK);
+   ACS_Scan_Line_3        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_S3);
+   ACS_Scan_Line_7        : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_S7);
+   ACS_Less_Or_Equal      : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_LEQUAL);
+   ACS_Greater_Or_Equal   : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_GEQUAL);
+   ACS_PI                 : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_PI);
+   ACS_Not_Equal          : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_NEQUAL);
+   ACS_Sterling           : constant ACS_Index
+      := Character'Val (Curses_Constants.ACS_STERLING);
 
    --  MANPAGE(`curs_initscr.3x')
    --  | Not implemented: newterm, set_term, delscreen
@@ -196,11 +643,13 @@ include(`ACS_Map')dnl
    --  ANCHOR(`stdscr',`Standard_Window')
    function Standard_Window return Window;
    --  AKA
+   pragma Import (C, Standard_Window, "stdscr_as_function");
    pragma Inline (Standard_Window);
 
    --  ANCHOR(`curscr',`Current_Window')
    function Current_Window return Window;
    --  AKA
+   pragma Import (C, Current_Window, "curscr_as_function");
    pragma Inline (Current_Window);
 
    --  ANCHOR(`initscr()',`Init_Screen')
@@ -1476,6 +1925,8 @@ include(`ACS_Map')dnl
 
    --  MANPAGE(`default_colors.3x')
 
+   Default_Color : constant Color_Number := -1;
+
    --  ANCHOR(`use_default_colors()',`Use_Default_Colors')
    procedure Use_Default_Colors;
    --  AKA
@@ -1553,7 +2004,11 @@ private
    --  The next constants are generated and may be different on your
    --  architecture.
    --
-include(`Window_Offsets')dnl
+
+   Sizeof_Bool : constant := Curses_Constants.Sizeof_Bool;
+
+   type Curses_Bool is mod 2 ** Sizeof_Bool;
+
    Curses_Bool_False : constant Curses_Bool := 0;
 
 end Terminal_Interface.Curses;
index 8ae327242ba439e1d77a9735eebdc46bc4b5a36d..e0f3d35bbca43659597f9694faca557fee8252e3 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc.              --
+-- Copyright (c) 2000-2008,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            --
 ------------------------------------------------------------------------------
 --  Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
 --  Version Control
---  $Revision: 1.7 $
---  $Date: 2008/07/26 18:51:20 $
+--  $Revision: 1.9 $
+--  $Date: 2014/05/24 21:32:18 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Text_IO; use Ada.Text_IO;
 
-pragma Warnings (Off);
-with Terminal_Interface.Curses.Aux;
-pragma Warnings (On);
-
 with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace;
 
 with Interfaces.C;
@@ -115,7 +111,6 @@ package body ncurses2.util is
    procedure Cannot (s : String) is
       use Interfaces.C;
       use Interfaces.C.Strings;
-      use Terminal_Interface.Curses.Aux;
       function getenv (x : char_array)  return chars_ptr;
       pragma Import (C, getenv, "getenv");
       tmp1 : char_array (0 .. 10);
index 9962859ba4b10e47290a6f8bdebb8b9467f6c3cd..d74c44579147ae9771ad77fe2871e2a935a8b953 100644 (file)
@@ -1,5 +1,5 @@
 ##############################################################################
-# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.                #
+# Copyright (c) 1998-2011,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 "Software"), #
@@ -28,7 +28,7 @@
 #
 #  Author:  Juergen Pfeifer, 1996
 #
-#  $Id: Makefile.in,v 1.62 2011/04/30 22:24:45 tom Exp $
+#  $Id: Makefile.in,v 1.68 2014/05/24 21:29:11 tom Exp $
 #
 .SUFFIXES:
 
@@ -97,16 +97,6 @@ BUILD_DIR_LIB        = $(BUILD_DIR)/lib
 SOURCE_DIR_SRC = $(SOURCE_DIR)/src
 
 ADAMAKE         = @cf_ada_make@
-ADAMAKEFLAGS    = \
-       -P$(GNAT_PROJECT) \
-       -XBUILD_DIR=`cd $(BUILD_DIR);pwd` \
-       -XSOURCE_DIR=`cd $(SOURCE_DIR);pwd` \
-       -XSOURCE_DIR2=`cd $(srcdir);pwd` \
-       -XLIB_NAME=$(LIB_NAME) \
-       -XSONAME=$(SONAME)
-
-CARGS           = -cargs $(ADAFLAGS)
-LARGS           =
 
 STATIC_LIBNAME = lib$(LIB_NAME).a
 SHARED_LIBNAME = $(SONAME)
@@ -215,66 +205,42 @@ BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb
 
 $(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p
        rm -f $@
-       $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ -DPRAGMA_UNREF=@PRAGMA_UNREF@ $(srcdir)/$(ABASE)-trace.adb_p $@
+       $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ $(srcdir)/$(ABASE)-trace.adb_p $@
 
 ###############################################################################
 # Use these definitions when building a shared library.
-SHARED_C_OBJS  = c_varargs_to_ada.o ncurses_compat.o
-SHARED_OBJS    = $(SHARED_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
+SHARED_C_OBJS  = c_varargs_to_ada.o c_threaded_variables.o ncurses_compat.o
+SHARED_OBJS    = $(SHARED_C_OBJS) $(LIBOBJS) @cf_generic_objects@
 
 c_varargs_to_ada.o :   $(srcdir)/c_varargs_to_ada.c
        $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c
 
+c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
+       $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_threaded_variables.c
+
 ncurses_compat.o :     $(srcdir)/ncurses_compat.c
        $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c
 
 ###############################################################################
 # Use these definitions when building a static library.
-STATIC_C_OBJS  = static_c_varargs_to_ada.o static_ncurses_compat.o
-STATIC_OBJS    = $(STATIC_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@
+STATIC_C_OBJS  = static_c_varargs_to_ada.o static_c_threaded_variables.o static_ncurses_compat.o
+STATIC_OBJS    = $(STATIC_C_OBJS) $(LIBOBJS) @cf_generic_objects@
 
 static_c_varargs_to_ada.o :    $(srcdir)/c_varargs_to_ada.c
        $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_varargs_to_ada.c
 
+static_c_threaded_variables.o : $(srcdir)/c_threaded_variables.c
+       $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_threaded_variables.c
+
 static_ncurses_compat.o :      $(srcdir)/ncurses_compat.c
        $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/ncurses_compat.c
 
 ###############################################################################
 
-@USE_OLD_MAKERULES@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \
-@USE_OLD_MAKERULES@            $(BUILD_DIR_LIB) \
-@USE_OLD_MAKERULES@            $(STATIC_OBJS)
-@USE_OLD_MAKERULES@    $(AR) $(ARFLAGS) $@ $(STATIC_OBJS)
-
-$(BUILD_DIR)/static-ali : ; mkdir -p $@
-$(BUILD_DIR)/static-obj : ; mkdir -p $@
-
-STATIC_DIRS = \
-       $(BUILD_DIR_LIB) \
-       $(BUILD_DIR)/static-ali \
-       $(BUILD_DIR)/static-obj
-
-@USE_GNAT_PROJECTS@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \
-@USE_GNAT_PROJECTS@            $(ABASE)-trace.adb \
-@USE_GNAT_PROJECTS@            $(STATIC_C_OBJS) \
-@USE_GNAT_PROJECTS@            $(STATIC_DIRS)
-@USE_GNAT_PROJECTS@    $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=static
-@USE_GNAT_PROJECTS@    $(AR) $(ARFLAGS) $@ $(STATIC_C_OBJS)
-@USE_GNAT_PROJECTS@
-@USE_GNAT_LIBRARIES@install \
-@USE_GNAT_LIBRARIES@install.libs :: \
-@USE_GNAT_LIBRARIES@           $(ADA_OBJECTS)
-@USE_GNAT_LIBRARIES@   $(INSTALL_LIB) \
-@USE_GNAT_LIBRARIES@           $(BUILD_DIR)/static-ali/*.ali \
-@USE_GNAT_LIBRARIES@           $(ADA_OBJECTS)
-
-uninstall \
-uninstall.libs ::
-       @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME)
-
-@USE_GNAT_LIBRARIES@uninstall \
-@USE_GNAT_LIBRARIES@uninstall.libs ::
-@USE_GNAT_LIBRARIES@   @$(SHELL) -c 'for name in $(BUILD_DIR)/static-ali/*.ali ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done'
+$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \
+               $(BUILD_DIR_LIB) \
+               $(STATIC_OBJS)
+       $(AR) $(ARFLAGS) $@ $(STATIC_OBJS)
 
 $(BUILD_DIR)/dynamic-ali : ; mkdir -p $@
 $(BUILD_DIR)/dynamic-obj : ; mkdir -p $@
@@ -284,13 +250,29 @@ SHARED_DIRS = \
        $(BUILD_DIR)/dynamic-ali \
        $(BUILD_DIR)/dynamic-obj
 
+GPR_EMPTY :=
+GPR_SPACE := $(GPR_EMPTY) $(GPR_EMPTY)
+GPR_COMMA := ,
+GPR_LIST = ("$(subst $(GPR_SPACE),"$(GPR_COMMA) ",$(strip $(1)))")
+$(GNAT_PROJECT) : $(GNAT_PROJECT).sed
+       sed \
+       -e "s|External (\"BUILD_DIR\")|\"`cd $(BUILD_DIR);pwd`\"|" \
+       -e 's/External ("LIB_NAME")/"$(LIB_NAME)"/' \
+       -e 's/External ("SONAME")/"$(SONAME)"/' \
+       -e 's/External_As_List\ ("ADAFLAGS", " ")/$(call GPR_LIST,$(ADAFLAGS))/' \
+       -e 's/External_As_List\ ("LDFLAGS", " ")/$(call GPR_LIST,$(LDFLAGS))/' \
+       $< > $@
+clean ::
+       rm -rf $(GNAT_PROJECT)
+
 @MAKE_ADA_SHAREDLIB@all :: $(BUILD_DIR_LIB)/$(SHARED_LIBNAME)
 @MAKE_ADA_SHAREDLIB@$(BUILD_DIR_LIB)/$(SHARED_LIBNAME) :: \
+@MAKE_ADA_SHAREDLIB@           $(GNAT_PROJECT) \
 @MAKE_ADA_SHAREDLIB@           $(ABASE)-trace.adb \
 @MAKE_ADA_SHAREDLIB@           $(SHARED_DIRS) \
 @MAKE_ADA_SHAREDLIB@           $(SHARED_OBJS)
 @MAKE_ADA_SHAREDLIB@   cp $(SHARED_OBJS) $(BUILD_DIR)/dynamic-obj/
-@MAKE_ADA_SHAREDLIB@   $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=dynamic
+@MAKE_ADA_SHAREDLIB@   $(ADAMAKE) -P$(GNAT_PROJECT)
 
 install \
 install.libs :: $(ADA_INCLUDE)
@@ -328,6 +310,6 @@ uninstall.libs ::
 @MAKE_ADA_SHAREDLIB@   rm -f $(LIBDIR)/$(SHARED_LIBNAME)
 
 clean ::
-       rm -rf $(BUILD_DIR)/*-ali
-       rm -rf $(BUILD_DIR)/*-obj
+       rm -rf $(BUILD_DIR)/dynamic-ali
+       rm -rf $(BUILD_DIR)/dynamic-obj
        rm -rf $(BUILD_DIR_LIB)
diff --git a/Ada95/src/c_threaded_variables.c b/Ada95/src/c_threaded_variables.c
new file mode 100644 (file)
index 0000000..bc58c46
--- /dev/null
@@ -0,0 +1,56 @@
+/****************************************************************************
+ * Copyright (c) 2011,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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+
+/****************************************************************************
+ *   Author:  Nicolas Boulenguez, 2011                                      *
+ ****************************************************************************/
+
+#include "c_threaded_variables.h"
+
+#define WRAP(type, name)        \
+  type                          \
+  name ## _as_function ()       \
+  {                             \
+    return name;                \
+  }
+/* *INDENT-OFF* */
+WRAP(WINDOW *, stdscr)
+WRAP(WINDOW *, curscr)
+
+WRAP(int, LINES)
+WRAP(int, COLS)
+WRAP(int, TABSIZE)
+WRAP(int, COLORS)
+WRAP(int, COLOR_PAIRS)
+
+chtype
+acs_map_as_function(char inx)
+{
+  return acs_map[(unsigned char) inx];
+}
+/* *INDENT-ON* */
diff --git a/Ada95/src/c_threaded_variables.h b/Ada95/src/c_threaded_variables.h
new file mode 100644 (file)
index 0000000..eac3e1b
--- /dev/null
@@ -0,0 +1,46 @@
+/****************************************************************************
+ * Copyright (c) 2011,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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+
+#ifndef __C_THREADED_VARIABLES_H
+#define __C_THREADED_VARIABLES_H
+
+#include <curses.h>
+
+extern WINDOW *stdscr_as_function(void);
+extern WINDOW *curscr_as_function(void);
+
+extern int LINES_as_function(void);
+extern int LINES_as_function(void);
+extern int COLS_as_function(void);
+extern int TABSIZE_as_function(void);
+extern int COLORS_as_function(void);
+extern int COLOR_PAIRS_as_function(void);
+
+extern chtype acs_map_as_function(char /* index */ );
+
+#endif /* __C_THREADED_VARIABLES_H */
index ed236ddc90da1adb7a0e175ff60f3c83c95158de..f0b1bbef01ff1e52b9ac6f8fd8325276e7c68a33 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2011 Free Software Foundation, Inc.                        *
+ * Copyright (c) 2011,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: c_varargs_to_ada.c,v 1.4 2011/03/19 19:07:39 tom Exp $
+    $Id: c_varargs_to_ada.c,v 1.6 2014/05/24 21:32:18 tom Exp $
   --------------------------------------------------------------------------*/
 /*
   */
 
-#include <c_varargs_to_ada.h>
+#include "c_varargs_to_ada.h"
 
 int
 set_field_type_alnum(FIELD *field,
similarity index 79%
rename from Ada95/src/library.gpr
rename to Ada95/src/library.gpr.sed
index 33e4a3c7d7e2ead8129127272043720d1a81e359..28b0b1cd869322738d378b015aa7c725862d176c 100644 (file)
@@ -1,5 +1,5 @@
 ------------------------------------------------------------------------------
--- Copyright (c) 2010,2011 Free Software Foundation, Inc.                   --
+-- Copyright (c) 2010-2011,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            --
 -- sale, use or other dealings in this Software without prior written       --
 -- authorization.                                                           --
 ------------------------------------------------------------------------------
--- $Id: library.gpr,v 1.7 2011/03/18 23:10:28 Nicolas.Boulenguez Exp $
+-- $Id: library.gpr.sed,v 1.2 2014/05/24 21:28:29 tom Exp $
 -- http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Library-Projects.html
 -- http://www.adaworld.com/debian/debian-ada-policy.html
 project Library is
   Build_Dir := External ("BUILD_DIR");
-  Source_Dir := External ("SOURCE_DIR");
-  Source_Dir2 := External ("SOURCE_DIR2");
-  Kind := External ("LIB_KIND");
   for Library_Name use External ("LIB_NAME");
   for Library_Version use External ("SONAME");
-
-  for Library_Kind use Kind;
+  for Library_Kind use "dynamic";
   for Library_Dir use Build_Dir & "/lib";
-  for Object_Dir use Build_Dir & "/" & Kind & "-obj";
-  for Library_ALI_Dir use Build_Dir & "/" & Kind & "-ali";
-  for Source_Dirs use (Source_Dir & "/src",
-                       Source_Dir2,
-                       Build_Dir & "/src");
-  for Library_Options use ("-lncurses", "-lpanel", "-lmenu", "-lform");
+  for Object_Dir use Build_Dir & "/dynamic-obj";
+  for Library_ALI_Dir use Build_Dir & "/dynamic-ali";
+  for Source_Dirs use (".");
+  for Library_Options use
+    External_As_List ("LDFLAGS", " ")   --  before libraries.
+    & ("-lncurses", "-lpanel", "-lmenu", "-lform");
   package Compiler is
      for Default_Switches ("Ada") use
        ("-g",
         "-O2",
         "-gnatafno",
         "-gnatVa",   -- All validity checks
-        "-gnatwa");  -- Activate all optional errors
+        "-gnatwa")   -- Activate all optional errors
+       & External_As_List ("ADAFLAGS", " "); --  after default options
   end Compiler;
+
+  --  gnatmake ignores C sources, but this option will let it embed
+  --  objects found in the Object_Dir.
   for Languages use ("C", "Ada");
 end Library;
index 943362012394bb71c27b9fdf5c04d2449876018e..9c614cacb80080d4e6056cf36cd4798f92ffb94e 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.11 $
---  $Date: 2011/03/19 00:45:37 $
+--  $Revision: 1.13 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is
                              Typ : Alpha_Field)
    is
       function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int) return C_Int;
+                             Arg1 : C_Int) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_alpha");
 
-      Res : Eti_Error;
    begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)));
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index 53f66801e917dc3468d64647b295b8badb9bf194..270906d401209c387e825d90724bef2ef2d93ab1 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.11 $
---  $Date: 2011/03/19 00:45:37 $
+--  $Revision: 1.13 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
                              Typ : AlphaNumeric_Field)
    is
       function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int) return C_Int;
+                             Arg1 : C_Int) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_alnum");
 
-      Res : Eti_Error;
    begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)));
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index 12648e5a1dcc798c9f998c3b214f2c6d87edfa16..8d4c9cee49b743399ace0ad4aa6d2d02a5ee2309 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.10 $
+--  $Revision: 1.12 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
@@ -94,21 +94,18 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
       function Set_Fld_Type (F    : Field := Fld;
                              Arg1 : chars_ptr_array;
                              Arg2 : C_Int;
-                             Arg3 : C_Int) return C_Int;
+                             Arg3 : C_Int) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_enum");
 
-      Res : Eti_Error;
    begin
       if Typ.Arr = null then
          raise Form_Exception;
       end if;
-      Res := Set_Fld_Type (Arg1 => Typ.Arr.all,
-                           Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
-                           Arg3 => C_Int (Boolean'Pos
-                                          (Typ.Match_Must_Be_Unique)));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception
+        (Set_Fld_Type
+           (Arg1 => Typ.Arr.all,
+            Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
+            Arg3 => C_Int (Boolean'Pos (Typ.Match_Must_Be_Unique))));
       Wrap_Builtin (Fld, Typ, C_Choice_Router);
    end Set_Field_Type;
 
index b6229becefb9cc1ad1ebb0a8c271b45f11735c6d..5ec3305359944d888bac2202145f2bd1807c0530 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.11 $
---  $Date: 2011/03/19 00:45:37 $
+--  $Revision: 1.13 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -49,17 +49,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IntField is
       function Set_Fld_Type (F    : Field := Fld;
                              Arg1 : C_Int;
                              Arg2 : C_Long_Int;
-                             Arg3 : C_Long_Int) return C_Int;
+                             Arg3 : C_Long_Int) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_integer");
 
-      Res : Eti_Error;
    begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
-                           Arg2 => C_Long_Int (Typ.Lower_Limit),
-                           Arg3 => C_Long_Int (Typ.Upper_Limit));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+                                   Arg2 => C_Long_Int (Typ.Lower_Limit),
+                                   Arg3 => C_Long_Int (Typ.Upper_Limit)));
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index 66e052942d37475a8b4da29424774a316a8e895c..978a47a1f0c728fa0e5e73743862566db87d8cfc 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.11 $
---  $Date: 2011/03/19 00:45:37 $
+--  $Revision: 1.13 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -47,15 +47,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
                              Typ : Internet_V4_Address_Field)
    is
       function Set_Fld_Type (F : Field := Fld)
-                             return C_Int;
+                             return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_ipv4");
 
-      Res : Eti_Error;
    begin
-      Res := Set_Fld_Type;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type);
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index b31dfa657a59575755748c2ccd7ec9cb53c6f67c..94e2aa702c41d5c1b78c83203fede8c4f38a9227 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.12 $
---  $Date: 2011/03/19 00:45:37 $
+--  $Revision: 1.14 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
@@ -52,17 +52,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is
       function Set_Fld_Type (F    : Field := Fld;
                              Arg1 : C_Int;
                              Arg2 : Double;
-                             Arg3 : Double) return C_Int;
+                             Arg3 : Double) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_numeric");
 
-      Res : Eti_Error;
    begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
-                           Arg2 => Double (Typ.Lower_Limit),
-                           Arg3 => Double (Typ.Upper_Limit));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
+                                   Arg2 => Double (Typ.Lower_Limit),
+                                   Arg3 => Double (Typ.Upper_Limit)));
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index 55f0255071abc74d29d1576ae842cdfe1d4152e9..f5ea0db2b11cf1f4c644f5ca3f50c43f3ea9f2ab 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.10 $
+--  $Revision: 1.12 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C; use Interfaces.C;
@@ -46,21 +46,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is
    procedure Set_Field_Type (Fld : Field;
                              Typ : Regular_Expression_Field)
    is
-      type Char_Ptr is access all Interfaces.C.char;
-
       function Set_Ftyp (F    : Field := Fld;
-                         Arg1 : Char_Ptr) return C_Int;
+                         Arg1 : char_array) return Eti_Error;
       pragma Import (C, Set_Ftyp, "set_field_type_regexp");
 
-      Txt : char_array (0 .. Typ.Regular_Expression.all'Length);
-      Len : size_t;
-      Res : Eti_Error;
    begin
-      To_C (Typ.Regular_Expression.all, Txt, Len);
-      Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Ftyp (Arg1 => To_C (Typ.Regular_Expression.all)));
       Wrap_Builtin (Fld, Typ);
    end Set_Field_Type;
 
index 3a7e6b5aeb2ed4da82fdca622f7578d9259cb5d0..8414cd0385c7f5ad42be0db42643c1b8079d8745 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.17 $
---  $Date: 2011/03/22 10:53:37 $
+--  $Revision: 1.20 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System.Address_To_Access_Conversions;
@@ -53,7 +53,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
       Result : Boolean;
       Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
         User_Defined_Field_Type_With_Choice_Access
-        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
+        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
    begin
       Result := Next (Fld, Udf.all);
       return Curses_Bool (Boolean'Pos (Result));
@@ -65,7 +65,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
       Result : Boolean;
       Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
         User_Defined_Field_Type_With_Choice_Access
-        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
+        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
    begin
       Result := Previous (Fld, Udf.all);
       return Curses_Bool (Boolean'Pos (Result));
@@ -88,16 +88,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
                                       Make_Arg'Access,
                                       Copy_Arg'Access,
                                       Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Res);
 
             Res := Set_Fieldtype_Choice (T,
                                          Generic_Next'Access,
                                          Generic_Prev'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Res);
          end if;
          M_Generic_Choice := T;
       end if;
index 2dd295db7e76e0e93bb9a0877bfc12aa3ed23739..98bcd2442d43fb5a914de8265a3e7d87e3c6f328 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.21 $
---  $Date: 2011/03/23 00:44:58 $
+--  $Revision: 1.23 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with System.Address_To_Access_Conversions;
@@ -53,11 +53,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
       function Set_Fld_Type (F    : Field := Fld;
                              Cft  : C_Field_Type := C_Generic_Type;
                              Arg1 : Argument_Access)
-                             return C_Int;
+                             return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_user");
 
-      Res : Eti_Error;
-
       function Allocate_Arg (T : User_Defined_Field_Type'Class)
                              return Argument_Access
       is
@@ -70,10 +68,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
       end Allocate_Arg;
 
    begin
-      Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Type (Arg1 => Allocate_Arg (Typ)));
    end Set_Field_Type;
 
    package Argument_Conversions is
@@ -120,9 +115,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is
                                       Make_Arg'Access,
                                       Copy_Arg'Access,
                                       Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Res);
          end if;
          M_Generic_Type := T;
       end if;
index 5195a20a499c32e8312baba36b6970b07a26bfa3..99ee3741f97f9f7f6e8d7219a982c9f3305090e6 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.25 $
---  $Date: 2011/03/22 23:22:27 $
+--  $Revision: 1.27 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -130,10 +130,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
       Usr_Arg   : constant System.Address := Get_Arg (Fld);
       Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
       Arg : Argument_Access;
-      Res : Eti_Error;
       function Set_Fld_Type (F    : Field := Fld;
                              Cf   : C_Field_Type := Cft;
-                             Arg1 : Argument_Access) return C_Int;
+                             Arg1 : Argument_Access) return Eti_Error;
       pragma Import (C, Set_Fld_Type, "set_field_type_user");
 
    begin
@@ -152,10 +151,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
             end if;
          end if;
 
-         Res := Set_Fld_Type (Arg1 => Arg);
-         if Res /= E_Ok then
-            Eti_Exception (Res);
-         end if;
+         Eti_Exception (Set_Fld_Type (Arg1 => Arg));
       end if;
    end Wrap_Builtin;
 
@@ -223,7 +219,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
    --
    function C_Builtin_Router return C_Field_Type
    is
-      Res : Eti_Error;
       T   : C_Field_Type;
    begin
       if M_Builtin_Router = Null_Field_Type then
@@ -232,13 +227,10 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
          if T = Null_Field_Type then
             raise Form_Exception;
          else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Set_Fieldtype_Arg (T,
+                                              Make_Arg'Access,
+                                              Copy_Arg'Access,
+                                              Free_Arg'Access));
          end if;
          M_Builtin_Router := T;
       end if;
@@ -250,7 +242,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
    --
    function C_Choice_Router return C_Field_Type
    is
-      Res : Eti_Error;
       T   : C_Field_Type;
    begin
       if M_Choice_Router = Null_Field_Type then
@@ -259,20 +250,14 @@ package body Terminal_Interface.Curses.Forms.Field_Types is
          if T = Null_Field_Type then
             raise Form_Exception;
          else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Set_Fieldtype_Arg (T,
+                                              Make_Arg'Access,
+                                              Copy_Arg'Access,
+                                              Free_Arg'Access));
 
-            Res := Set_Fieldtype_Choice (T,
-                                         Next_Router'Access,
-                                         Prev_Router'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
+            Eti_Exception (Set_Fieldtype_Choice (T,
+                                                 Next_Router'Access,
+                                                 Prev_Router'Access));
          end if;
          M_Choice_Router := T;
       end if;
index 96178d8a9349598cb5cf334d910dcef1b40ee16a..2497614787530c172c83d3e4187ec2d96ba85b00 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.13 $
+--  $Revision: 1.15 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use  Terminal_Interface.Curses.Aux;
@@ -55,14 +55,11 @@ package body Terminal_Interface.Curses.Forms.Field_User_Data is
                             Data : User_Access)
    is
       function Set_Field_Userptr (Fld : Field;
-                                  Usr : User_Access) return C_Int;
+                                  Usr : User_Access) return Eti_Error;
       pragma Import (C, Set_Field_Userptr, "set_field_userptr");
 
-      Res : constant Eti_Error := Set_Field_Userptr (Fld, Data);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Userptr (Fld, Data));
    end Set_User_Data;
    --  |
    --  |
index 84353eb557006a616878273c26e658b4126b3092..a8b7464326b6f47c14cb507b17eda61455f1ec90 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.13 $
+--  $Revision: 1.15 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 --  |
@@ -56,14 +56,11 @@ package body Terminal_Interface.Curses.Forms.Form_User_Data is
                             Data : User_Access)
    is
       function Set_Form_Userptr (Frm  : Form;
-                                 Data : User_Access)  return C_Int;
+                                 Data : User_Access)  return Eti_Error;
       pragma Import (C, Set_Form_Userptr, "set_form_userptr");
 
-      Res : constant Eti_Error := Set_Form_Userptr (Frm, Data);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Userptr (Frm, Data));
    end Set_User_Data;
    --  |
    --  |
index 915ed58418e0baffb06208c302e910019c679a22..3ed053ae1b688052d863eacc80d748cfcc71b049 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.28 $
---  $Date: 2011/03/22 23:37:32 $
+--  $Revision: 1.32 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
-with Ada.Unchecked_Conversion;
 
 with Interfaces.C; use Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
@@ -62,22 +61,6 @@ package body Terminal_Interface.Curses.Forms is
    --  |
    --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
 
-   function FOS_2_CInt is new
-     Ada.Unchecked_Conversion (Field_Option_Set,
-                               C_Int);
-
-   function CInt_2_FOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Field_Option_Set);
-
-   function FrmOS_2_CInt is new
-     Ada.Unchecked_Conversion (Form_Option_Set,
-                               C_Int);
-
-   function CInt_2_FrmOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Form_Option_Set);
-
    procedure Request_Name (Key  : Form_Request_Code;
                                 Name : out String)
    is
@@ -130,15 +113,11 @@ package body Terminal_Interface.Curses.Forms is
 --  |
    procedure Delete (Fld : in out Field)
    is
-      function Free_Field (Fld : Field) return C_Int;
+      function Free_Field (Fld : Field) return Eti_Error;
       pragma Import (C, Free_Field, "free_field");
 
-      Res : Eti_Error;
    begin
-      Res := Free_Field (Fld);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Free_Field (Fld));
       Fld := Null_Field;
    end Delete;
    --  |
@@ -194,16 +173,12 @@ package body Terminal_Interface.Curses.Forms is
                                 Just : Field_Justification := None)
    is
       function Set_Field_Just (Fld  : Field;
-                               Just : C_Int) return C_Int;
+                               Just : C_Int) return Eti_Error;
       pragma Import (C, Set_Field_Just, "set_field_just");
 
-      Res : constant Eti_Error :=
-        Set_Field_Just (Fld,
-                        C_Int (Field_Justification'Pos (Just)));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Just (Fld,
+                                     C_Int (Field_Justification'Pos (Just))));
    end Set_Justification;
    --  |
    --  |
@@ -227,22 +202,14 @@ package body Terminal_Interface.Curses.Forms is
       Buffer : Buffer_Number := Buffer_Number'First;
       Str    : String)
    is
-      type Char_Ptr is access all Interfaces.C.char;
       function Set_Fld_Buffer (Fld    : Field;
                                  Bufnum : C_Int;
-                                 S      : Char_Ptr)
-        return C_Int;
+                                 S      : char_array)
+        return Eti_Error;
       pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
 
-      Txt : char_array (0 .. Str'Length);
-      Len : size_t;
-      Res : Eti_Error;
    begin
-      To_C (Str, Txt, Len);
-      Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Fld_Buffer (Fld, C_Int (Buffer), To_C (Str)));
    end Set_Buffer;
    --  |
    --  |
@@ -276,12 +243,11 @@ package body Terminal_Interface.Curses.Forms is
                          Status : Boolean := True)
    is
       function Set_Fld_Status (Fld : Field;
-                               St  : C_Int) return C_Int;
+                               St  : C_Int) return Eti_Error;
       pragma Import (C, Set_Fld_Status, "set_field_status");
 
-      Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
    begin
-      if Res /= E_Ok then
+      if Set_Fld_Status (Fld, Boolean'Pos (Status)) /= E_Ok then
          raise Form_Exception;
       end if;
    end Set_Status;
@@ -308,14 +274,11 @@ package body Terminal_Interface.Curses.Forms is
                                Max : Natural := 0)
    is
       function Set_Field_Max (Fld : Field;
-                              M   : C_Int) return C_Int;
+                              M   : C_Int) return Eti_Error;
       pragma Import (C, Set_Field_Max, "set_max_field");
 
-      Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Max (Fld, C_Int (Max)));
    end Set_Maximum_Size;
    --  |
    --  |=====================================================================
@@ -328,16 +291,11 @@ package body Terminal_Interface.Curses.Forms is
                           Options : Field_Option_Set)
    is
       function Set_Field_Opts (Fld : Field;
-                               Opt : C_Int) return C_Int;
+                               Opt : Field_Option_Set) return Eti_Error;
       pragma Import (C, Set_Field_Opts, "set_field_opts");
 
-      Opt : constant C_Int := FOS_2_CInt (Options);
-      Res : Eti_Error;
    begin
-      Res := Set_Field_Opts (Fld, Opt);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Opts (Fld, Options));
    end Set_Options;
    --  |
    --  |
@@ -347,22 +305,17 @@ package body Terminal_Interface.Curses.Forms is
                              On      : Boolean := True)
    is
       function Field_Opts_On (Fld : Field;
-                              Opt : C_Int) return C_Int;
+                              Opt : Field_Option_Set) return Eti_Error;
       pragma Import (C, Field_Opts_On, "field_opts_on");
       function Field_Opts_Off (Fld : Field;
-                               Opt : C_Int) return C_Int;
+                               Opt : Field_Option_Set) return Eti_Error;
       pragma Import (C, Field_Opts_Off, "field_opts_off");
 
-      Err : Eti_Error;
-      Opt : constant C_Int := FOS_2_CInt (Options);
    begin
       if On then
-         Err := Field_Opts_On (Fld, Opt);
+         Eti_Exception (Field_Opts_On (Fld, Options));
       else
-         Err := Field_Opts_Off (Fld, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
+         Eti_Exception (Field_Opts_Off (Fld, Options));
       end if;
    end Switch_Options;
    --  |
@@ -371,12 +324,11 @@ package body Terminal_Interface.Curses.Forms is
    procedure Get_Options (Fld     : Field;
                           Options : out Field_Option_Set)
    is
-      function Field_Opts (Fld : Field) return C_Int;
+      function Field_Opts (Fld : Field) return Field_Option_Set;
       pragma Import (C, Field_Opts, "field_opts");
 
-      Res : constant C_Int := Field_Opts (Fld);
    begin
-      Options := CInt_2_FOS (Res);
+      Options := Field_Opts (Fld);
    end Get_Options;
    --  |
    --  |
@@ -402,18 +354,13 @@ package body Terminal_Interface.Curses.Forms is
       Color : Color_Pair := Color_Pair'First)
    is
       function Set_Field_Fore (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
+                               Attr : Attributed_Character) return Eti_Error;
       pragma Import (C, Set_Field_Fore, "set_field_fore");
 
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Fore);
-      Res : constant Eti_Error :=
-        Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch));
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Fore (Fld, (Ch    => Character'First,
+                                           Color => Color,
+                                           Attr  => Fore)));
    end Set_Foreground;
    --  |
    --  |
@@ -421,21 +368,21 @@ package body Terminal_Interface.Curses.Forms is
    procedure Foreground (Fld  : Field;
                          Fore : out Character_Attribute_Set)
    is
-      function Field_Fore (Fld : Field) return C_Chtype;
+      function Field_Fore (Fld : Field) return Attributed_Character;
       pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+      Fore := Field_Fore (Fld).Attr;
    end Foreground;
 
    procedure Foreground (Fld   : Field;
                          Fore  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Field_Fore (Fld : Field) return C_Chtype;
+      function Field_Fore (Fld : Field) return Attributed_Character;
       pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
+      Fore  := Field_Fore (Fld).Attr;
+      Color := Field_Fore (Fld).Color;
    end Foreground;
    --  |
    --  |
@@ -446,18 +393,13 @@ package body Terminal_Interface.Curses.Forms is
       Color : Color_Pair := Color_Pair'First)
    is
       function Set_Field_Back (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
+                               Attr : Attributed_Character) return Eti_Error;
       pragma Import (C, Set_Field_Back, "set_field_back");
 
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Back);
-      Res : constant Eti_Error :=
-        Set_Field_Back (Fld, AttrChar_To_Chtype (Ch));
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Back (Fld, (Ch    => Character'First,
+                                           Color => Color,
+                                           Attr  => Back)));
    end Set_Background;
    --  |
    --  |
@@ -465,21 +407,21 @@ package body Terminal_Interface.Curses.Forms is
    procedure Background (Fld  : Field;
                          Back : out Character_Attribute_Set)
    is
-      function Field_Back (Fld : Field) return C_Chtype;
+      function Field_Back (Fld : Field) return Attributed_Character;
       pragma Import (C, Field_Back, "field_back");
    begin
-      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+      Back := Field_Back (Fld).Attr;
    end Background;
 
    procedure Background (Fld   : Field;
                          Back  : out Character_Attribute_Set;
                          Color : out Color_Pair)
    is
-      function Field_Back (Fld : Field) return C_Chtype;
+      function Field_Back (Fld : Field) return Attributed_Character;
       pragma Import (C, Field_Back, "field_back");
    begin
-      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
+      Back  := Field_Back (Fld).Attr;
+      Color := Field_Back (Fld).Color;
    end Background;
    --  |
    --  |
@@ -488,15 +430,12 @@ package body Terminal_Interface.Curses.Forms is
                                 Pad : Character := Space)
    is
       function Set_Field_Pad (Fld : Field;
-                              Ch  : C_Int) return C_Int;
+                              Ch  : C_Int) return Eti_Error;
       pragma Import (C, Set_Field_Pad, "set_field_pad");
 
-      Res : constant Eti_Error := Set_Field_Pad (Fld,
-                                                 C_Int (Character'Pos (Pad)));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Pad (Fld,
+                                    C_Int (Character'Pos (Pad))));
    end Set_Pad_Character;
    --  |
    --  |
@@ -527,25 +466,21 @@ package body Terminal_Interface.Curses.Forms is
       type C_Int_Access is access all C_Int;
       function Fld_Info (Fld : Field;
                          L, C, Fr, Fc, Os, Ab : C_Int_Access)
-                         return C_Int;
+                         return Eti_Error;
       pragma Import (C, Fld_Info, "field_info");
 
       L, C, Fr, Fc, Os, Ab : aliased C_Int;
-      Res : constant Eti_Error := Fld_Info (Fld,
-                                            L'Access, C'Access,
-                                            Fr'Access, Fc'Access,
-                                            Os'Access, Ab'Access);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Lines              := Line_Count (L);
-         Columns            := Column_Count (C);
-         First_Row          := Line_Position (Fr);
-         First_Column       := Column_Position (Fc);
-         Off_Screen         := Natural (Os);
-         Additional_Buffers := Buffer_Number (Ab);
-      end if;
+      Eti_Exception (Fld_Info (Fld,
+                               L'Access, C'Access,
+                               Fr'Access, Fc'Access,
+                               Os'Access, Ab'Access));
+      Lines              := Line_Count (L);
+      Columns            := Column_Count (C);
+      First_Row          := Line_Position (Fr);
+      First_Column       := Column_Position (Fc);
+      Off_Screen         := Natural (Os);
+      Additional_Buffers := Buffer_Number (Ab);
    end Info;
 --  |
 --  |
@@ -556,21 +491,17 @@ package body Terminal_Interface.Curses.Forms is
                            Max     : out Natural)
    is
       type C_Int_Access is access all C_Int;
-      function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int;
+      function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return Eti_Error;
       pragma Import (C, Dyn_Info, "dynamic_field_info");
 
       L, C, M : aliased C_Int;
-      Res : constant Eti_Error := Dyn_Info (Fld,
-                                            L'Access, C'Access,
-                                            M'Access);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Lines   := Line_Count (L);
-         Columns := Column_Count (C);
-         Max     := Natural (M);
-      end if;
+      Eti_Exception (Dyn_Info (Fld,
+                               L'Access, C'Access,
+                               M'Access));
+      Lines   := Line_Count (L);
+      Columns := Column_Count (C);
+      Max     := Natural (M);
    end Dynamic_Info;
    --  |
    --  |=====================================================================
@@ -583,14 +514,11 @@ package body Terminal_Interface.Curses.Forms is
                          Win : Window)
    is
       function Set_Form_Win (Frm : Form;
-                             Win : Window) return C_Int;
+                             Win : Window) return Eti_Error;
       pragma Import (C, Set_Form_Win, "set_form_win");
 
-      Res : constant Eti_Error := Set_Form_Win (Frm, Win);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Win (Frm, Win));
    end Set_Window;
    --  |
    --  |
@@ -611,14 +539,11 @@ package body Terminal_Interface.Curses.Forms is
                              Win : Window)
    is
       function Set_Form_Sub (Frm : Form;
-                             Win : Window) return C_Int;
+                             Win : Window) return Eti_Error;
       pragma Import (C, Set_Form_Sub, "set_form_sub");
 
-      Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Sub (Frm, Win));
    end Set_Sub_Window;
    --  |
    --  |
@@ -640,16 +565,13 @@ package body Terminal_Interface.Curses.Forms is
                     Columns : out Column_Count)
    is
       type C_Int_Access is access all C_Int;
-      function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int;
+      function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return Eti_Error;
       pragma Import (C, M_Scale, "scale_form");
 
       X, Y : aliased C_Int;
-      Res  : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Lines := Line_Count (Y);
+      Eti_Exception (M_Scale (Frm, Y'Access, X'Access));
+      Lines   := Line_Count (Y);
       Columns := Column_Count (X);
    end Scale;
    --  |
@@ -663,14 +585,11 @@ package body Terminal_Interface.Curses.Forms is
                                   Proc : Form_Hook_Function)
    is
       function Set_Field_Init (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
+                               Proc : Form_Hook_Function) return Eti_Error;
       pragma Import (C, Set_Field_Init, "set_field_init");
 
-      Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Init (Frm, Proc));
    end Set_Field_Init_Hook;
    --  |
    --  |
@@ -679,14 +598,11 @@ package body Terminal_Interface.Curses.Forms is
                                   Proc : Form_Hook_Function)
    is
       function Set_Field_Term (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
+                               Proc : Form_Hook_Function) return Eti_Error;
       pragma Import (C, Set_Field_Term, "set_field_term");
 
-      Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Field_Term (Frm, Proc));
    end Set_Field_Term_Hook;
    --  |
    --  |
@@ -695,14 +611,11 @@ package body Terminal_Interface.Curses.Forms is
                                  Proc : Form_Hook_Function)
    is
       function Set_Form_Init (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
+                              Proc : Form_Hook_Function) return Eti_Error;
       pragma Import (C, Set_Form_Init, "set_form_init");
 
-      Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Init (Frm, Proc));
    end Set_Form_Init_Hook;
    --  |
    --  |
@@ -711,14 +624,11 @@ package body Terminal_Interface.Curses.Forms is
                                  Proc : Form_Hook_Function)
    is
       function Set_Form_Term (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
+                              Proc : Form_Hook_Function) return Eti_Error;
       pragma Import (C, Set_Form_Term, "set_form_term");
 
-      Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Term (Frm, Proc));
    end Set_Form_Term_Hook;
    --  |
    --  |=====================================================================
@@ -731,19 +641,15 @@ package body Terminal_Interface.Curses.Forms is
                        Flds : Field_Array_Access)
    is
       function Set_Frm_Fields (Frm   : Form;
-                               Items : System.Address) return C_Int;
+                               Items : System.Address) return Eti_Error;
       pragma Import (C, Set_Frm_Fields, "set_form_fields");
 
-      Res : Eti_Error;
    begin
       pragma Assert (Flds.all (Flds'Last) = Null_Field);
       if Flds.all (Flds'Last) /= Null_Field then
          raise Form_Exception;
       else
-         Res := Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address);
-         if  Res /= E_Ok then
-            Eti_Exception (Res);
-         end if;
+         Eti_Exception (Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address));
       end if;
    end Redefine;
    --  |
@@ -783,14 +689,11 @@ package body Terminal_Interface.Curses.Forms is
                    Line   : Line_Position;
                    Column : Column_Position)
    is
-      function Move (Fld : Field; L, C : C_Int) return C_Int;
+      function Move (Fld : Field; L, C : C_Int) return Eti_Error;
       pragma Import (C, Move, "move_field");
 
-      Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Move (Fld, C_Int (Line), C_Int (Column)));
    end Move;
    --  |
    --  |=====================================================================
@@ -822,14 +725,11 @@ package body Terminal_Interface.Curses.Forms is
    --  |
    procedure Delete (Frm : in out Form)
    is
-      function Free (Frm : Form) return C_Int;
+      function Free (Frm : Form) return Eti_Error;
       pragma Import (C, Free, "free_form");
 
-      Res : constant Eti_Error := Free (Frm);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Free (Frm));
       Frm := Null_Form;
    end Delete;
    --  |
@@ -843,16 +743,11 @@ package body Terminal_Interface.Curses.Forms is
                           Options : Form_Option_Set)
    is
       function Set_Form_Opts (Frm : Form;
-                              Opt : C_Int) return C_Int;
+                              Opt : Form_Option_Set) return Eti_Error;
       pragma Import (C, Set_Form_Opts, "set_form_opts");
 
-      Opt : constant C_Int := FrmOS_2_CInt (Options);
-      Res : Eti_Error;
    begin
-      Res := Set_Form_Opts (Frm, Opt);
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Form_Opts (Frm, Options));
    end Set_Options;
    --  |
    --  |
@@ -862,22 +757,17 @@ package body Terminal_Interface.Curses.Forms is
                              On      : Boolean := True)
    is
       function Form_Opts_On (Frm : Form;
-                             Opt : C_Int) return C_Int;
+                             Opt : Form_Option_Set) return Eti_Error;
       pragma Import (C, Form_Opts_On, "form_opts_on");
       function Form_Opts_Off (Frm : Form;
-                              Opt : C_Int) return C_Int;
+                              Opt : Form_Option_Set) return Eti_Error;
       pragma Import (C, Form_Opts_Off, "form_opts_off");
 
-      Err : Eti_Error;
-      Opt : constant C_Int := FrmOS_2_CInt (Options);
    begin
       if On then
-         Err := Form_Opts_On (Frm, Opt);
+         Eti_Exception (Form_Opts_On (Frm, Options));
       else
-         Err := Form_Opts_Off (Frm, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
+         Eti_Exception (Form_Opts_Off (Frm, Options));
       end if;
    end Switch_Options;
    --  |
@@ -886,12 +776,11 @@ package body Terminal_Interface.Curses.Forms is
    procedure Get_Options (Frm     : Form;
                           Options : out Form_Option_Set)
    is
-      function Form_Opts (Frm : Form) return C_Int;
+      function Form_Opts (Frm : Form) return Form_Option_Set;
       pragma Import (C, Form_Opts, "form_opts");
 
-      Res : constant C_Int := Form_Opts (Frm);
    begin
-      Options := CInt_2_FrmOS (Res);
+      Options := Form_Opts (Frm);
    end Get_Options;
    --  |
    --  |
@@ -913,20 +802,16 @@ package body Terminal_Interface.Curses.Forms is
    procedure Post (Frm  : Form;
                    Post : Boolean := True)
    is
-      function M_Post (Frm : Form) return C_Int;
+      function M_Post (Frm : Form) return Eti_Error;
       pragma Import (C, M_Post, "post_form");
-      function M_Unpost (Frm : Form) return C_Int;
+      function M_Unpost (Frm : Form) return Eti_Error;
       pragma Import (C, M_Unpost, "unpost_form");
 
-      Res : Eti_Error;
    begin
       if Post then
-         Res := M_Post (Frm);
+         Eti_Exception (M_Post (Frm));
       else
-         Res := M_Unpost (Frm);
-      end if;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+         Eti_Exception (M_Unpost (Frm));
       end if;
    end Post;
    --  |
@@ -938,14 +823,11 @@ package body Terminal_Interface.Curses.Forms is
    --  |
    procedure Position_Cursor (Frm : Form)
    is
-      function Pos_Form_Cursor (Frm : Form) return C_Int;
+      function Pos_Form_Cursor (Frm : Form) return Eti_Error;
       pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
 
-      Res : constant Eti_Error := Pos_Form_Cursor (Frm);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Pos_Form_Cursor (Frm));
    end Position_Cursor;
    --  |
    --  |=====================================================================
@@ -993,25 +875,22 @@ package body Terminal_Interface.Curses.Forms is
    function Driver (Frm : Form;
                     Key : Key_Code) return Driver_Result
    is
-      function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
+      function Frm_Driver (Frm : Form; Key : C_Int) return Eti_Error;
       pragma Import (C, Frm_Driver, "form_driver");
 
       R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
    begin
-      if R /= E_Ok then
-         if R = E_Unknown_Command then
+      case R is
+         when E_Unknown_Command =>
             return Unknown_Request;
-         elsif R = E_Invalid_Field then
+         when E_Invalid_Field =>
             return Invalid_Field;
-         elsif R = E_Request_Denied then
+         when E_Request_Denied =>
             return Request_Denied;
-         else
+         when others =>
             Eti_Exception (R);
             return Form_Ok;
-         end if;
-      else
-         return Form_Ok;
-      end if;
+      end case;
    end Driver;
    --  |
    --  |=====================================================================
@@ -1023,14 +902,11 @@ package body Terminal_Interface.Curses.Forms is
    procedure Set_Current (Frm : Form;
                           Fld : Field)
    is
-      function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
+      function Set_Current_Fld (Frm : Form; Fld : Field) return Eti_Error;
       pragma Import (C, Set_Current_Fld, "set_current_field");
 
-      Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Current_Fld (Frm, Fld));
    end Set_Current;
    --  |
    --  |
@@ -1053,14 +929,11 @@ package body Terminal_Interface.Curses.Forms is
    procedure Set_Page (Frm  : Form;
                        Page : Page_Number := Page_Number'First)
    is
-      function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
+      function Set_Frm_Page (Frm : Form; Pg : C_Int) return Eti_Error;
       pragma Import (C, Set_Frm_Page, "set_form_page");
 
-      Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Frm_Page (Frm, C_Int (Page)));
    end Set_Page;
    --  |
    --  |
@@ -1102,14 +975,11 @@ package body Terminal_Interface.Curses.Forms is
    procedure Set_New_Page (Fld      : Field;
                            New_Page : Boolean := True)
    is
-      function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
+      function Set_Page (Fld : Field; Flg : C_Int) return Eti_Error;
       pragma Import (C, Set_Page, "set_new_page");
 
-      Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Page (Fld, Boolean'Pos (New_Page)));
    end Set_New_Page;
    --  |
    --  |
index eb06d096dfb274b517011a4b9f3051c229ec050f..da26f80fa26e17bab13db28be88fa2148acf31d2 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.12 $
+--  $Revision: 1.14 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Interfaces.C;
@@ -49,14 +49,11 @@ package body Terminal_Interface.Curses.Menus.Item_User_Data is
                             Data : User_Access)
    is
       function Set_Item_Userptr (Itm  : Item;
-                                 Addr : User_Access)  return C_Int;
+                                 Addr : User_Access)  return Eti_Error;
       pragma Import (C, Set_Item_Userptr, "set_item_userptr");
 
-      Res : constant Eti_Error := Set_Item_Userptr (Itm, Data);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Item_Userptr (Itm, Data));
    end Set_User_Data;
 
    function Get_User_Data (Itm  : Item) return User_Access
index 7d66a8c052eed822e22b183662c15b4a45a6cb48..746e7b41555a524613e9d6e6cd10f0e5a85fffab 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2009,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            --
@@ -35,7 +35,7 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.13 $
+--  $Revision: 1.15 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
@@ -48,14 +48,12 @@ package body Terminal_Interface.Curses.Menus.Menu_User_Data is
                             Data : User_Access)
    is
       function Set_Menu_Userptr (Men  : Menu;
-                                 Data : User_Access)  return C_Int;
+                                 Data : User_Access)  return Eti_Error;
       pragma Import (C, Set_Menu_Userptr, "set_menu_userptr");
 
-      Res : constant Eti_Error := Set_Menu_Userptr (Men, Data);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
+      Eti_Exception (Set_Menu_Userptr (Men, Data));
+
    end Set_User_Data;
 
    function Get_User_Data (Men  : Menu) return User_Access
index a7dca07c287670c4d7dd96e79a992437e48504d7..ef3a0d3efa2a60b611c1a76aca9b108e8787c5ca 100644 (file)
@@ -7,7 +7,7 @@
 --                                 B O D Y                                  --
 --                                                                          --
 ------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+-- Copyright (c) 1998-2011,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            --
@@ -35,8 +35,8 @@
 ------------------------------------------------------------------------------
 --  Author:  Juergen Pfeifer, 1996
 --  Version Control:
---  $Revision: 1.28 $
---  $Date: 2011/03/22 23:38:12 $
+--  $Revision: 1.32 $
+--  $Date: 2014/05/24 21:31:05 $
 --  Binding Version 01.00
 ------------------------------------------------------------------------------
 with Ada.Unchecked_Deallocation;
@@ -46,8 +46,6 @@ with Interfaces.C; use Interfaces.C;
 with Interfaces.C.Strings; use Interfaces.C.Strings;
 with Interfaces.C.Pointers;
 
-with Ada.Unchecked_Conversion;
-
 package body Terminal_Interface.Curses.Menus is
 
    type C_Item_Array is array (Natural range <>) of aliased Item;
@@ -57,22 +55,6 @@ package body Terminal_Interface.Curses.Menus is
    use type System.Bit_Order;
    subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
 
-   function MOS_2_CInt is new
-     Ada.Unchecked_Conversion (Menu_Option_Set,
-                               C_Int);
-
-   function CInt_2_MOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Menu_Option_Set);
-
-   function IOS_2_CInt is new
-     Ada.Unchecked_Conversion (Item_Option_Set,
-                               C_Int);
-
-   function CInt_2_IOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Item_Option_Set);
-
 ------------------------------------------------------------------------------
    procedure Request_Name (Key  : Menu_Request_Code;
                            Name : out String)
@@