X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fada%2Fterminal_interface-curses-forms__adb.htm;h=305ba17653153af30ce9f8b6b80d6b356dab7420;hp=d8848eced9d886c042665c7ca4cd2994231cabc6;hb=761e4f0825b330e970558e82a4bd638383914429;hpb=b1f61d9f3aa244512045a6b02e759825d7049d34 diff --git a/doc/html/ada/terminal_interface-curses-forms__adb.htm b/doc/html/ada/terminal_interface-curses-forms__adb.htm index d8848ece..305ba176 100644 --- a/doc/html/ada/terminal_interface-curses-forms__adb.htm +++ b/doc/html/ada/terminal_interface-curses-forms__adb.htm @@ -1,1165 +1,1179 @@ -terminal_interface-curses-forms.adb + + + +terminal_interface-curses-forms.adb + + + -

File : terminal_interface-curses-forms.adb


+

File : terminal_interface-curses-forms.adb


-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Forms                     --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998 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: Jürgen Pfeifer <<juergen.pfeifer@gmx.net>> 1996
---  Version Control:
---  @Revision: 1.20 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
+------------------------------------------------------------------------------
+--                                                                          --
+--                           GNAT ncurses Binding                           --
+--                                                                          --
+--                      Terminal_Interface.Curses.Forms                     --
+--                                                                          --
+--                                 B O D Y                                  --
+--                                                                          --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              --
+--                                                                          --
+-- Permission is hereby granted, free of charge, to any person obtaining a  --
+-- copy of this software and associated documentation files (the            --
+-- "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:  Juergen Pfeifer, 1996
+--  Version Control:
+--  @Revision: 1.28 @
+--  @Date: 2011/03/22 23:37:32 @
+--  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;
-with Interfaces.C.Pointers;
+with Interfaces.C; use Interfaces.C;
+with Interfaces.C.Strings; use Interfaces.C.Strings;
+with Interfaces.C.Pointers;
 
-with Terminal_Interface.Curses.Aux;
+with Terminal_Interface.Curses.Aux;
 
-package body Terminal_Interface.Curses.Forms is
+package body Terminal_Interface.Curses.Forms is
 
-   use Terminal_Interface.Curses.Aux;
+   use Terminal_Interface.Curses.Aux;
 
-   type C_Field_Array is array (Natural range <>) of aliased Field;
-   package F_Array is new
-     Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
+   type C_Field_Array is array (Natural range <>) of aliased Field;
+   package F_Array is new
+     Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
 
-------------------------------------------------------------------------------
-   --  |
-   --  |
-   --  |
-   --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
+------------------------------------------------------------------------------
+   --  |
+   --  |
+   --  |
+   --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
 
-   function FOS_2_CInt is new
-     Ada.Unchecked_Conversion (Field_Option_Set,
-                               C_Int);
+   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 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 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);
+   function CInt_2_FrmOS is new
+     Ada.Unchecked_Conversion (C_Int,
+                               Form_Option_Set);
 
-   procedure Request_Name (Key  : in Form_Request_Code;
-                                Name : out String)
+   procedure Request_Name (Key  : Form_Request_Code;
+                                Name : out String)
    is
-      function Form_Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Form_Request_Name, "form_request_name");
+      function Form_Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Form_Request_Name, "form_request_name");
    begin
-      Fill_String (Form_Request_Name (C_Int (Key)), Name);
-   end Request_Name;
+      Fill_String (Form_Request_Name (C_Int (Key)), Name);
+   end Request_Name;
 
-   function Request_Name (Key : Form_Request_Code) return String
+   function Request_Name (Key : Form_Request_Code) return String
    is
-      function Form_Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Form_Request_Name, "form_request_name");
+      function Form_Request_Name (Key : C_Int) return chars_ptr;
+      pragma Import (C, Form_Request_Name, "form_request_name");
    begin
