aboutsummaryrefslogtreecommitdiff
path: root/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
diff options
context:
space:
mode:
Diffstat (limited to 'Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4')
-rw-r--r--Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4238
1 files changed, 238 insertions, 0 deletions
diff --git a/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 b/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
new file mode 100644
index 000000000000..36314012ed9b
--- /dev/null
+++ b/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
@@ -0,0 +1,238 @@
+-- -*- ada -*-
+define(`HTMLNAME',`terminal_interface-curses-forms-field_user_data__ads.htm')dnl
+include(M4MACRO)dnl
+------------------------------------------------------------------------------
+-- --
+-- GNAT ncurses Binding --
+-- --
+-- Terminal_Interface.Curses.Forms.Field_Types --
+-- --
+-- S P E C --
+-- --
+------------------------------------------------------------------------------
+-- Copyright (c) 1998-2003,2009 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.15 $
+-- Binding Version 01.00
+------------------------------------------------------------------------------
+with Interfaces.C;
+
+package Terminal_Interface.Curses.Forms.Field_Types is
+ pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
+ use type Interfaces.C.int;
+ subtype C_Int is Interfaces.C.int;
+
+ -- MANPAGE(`form_fieldtype.3x')
+
+ type Field_Type is abstract tagged null record;
+ -- Abstract base type for all field types. A concrete field type
+ -- is an extension that adds some data elements describing formats or
+ -- boundary values for the type and validation routines.
+ -- For the builtin low-level fieldtypes, the validation routines are
+ -- already defined by the low-level C library.
+ -- The builtin types like Alpha or AlphaNumeric etc. are defined in
+ -- child packages of this package. You may use one of them as example
+ -- how to create you own child packages for low-level field types that
+ -- you may have already written in C.
+
+ type Field_Type_Access is access all Field_Type'Class;
+
+ -- ANCHOR(`set_field_type()',`Set_Type')
+ procedure Set_Field_Type (Fld : Field;
+ Fld_Type : Field_Type) is abstract;
+ -- AKA
+ -- But: we hide the vararg mechanism of the C interface. You always
+ -- have to pass a single Field_Type parameter.
+
+ -- ---------------------------------------------------------------------
+
+ -- MANPAGE(`form_field_validation.3x')
+
+ -- ANCHOR(`field_type()',`Get_Type')
+ function Get_Type (Fld : Field) return Field_Type_Access;
+ -- AKA
+ -- ALIAS(`field_arg()')
+ -- In Ada95 we can combine these. If you try to retrieve the field type
+ -- that is not defined as extension of the abstract tagged type above,
+ -- you will raise a Form_Exception.
+ -- This is not inlined
+
+ -- +----------------------------------------------------------------------
+ -- | Private Part.
+ -- | Most of this is used by the implementations of the child packages.
+ -- |
+private
+ type Makearg_Function is access
+ function (Args : System.Address) return System.Address;
+ pragma Convention (C, Makearg_Function);
+
+ type Copyarg_Function is access
+ function (Usr : System.Address) return System.Address;
+ pragma Convention (C, Copyarg_Function);
+
+ type Freearg_Function is access
+ procedure (Usr : System.Address);
+ pragma Convention (C, Freearg_Function);
+
+ type Field_Check_Function is access
+ function (Fld : Field; Usr : System.Address) return C_Int;
+ pragma Convention (C, Field_Check_Function);
+
+ type Char_Check_Function is access
+ function (Ch : C_Int; Usr : System.Address) return C_Int;
+ pragma Convention (C, Char_Check_Function);
+
+ type Choice_Function is access
+ function (Fld : Field; Usr : System.Address) return C_Int;
+ pragma Convention (C, Choice_Function);
+
+ -- +----------------------------------------------------------------------
+ -- | This must be in sync with the FIELDTYPE structure in form.h
+ -- |
+ type Low_Level_Field_Type is
+ record
+ Status : Interfaces.C.short;
+ Ref_Count : Interfaces.C.long;
+ Left, Right : System.Address;
+ Makearg : Makearg_Function;
+ Copyarg : Copyarg_Function;
+ Freearg : Freearg_Function;
+ Fcheck : Field_Check_Function;
+ Ccheck : Char_Check_Function;
+ Next, Prev : Choice_Function;
+ end record;
+ pragma Convention (C, Low_Level_Field_Type);
+ type C_Field_Type is access all Low_Level_Field_Type;
+
+ Null_Field_Type : constant C_Field_Type := null;
+
+ -- +----------------------------------------------------------------------
+ -- | This four low-level fieldtypes are the ones associated with
+ -- | fieldtypes handled by this binding. Any other low-level fieldtype
+ -- | will result in a Form_Exception is function Get_Type.
+ -- |
+ M_Generic_Type : C_Field_Type := null;
+ M_Generic_Choice : C_Field_Type := null;
+ M_Builtin_Router : C_Field_Type := null;
+ M_Choice_Router : C_Field_Type := null;
+
+ -- Two wrapper functions to access those low-level fieldtypes defined
+ -- in this package.
+ function C_Builtin_Router return C_Field_Type;
+ function C_Choice_Router return C_Field_Type;
+
+ procedure Wrap_Builtin (Fld : Field;
+ Typ : Field_Type'Class;
+ Cft : C_Field_Type := C_Builtin_Router);
+ -- This procedure has to be called by the Set_Field_Type implementation
+ -- for builtin low-level fieldtypes to replace it by an Ada95
+ -- conformant Field_Type object.
+ -- The parameter Cft must be C_Builtin_Router for regular low-level
+ -- fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for
+ -- low-level fieldtypes witch choice functions (like TYP_ENUM).
+ -- Any other value will raise a Form_Exception.
+
+ function Make_Arg (Args : System.Address) return System.Address;
+ pragma Convention (C, Make_Arg);
+ -- This is the Makearg_Function for the internal low-level types
+ -- introduced by this binding.
+
+ function Copy_Arg (Usr : System.Address) return System.Address;
+ pragma Convention (C, Copy_Arg);
+ -- This is the Copyarg_Function for the internal low-level types
+ -- introduced by this binding.
+
+ procedure Free_Arg (Usr : System.Address);
+ pragma Convention (C, Free_Arg);
+ -- This is the Freearg_Function for the internal low-level types
+ -- introduced by this binding.
+
+ function Field_Check_Router (Fld : Field;
+ Usr : System.Address) return C_Int;
+ pragma Convention (C, Field_Check_Router);
+ -- This is the Field_Check_Function for the internal low-level types
+ -- introduced to wrap the low-level types by a Field_Type derived
+ -- type. It routes the call to the corresponding low-level validation
+ -- function.
+
+ function Char_Check_Router (Ch : C_Int;
+ Usr : System.Address) return C_Int;
+ pragma Convention (C, Char_Check_Router);
+ -- This is the Char_Check_Function for the internal low-level types
+ -- introduced to wrap the low-level types by a Field_Type derived
+ -- type. It routes the call to the corresponding low-level validation
+ -- function.
+
+ function Next_Router (Fld : Field;
+ Usr : System.Address) return C_Int;
+ pragma Convention (C, Next_Router);
+ -- This is the Choice_Function for the internal low-level types
+ -- introduced to wrap the low-level types by a Field_Type derived
+ -- type. It routes the call to the corresponding low-level next_choice
+ -- function.
+
+ function Prev_Router (Fld : Field;
+ Usr : System.Address) return C_Int;
+ pragma Convention (C, Prev_Router);
+ -- This is the Choice_Function for the internal low-level types
+ -- introduced to wrap the low-level types by a Field_Type derived
+ -- type. It routes the call to the corresponding low-level prev_choice
+ -- function.
+
+ -- This is the Argument structure maintained by all low-level field types
+ -- introduced by this binding.
+ type Argument is record
+ Typ : Field_Type_Access; -- the Field_Type creating this record
+ Usr : System.Address; -- original arg for builtin low-level types
+ Cft : C_Field_Type; -- the original low-level type
+ end record;
+ type Argument_Access is access all Argument;
+
+ -- +----------------------------------------------------------------------
+ -- |
+ -- | Some Imports of libform routines to deal with low-level fieldtypes.
+ -- |
+ function New_Fieldtype (Fcheck : Field_Check_Function;
+ Ccheck : Char_Check_Function)
+ return C_Field_Type;
+ pragma Import (C, New_Fieldtype, "new_fieldtype");
+
+ function Set_Fieldtype_Arg (Cft : C_Field_Type;
+ Mak : Makearg_Function := Make_Arg'Access;
+ Cop : Copyarg_Function := Copy_Arg'Access;
+ Fre : Freearg_Function := Free_Arg'Access)
+ return C_Int;
+ pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
+
+ function Set_Fieldtype_Choice (Cft : C_Field_Type;
+ Next, Prev : Choice_Function)
+ return C_Int;
+ pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
+
+end Terminal_Interface.Curses.Forms.Field_Types;