1 ------------------------------------------------------------------------------
3 -- GNAT ncurses Binding --
5 -- Terminal_Interface.Curses.Forms --
9 ------------------------------------------------------------------------------
10 -- Copyright (c) 1998-2011,2014 Free Software Foundation, Inc. --
12 -- Permission is hereby granted, free of charge, to any person obtaining a --
13 -- copy of this software and associated documentation files (the --
14 -- "Software"), to deal in the Software without restriction, including --
15 -- without limitation the rights to use, copy, modify, merge, publish, --
16 -- distribute, distribute with modifications, sublicense, and/or sell --
17 -- copies of the Software, and to permit persons to whom the Software is --
18 -- furnished to do so, subject to the following conditions: --
20 -- The above copyright notice and this permission notice shall be included --
21 -- in all copies or substantial portions of the Software. --
23 -- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --
24 -- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --
25 -- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --
26 -- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --
27 -- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --
28 -- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --
29 -- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --
31 -- Except as contained in this notice, the name(s) of the above copyright --
32 -- holders shall not be used in advertising or otherwise to promote the --
33 -- sale, use or other dealings in this Software without prior written --
35 ------------------------------------------------------------------------------
36 -- Author: Juergen Pfeifer, 1996
39 -- $Date: 2014/05/24 21:31:05 $
40 -- Binding Version 01.00
41 ------------------------------------------------------------------------------
42 with Ada.Unchecked_Deallocation;
44 with Interfaces.C; use Interfaces.C;
45 with Interfaces.C.Strings; use Interfaces.C.Strings;
46 with Interfaces.C.Pointers;
48 with Terminal_Interface.Curses.Aux;
50 package body Terminal_Interface.Curses.Forms is
52 use Terminal_Interface.Curses.Aux;
54 type C_Field_Array is array (Natural range <>) of aliased Field;
55 package F_Array is new
56 Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
58 ------------------------------------------------------------------------------
62 -- subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
64 procedure Request_Name (Key : Form_Request_Code;
67 function Form_Request_Name (Key : C_Int) return chars_ptr;
68 pragma Import (C, Form_Request_Name, "form_request_name");
70 Fill_String (Form_Request_Name (C_Int (Key)), Name);
73 function Request_Name (Key : Form_Request_Code) return String
75 function Form_Request_Name (Key : C_Int) return chars_ptr;
76 pragma Import (C, Form_Request_Name, "form_request_name");
78 return Fill_String (Form_Request_Name (C_Int (Key)));
80 ------------------------------------------------------------------------------
85 -- |=====================================================================
86 -- | man page form_field_new.3x
87 -- |=====================================================================
91 function Create (Height : Line_Count;
94 Left : Column_Position;
95 Off_Screen : Natural := 0;
96 More_Buffers : Buffer_Number := Buffer_Number'First)
99 function Newfield (H, W, T, L, O, M : C_Int) return Field;
100 pragma Import (C, Newfield, "new_field");
101 Fld : constant Field := Newfield (C_Int (Height), C_Int (Width),
102 C_Int (Top), C_Int (Left),
104 C_Int (More_Buffers));
106 if Fld = Null_Field then
107 raise Form_Exception;
114 procedure Delete (Fld : in out Field)
116 function Free_Field (Fld : Field) return Eti_Error;
117 pragma Import (C, Free_Field, "free_field");
120 Eti_Exception (Free_Field (Fld));
126 function Duplicate (Fld : Field;
128 Left : Column_Position) return Field
130 function Dup_Field (Fld : Field;
132 Left : C_Int) return Field;
133 pragma Import (C, Dup_Field, "dup_field");
135 F : constant Field := Dup_Field (Fld,
139 if F = Null_Field then
140 raise Form_Exception;
147 function Link (Fld : Field;
149 Left : Column_Position) return Field
151 function Lnk_Field (Fld : Field;
153 Left : C_Int) return Field;
154 pragma Import (C, Lnk_Field, "link_field");
156 F : constant Field := Lnk_Field (Fld,
160 if F = Null_Field then
161 raise Form_Exception;
166 -- |=====================================================================
167 -- | man page form_field_just.3x
168 -- |=====================================================================
172 procedure Set_Justification (Fld : Field;
173 Just : Field_Justification := None)
175 function Set_Field_Just (Fld : Field;
176 Just : C_Int) return Eti_Error;
177 pragma Import (C, Set_Field_Just, "set_field_just");
180 Eti_Exception (Set_Field_Just (Fld,
181 C_Int (Field_Justification'Pos (Just))));
182 end Set_Justification;
186 function Get_Justification (Fld : Field) return Field_Justification
188 function Field_Just (Fld : Field) return C_Int;
189 pragma Import (C, Field_Just, "field_just");
191 return Field_Justification'Val (Field_Just (Fld));
192 end Get_Justification;
194 -- |=====================================================================
195 -- | man page form_field_buffer.3x
196 -- |=====================================================================
202 Buffer : Buffer_Number := Buffer_Number'First;
205 function Set_Fld_Buffer (Fld : Field;
209 pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
212 Eti_Exception (Set_Fld_Buffer (Fld, C_Int (Buffer), To_C (Str)));
219 Buffer : Buffer_Number := Buffer_Number'First;
222 function Field_Buffer (Fld : Field;
223 B : C_Int) return chars_ptr;
224 pragma Import (C, Field_Buffer, "field_buffer");
226 Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str);
231 Buffer : Buffer_Number := Buffer_Number'First) return String
233 function Field_Buffer (Fld : Field;
234 B : C_Int) return chars_ptr;
235 pragma Import (C, Field_Buffer, "field_buffer");
237 return Fill_String (Field_Buffer (Fld, C_Int (Buffer)));
242 procedure Set_Status (Fld : Field;
243 Status : Boolean := True)
245 function Set_Fld_Status (Fld : Field;
246 St : C_Int) return Eti_Error;
247 pragma Import (C, Set_Fld_Status, "set_field_status");
250 if Set_Fld_Status (Fld, Boolean'Pos (Status)) /= E_Ok then
251 raise Form_Exception;
257 function Changed (Fld : Field) return Boolean
259 function Field_Status (Fld : Field) return C_Int;
260 pragma Import (C, Field_Status, "field_status");
262 Res : constant C_Int := Field_Status (Fld);
264 if Res = Curses_False then
273 procedure Set_Maximum_Size (Fld : Field;
276 function Set_Field_Max (Fld : Field;
277 M : C_Int) return Eti_Error;
278 pragma Import (C, Set_Field_Max, "set_max_field");
281 Eti_Exception (Set_Field_Max (Fld, C_Int (Max)));
282 end Set_Maximum_Size;
284 -- |=====================================================================
285 -- | man page form_field_opts.3x
286 -- |=====================================================================
290 procedure Set_Options (Fld : Field;
291 Options : Field_Option_Set)
293 function Set_Field_Opts (Fld : Field;
294 Opt : Field_Option_Set) return Eti_Error;
295 pragma Import (C, Set_Field_Opts, "set_field_opts");
298 Eti_Exception (Set_Field_Opts (Fld, Options));
303 procedure Switch_Options (Fld : Field;
304 Options : Field_Option_Set;
305 On : Boolean := True)
307 function Field_Opts_On (Fld : Field;
308 Opt : Field_Option_Set) return Eti_Error;
309 pragma Import (C, Field_Opts_On, "field_opts_on");
310 function Field_Opts_Off (Fld : Field;
311 Opt : Field_Option_Set) return Eti_Error;
312 pragma Import (C, Field_Opts_Off, "field_opts_off");
316 Eti_Exception (Field_Opts_On (Fld, Options));
318 Eti_Exception (Field_Opts_Off (Fld, Options));
324 procedure Get_Options (Fld : Field;
325 Options : out Field_Option_Set)
327 function Field_Opts (Fld : Field) return Field_Option_Set;
328 pragma Import (C, Field_Opts, "field_opts");
331 Options := Field_Opts (Fld);
336 function Get_Options (Fld : Field := Null_Field)
337 return Field_Option_Set
339 Fos : Field_Option_Set;
341 Get_Options (Fld, Fos);
345 -- |=====================================================================
346 -- | man page form_field_attributes.3x
347 -- |=====================================================================
351 procedure Set_Foreground
353 Fore : Character_Attribute_Set := Normal_Video;
354 Color : Color_Pair := Color_Pair'First)
356 function Set_Field_Fore (Fld : Field;
357 Attr : Attributed_Character) return Eti_Error;
358 pragma Import (C, Set_Field_Fore, "set_field_fore");
361 Eti_Exception (Set_Field_Fore (Fld, (Ch => Character'First,
368 procedure Foreground (Fld : Field;
369 Fore : out Character_Attribute_Set)
371 function Field_Fore (Fld : Field) return Attributed_Character;
372 pragma Import (C, Field_Fore, "field_fore");
374 Fore := Field_Fore (Fld).Attr;
377 procedure Foreground (Fld : Field;
378 Fore : out Character_Attribute_Set;
379 Color : out Color_Pair)
381 function Field_Fore (Fld : Field) return Attributed_Character;
382 pragma Import (C, Field_Fore, "field_fore");
384 Fore := Field_Fore (Fld).Attr;
385 Color := Field_Fore (Fld).Color;
390 procedure Set_Background
392 Back : Character_Attribute_Set := Normal_Video;
393 Color : Color_Pair := Color_Pair'First)
395 function Set_Field_Back (Fld : Field;
396 Attr : Attributed_Character) return Eti_Error;
397 pragma Import (C, Set_Field_Back, "set_field_back");
400 Eti_Exception (Set_Field_Back (Fld, (Ch => Character'First,
407 procedure Background (Fld : Field;
408 Back : out Character_Attribute_Set)
410 function Field_Back (Fld : Field) return Attributed_Character;
411 pragma Import (C, Field_Back, "field_back");
413 Back := Field_Back (Fld).Attr;
416 procedure Background (Fld : Field;
417 Back : out Character_Attribute_Set;
418 Color : out Color_Pair)
420 function Field_Back (Fld : Field) return Attributed_Character;
421 pragma Import (C, Field_Back, "field_back");
423 Back := Field_Back (Fld).Attr;
424 Color := Field_Back (Fld).Color;
429 procedure Set_Pad_Character (Fld : Field;
430 Pad : Character := Space)
432 function Set_Field_Pad (Fld : Field;
433 Ch : C_Int) return Eti_Error;
434 pragma Import (C, Set_Field_Pad, "set_field_pad");
437 Eti_Exception (Set_Field_Pad (Fld,
438 C_Int (Character'Pos (Pad))));
439 end Set_Pad_Character;
443 procedure Pad_Character (Fld : Field;
446 function Field_Pad (Fld : Field) return C_Int;
447 pragma Import (C, Field_Pad, "field_pad");
449 Pad := Character'Val (Field_Pad (Fld));
452 -- |=====================================================================
453 -- | man page form_field_info.3x
454 -- |=====================================================================
458 procedure Info (Fld : Field;
459 Lines : out Line_Count;
460 Columns : out Column_Count;
461 First_Row : out Line_Position;
462 First_Column : out Column_Position;
463 Off_Screen : out Natural;
464 Additional_Buffers : out Buffer_Number)
466 type C_Int_Access is access all C_Int;
467 function Fld_Info (Fld : Field;
468 L, C, Fr, Fc, Os, Ab : C_Int_Access)
470 pragma Import (C, Fld_Info, "field_info");
472 L, C, Fr, Fc, Os, Ab : aliased C_Int;
474 Eti_Exception (Fld_Info (Fld,
476 Fr'Access, Fc'Access,
477 Os'Access, Ab'Access));
478 Lines := Line_Count (L);
479 Columns := Column_Count (C);
480 First_Row := Line_Position (Fr);
481 First_Column := Column_Position (Fc);
482 Off_Screen := Natural (Os);
483 Additional_Buffers := Buffer_Number (Ab);
488 procedure Dynamic_Info (Fld : Field;
489 Lines : out Line_Count;
490 Columns : out Column_Count;
493 type C_Int_Access is access all C_Int;
494 function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return Eti_Error;
495 pragma Import (C, Dyn_Info, "dynamic_field_info");
497 L, C, M : aliased C_Int;
499 Eti_Exception (Dyn_Info (Fld,
502 Lines := Line_Count (L);
503 Columns := Column_Count (C);
507 -- |=====================================================================
508 -- | man page form_win.3x
509 -- |=====================================================================
513 procedure Set_Window (Frm : Form;
516 function Set_Form_Win (Frm : Form;
517 Win : Window) return Eti_Error;
518 pragma Import (C, Set_Form_Win, "set_form_win");
521 Eti_Exception (Set_Form_Win (Frm, Win));
526 function Get_Window (Frm : Form) return Window
528 function Form_Win (Frm : Form) return Window;
529 pragma Import (C, Form_Win, "form_win");
531 W : constant Window := Form_Win (Frm);
538 procedure Set_Sub_Window (Frm : Form;
541 function Set_Form_Sub (Frm : Form;
542 Win : Window) return Eti_Error;
543 pragma Import (C, Set_Form_Sub, "set_form_sub");
546 Eti_Exception (Set_Form_Sub (Frm, Win));
551 function Get_Sub_Window (Frm : Form) return Window
553 function Form_Sub (Frm : Form) return Window;
554 pragma Import (C, Form_Sub, "form_sub");
556 W : constant Window := Form_Sub (Frm);
563 procedure Scale (Frm : Form;
564 Lines : out Line_Count;
565 Columns : out Column_Count)
567 type C_Int_Access is access all C_Int;
568 function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return Eti_Error;
569 pragma Import (C, M_Scale, "scale_form");
571 X, Y : aliased C_Int;
573 Eti_Exception (M_Scale (Frm, Y'Access, X'Access));
574 Lines := Line_Count (Y);
575 Columns := Column_Count (X);
578 -- |=====================================================================
579 -- | man page menu_hook.3x
580 -- |=====================================================================
584 procedure Set_Field_Init_Hook (Frm : Form;
585 Proc : Form_Hook_Function)
587 function Set_Field_Init (Frm : Form;
588 Proc : Form_Hook_Function) return Eti_Error;
589 pragma Import (C, Set_Field_Init, "set_field_init");
592 Eti_Exception (Set_Field_Init (Frm, Proc));
593 end Set_Field_Init_Hook;
597 procedure Set_Field_Term_Hook (Frm : Form;
598 Proc : Form_Hook_Function)
600 function Set_Field_Term (Frm : Form;
601 Proc : Form_Hook_Function) return Eti_Error;
602 pragma Import (C, Set_Field_Term, "set_field_term");
605 Eti_Exception (Set_Field_Term (Frm, Proc));
606 end Set_Field_Term_Hook;
610 procedure Set_Form_Init_Hook (Frm : Form;
611 Proc : Form_Hook_Function)
613 function Set_Form_Init (Frm : Form;
614 Proc : Form_Hook_Function) return Eti_Error;
615 pragma Import (C, Set_Form_Init, "set_form_init");
618 Eti_Exception (Set_Form_Init (Frm, Proc));
619 end Set_Form_Init_Hook;
623 procedure Set_Form_Term_Hook (Frm : Form;
624 Proc : Form_Hook_Function)
626 function Set_Form_Term (Frm : Form;
627 Proc : Form_Hook_Function) return Eti_Error;
628 pragma Import (C, Set_Form_Term, "set_form_term");
631 Eti_Exception (Set_Form_Term (Frm, Proc));
632 end Set_Form_Term_Hook;
634 -- |=====================================================================
635 -- | man page form_fields.3x
636 -- |=====================================================================
640 procedure Redefine (Frm : Form;
641 Flds : Field_Array_Access)
643 function Set_Frm_Fields (Frm : Form;
644 Items : System.Address) return Eti_Error;
645 pragma Import (C, Set_Frm_Fields, "set_form_fields");
648 pragma Assert (Flds.all (Flds'Last) = Null_Field);
649 if Flds.all (Flds'Last) /= Null_Field then
650 raise Form_Exception;
652 Eti_Exception (Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address));
658 function Fields (Frm : Form;
659 Index : Positive) return Field
663 function C_Fields (Frm : Form) return Pointer;
664 pragma Import (C, C_Fields, "form_fields");
666 P : Pointer := C_Fields (Frm);
668 if P = null or else Index > Field_Count (Frm) then
669 raise Form_Exception;
671 P := P + ptrdiff_t (C_Int (Index) - 1);
678 function Field_Count (Frm : Form) return Natural
680 function Count (Frm : Form) return C_Int;
681 pragma Import (C, Count, "field_count");
683 return Natural (Count (Frm));
688 procedure Move (Fld : Field;
689 Line : Line_Position;
690 Column : Column_Position)
692 function Move (Fld : Field; L, C : C_Int) return Eti_Error;
693 pragma Import (C, Move, "move_field");
696 Eti_Exception (Move (Fld, C_Int (Line), C_Int (Column)));
699 -- |=====================================================================
700 -- | man page form_new.3x
701 -- |=====================================================================
705 function Create (Fields : Field_Array_Access) return Form
707 function NewForm (Fields : System.Address) return Form;
708 pragma Import (C, NewForm, "new_form");
712 pragma Assert (Fields.all (Fields'Last) = Null_Field);
713 if Fields.all (Fields'Last) /= Null_Field then
714 raise Form_Exception;
716 M := NewForm (Fields.all (Fields'First)'Address);
717 if M = Null_Form then
718 raise Form_Exception;
726 procedure Delete (Frm : in out Form)
728 function Free (Frm : Form) return Eti_Error;
729 pragma Import (C, Free, "free_form");
732 Eti_Exception (Free (Frm));
736 -- |=====================================================================
737 -- | man page form_opts.3x
738 -- |=====================================================================
742 procedure Set_Options (Frm : Form;
743 Options : Form_Option_Set)
745 function Set_Form_Opts (Frm : Form;
746 Opt : Form_Option_Set) return Eti_Error;
747 pragma Import (C, Set_Form_Opts, "set_form_opts");
750 Eti_Exception (Set_Form_Opts (Frm, Options));
755 procedure Switch_Options (Frm : Form;
756 Options : Form_Option_Set;
757 On : Boolean := True)
759 function Form_Opts_On (Frm : Form;
760 Opt : Form_Option_Set) return Eti_Error;
761 pragma Import (C, Form_Opts_On, "form_opts_on");
762 function Form_Opts_Off (Frm : Form;
763 Opt : Form_Option_Set) return Eti_Error;
764 pragma Import (C, Form_Opts_Off, "form_opts_off");
768 Eti_Exception (Form_Opts_On (Frm, Options));
770 Eti_Exception (Form_Opts_Off (Frm, Options));
776 procedure Get_Options (Frm : Form;
777 Options : out Form_Option_Set)
779 function Form_Opts (Frm : Form) return Form_Option_Set;
780 pragma Import (C, Form_Opts, "form_opts");
783 Options := Form_Opts (Frm);
788 function Get_Options (Frm : Form := Null_Form) return Form_Option_Set
790 Fos : Form_Option_Set;
792 Get_Options (Frm, Fos);
796 -- |=====================================================================
797 -- | man page form_post.3x
798 -- |=====================================================================
802 procedure Post (Frm : Form;
803 Post : Boolean := True)
805 function M_Post (Frm : Form) return Eti_Error;
806 pragma Import (C, M_Post, "post_form");
807 function M_Unpost (Frm : Form) return Eti_Error;
808 pragma Import (C, M_Unpost, "unpost_form");
812 Eti_Exception (M_Post (Frm));
814 Eti_Exception (M_Unpost (Frm));
818 -- |=====================================================================
819 -- | man page form_cursor.3x
820 -- |=====================================================================
824 procedure Position_Cursor (Frm : Form)
826 function Pos_Form_Cursor (Frm : Form) return Eti_Error;
827 pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
830 Eti_Exception (Pos_Form_Cursor (Frm));
833 -- |=====================================================================
834 -- | man page form_data.3x
835 -- |=====================================================================
839 function Data_Ahead (Frm : Form) return Boolean
841 function Ahead (Frm : Form) return C_Int;
842 pragma Import (C, Ahead, "data_ahead");
844 Res : constant C_Int := Ahead (Frm);
846 if Res = Curses_False then
855 function Data_Behind (Frm : Form) return Boolean
857 function Behind (Frm : Form) return C_Int;
858 pragma Import (C, Behind, "data_behind");
860 Res : constant C_Int := Behind (Frm);
862 if Res = Curses_False then
869 -- |=====================================================================
870 -- | man page form_driver.3x
871 -- |=====================================================================
875 function Driver (Frm : Form;
876 Key : Key_Code) return Driver_Result
878 function Frm_Driver (Frm : Form; Key : C_Int) return Eti_Error;
879 pragma Import (C, Frm_Driver, "form_driver");
881 R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
884 when E_Unknown_Command =>
885 return Unknown_Request;
886 when E_Invalid_Field =>
887 return Invalid_Field;
888 when E_Request_Denied =>
889 return Request_Denied;
896 -- |=====================================================================
897 -- | man page form_page.3x
898 -- |=====================================================================
902 procedure Set_Current (Frm : Form;
905 function Set_Current_Fld (Frm : Form; Fld : Field) return Eti_Error;
906 pragma Import (C, Set_Current_Fld, "set_current_field");
909 Eti_Exception (Set_Current_Fld (Frm, Fld));
914 function Current (Frm : Form) return Field
916 function Current_Fld (Frm : Form) return Field;
917 pragma Import (C, Current_Fld, "current_field");
919 Fld : constant Field := Current_Fld (Frm);
921 if Fld = Null_Field then
922 raise Form_Exception;
929 procedure Set_Page (Frm : Form;
930 Page : Page_Number := Page_Number'First)
932 function Set_Frm_Page (Frm : Form; Pg : C_Int) return Eti_Error;
933 pragma Import (C, Set_Frm_Page, "set_form_page");
936 Eti_Exception (Set_Frm_Page (Frm, C_Int (Page)));
941 function Page (Frm : Form) return Page_Number
943 function Get_Page (Frm : Form) return C_Int;
944 pragma Import (C, Get_Page, "form_page");
946 P : constant C_Int := Get_Page (Frm);
949 raise Form_Exception;
951 return Page_Number (P);
955 function Get_Index (Fld : Field) return Positive
957 function Get_Fieldindex (Fld : Field) return C_Int;
958 pragma Import (C, Get_Fieldindex, "field_index");
960 Res : constant C_Int := Get_Fieldindex (Fld);
962 if Res = Curses_Err then
963 raise Form_Exception;
965 return Positive (Natural (Res) + Positive'First);
969 -- |=====================================================================
970 -- | man page form_new_page.3x
971 -- |=====================================================================
975 procedure Set_New_Page (Fld : Field;
976 New_Page : Boolean := True)
978 function Set_Page (Fld : Field; Flg : C_Int) return Eti_Error;
979 pragma Import (C, Set_Page, "set_new_page");
982 Eti_Exception (Set_Page (Fld, Boolean'Pos (New_Page)));
987 function Is_New_Page (Fld : Field) return Boolean
989 function Is_New (Fld : Field) return C_Int;
990 pragma Import (C, Is_New, "new_page");
992 Res : constant C_Int := Is_New (Fld);
994 if Res = Curses_False then
1001 procedure Free (FA : in out Field_Array_Access;
1002 Free_Fields : Boolean := False)
1004 procedure Release is new Ada.Unchecked_Deallocation
1005 (Field_Array, Field_Array_Access);
1007 if FA /= null and then Free_Fields then
1008 for I in FA'First .. (FA'Last - 1) loop
1009 if FA.all (I) /= Null_Field then
1010 Delete (FA.all (I));
1017 -- |=====================================================================
1019 function Default_Field_Options return Field_Option_Set
1022 return Get_Options (Null_Field);
1023 end Default_Field_Options;
1025 function Default_Form_Options return Form_Option_Set
1028 return Get_Options (Null_Form);
1029 end Default_Form_Options;
1031 end Terminal_Interface.Curses.Forms;