-      return Fill_String (Form_Request_Name (C_Int (Key)));
-   end Request_Name;
-------------------------------------------------------------------------------
-   --  |
-   --  |
-   --  |
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_new.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Create (Height       : Line_Count;
-                    Width        : Column_Count;
-                    Top          : Line_Position;
-                    Left         : Column_Position;
-                    Off_Screen   : Natural := 0;
-                    More_Buffers : Buffer_Number := Buffer_Number'First)
-                    return Field
+      return Fill_String (Form_Request_Name (C_Int (Key)));
+   end Request_Name;
+------------------------------------------------------------------------------
+   --  |
+   --  |
+   --  |
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_new.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Create (Height       : Line_Count;
+                    Width        : Column_Count;
+                    Top          : Line_Position;
+                    Left         : Column_Position;
+                    Off_Screen   : Natural := 0;
+                    More_Buffers : Buffer_Number := Buffer_Number'First)
+                    return Field
    is
-      function Newfield (H, W, T, L, O, M : C_Int) return Field;
-      pragma Import (C, Newfield, "new_field");
-      Fld : constant Field := Newfield (C_Int (Height), C_Int (Width),
-                                        C_Int (Top), C_Int (Left),
-                                        C_Int (Off_Screen),
-                                        C_Int (More_Buffers));
+      function Newfield (H, W, T, L, O, M : C_Int) return Field;
+      pragma Import (C, Newfield, "new_field");
+      Fld : constant Field := Newfield (C_Int (Height), C_Int (Width),
+                                        C_Int (Top), C_Int (Left),
+                                        C_Int (Off_Screen),
+                                        C_Int (More_Buffers));
    begin
-      if Fld = Null_Field then
-         raise Form_Exception;
+      if Fld = Null_Field then
+         raise Form_Exception;
       end if;
-      return Fld;
-   end Create;
---  |
---  |
---  |
-   procedure Delete (Fld : in out Field)
+      return Fld;
+   end Create;
+--  |
+--  |
+--  |
+   procedure Delete (Fld : in out Field)
    is
-      function Free_Field (Fld : Field) return C_Int;
-      pragma Import (C, Free_Field, "free_field");
+      function Free_Field (Fld : Field) return C_Int;
+      pragma Import (C, Free_Field, "free_field");
 
-      Res : Eti_Error;
+      Res : Eti_Error;
    begin
-      Res := Free_Field (Fld);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      Res := Free_Field (Fld);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-      Fld := Null_Field;
-   end Delete;
-   --  |
-   --  |
-   --  |
-   function Duplicate (Fld  : Field;
-                       Top  : Line_Position;
-                       Left : Column_Position) return Field
+      Fld := Null_Field;
+   end Delete;
+   --  |
+   --  |
+   --  |
+   function Duplicate (Fld  : Field;
+                       Top  : Line_Position;
+                       Left : Column_Position) return Field
    is
-      function Dup_Field (Fld  : Field;
-                          Top  : C_Int;
-                          Left : C_Int) return Field;
-      pragma Import (C, Dup_Field, "dup_field");
-
-      F : constant Field := Dup_Field (Fld,
-                                       C_Int (Top),
-                                       C_Int (Left));
+      function Dup_Field (Fld  : Field;
+                          Top  : C_Int;
+                          Left : C_Int) return Field;
+      pragma Import (C, Dup_Field, "dup_field");
+
+      F : constant Field := Dup_Field (Fld,
+                                       C_Int (Top),
+                                       C_Int (Left));
    begin
-      if F = Null_Field then
-         raise Form_Exception;
+      if F = Null_Field then
+         raise Form_Exception;
       end if;
-      return F;
-   end Duplicate;
-   --  |
-   --  |
-   --  |
-   function Link (Fld  : Field;
-                  Top  : Line_Position;
-                  Left : Column_Position) return Field
+      return F;
+   end Duplicate;
+   --  |
+   --  |
+   --  |
+   function Link (Fld  : Field;
+                  Top  : Line_Position;
+                  Left : Column_Position) return Field
    is
-      function Lnk_Field (Fld  : Field;
-                          Top  : C_Int;
-                          Left : C_Int) return Field;
-      pragma Import (C, Lnk_Field, "link_field");
-
-      F : constant Field := Lnk_Field (Fld,
-                                       C_Int (Top),
-                                       C_Int (Left));
+      function Lnk_Field (Fld  : Field;
+                          Top  : C_Int;
+                          Left : C_Int) return Field;
+      pragma Import (C, Lnk_Field, "link_field");
+
+      F : constant Field := Lnk_Field (Fld,
+                                       C_Int (Top),
+                                       C_Int (Left));
    begin
-      if F = Null_Field then
-         raise Form_Exception;
+      if F = Null_Field then
+         raise Form_Exception;
       end if;
-      return F;
-   end Link;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_just.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Justification (Fld  : in Field;
-                                Just : in Field_Justification := None)
+      return F;
+   end Link;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_just.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Justification (Fld  : Field;
+                                Just : Field_Justification := None)
    is
-      function Set_Field_Just (Fld  : Field;
-                               Just : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Just, "set_field_just");
+      function Set_Field_Just (Fld  : Field;
+                               Just : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Just, "set_field_just");
 
-      Res : constant Eti_Error :=
-        Set_Field_Just (Fld,
-                        C_Int (Field_Justification'Pos (Just)));
+      Res : constant Eti_Error :=
+        Set_Field_Just (Fld,
+                        C_Int (Field_Justification'Pos (Just)));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Justification;
-   --  |
-   --  |
-   --  |
-   function Get_Justification (Fld : Field) return Field_Justification
+   end Set_Justification;
+   --  |
+   --  |
+   --  |
+   function Get_Justification (Fld : Field) return Field_Justification
    is
-      function Field_Just (Fld : Field) return C_Int;
-      pragma Import (C, Field_Just, "field_just");
+      function Field_Just (Fld : Field) return C_Int;
+      pragma Import (C, Field_Just, "field_just");
    begin
-      return Field_Justification'Val (Field_Just (Fld));
-   end Get_Justification;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_buffer.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Buffer
-     (Fld    : in Field;
-      Buffer : in Buffer_Number := Buffer_Number'First;
-      Str    : in String)
+      return Field_Justification'Val (Field_Just (Fld));
+   end Get_Justification;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_buffer.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Buffer
+     (Fld    : Field;
+      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;
-      pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
-
-      Txt : char_array (0 .. Str'Length);
-      Len : size_t;
-      Res : Eti_Error;
+      type Char_Ptr is access all Interfaces.C.char;
+      function Set_Fld_Buffer (Fld    : Field;
+                                 Bufnum : C_Int;
+                                 S      : Char_Ptr)
+        return C_Int;
+      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);
+      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;
-   end Set_Buffer;
-   --  |
-   --  |
-   --  |
-   procedure Get_Buffer
-     (Fld    : in Field;
-      Buffer : in Buffer_Number := Buffer_Number'First;
-      Str    : out String)
+   end Set_Buffer;
+   --  |
+   --  |
+   --  |
+   procedure Get_Buffer
+     (Fld    : Field;
+      Buffer : Buffer_Number := Buffer_Number'First;
+      Str    : out String)
    is
-      function Field_Buffer (Fld : Field;
-                             B   : C_Int) return chars_ptr;
-      pragma Import (C, Field_Buffer, "field_buffer");
+      function Field_Buffer (Fld : Field;
+                             B   : C_Int) return chars_ptr;
+      pragma Import (C, Field_Buffer, "field_buffer");
    begin
-      Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str);
-   end Get_Buffer;
+      Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str);
+   end Get_Buffer;
 
-   function Get_Buffer
-     (Fld    : in Field;
-      Buffer : in Buffer_Number := Buffer_Number'First) return String
+   function Get_Buffer
+     (Fld    : Field;
+      Buffer : Buffer_Number := Buffer_Number'First) return String
    is
-      function Field_Buffer (Fld : Field;
-                             B   : C_Int) return chars_ptr;
-      pragma Import (C, Field_Buffer, "field_buffer");
+      function Field_Buffer (Fld : Field;
+                             B   : C_Int) return chars_ptr;
+      pragma Import (C, Field_Buffer, "field_buffer");
    begin
-      return Fill_String (Field_Buffer (Fld, C_Int (Buffer)));
-   end Get_Buffer;
-   --  |
-   --  |
-   --  |
-   procedure Set_Status (Fld    : in Field;
-                         Status : in Boolean := True)
+      return Fill_String (Field_Buffer (Fld, C_Int (Buffer)));
+   end Get_Buffer;
+   --  |
+   --  |
+   --  |
+   procedure Set_Status (Fld    : Field;
+                         Status : Boolean := True)
    is
-      function Set_Fld_Status (Fld : Field;
-                               St  : C_Int) return C_Int;
-      pragma Import (C, Set_Fld_Status, "set_field_status");
+      function Set_Fld_Status (Fld : Field;
+                               St  : C_Int) return C_Int;
+      pragma Import (C, Set_Fld_Status, "set_field_status");
 
-      Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
+      Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
    begin
-      if Res /= E_Ok then
-         raise Form_Exception;
+      if Res /= E_Ok then
+         raise Form_Exception;
       end if;
-   end Set_Status;
-   --  |
-   --  |
-   --  |
-   function Changed (Fld : Field) return Boolean
+   end Set_Status;
+   --  |
+   --  |
+   --  |
+   function Changed (Fld : Field) return Boolean
    is
-      function Field_Status (Fld : Field) return C_Int;
-      pragma Import (C, Field_Status, "field_status");
+      function Field_Status (Fld : Field) return C_Int;
+      pragma Import (C, Field_Status, "field_status");
 
-      Res : constant C_Int := Field_Status (Fld);
+      Res : constant C_Int := Field_Status (Fld);
    begin
-      if Res = Curses_False then
+      if Res = Curses_False then
          return False;
       else
          return True;
       end if;
-   end Changed;
-   --  |
-   --  |
-   --  |
-   procedure Set_Maximum_Size (Fld : in Field;
-                               Max : in Natural := 0)
+   end Changed;
+   --  |
+   --  |
+   --  |
+   procedure Set_Maximum_Size (Fld : Field;
+                               Max : Natural := 0)
    is
-      function Set_Field_Max (Fld : Field;
-                              M   : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Max, "set_max_field");
+      function Set_Field_Max (Fld : Field;
+                              M   : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Max, "set_max_field");
 
-      Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
+      Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Maximum_Size;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_opts.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Options (Fld     : in Field;
-                          Options : in Field_Option_Set)
+   end Set_Maximum_Size;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_opts.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Options (Fld     : Field;
+                          Options : Field_Option_Set)
    is
-      function Set_Field_Opts (Fld : Field;
-                               Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Opts, "set_field_opts");
+      function Set_Field_Opts (Fld : Field;
+                               Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Opts, "set_field_opts");
 
-      Opt : C_Int := FOS_2_CInt (Options);
-      Res : Eti_Error;
+      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);
+      Res := Set_Field_Opts (Fld, Opt);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Options;
-   --  |
-   --  |
-   --  |
-   procedure Switch_Options (Fld     : in Field;
-                             Options : in Field_Option_Set;
-                             On      : Boolean := True)
+   end Set_Options;
+   --  |
+   --  |
+   --  |
+   procedure Switch_Options (Fld     : Field;
+                             Options : Field_Option_Set;
+                             On      : Boolean := True)
    is
-      function Field_Opts_On (Fld : Field;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Field_Opts_On, "field_opts_on");
-      function Field_Opts_Off (Fld : Field;
-                               Opt : C_Int) return C_Int;
-      pragma Import (C, Field_Opts_Off, "field_opts_off");
-
-      Err : Eti_Error;
-      Opt : C_Int := FOS_2_CInt (Options);
+      function Field_Opts_On (Fld : Field;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Field_Opts_On, "field_opts_on");
+      function Field_Opts_Off (Fld : Field;
+                               Opt : C_Int) return C_Int;
+      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);
+      if On then
+         Err := Field_Opts_On (Fld, Opt);
       else
-         Err := Field_Opts_Off (Fld, Opt);
+         Err := Field_Opts_Off (Fld, Opt);
       end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
+      if Err /= E_Ok then
+         Eti_Exception (Err);
       end if;
-   end Switch_Options;
-   --  |
-   --  |
-   --  |
-   procedure Get_Options (Fld     : in  Field;
-                          Options : out Field_Option_Set)
+   end Switch_Options;
+   --  |
+   --  |
+   --  |
+   procedure Get_Options (Fld     : Field;
+                          Options : out Field_Option_Set)
    is
-      function Field_Opts (Fld : Field) return C_Int;
-      pragma Import (C, Field_Opts, "field_opts");
+      function Field_Opts (Fld : Field) return C_Int;
+      pragma Import (C, Field_Opts, "field_opts");
 
-      Res : C_Int := Field_Opts (Fld);
+      Res : constant C_Int := Field_Opts (Fld);
    begin
-      Options := CInt_2_FOS (Res);
-   end Get_Options;
-   --  |
-   --  |
-   --  |
-   function Get_Options (Fld : Field := Null_Field)
-                         return Field_Option_Set
+      Options := CInt_2_FOS (Res);
+   end Get_Options;
+   --  |
+   --  |
+   --  |
+   function Get_Options (Fld : Field := Null_Field)
+                         return Field_Option_Set
    is
-      Fos : Field_Option_Set;
+      Fos : Field_Option_Set;
    begin
-      Get_Options (Fld, Fos);
-      return Fos;
-   end Get_Options;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_attributes.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Foreground
-     (Fld   : in Field;
-      Fore  : in Character_Attribute_Set := Normal_Video;
-      Color : in Color_Pair := Color_Pair'First)
+      Get_Options (Fld, Fos);
+      return Fos;
+   end Get_Options;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_attributes.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Foreground
+     (Fld   : Field;
+      Fore  : Character_Attribute_Set := Normal_Video;
+      Color : Color_Pair := Color_Pair'First)
    is
-      function Set_Field_Fore (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
-      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));
+      function Set_Field_Fore (Fld  : Field;
+                               Attr : C_Chtype) return C_Int;
+      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);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Foreground;
-   --  |
-   --  |
-   --  |
-   procedure Foreground (Fld  : in  Field;
-                         Fore : out Character_Attribute_Set)
+   end Set_Foreground;
+   --  |
+   --  |
+   --  |
+   procedure Foreground (Fld  : Field;
+                         Fore : out Character_Attribute_Set)
    is
-      function Field_Fore (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Fore, "field_fore");
+      function Field_Fore (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
-   end Foreground;
+      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+   end Foreground;
 
-   procedure Foreground (Fld   : in  Field;
-                         Fore  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
+   procedure Foreground (Fld   : Field;
+                         Fore  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
    is
-      function Field_Fore (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Fore, "field_fore");
+      function Field_Fore (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Fore, "field_fore");
    begin
-      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
-   end Foreground;
-   --  |
-   --  |
-   --  |
-   procedure Set_Background
-     (Fld   : in Field;
-      Back  : in Character_Attribute_Set := Normal_Video;
-      Color : in Color_Pair := Color_Pair'First)
+      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
+   end Foreground;
+   --  |
+   --  |
+   --  |
+   procedure Set_Background
+     (Fld   : Field;
+      Back  : Character_Attribute_Set := Normal_Video;
+      Color : Color_Pair := Color_Pair'First)
    is
-      function Set_Field_Back (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
-      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));
+      function Set_Field_Back (Fld  : Field;
+                               Attr : C_Chtype) return C_Int;
+      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);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Background;
-   --  |
-   --  |
-   --  |
-   procedure Background (Fld  : in  Field;
-                         Back : out Character_Attribute_Set)
+   end Set_Background;
+   --  |
+   --  |
+   --  |
+   procedure Background (Fld  : Field;
+                         Back : out Character_Attribute_Set)
    is
-      function Field_Back (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Back, "field_back");
+      function Field_Back (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Back, "field_back");
    begin
-      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
-   end Background;
+      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+   end Background;
 
-   procedure Background (Fld   : in  Field;
-                         Back  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
+   procedure Background (Fld   : Field;
+                         Back  : out Character_Attribute_Set;
+                         Color : out Color_Pair)
    is
-      function Field_Back (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Back, "field_back");
+      function Field_Back (Fld : Field) return C_Chtype;
+      pragma Import (C, Field_Back, "field_back");
    begin
-      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
-   end Background;
-   --  |
-   --  |
-   --  |
-   procedure Set_Pad_Character (Fld : in Field;
-                                Pad : in Character := Space)
+      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
+      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
+   end Background;
+   --  |
+   --  |
+   --  |
+   procedure Set_Pad_Character (Fld : Field;
+                                Pad : Character := Space)
    is
-      function Set_Field_Pad (Fld : Field;
-                              Ch  : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Pad, "set_field_pad");
+      function Set_Field_Pad (Fld : Field;
+                              Ch  : C_Int) return C_Int;
+      pragma Import (C, Set_Field_Pad, "set_field_pad");
 
-      Res : constant Eti_Error := Set_Field_Pad (Fld,
-                                                 C_Int (Character'Pos (Pad)));
+      Res : constant Eti_Error := Set_Field_Pad (Fld,
+                                                 C_Int (Character'Pos (Pad)));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Pad_Character;
-   --  |
-   --  |
-   --  |
-   procedure Pad_Character (Fld : in  Field;
-                            Pad : out Character)
+   end Set_Pad_Character;
+   --  |
+   --  |
+   --  |
+   procedure Pad_Character (Fld : Field;
+                            Pad : out Character)
    is
-      function Field_Pad (Fld : Field) return C_Int;
-      pragma Import (C, Field_Pad, "field_pad");
+      function Field_Pad (Fld : Field) return C_Int;
+      pragma Import (C, Field_Pad, "field_pad");
    begin
-      Pad := Character'Val (Field_Pad (Fld));
-   end Pad_Character;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_info.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Info (Fld                : in  Field;
-                   Lines              : out Line_Count;
-                   Columns            : out Column_Count;
-                   First_Row          : out Line_Position;
-                   First_Column       : out Column_Position;
-                   Off_Screen         : out Natural;
-                   Additional_Buffers : out Buffer_Number)
+      Pad := Character'Val (Field_Pad (Fld));
+   end Pad_Character;
+   --  |
+   --  |=====================================================================
+   --  | man page form_field_info.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Info (Fld                : Field;
+                   Lines              : out Line_Count;
+                   Columns            : out Column_Count;
+                   First_Row          : out Line_Position;
+                   First_Column       : out Column_Position;
+                   Off_Screen         : out Natural;
+                   Additional_Buffers : out Buffer_Number)
    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;
-      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);
+      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;
+      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);
+      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);
+         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;
-   end Info;
---  |
---  |
---  |
-   procedure Dynamic_Info (Fld     : in Field;
-                           Lines   : out Line_Count;
-                           Columns : out Column_Count;
-                           Max     : out Natural)
+   end Info;
+--  |
+--  |
+--  |
+   procedure Dynamic_Info (Fld     : Field;
+                           Lines   : out Line_Count;
+                           Columns : out Column_Count;
+                           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;
-      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);
+      type C_Int_Access is access all C_Int;
+      function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int;
+      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);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       else
-         Lines   := Line_Count (L);
-         Columns := Column_Count (C);
-         Max     := Natural (M);
+         Lines   := Line_Count (L);
+         Columns := Column_Count (C);
+         Max     := Natural (M);
       end if;
-   end Dynamic_Info;
-   --  |
-   --  |=====================================================================
-   --  | man page form_win.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Window (Frm : in Form;
-                         Win : in Window)
+   end Dynamic_Info;
+   --  |
+   --  |=====================================================================
+   --  | man page form_win.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Window (Frm : Form;
+                         Win : Window)
    is
-      function Set_Form_Win (Frm : Form;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Form_Win, "set_form_win");
+      function Set_Form_Win (Frm : Form;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Form_Win, "set_form_win");
 
-      Res : constant Eti_Error := Set_Form_Win (Frm, Win);
+      Res : constant Eti_Error := Set_Form_Win (Frm, Win);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Window;
-   --  |
-   --  |
-   --  |
-   function Get_Window (Frm : Form) return Window
+   end Set_Window;
+   --  |
+   --  |
+   --  |
+   function Get_Window (Frm : Form) return Window
    is
-      function Form_Win (Frm : Form) return Window;
-      pragma Import (C, Form_Win, "form_win");
+      function Form_Win (Frm : Form) return Window;
+      pragma Import (C, Form_Win, "form_win");
 
-      W : constant Window := Form_Win (Frm);
+      W : constant Window := Form_Win (Frm);
    begin
-      return W;
-   end Get_Window;
-   --  |
-   --  |
-   --  |
-   procedure Set_Sub_Window (Frm : in Form;
-                             Win : in Window)
+      return W;
+   end Get_Window;
+   --  |
+   --  |
+   --  |
+   procedure Set_Sub_Window (Frm : Form;
+                             Win : Window)
    is
-      function Set_Form_Sub (Frm : Form;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Form_Sub, "set_form_sub");
+      function Set_Form_Sub (Frm : Form;
+                             Win : Window) return C_Int;
+      pragma Import (C, Set_Form_Sub, "set_form_sub");
 
-      Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
+      Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Sub_Window;
-   --  |
-   --  |
-   --  |
-   function Get_Sub_Window (Frm : Form) return Window
+   end Set_Sub_Window;
+   --  |
+   --  |
+   --  |
+   function Get_Sub_Window (Frm : Form) return Window
    is
-      function Form_Sub (Frm : Form) return Window;
-      pragma Import (C, Form_Sub, "form_sub");
+      function Form_Sub (Frm : Form) return Window;
+      pragma Import (C, Form_Sub, "form_sub");
 
-      W : constant Window := Form_Sub (Frm);
+      W : constant Window := Form_Sub (Frm);
    begin
-      return W;
-   end Get_Sub_Window;
-   --  |
-   --  |
-   --  |
-   procedure Scale (Frm     : in Form;
-                    Lines   : out Line_Count;
-                    Columns : out Column_Count)
+      return W;
+   end Get_Sub_Window;
+   --  |
+   --  |
+   --  |
+   procedure Scale (Frm     : Form;
+                    Lines   : out Line_Count;
+                    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;
-      pragma Import (C, M_Scale, "scale_form");
+      type C_Int_Access is access all C_Int;
+      function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int;
+      pragma Import (C, M_Scale, "scale_form");
 
-      X, Y : aliased C_Int;
-      Res  : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access);
+      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);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-      Lines := Line_Count (Y);
-      Columns := Column_Count (X);
-   end Scale;
-   --  |
-   --  |=====================================================================
-   --  | man page menu_hook.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Field_Init_Hook (Frm  : in Form;
-                                  Proc : in Form_Hook_Function)
+      Lines := Line_Count (Y);
+      Columns := Column_Count (X);
+   end Scale;
+   --  |
+   --  |=====================================================================
+   --  | man page menu_hook.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Field_Init_Hook (Frm  : Form;
+                                  Proc : Form_Hook_Function)
    is
-      function Set_Field_Init (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Field_Init, "set_field_init");
+      function Set_Field_Init (Frm  : Form;
+                               Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Field_Init, "set_field_init");
 
-      Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
+      Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Field_Init_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Field_Term_Hook (Frm  : in Form;
-                                  Proc : in Form_Hook_Function)
+   end Set_Field_Init_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Field_Term_Hook (Frm  : Form;
+                                  Proc : Form_Hook_Function)
    is
-      function Set_Field_Term (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Field_Term, "set_field_term");
+      function Set_Field_Term (Frm  : Form;
+                               Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Field_Term, "set_field_term");
 
-      Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
+      Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Field_Term_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Form_Init_Hook (Frm  : in Form;
-                                 Proc : in Form_Hook_Function)
+   end Set_Field_Term_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Form_Init_Hook (Frm  : Form;
+                                 Proc : Form_Hook_Function)
    is
-      function Set_Form_Init (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Form_Init, "set_form_init");
+      function Set_Form_Init (Frm  : Form;
+                              Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Form_Init, "set_form_init");
 
-      Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
+      Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Form_Init_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Form_Term_Hook (Frm  : in Form;
-                                 Proc : in Form_Hook_Function)
+   end Set_Form_Init_Hook;
+   --  |
+   --  |
+   --  |
+   procedure Set_Form_Term_Hook (Frm  : Form;
+                                 Proc : Form_Hook_Function)
    is
-      function Set_Form_Term (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Form_Term, "set_form_term");
+      function Set_Form_Term (Frm  : Form;
+                              Proc : Form_Hook_Function) return C_Int;
+      pragma Import (C, Set_Form_Term, "set_form_term");
 
-      Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
+      Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Form_Term_Hook;
-   --  |
-   --  |=====================================================================
-   --  | man page form_fields.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Redefine (Frm  : in Form;
-                       Flds : in Field_Array_Access)
+   end Set_Form_Term_Hook;
+   --  |
+   --  |=====================================================================
+   --  | man page form_fields.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Redefine (Frm  : Form;
+                       Flds : Field_Array_Access)
    is
-      function Set_Frm_Fields (Frm   : Form;
-                               Items : System.Address) return C_Int;
-      pragma Import (C, Set_Frm_Fields, "set_form_fields");
+      function Set_Frm_Fields (Frm   : Form;
+                               Items : System.Address) return C_Int;
+      pragma Import (C, Set_Frm_Fields, "set_form_fields");
 
-      Res : Eti_Error;
+      Res : Eti_Error;
    begin
-      pragma Assert (Flds (Flds'Last) = Null_Field);
-      if Flds (Flds'Last) /= Null_Field then
-         raise Form_Exception;
+      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 (Flds'First)'Address);
-         if  Res /= E_Ok then
-            Eti_Exception (Res);
+         Res := Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address);
+         if  Res /= E_Ok then
+            Eti_Exception (Res);
          end if;
       end if;
-   end Redefine;
-   --  |
-   --  |
-   --  |
-   function Fields (Frm   : Form;
-                    Index : Positive) return Field
+   end Redefine;
+   --  |
+   --  |
+   --  |
+   function Fields (Frm   : Form;
+                    Index : Positive) return Field
    is
-      use F_Array;
+      use F_Array;
 
-      function C_Fields (Frm : Form) return Pointer;
-      pragma Import (C, C_Fields, "form_fields");
+      function C_Fields (Frm : Form) return Pointer;
+      pragma Import (C, C_Fields, "form_fields");
 
-      P : Pointer := C_Fields (Frm);
+      P : Pointer := C_Fields (Frm);
    begin
-      if P = null or else Index not in 1 .. Field_Count (Frm) then
-         raise Form_Exception;
+      if P = null or else Index > Field_Count (Frm) then
+         raise Form_Exception;
       else
-         P := P + ptrdiff_t (C_Int (Index) - 1);
+         P := P + ptrdiff_t (C_Int (Index) - 1);
          return P.all;
       end if;
-   end Fields;
-   --  |
-   --  |
-   --  |
-   function Field_Count (Frm : Form) return Natural
+   end Fields;
+   --  |
+   --  |
+   --  |
+   function Field_Count (Frm : Form) return Natural
    is
-      function Count (Frm : Form) return C_Int;
-      pragma Import (C, Count, "field_count");
+      function Count (Frm : Form) return C_Int;
+      pragma Import (C, Count, "field_count");
    begin
-      return Natural (Count (Frm));
-   end Field_Count;
-   --  |
-   --  |
-   --  |
-   procedure Move (Fld    : in Field;
-                   Line   : in Line_Position;
-                   Column : in Column_Position)
+      return Natural (Count (Frm));
+   end Field_Count;
+   --  |
+   --  |
+   --  |
+   procedure Move (Fld    : Field;
+                   Line   : Line_Position;
+                   Column : Column_Position)
    is
-      function Move (Fld : Field; L, C : C_Int) return C_Int;
-      pragma Import (C, Move, "move_field");
+      function Move (Fld : Field; L, C : C_Int) return C_Int;
+      pragma Import (C, Move, "move_field");
 
-      Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
+      Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Move;
-   --  |
-   --  |=====================================================================
-   --  | man page form_new.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Create (Fields : Field_Array_Access) return Form
+   end Move;
+   --  |
+   --  |=====================================================================
+   --  | man page form_new.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Create (Fields : Field_Array_Access) return Form
    is
-      function NewForm (Fields : System.Address) return Form;
-      pragma Import (C, NewForm, "new_form");
+      function NewForm (Fields : System.Address) return Form;
+      pragma Import (C, NewForm, "new_form");
 
-      M   : Form;
+      M   : Form;
    begin
-      pragma Assert (Fields (Fields'Last) = Null_Field);
-      if Fields (Fields'Last) /= Null_Field then
-         raise Form_Exception;
+      pragma Assert (Fields.all (Fields'Last) = Null_Field);
+      if Fields.all (Fields'Last) /= Null_Field then
+         raise Form_Exception;
       else
-         M := NewForm (Fields (Fields'First)'Address);
-         if M = Null_Form then
-            raise Form_Exception;
+         M := NewForm (Fields.all (Fields'First)'Address);
+         if M = Null_Form then
+            raise Form_Exception;
          end if;
-         return M;
+         return M;
       end if;
-   end Create;
-   --  |
-   --  |
-   --  |
-   procedure Delete (Frm : in out Form)
+   end Create;
+   --  |
+   --  |
+   --  |
+   procedure Delete (Frm : in out Form)
    is
-      function Free (Frm : Form) return C_Int;
-      pragma Import (C, Free, "free_form");
+      function Free (Frm : Form) return C_Int;
+      pragma Import (C, Free, "free_form");
 
-      Res : constant Eti_Error := Free (Frm);
+      Res : constant Eti_Error := Free (Frm);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-      Frm := Null_Form;
-   end Delete;
-   --  |
-   --  |=====================================================================
-   --  | man page form_opts.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Options (Frm     : in Form;
-                          Options : in Form_Option_Set)
+      Frm := Null_Form;
+   end Delete;
+   --  |
+   --  |=====================================================================
+   --  | man page form_opts.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Options (Frm     : Form;
+                          Options : Form_Option_Set)
    is
-      function Set_Form_Opts (Frm : Form;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Form_Opts, "set_form_opts");
+      function Set_Form_Opts (Frm : Form;
+                              Opt : C_Int) return C_Int;
+      pragma Import (C, Set_Form_Opts, "set_form_opts");
 
-      Opt : C_Int := FrmOS_2_CInt (Options);
-      Res : Eti_Error;
+      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);
+      Res := Set_Form_Opts (Frm, Opt);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Options;
-   --  |
-   --  |
-   --  |
-   procedure Switch_Options (Frm     : in Form;
-                             Options : in Form_Option_Set;
-                             On      : Boolean := True)
+   end Set_Options;
+   --  |
+   --  |
+   --  |
+   procedure Switch_Options (Frm     : Form;
+                             Options : Form_Option_Set;
+                             On      : Boolean := True)
    is
-      function Form_Opts_On (Frm : Form;
-                             Opt : C_Int) return C_Int;
-      pragma Import (C, Form_Opts_On, "form_opts_on");
-      function Form_Opts_Off (Frm : Form;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Form_Opts_Off, "form_opts_off");
-
-      Err : Eti_Error;
-      Opt : C_Int := FrmOS_2_CInt (Options);
+      function Form_Opts_On (Frm : Form;
+                             Opt : C_Int) return C_Int;
+      pragma Import (C, Form_Opts_On, "form_opts_on");
+      function Form_Opts_Off (Frm : Form;
+                              Opt : C_Int) return C_Int;
+      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);
+      if On then
+         Err := Form_Opts_On (Frm, Opt);
       else
-         Err := Form_Opts_Off (Frm, Opt);
+         Err := Form_Opts_Off (Frm, Opt);
       end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
+      if Err /= E_Ok then
+         Eti_Exception (Err);
       end if;
-   end Switch_Options;
-   --  |
-   --  |
-   --  |
-   procedure Get_Options (Frm     : in  Form;
-                          Options : out Form_Option_Set)
+   end Switch_Options;
+   --  |
+   --  |
+   --  |
+   procedure Get_Options (Frm     : Form;
+                          Options : out Form_Option_Set)
    is
-      function Form_Opts (Frm : Form) return C_Int;
-      pragma Import (C, Form_Opts, "form_opts");
+      function Form_Opts (Frm : Form) return C_Int;
+      pragma Import (C, Form_Opts, "form_opts");
 
-      Res : C_Int := Form_Opts (Frm);
+      Res : constant C_Int := Form_Opts (Frm);
    begin
-      Options := CInt_2_FrmOS (Res);
-   end Get_Options;
-   --  |
-   --  |
-   --  |
-   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set
+      Options := CInt_2_FrmOS (Res);
+   end Get_Options;
+   --  |
+   --  |
+   --  |
+   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set
    is
-      Fos : Form_Option_Set;
+      Fos : Form_Option_Set;
    begin
-      Get_Options (Frm, Fos);
-      return Fos;
-   end Get_Options;
-   --  |
-   --  |=====================================================================
-   --  | man page form_post.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Post (Frm  : in Form;
-                   Post : in Boolean := True)
+      Get_Options (Frm, Fos);
+      return Fos;
+   end Get_Options;
+   --  |
+   --  |=====================================================================
+   --  | man page form_post.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Post (Frm  : Form;
+                   Post : Boolean := True)
    is
-      function M_Post (Frm : Form) return C_Int;
-      pragma Import (C, M_Post, "post_form");
-      function M_Unpost (Frm : Form) return C_Int;
-      pragma Import (C, M_Unpost, "unpost_form");
+      function M_Post (Frm : Form) return C_Int;
+      pragma Import (C, M_Post, "post_form");
+      function M_Unpost (Frm : Form) return C_Int;
+      pragma Import (C, M_Unpost, "unpost_form");
 
-      Res : Eti_Error;
+      Res : Eti_Error;
    begin
-      if Post then
-         Res := M_Post (Frm);
+      if Post then
+         Res := M_Post (Frm);
       else
-         Res := M_Unpost (Frm);
+         Res := M_Unpost (Frm);
       end if;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Post;
-   --  |
-   --  |=====================================================================
-   --  | man page form_cursor.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Position_Cursor (Frm : Form)
+   end Post;
+   --  |
+   --  |=====================================================================
+   --  | man page form_cursor.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Position_Cursor (Frm : Form)
    is
-      function Pos_Form_Cursor (Frm : Form) return C_Int;
-      pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
+      function Pos_Form_Cursor (Frm : Form) return C_Int;
+      pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
 
-      Res : constant Eti_Error := Pos_Form_Cursor (Frm);
+      Res : constant Eti_Error := Pos_Form_Cursor (Frm);
    begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
+      if  Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Position_Cursor;
-   --  |
-   --  |=====================================================================
-   --  | man page form_data.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Data_Ahead (Frm : Form) return Boolean
+   end Position_Cursor;
+   --  |
+   --  |=====================================================================
+   --  | man page form_data.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Data_Ahead (Frm : Form) return Boolean
    is
-      function Ahead (Frm : Form) return C_Int;
-      pragma Import (C, Ahead, "data_ahead");
+      function Ahead (Frm : Form) return C_Int;
+      pragma Import (C, Ahead, "data_ahead");
 
-      Res : constant C_Int := Ahead (Frm);
+      Res : constant C_Int := Ahead (Frm);
    begin
-      if Res = Curses_False then
+      if Res = Curses_False then
          return False;
       else
          return True;
       end if;
-   end Data_Ahead;
-   --  |
-   --  |
-   --  |
-   function Data_Behind (Frm : Form) return Boolean
+   end Data_Ahead;
+   --  |
+   --  |
+   --  |
+   function Data_Behind (Frm : Form) return Boolean
    is
-      function Behind (Frm : Form) return C_Int;
-      pragma Import (C, Behind, "data_behind");
+      function Behind (Frm : Form) return C_Int;
+      pragma Import (C, Behind, "data_behind");
 
-      Res : constant C_Int := Behind (Frm);
+      Res : constant C_Int := Behind (Frm);
    begin
-      if Res = Curses_False then
+      if Res = Curses_False then
          return False;
       else
          return True;
       end if;
-   end Data_Behind;
-   --  |
-   --  |=====================================================================
-   --  | man page form_driver.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Driver (Frm : Form;
-                    Key : Key_Code) return Driver_Result
+   end Data_Behind;
+   --  |
+   --  |=====================================================================
+   --  | man page form_driver.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   function Driver (Frm : Form;
+                    Key : Key_Code) return Driver_Result
    is
-      function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
-      pragma Import (C, Frm_Driver, "form_driver");
+      function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
+      pragma Import (C, Frm_Driver, "form_driver");
 
-      R : Eti_Error := Frm_Driver (Frm, C_Int (Key));
+      R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
    begin
-      if R /= E_Ok then
-         if R = E_Unknown_Command then
-            return Unknown_Request;
-         elsif R = E_Invalid_Field then
-            return Invalid_Field;
-         elsif R = E_Request_Denied then
-            return Request_Denied;
+      if R /= E_Ok then
+         if R = E_Unknown_Command then
+            return Unknown_Request;
+         elsif R = E_Invalid_Field then
+            return Invalid_Field;
+         elsif R = E_Request_Denied then
+            return Request_Denied;
          else
-            Eti_Exception (R);
-            return Form_Ok;
+            Eti_Exception (R);
+            return Form_Ok;
          end if;
       else
-         return Form_Ok;
+         return Form_Ok;
       end if;
-   end Driver;
-   --  |
-   --  |=====================================================================
-   --  | man page form_page.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Current (Frm : in Form;
-                          Fld : in Field)
+   end Driver;
+   --  |
+   --  |=====================================================================
+   --  | man page form_page.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_Current (Frm : Form;
+                          Fld : Field)
    is
-      function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
-      pragma Import (C, Set_Current_Fld, "set_current_field");
+      function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
+      pragma Import (C, Set_Current_Fld, "set_current_field");
 
-      Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
+      Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Current;
-   --  |
-   --  |
-   --  |
-   function Current (Frm : in Form) return Field
+   end Set_Current;
+   --  |
+   --  |
+   --  |
+   function Current (Frm : Form) return Field
    is
-      function Current_Fld (Frm : Form) return Field;
-      pragma Import (C, Current_Fld, "current_field");
+      function Current_Fld (Frm : Form) return Field;
+      pragma Import (C, Current_Fld, "current_field");
 
-      Fld : constant Field := Current_Fld (Frm);
+      Fld : constant Field := Current_Fld (Frm);
    begin
-      if Fld = Null_Field then
-         raise Form_Exception;
+      if Fld = Null_Field then
+         raise Form_Exception;
       end if;
-      return Fld;
-   end Current;
-   --  |
-   --  |
-   --  |
-   procedure Set_Page (Frm  : in Form;
-                       Page : in Page_Number := Page_Number'First)
+      return Fld;
+   end Current;
+   --  |
+   --  |
+   --  |
+   procedure Set_Page (Frm  : Form;
+                       Page : Page_Number := Page_Number'First)
    is
-      function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
-      pragma Import (C, Set_Frm_Page, "set_form_page");
+      function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
+      pragma Import (C, Set_Frm_Page, "set_form_page");
 
-      Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
+      Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_Page;
-   --  |
-   --  |
-   --  |
-   function Page (Frm : Form) return Page_Number
+   end Set_Page;
+   --  |
+   --  |
+   --  |
+   function Page (Frm : Form) return Page_Number
    is
-      function Get_Page (Frm : Form) return C_Int;
-      pragma Import (C, Get_Page, "form_page");
+      function Get_Page (Frm : Form) return C_Int;
+      pragma Import (C, Get_Page, "form_page");
 
-      P : constant C_Int := Get_Page (Frm);
+      P : constant C_Int := Get_Page (Frm);
    begin
-      if P < 0 then
-         raise Form_Exception;
+      if P < 0 then
+         raise Form_Exception;
       else
-         return Page_Number (P);
+         return Page_Number (P);
       end if;
-   end Page;
+   end Page;
 
-   function Get_Index (Fld : Field) return Positive
+   function Get_Index (Fld : Field) return Positive
    is
-      function Get_Fieldindex (Fld : Field) return C_Int;
-      pragma Import (C, Get_Fieldindex, "field_index");
+      function Get_Fieldindex (Fld : Field) return C_Int;
+      pragma Import (C, Get_Fieldindex, "field_index");
 
-      Res : constant C_Int := Get_Fieldindex (Fld);
+      Res : constant C_Int := Get_Fieldindex (Fld);
    begin
-      if Res = Curses_Err then
-         raise Form_Exception;
+      if Res = Curses_Err then
+         raise Form_Exception;
       end if;
-      return Positive (Natural (Res) + Positive'First);
-   end Get_Index;
-
-   --  |
-   --  |=====================================================================
-   --  | man page form_new_page.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_New_Page (Fld      : in Field;
-                           New_Page : in Boolean := True)
+      return Positive (Natural (Res) + Positive'First);
+   end Get_Index;
+
+   --  |
+   --  |=====================================================================
+   --  | man page form_new_page.3x
+   --  |=====================================================================
+   --  |
+   --  |
+   --  |
+   procedure Set_New_Page (Fld      : Field;
+                           New_Page : Boolean := True)
    is
-      function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
-      pragma Import (C, Set_Page, "set_new_page");
+      function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
+      pragma Import (C, Set_Page, "set_new_page");
 
-      Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
+      Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
    begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
+      if Res /= E_Ok then
+         Eti_Exception (Res);
       end if;
-   end Set_New_Page;
-   --  |
-   --  |
-   --  |
-   function Is_New_Page (Fld : Field) return Boolean
+   end Set_New_Page;
+   --  |
+   --  |
+   --  |
+   function Is_New_Page (Fld : Field) return Boolean
    is
-      function Is_New (Fld : Field) return C_Int;
-      pragma Import (C, Is_New, "new_page");
+      function Is_New (Fld : Field) return C_Int;
+      pragma Import (C, Is_New, "new_page");
 
-      Res : constant C_Int := Is_New (Fld);
+      Res : constant C_Int := Is_New (Fld);
    begin
-      if Res = Curses_False then
+      if Res = Curses_False then
          return False;
       else
          return True;
       end if;
-   end Is_New_Page;
+   end Is_New_Page;
 
-   procedure Free (FA          : in out Field_Array_Access;
-                   Free_Fields : in Boolean := False)
+   procedure Free (FA          : in out Field_Array_Access;
+                   Free_Fields : Boolean := False)
    is
-      procedure Release is new Ada.Unchecked_Deallocation
-        (Field_Array, Field_Array_Access);
+      procedure Release is new Ada.Unchecked_Deallocation
+        (Field_Array, Field_Array_Access);
    begin
-      if FA /= null and then Free_Fields then
-         for I in FA'First .. (FA'Last - 1) loop
-            if (FA (I) /= Null_Field) then
-               Delete (FA (I));
+      if FA /= null and then Free_Fields then
+         for I in FA'First .. (FA'Last - 1) loop
+            if FA.all (I) /= Null_Field then
+               Delete (FA.all (I));
             end if;
          end loop;
       end if;
-      Release (FA);
-   end Free;
+      Release (FA);
+   end Free;
 
-   --  |=====================================================================
+   --  |=====================================================================
 
-   function Default_Field_Options return Field_Option_Set
+   function Default_Field_Options return Field_Option_Set
    is
    begin
-      return Get_Options (Null_Field);
-   end Default_Field_Options;
+      return Get_Options (Null_Field);
+   end Default_Field_Options;
 
-   function Default_Form_Options return Form_Option_Set
+   function Default_Form_Options return Form_Option_Set
    is
    begin
-      return Get_Options (Null_Form);
-   end Default_Form_Options;
+      return Get_Options (Null_Form);
+   end Default_Form_Options;
 
-end Terminal_Interface.Curses.Forms;
-
\ No newline at end of file +end Terminal_Interface.Curses.Forms; +