diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-04-08 15:39:59 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2011-04-08 15:39:59 +0000 |
commit | 7d428150a7d1d60a127906c29520b4554147ced1 (patch) | |
tree | 887b0cfafce298ee955bcc4a591d38af2778b7f8 /ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb | |
parent | 2011-04-08 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-addon-packages-7d428150a7d1d60a127906c29520b4554147ced1.tar.bz2 |
2011-04-08 Joel Sherrill <joel.sherrill@oarcorp.com>
* bit: Update to ncurses-5.9.
* ncurses-5.9/ANNOUNCE, ncurses-5.9/AUTHORS, ncurses-5.9/INSTALL,
ncurses-5.9/MANIFEST, ncurses-5.9/Makefile.in,
ncurses-5.9/Makefile.os2, ncurses-5.9/NEWS, ncurses-5.9/README,
ncurses-5.9/README.MinGW, ncurses-5.9/README.emx, ncurses-5.9/TO-DO,
ncurses-5.9/aclocal.m4, ncurses-5.9/announce.html.in,
ncurses-5.9/config.guess, ncurses-5.9/config.sub,
ncurses-5.9/configure, ncurses-5.9/configure.in,
ncurses-5.9/convert_configure.pl, ncurses-5.9/dist.mk,
ncurses-5.9/install-sh, ncurses-5.9/mk-0th.awk,
ncurses-5.9/mk-1st.awk, ncurses-5.9/mk-2nd.awk,
ncurses-5.9/mk-dlls.sh.in, ncurses-5.9/mk-hdr.awk,
ncurses-5.9/Ada95/Makefile.in, ncurses-5.9/Ada95/README,
ncurses-5.9/Ada95/TODO, ncurses-5.9/Ada95/aclocal.m4,
ncurses-5.9/Ada95/configure, ncurses-5.9/Ada95/configure.in,
ncurses-5.9/Ada95/make-tar.sh, ncurses-5.9/Ada95/mk-1st.awk,
ncurses-5.9/Ada95/doc/Makefile.in, ncurses-5.9/Ada95/gen/Makefile.in,
ncurses-5.9/Ada95/gen/adacurses-config.in,
ncurses-5.9/Ada95/gen/gen.c, ncurses-5.9/Ada95/gen/html.m4,
ncurses-5.9/Ada95/gen/normal.m4, ncurses-5.9/Ada95/gen/table.m4,
ncurses-5.9/Ada95/gen/terminal_interface-curses-aux.ads.m4,
Diffstat (limited to 'ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb')
-rw-r--r-- | ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb b/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb new file mode 100644 index 0000000..b8f3d26 --- /dev/null +++ b/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb @@ -0,0 +1,115 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration -- +-- -- +-- 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$ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is + + function Create (Info : Enumeration_Info; + Auto_Release_Names : Boolean := False) + return Enumeration_Field + is + procedure Release_String is + new Ada.Unchecked_Deallocation (String, + String_Access); + E : Enumeration_Field; + L : constant size_t := 1 + size_t (Info.C); + S : String_Access; + begin + E.Case_Sensitive := Info.Case_Sensitive; + E.Match_Must_Be_Unique := Info.Match_Must_Be_Unique; + E.Arr := new chars_ptr_array (size_t (1) .. L); + for I in 1 .. Positive (L - 1) loop + if Info.Names (I) = null then + raise Form_Exception; + end if; + E.Arr.all (size_t (I)) := New_String (Info.Names (I).all); + if Auto_Release_Names then + S := Info.Names (I); + Release_String (S); + end if; + end loop; + E.Arr.all (L) := Null_Ptr; + return E; + end Create; + + procedure Release (Enum : in out Enumeration_Field) + is + I : size_t := 0; + P : chars_ptr; + begin + loop + P := Enum.Arr.all (I); + exit when P = Null_Ptr; + Free (P); + Enum.Arr.all (I) := Null_Ptr; + I := I + 1; + end loop; + Enum.Arr := null; + end Release; + + procedure Set_Field_Type (Fld : Field; + Typ : Enumeration_Field) + is + function Set_Fld_Type (F : Field := Fld; + Arg1 : chars_ptr_array; + Arg2 : C_Int; + Arg3 : C_Int) return C_Int; + pragma Import (C, Set_Fld_Type, "set_field_type_enum"); + + Res : Eti_Error; + begin + if Typ.Arr = null then + raise Form_Exception; + end if; + Res := Set_Fld_Type (Arg1 => Typ.Arr.all, + Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)), + Arg3 => C_Int (Boolean'Pos + (Typ.Match_Must_Be_Unique))); + if Res /= E_Ok then + Eti_Exception (Res); + end if; + Wrap_Builtin (Fld, Typ, C_Choice_Router); + end Set_Field_Type; + +end Terminal_Interface.Curses.Forms.Field_Types.Enumeration; |