</HEAD>
<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
<H1>Ada95 Binding for ncurses</H1>
-The ncurses Ada95 binding is © 1996 by
-<A HREF="mailto:Juergen.Pfeifer@T-Online.de">Jürgen Pfeifer</A>.
+The ncurses Ada95 binding is © 1996-1999 by
+<A HREF="mailto:juergen.pfeifer@gmx.net">Jürgen Pfeifer</A>.
<P>
Permission is hereby granted to reproduce and distribute this
<HR SIZE=3 NOSHADE>
<H2>General Remarks</H2>
<UL>
-<LI>This document describes Version 00.92.00 of the binding.</LI>
+<LI>This document describes Version 01.00 of the binding.</LI>
<LI>The functionality is modelled to be compatible with the ncurses
package, a clone of the SVr4 curses model.<BR>
I did the development on an Intel box running
-<A HREF="http://www.linux.org">Linux</A> 1.3.x and 2.0,
-ncurses-1.9.9e and the
+<A HREF="http://www.linux.org">Linux</A> 1.3.x, 2.0, 2.2
+ncurses-4.x and the
<A HREF="http://www.gnat.com">GNU Ada Translator</A>
-gnat-3.05. For any older versions of ncurses and gnat
-it will not work.</LI>
+gnat versions 3.10p to 3.11p. For any older versions of ncurses and gnat
+it is not guaranteed to work.</LI>
<LI>You must have the m4 macroprocessor to build this package.
If you don't have this program, you can get the FSF version
<A HREF="ftp://prep.ai.mit.edu/pub/gnu/">here</A>.</LI>
an OO abstraction of the (n)curses functionality. As mentioned above
it's a thin binding for the (n)curses functions. But without any
doubt it would be nice to build on top of this an OO abstraction
-of (n)curses functionality.</LI>
-<LI>If you use the user-pointer mechanism for most of the ncurses
-structures in a mixed language environemt, i.e. Ada95 and C routines
-operate on the same objects, care must be taken because the Ada
-binding itself uses the user pointer mechanism for it's own purposes.
-See the corresponding <A HREF="#userpointer">section</A> in implementention
-details.</LI>
+of (n)curses functionality.<BR>
+The only exception is the method how fieldtypes are represented in
+this Binding. We provide an abstract tagged type Field_Type from
+which the various fieldtypes are derived.</LI>
<LI>I currently do not support the link_fieldtype functionality of the
forms subsystem.</LI>
<LI>The *_IO packages are currently output only.</LI>
<H2>Hierarchy of packages</H2>
<UL>
-<LI><A HREF="terminal_interface_s.html">Terminal_Interface</A>
- <UL><LI><A HREF="terminal_interface-curses_s.html">Curses</A>
- <UL><LI><A HREF="terminal_interface-curses-mouse_s.html">Mouse</A>
- <LI><A HREF="terminal_interface-curses-panels_s.html">Panels</A>
- <UL><LI><A HREF="terminal_interface-curses-panels-user_data_s.html">User_Data</A>
+<LI><A HREF="ada/terminal_interface__ads.htm">Terminal_Interface</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses__ads.htm">Curses</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-mouse__ads.htm">Mouse</A>
+ <LI><A HREF="ada/terminal_interface-curses-panels__ads.htm">Panels</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm">User_Data</A>
</UL>
- <LI><A HREF="terminal_interface-curses-menus_s.html">Menus</A>
- <UL><LI><A HREF="terminal_interface-curses-menus-menu_user_data_s.html">Menu_User_Data</A>
- <LI><A HREF="terminal_interface-curses-menus-item_user_data_s.html">Item_User_Data</A>
+ <LI><A HREF="ada/terminal_interface-curses-menus__ads.htm">Menus</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm">Menu_User_Data</A>
+ <LI><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm">Item_User_Data</A>
</UL>
- <LI><A HREF="terminal_interface-curses-forms_s.html">Forms</A>
- <UL><LI><A HREF="terminal_interface-curses-forms-form_user_data_s.html">Form_User_Data</A>
- <LI><A HREF="terminal_interface-curses-forms-field_user_data_s.html">Field_User_Data</A>
- <LI><A HREF="terminal_interface-curses-forms-field_types_s.html">Field_Types</A>
- <LI><A HREF="terminal_interface-curses-forms-choice_field_types_s.html">Choice_Field_Types</A>
- </UL>
- <LI><A HREF="terminal_interface-curses-text_io_s.html">Text_IO</A>
- <UL><LI><A HREF="terminal_interface-curses-text_io-integer_io_s.html">Integer_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-float_io_s.html">Float_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-fixed_io_s.html">Fixed_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-decimal_io_s.html">Decimal_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-modular_io_s.html">Modular_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-enumeration_io_s.html">Enumeration_IO</A>
- <LI><A HREF="terminal_interface-curses-text_io-complex_io_s.html">Complex_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms__ads.htm">Forms</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm">Form_User_Data</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm">Field_User_Data</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types__ads.htm">Field_Types</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-alpha__ads.htm">Alpha</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">AlphaNumeric</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-intfield__ads.htm">IntField</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-numeric__ads.htm">Numeric</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-regexp__ads.htm">RegExp</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">IPV4_Address</A>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm">Enumeration</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">Ada</A>
+ </UL>
+ <LI><A HREF="ada/terminal_interface-curses-forms-field_types-user__ads.htm">User</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm">Choice</A>
+ </UL>
+ </UL>
+ </UL>
+ <LI><A HREF="ada/terminal_interface-curses-text_io__ads.htm">Text_IO</A>
+ <UL><LI><A HREF="ada/terminal_interface-curses-text_io-integer_io__ads.htm">Integer_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-float_io__ads.htm">Float_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-fixed_io__ads.htm">Fixed_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-decimal_io__ads.htm">Decimal_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-modular_io__ads.htm">Modular_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-enumeration_io__ads.htm">Enumeration_IO</A>
+ <LI><A HREF="ada/terminal_interface-curses-text_io-complex_io__ads.htm">Complex_IO</A>
</UL>
</UL>
</UL>
</UL>
+If you want to navigate through the html pages of the package specs, click <A HREF="ada/index.htm">here</A>.
<H2>Implementation Details</H2>
<H4>Behind the abstraction</H4>
All the new types like <STRONG>Window</STRONG>, <STRONG>Panel</STRONG>,
<STRONG>MENU *</STRONG> or <STRONG>FORM *</STRONG>.
So you can safely pass them to C routines that expect a pointer
to one of those structures.
-<H4>Item and Field Arrays</H4>
-In C you have to pass the item and field arrays to define menus or forms
-terminated by a null item or null field. This is not necessary in this
-binding. The binding routines will construct from an Ada95 style array
-of Item or Field objects internally the properly terminated array of
-C structure pointers. See the examples for more details.
<H4>Extended ripoffline() usage</H4>
The official documentation of (n)curses says, that the line parameter
determines only whether or not exactly <STRONG>one</STRONG> line is
lines to steal. This mechanism is used in the <STRONG>Rip_Off_Lines</STRONG>
routine of the binding.
<A NAME="userpointer">
-<H4>User Pointer mechanism</H4>
-TBD
<H4>How user defined field types work</H4>
TBD
<H4>Enumeration fields handling</H4>
values.
<A NAME="compiler">
<H4>Using other Ada compilers</H4>
-This should basically not be a problem, but you have to replace a code
-sequence in package
-<A HREF="terminal_interface-curses-forms_s.html">Terminal_Interface.Curses.Forms</A>
-that uses a hashing package supplied with the GNAT runtime, which is not part
-of the Standard Ada runtimes. This should not be too hard. I intend to remove
-this dependency in the future.
+This should basically not be a problem.
<H4>Port to other curses implementations</H4>
Basically it should not be too hard to make all this run on a regular SVr4
implementation of curses. The problems are probably these:<BR>
</UL>
Most likely you will follow a mixed approach. Some features are easy to simulate,
others will be hard if not impossible.</LI>
-<LI>For menu items, the name and descriptions are internally copied by ncurses.
-So the binding doesn't care for the lifetime of the strings passed to the
-construction routine for items. This assumption is not true in most other implementations
-of the menu library. In this case you have to modify the binding routine
-<STRONG>New_Item</STRONG> to safestore the strings.</LI>
</UL>
I'm quite sure I forgot something.<P>
</BODY>