------------------------------------------------------------------------------
-- --
-- GNAT ncurses Binding --
-- --
-- Terminal_Interface.Curses.Form --
-- --
-- S P E C --
-- --
-- Version 00.91 --
-- --
-- The ncurses Ada95 binding is copyrighted 1996 by --
-- Jürgen Pfeifer, Email: Juergen.Pfeifer@T-Online.de --
-- --
-- Permission is hereby granted to reproduce and distribute this --
-- binding by any means and for any fee, whether alone or as part --
-- of a larger distribution, in source or in binary form, PROVIDED --
-- this notice is included with any such distribution, and is not --
-- removed from any of its header files. Mention of ncurses and the --
-- author of this binding in any applications linked with it is --
-- highly appreciated. --
-- --
-- This binding comes AS IS with no warranty, implied or expressed. --
------------------------------------------------------------------------------
-- Version Control:
-- $Revision: 1.5 $
------------------------------------------------------------------------------
-- form binding, generated at Sat Nov 23 13:20:47 1996
-- This module is generated. Please don't change it manually!
-- Run the generator instead.
-- |
with System;
with Ada.Tags; use Ada.Tags;
with Ada.Characters.Latin_1;
with Interfaces.C;
with Interfaces.C.Strings;
package Terminal_Interface.Curses.Forms is
pragma Linker_Options ("-lform");
Space : Character renames Ada.Characters.Latin_1.Space;
type Field is private;
type Form is private;
type C_Field_Type is private;
Null_Field : constant Field;
Null_Form : constant Form;
Null_Field_Type : constant C_Field_Type;
type Field_Justification is (None,
Left,
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;
Reserved : Boolean;
end record;
pragma Pack (Field_Option_Set);
pragma Convention (C, Field_Option_Set);
for Field_Option_Set use
record
Visible at 0 range 0 .. 0;
Active at 0 range 1 .. 1;
Public at 0 range 2 .. 2;
Edit at 0 range 3 .. 3;
Wrap at 0 range 4 .. 4;
Blank at 0 range 5 .. 5;
Auto_Skip at 0 range 6 .. 6;
Null_Ok at 0 range 7 .. 7;
Pass_Ok at 0 range 8 .. 8;
Static at 0 range 9 .. 9;
Reserved at 0 range 31 .. 31;
end record;
for Field_Option_Set'Size use Interfaces.C.int'Size;
-- Please note: this rep. clause is generated and may be
-- different on your system.
Default_Field_Options : constant Field_Option_Set;
-- The initial defaults for the field options.
type Form_Option_Set is
record
NL_Overload : Boolean;
BS_Overload : Boolean;
Reserved : Boolean;
end record;
pragma Pack (Form_Option_Set);
pragma Convention (C, Form_Option_Set);
for Form_Option_Set use
record
NL_Overload at 0 range 0 .. 0;
BS_Overload at 0 range 1 .. 1;
Reserved at 0 range 31 .. 31;
end record;
for Form_Option_Set'Size use Interfaces.C.int'Size;
-- Please note: this rep. clause is generated and may be
-- different on your system.
Default_Form_Options : constant Form_Option_Set;
-- The initial defaults for the form options.
type Buffer_Number is new Natural;
type Field_Array is array (Positive range <>) of aliased Field;
pragma Convention (C, Field_Array);
type Field_Array_Access is access all Field_Array;
pragma Controlled (Field_Array_Access);
subtype Form_Request_Code is Key_Code range (Key_Max + 1) .. (Key_Max + 57);
-- The prefix F_ stands for "Form Request"
F_Next_Page : constant Form_Request_Code := Key_Max + 1;
F_Previous_Page : constant Form_Request_Code := Key_Max + 2;
F_First_Page : constant Form_Request_Code := Key_Max + 3;
F_Last_Page : constant Form_Request_Code := Key_Max + 4;
F_Next_Field : constant Form_Request_Code := Key_Max + 5;
F_Previous_Field : constant Form_Request_Code := Key_Max + 6;
F_First_Field : constant Form_Request_Code := Key_Max + 7;
F_Last_Field : constant Form_Request_Code := Key_Max + 8;
F_Sorted_Next_Field : constant Form_Request_Code := Key_Max + 9;
F_Sorted_Previous_Field : constant Form_Request_Code := Key_Max + 10;
F_Sorted_First_Field : constant Form_Request_Code := Key_Max + 11;
F_Sorted_Last_Field : constant Form_Request_Code := Key_Max + 12;
F_Left_Field : constant Form_Request_Code := Key_Max + 13;
F_Right_Field : constant Form_Request_Code := Key_Max + 14;
F_Up_Field : constant Form_Request_Code := Key_Max + 15;
F_Down_Field : constant Form_Request_Code := Key_Max + 16;
F_Next_Char : constant Form_Request_Code := Key_Max + 17;
F_Previous_Char : constant Form_Request_Code := Key_Max + 18;
F_Next_Line : constant Form_Request_Code := Key_Max + 19;
F_Previous_Line : constant Form_Request_Code := Key_Max + 20;
F_Next_Word : constant Form_Request_Code := Key_Max + 21;
F_Previous_Word : constant Form_Request_Code := Key_Max + 22;
F_Begin_Field : constant Form_Request_Code := Key_Max + 23;
F_End_Field : constant Form_Request_Code := Key_Max + 24;
F_Begin_Line : constant Form_Request_Code := Key_Max + 25;
F_End_Line : constant Form_Request_Code := Key_Max + 26;
F_Left_Char : constant Form_Request_Code := Key_Max + 27;
F_Right_Char : constant Form_Request_Code := Key_Max + 28;
F_Up_Char : constant Form_Request_Code := Key_Max + 29;
F_Down_Char : constant Form_Request_Code := Key_Max + 30;
F_New_Line : constant Form_Request_Code := Key_Max + 31;
F_Insert_Char : constant Form_Request_Code := Key_Max + 32;
F_Insert_Line : constant Form_Request_Code := Key_Max + 33;
F_Delete_Char : constant Form_Request_Code := Key_Max + 34;
F_Delete_Previous : constant Form_Request_Code := Key_Max + 35;
F_Delete_Line : constant Form_Request_Code := Key_Max + 36;
F_Delete_Word : constant Form_Request_Code := Key_Max + 37;
F_Clear_EOL : constant Form_Request_Code := Key_Max + 38;
F_Clear_EOF : constant Form_Request_Code := Key_Max + 39;
F_Clear_Field : constant Form_Request_Code := Key_Max + 40;
F_Overlay_Mode : constant Form_Request_Code := Key_Max + 41;
F_Insert_Mode : constant Form_Request_Code := Key_Max + 42;
-- Vertical Scrolling
F_ScrollForward_Line : constant Form_Request_Code := Key_Max + 43;
F_ScrollBackward_Line : constant Form_Request_Code := Key_Max + 44;
F_ScrollForward_Page : constant Form_Request_Code := Key_Max + 45;
F_ScrollBackward_Page : constant Form_Request_Code := Key_Max + 46;
F_ScrollForward_HalfPage : constant Form_Request_Code := Key_Max + 47;
F_ScrollBackward_HalfPage : constant Form_Request_Code := Key_Max + 48;
-- Horizontal Scrolling
F_HScrollForward_Char : constant Form_Request_Code := Key_Max + 49;
F_HScrollBackward_Char : constant Form_Request_Code := Key_Max + 50;
F_HScrollForward_Line : constant Form_Request_Code := Key_Max + 51;
F_HScrollBackward_Line : constant Form_Request_Code := Key_Max + 52;
F_HScrollForward_HalfLine : constant Form_Request_Code := Key_Max + 53;
F_HScrollBackward_HalfLine : constant Form_Request_Code := Key_Max + 54;
F_Validate_Field : constant Form_Request_Code := Key_Max + 55;
F_Next_Choice : constant Form_Request_Code := Key_Max + 56;
F_Previous_Choice : constant Form_Request_Code := Key_Max + 57;
-- For those who like the old 'C' style request names
REQ_NEXT_PAGE : Form_Request_Code renames F_Next_Page;
REQ_PREV_PAGE : Form_Request_Code renames F_Previous_Page;
REQ_FIRST_PAGE : Form_Request_Code renames F_First_Page;
REQ_LAST_PAGE : Form_Request_Code renames F_Last_Page;
REQ_NEXT_FIELD : Form_Request_Code renames F_Next_Field;
REQ_PREV_FIELD : Form_Request_Code renames F_Previous_Field;
REQ_FIRST_FIELD : Form_Request_Code renames F_First_Field;
REQ_LAST_FIELD : Form_Request_Code renames F_Last_Field;
REQ_SNEXT_FIELD : Form_Request_Code renames F_Sorted_Next_Field;
REQ_SPREV_FIELD : Form_Request_Code renames F_Sorted_Previous_Field;
REQ_SFIRST_FIELD : Form_Request_Code renames F_Sorted_First_Field;
REQ_SLAST_FIELD : Form_Request_Code renames F_Sorted_Last_Field;
REQ_LEFT_FIELD : Form_Request_Code renames F_Left_Field;
REQ_RIGHT_FIELD : Form_Request_Code renames F_Right_Field;
REQ_UP_FIELD : Form_Request_Code renames F_Up_Field;
REQ_DOWN_FIELD : Form_Request_Code renames F_Down_Field;
REQ_NEXT_CHAR : Form_Request_Code renames F_Next_Char;
REQ_PREV_CHAR : Form_Request_Code renames F_Previous_Char;
REQ_NEXT_LINE : Form_Request_Code renames F_Next_Line;
REQ_PREV_LINE : Form_Request_Code renames F_Previous_Line;
REQ_NEXT_WORD : Form_Request_Code renames F_Next_Word;
REQ_PREV_WORD : Form_Request_Code renames F_Previous_Word;
REQ_BEG_FIELD : Form_Request_Code renames F_Begin_Field;
REQ_END_FIELD : Form_Request_Code renames F_End_Field;
REQ_BEG_LINE : Form_Request_Code renames F_Begin_Line;
REQ_END_LINE : Form_Request_Code renames F_End_Line;
REQ_LEFT_CHAR : Form_Request_Code renames F_Left_Char;
REQ_RIGHT_CHAR : Form_Request_Code renames F_Right_Char;
REQ_UP_CHAR : Form_Request_Code renames F_Up_Char;
REQ_DOWN_CHAR : Form_Request_Code renames F_Down_Char;
REQ_NEW_LINE : Form_Request_Code renames F_New_Line;
REQ_INS_CHAR : Form_Request_Code renames F_Insert_Char;
REQ_INS_LINE : Form_Request_Code renames F_Insert_Line;
REQ_DEL_CHAR : Form_Request_Code renames F_Delete_Char;
REQ_DEL_PREV : Form_Request_Code renames F_Delete_Previous;
REQ_DEL_LINE : Form_Request_Code renames F_Delete_Line;
REQ_DEL_WORD : Form_Request_Code renames F_Delete_Word;
REQ_CLR_EOL : Form_Request_Code renames F_Clear_EOL;
REQ_CLR_EOF : Form_Request_Code renames F_Clear_EOF;
REQ_CLR_FIELD : Form_Request_Code renames F_Clear_Field;
REQ_OVL_MODE : Form_Request_Code renames F_Overlay_Mode;
REQ_INS_MODE : Form_Request_Code renames F_Insert_Mode;
REQ_SCR_FLINE : Form_Request_Code renames F_ScrollForward_Line;
REQ_SCR_BLINE : Form_Request_Code renames F_ScrollBackward_Line;
REQ_SCR_FPAGE : Form_Request_Code renames F_ScrollForward_Page;
REQ_SCR_BPAGE : Form_Request_Code renames F_ScrollBackward_Page;
REQ_SCR_FHPAGE : Form_Request_Code renames F_ScrollForward_HalfPage;
REQ_SCR_BHPAGE : Form_Request_Code renames F_ScrollBackward_HalfPage;
REQ_SCR_FCHAR : Form_Request_Code renames F_HScrollForward_Char;
REQ_SCR_BCHAR : Form_Request_Code renames F_HScrollBackward_Char;
REQ_SCR_HFLINE : Form_Request_Code renames F_HScrollForward_Line;
REQ_SCR_HBLINE : Form_Request_Code renames F_HScrollBackward_Line;
REQ_SCR_HFHALF : Form_Request_Code renames F_HScrollForward_HalfLine;
REQ_SCR_HBHALF : Form_Request_Code renames F_HScrollBackward_HalfLine;
REQ_VALIDATION : Form_Request_Code renames F_Validate_Field;
REQ_NEXT_CHOICE : Form_Request_Code renames F_Next_Choice;
REQ_PREV_CHOICE : Form_Request_Code renames F_Previous_Choice;
procedure Request_Name (Key : in Form_Request_Code;
Name : out String);
------------------
-- Exceptions --
------------------
Form_Exception : exception;
-- |=====================================================================
-- | 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;
-- AKA: new_field()
-- |
function New_Field (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 renames Create;
-- AKA: new_field()
-- |
procedure Delete (Fld : in out Field);
-- AKA: free_field()
-- Reset Fld to Null_Field
-- |
function Duplicate (Fld : Field;
Top : Line_Position;
Left : Column_Position) return Field;
-- AKA: dup_field()
-- |
function Link (Fld : Field;
Top : Line_Position;
Left : Column_Position) return Field;
-- AKA: link_field()
-- |=====================================================================
-- | Man page form_field_just.3x
-- |=====================================================================
-- |
procedure Set_Justification (Fld : in Field;
Just : in Field_Justification := None);
-- AKA: set_field_just()
-- |
function Get_Justification (Fld : Field) return Field_Justification;
-- AKA: field_just()
-- |=====================================================================
-- | Man page form_field_buffer.3x
-- |=====================================================================
-- |
procedure Set_Buffer
(Fld : in Field;
Buffer : in Buffer_Number := Buffer_Number'First;
Str : in String);
-- AKA: set_field_buffer()
-- |
procedure Get_Buffer
(Fld : in Field;
Buffer : in Buffer_Number := Buffer_Number'First;
Str : out String);
-- AKA: field_buffer()
-- |
procedure Set_Status (Fld : in Field;
Status : in Boolean := True);
-- AKA: set_field_status()
-- |
function Changed (Fld : Field) return Boolean;
-- AKA: field_status()
-- |
procedure Set_Maximum_Size (Fld : in Field;
Max : in Natural := 0);
-- AKA: set_field_max()
-- |=====================================================================
-- | Man page form_field_opts.3x
-- |=====================================================================
-- |
procedure Set_Options (Fld : in Field;
Options : in Field_Option_Set);
-- AKA: set_field_opts()
-- |
procedure Switch_Options (Fld : in Field;
Options : in Field_Option_Set;
On : Boolean := True);
-- AKA: field_opts_on()
-- AKA: field_opts_off()
-- |
procedure Get_Options (Fld : in Field;
Options : out Field_Option_Set);
-- AKA: field_opts()
-- |
function Get_Options (Fld : Field := Null_Field)
return Field_Option_Set;
-- AKA: field_opts()
-- |=====================================================================
-- | 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);
-- AKA: set_field_fore()
-- |
procedure Foreground (Fld : in Field;
Fore : out Character_Attribute_Set);
-- AKA: field_fore()
-- |
procedure Foreground (Fld : in Field;
Fore : out Character_Attribute_Set;
Color : out Color_Pair);
-- AKA: field_fore()
-- |
procedure Set_Background
(Fld : in Field;
Back : in Character_Attribute_Set := Normal_Video;
Color : in Color_Pair := Color_Pair'First);
-- AKA: set_field_back()
-- |
procedure Background (Fld : in Field;
Back : out Character_Attribute_Set);
-- AKA: field_back()
-- |
procedure Background (Fld : in Field;
Back : out Character_Attribute_Set;
Color : out Color_Pair);
-- AKA: field_back()
-- |
procedure Set_Pad_Character (Fld : in Field;
Pad : in Character := Space);
-- AKA: set_field_pad()
-- |
procedure Pad_Character (Fld : in Field;
Pad : out Character);
-- AKA: field_pad()
-- |=====================================================================
-- | 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);
-- AKA: field_info()
-- |
procedure Dynamic_Info (Fld : in Field;
Lines : out Line_Count;
Columns : out Column_Count;
Max : out Natural);
-- AKA: dynamic_field_info()
-- |=====================================================================
-- | Man page form_win.3x
-- |=====================================================================
-- |
procedure Set_Window (Frm : in Form;
Win : in Window);
-- AKA: set_form_win()
-- |
function Get_Window (Frm : Form) return Window;
-- AKA: form_win()
-- |
procedure Set_Sub_Window (Frm : in Form;
Win : in Window);
-- AKA: set_form_sub()
-- |
function Get_Sub_Window (Frm : Form) return Window;
-- AKA: form_sub()
-- |
procedure Scale (Frm : in Form;
Lines : out Line_Count;
Columns : out Column_Count);
-- AKA: scale_form()
-- |=====================================================================
-- | Man page form_hook.3x
-- |=====================================================================
type Form_Hook_Function is access procedure (Frm : in Form);
pragma Convention (C, Form_Hook_Function);
-- |
procedure Set_Field_Init_Hook (Frm : in Form;
Proc : in Form_Hook_Function);
-- AKA: set_field_init()
-- |
procedure Set_Field_Term_Hook (Frm : in Form;
Proc : in Form_Hook_Function);
-- AKA: set_field_term()
-- |
procedure Set_Form_Init_Hook (Frm : in Form;
Proc : in Form_Hook_Function);
-- AKA: set_form_init()
-- |
procedure Set_Form_Term_Hook (Frm : in Form;
Proc : in Form_Hook_Function);
-- AKA: set_form_term()
-- |
function Get_Field_Init_Hook (Frm : Form) return Form_Hook_Function;
-- AKA: field_init()
pragma Import (C, Get_Field_Init_Hook, "field_init");
-- |
function Get_Field_Term_Hook (Frm : Form) return Form_Hook_Function;
-- AKA: field_term()
pragma Import (C, Get_Field_Term_Hook, "field_term");
-- |
function Get_Form_Init_Hook (Frm : Form) return Form_Hook_Function;
-- AKA: form_init()
pragma Import (C, Get_Form_Init_Hook, "form_init");
-- |
function Get_Form_Term_Hook (Frm : Form) return Form_Hook_Function;
-- AKA: form_term()
pragma Import (C, Get_Form_Term_Hook, "form_term");
-- |=====================================================================
-- | Man page form_field.3x
-- |=====================================================================
-- |
procedure Redefine (Frm : in Form;
Flds : in Field_Array);
-- AKA: set_form_fields()
-- With a bit more comfort. You donīt need to terminate the Field_Array
-- with a null entry. This is handled internally in the binding.
-- |
procedure Set_Fields (Frm : in Form;
Flds : in Field_Array) renames Redefine;
-- AKA: set_form_fields()
-- |
function Fields (Frm : Form) return Field_Array_Access;
-- AKA: form_fields()
-- |
function Field_Count (Frm : Form) return Natural;
-- AKA: field_count()
-- |
procedure Move (Fld : in Field;
Line : in Line_Position;
Column : in Column_Position);
-- AKA: move_field()
-- |=====================================================================
-- | Man page form_new.3x
-- |=====================================================================
-- |
function Create (Fields : Field_Array) return Form;
-- AKA: new_form()
-- |
function New_Form (Fields : Field_Array) return Form renames Create;
-- AKA: new_form()
-- |
procedure Delete (Frm : in out Form);
-- AKA: free_form()
-- Reset Frm to Null_Form
-- |=====================================================================
-- | Man page form_opts.3x
-- |=====================================================================
-- |
procedure Set_Options (Frm : in Form;
Options : in Form_Option_Set);
-- AKA: set_form_opts()
-- |
procedure Switch_Options (Frm : in Form;
Options : in Form_Option_Set;
On : Boolean := True);
-- AKA: form_opts_on()
-- AKA: form_opts_off()
-- |
procedure Get_Options (Frm : in Form;
Options : out Form_Option_Set);
-- AKA: form_opts()
-- |
function Get_Options (Frm : Form := Null_Form) return Form_Option_Set;
-- AKA: form_opts()
-- |=====================================================================
-- | Man page form_post.3x
-- |=====================================================================
-- |
procedure Post (Frm : in Form;
Post : in Boolean := True);
-- AKA: post_form()
-- AKA: unpost_form()
-- |=====================================================================
-- | Man page form_cursor.3x
-- |=====================================================================
-- |
procedure Position_Cursor (Frm : Form);
-- AKA: pos_form_cursor()
-- |=====================================================================
-- | Man page form_data.3x
-- |=====================================================================
-- |
function Data_Ahead (Frm : Form) return Boolean;
-- AKA: data_ahead()
-- |
function Data_Behind (Frm : Form) return Boolean;
-- AKA: data_behind()
-- |=====================================================================
-- | Man page form_driver.3x
-- |=====================================================================
type Driver_Result is (Form_Ok,
Request_Denied,
Unknown_Request,
Invalid_Field);
-- |
function Driver (Frm : Form;
Key : Key_Code) return Driver_Result;
-- AKA: form_driver()
-- |=====================================================================
-- | Man page form_page.3x
-- |=====================================================================
type Page_Number is new Natural;
-- |
procedure Set_Current (Frm : in Form;
Fld : in Field);
-- AKA: set_current_field()
-- |
function Current (Frm : in Form) return Field;
-- AKA: current_field()
-- |
procedure Set_Page (Frm : in Form;
Page : in Page_Number := Page_Number'First);
-- AKA: set_form_page()
-- |
function Page (Frm : Form) return Page_Number;
-- AKA: form_page()
-- |
function Get_Index (Fld : Field) return Positive;
-- AKA: field_index()
-- Please note that in this binding we start the numbering of fields
-- with 1. So this is number is one more than you get from the low
-- level call.
-- |=====================================================================
-- | Man page form_new_page.3x
-- |=====================================================================
-- |
procedure Set_New_Page (Fld : in Field;
New_Page : in Boolean := True);
-- AKA: set_new_page()
-- |
function Is_New_Page (Fld : Field) return Boolean;
-- AKA: new_page()
-- |=====================================================================
-- | Man page form_fieldtype.3x
-- |=====================================================================
type Field_Type is abstract tagged null record;
type Field_Type_Access is access all Field_Type'Class;
pragma Controlled (Field_Type_Access);
function Native_Type (Ftype : Field_Type)
return C_Field_Type is abstract;
-- This function returns the C libraries handle to the field type.
-- May be you need this if you want to interface to lower level
-- routines in the form library.
-- |
procedure Set_Type (Fld : in Field;
Fld_Type : in Field_Type) is abstract;
-- AKA: set_field_type()
-- But: we hide the vararg mechanism of the C interface. You always
-- have to pass a single Field_Type parameter.
type C_Defined_Field_Type is abstract new Field_Type with null record;
-- This is the root of all field typed defined in C, i.e. this are
-- the predefined field types in the form library.
type Alpha_Field is new C_Defined_Field_Type
with record
Minimum_Field_Width : Natural := 0;
end record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Alpha_Field);
function Native_Type (Ftype : Alpha_Field)
return C_Field_Type;
type Alpha_Numeric_Field is new C_Defined_Field_Type with
record
Minimum_Field_Width : Natural := 0;
end record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Alpha_Numeric_Field);
function Native_Type (Ftype : Alpha_Numeric_Field)
return C_Field_Type;
type Integer_Field is new C_Defined_Field_Type with
record
Precision : Natural;
Lower_Limit : Integer;
Upper_Limit : Integer;
end record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Integer_Field);
function Native_Type (Ftype : Integer_Field)
return C_Field_Type;
type Numeric_Field is new C_Defined_Field_Type with
record
Precision : Natural;
Lower_Limit : Float;
Upper_Limit : Float;
end record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Numeric_Field);
function Native_Type (Ftype : Numeric_Field)
return C_Field_Type;
type String_Access is access String;
type Regular_Expression_Field is new C_Defined_Field_Type with
record
Regular_Expression : String_Access;
end record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Regular_Expression_Field);
function Native_Type (Ftype : Regular_Expression_Field)
return C_Field_Type;
type Enum_Array is array (Positive range <>)
of String_Access;
type Enumeration_Info (C : Positive) is
record
Names : Enum_Array (1 .. C);
Case_Sensitive : Boolean := False;
Match_Must_Be_Unique : Boolean := False;
end record;
type Enumeration_Field is new C_Defined_Field_Type with private;
function Create (Info : Enumeration_Info;
Auto_Release_Names : Boolean := False)
return Enumeration_Field;
-- Make an fieldtype from the info. Enumerations are special, because
-- they normally don't copy the enum values into a private store, so
-- we have to care for the lifetime of the info we provide.
-- The Auto_Release_Names flag may be used to automatically releases
-- the strings in the Names array of the Enumeration_Info.
function Make_Enumeration_Type (Info : Enumeration_Info;
Auto_Release_Names : Boolean := False)
return Enumeration_Field renames Create;
procedure Release (Enum : in out Enumeration_Field);
-- But we may want to release the field to release the memory allocated
-- by it internally. After that the Enumeration field is no longer usable.
procedure Set_Type (Fld : in Field;
Fld_Type : in Enumeration_Field);
function Native_Type (Ftype : Enumeration_Field)
return C_Field_Type;
-- The next type defintions are all ncurses extensions. They are typically
-- not available in other curses implementations.
type Internet_V4_Address_Field is new C_Defined_Field_Type
with null record;
procedure Set_Type (Fld : in Field;
Fld_Type : in Internet_V4_Address_Field);
function Native_Type (Ftype : Internet_V4_Address_Field)
return C_Field_Type;
type Ada_Defined_Field_Type is abstract new Field_Type with null record;
-- This is the root of the mechanism we use to create field types in
-- Ada95. You don't have to redefine the Set_Field_Type and
-- Native_Field_Type methods, because they work generically on this
-- class.
procedure Set_Type (Fld : Field;
Fld_Type : Ada_Defined_Field_Type);
function Native_Type (Ftype : Ada_Defined_Field_Type)
return C_Field_Type;
-- |=====================================================================
-- | Man page form_field_validation.3x
-- |=====================================================================
-- |
function Get_Type (Fld : in Field) return Field_Type_Access;
-- AKA: field_type()
-- AKA: field_arg()
-- In Ada95 we can combine these
------------------------------------------------------------------------------
private
type Field is new System.Address;
type Form is new System.Address;
type C_Field_Type is new System.Address;
Null_Field : constant Field := Field (System.Null_Address);
Null_Form : constant Form := Form (System.Null_Address);
Null_Field_Type : constant C_Field_Type :=
C_Field_Type (System.Null_Address);
Default_Field_Options : constant Field_Option_Set :=
Get_Options (Null_Field);
Default_Form_Options : constant Form_Option_Set :=
Get_Options (Null_Form);
type CPA_Access is access Interfaces.C.Strings.chars_ptr_array;
type Enumeration_Field is new C_Defined_Field_Type with
record
Case_Sensitive : Boolean := False;
Match_Must_Be_Unique : Boolean := False;
Arr : CPA_Access := null;
end record;
-- In our binding we use the fields user pointer as hook to maintain
-- our own info structure about the field type. To be able to still
-- provide a user pointer, we use this wrapper.
--
type Field_User_Wrapper is
record
U : System.Address; -- the hook we provide for the user
T : Field_Type_Access; -- may be null
N : Natural; -- use counter
end record;
pragma Convention (C, Field_User_Wrapper);
type Field_User_Wrapper_Access is access all Field_User_Wrapper;
pragma Controlled (Field_User_Wrapper_Access);
function Set_Field_Userptr (Fld : Field;
Wrp : Field_User_Wrapper_Access)
return Interfaces.C.int;
pragma Import (C, Set_Field_Userptr, "set_field_userptr");
function Field_Userptr (Fld : Field) return Field_User_Wrapper_Access;
pragma Import (C, Field_Userptr, "field_userptr");
-- In our binding we use the forms user pointer as hook to maintain
-- our own info structure about the field association. To be able to still
-- provide a user pointer, we use this wrapper.
--
type Form_User_Wrapper is
record
U : System.Address; -- the hook we provide for the user
I : Field_Array_Access;
end record;
pragma Convention (C, Form_User_Wrapper);
type Form_User_Wrapper_Access is access all Form_User_Wrapper;
pragma Controlled (Form_User_Wrapper_Access);
function Set_Form_Userptr (Frm : Form;
Wrp : Form_User_Wrapper_Access)
return Interfaces.C.int;
pragma Import (C, Set_Form_Userptr, "set_form_userptr");
function Form_Userptr (Frm : Form) return Form_User_Wrapper_Access;
pragma Import (C, Form_Userptr, "form_userptr");
procedure Register_Type (T : in Tag;
Cft : in C_Field_Type);
procedure Unregister_Type (T : in Tag);
function Search_Type (T : Tag) return C_Field_Type;
Generation_Bit_Order : constant System.Bit_Order := System.Low_Order_First;
-- This constant may be different on your system.
end Terminal_Interface.Curses.Forms;
This is BETA software. The interface is subject to change without notice.
This hypertext format was generated by David A. Wheeler's ada2html