blob: 71d1c1633f419f904839fae5ba5b96bbf7b85654 [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301------------------------------------------------------------------------------
2-- --
3-- GNAT ncurses Binding Samples --
4-- --
5-- ncurses --
6-- --
7-- B O D Y --
8-- --
9------------------------------------------------------------------------------
micky3879b9f5e72025-07-08 18:04:53 -040010-- Copyright 2020 Thomas E. Dickey --
11-- Copyright 2000-2008,2009 Free Software Foundation, Inc. --
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053012-- --
13-- Permission is hereby granted, free of charge, to any person obtaining a --
14-- copy of this software and associated documentation files (the --
15-- "Software"), to deal in the Software without restriction, including --
16-- without limitation the rights to use, copy, modify, merge, publish, --
17-- distribute, distribute with modifications, sublicense, and/or sell --
18-- copies of the Software, and to permit persons to whom the Software is --
19-- furnished to do so, subject to the following conditions: --
20-- --
21-- The above copyright notice and this permission notice shall be included --
22-- in all copies or substantial portions of the Software. --
23-- --
24-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --
25-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --
26-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --
27-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --
28-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --
29-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --
30-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --
31-- --
32-- Except as contained in this notice, the name(s) of the above copyright --
33-- holders shall not be used in advertising or otherwise to promote the --
34-- sale, use or other dealings in this Software without prior written --
35-- authorization. --
36------------------------------------------------------------------------------
37-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
38-- Version Control
micky3879b9f5e72025-07-08 18:04:53 -040039-- $Revision: 1.5 $
40-- $Date: 2020/02/02 23:34:34 $
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053041-- Binding Version 01.00
42------------------------------------------------------------------------------
43with Terminal_Interface.Curses; use Terminal_Interface.Curses;
44with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
45
46package body ncurses2.genericPuts is
47
Steve Kondikae271bc2015-11-15 02:50:53 +010048 procedure myGet (Win : Window := Standard_Window;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053049 Str : out BS.Bounded_String;
Steve Kondikae271bc2015-11-15 02:50:53 +010050 Len : Integer := -1)
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053051 is
52 function Wgetnstr (Win : Window;
53 Str : char_array;
54 Len : int) return int;
55 pragma Import (C, Wgetnstr, "wgetnstr");
56
57 N : Integer := Len;
58 Txt : char_array (0 .. size_t (Max_Length));
59 xStr : String (1 .. Max_Length);
60 Cnt : Natural;
61 begin
62 if N < 0 then
63 N := Max_Length;
64 end if;
65 if N > Max_Length then
66 raise Constraint_Error;
67 end if;
68 Txt (0) := Interfaces.C.char'First;
69 if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then
70 raise Curses_Exception;
71 end if;
72 To_Ada (Txt, xStr, Cnt, True);
73 Str := To_Bounded_String (xStr (1 .. Cnt));
74 end myGet;
75
76 procedure myPut (Str : out BS.Bounded_String;
77 i : Integer;
Steve Kondikae271bc2015-11-15 02:50:53 +010078 Base : Number_Base := 10) is
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053079 package Int_IO is new Integer_IO (Integer); use Int_IO;
80 tmp : String (1 .. BS.Max_Length);
81 begin
82 Put (tmp, i, Base);
83 Str := To_Bounded_String (tmp);
84 Trim (Str, Ada.Strings.Trim_End'(Ada.Strings.Left));
85 end myPut;
86
87 procedure myAdd (Str : BS.Bounded_String) is
88 begin
89 Add (Str => To_String (Str));
90 end myAdd;
91
92 -- from ncurses-aux
Steve Kondikae271bc2015-11-15 02:50:53 +010093 procedure Fill_String (Cp : chars_ptr;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053094 Str : out BS.Bounded_String)
95 is
96 -- Fill the string with the characters referenced by the
97 -- chars_ptr.
98 --
99 Len : Natural;
100 begin
101 if Cp /= Null_Ptr then
102 Len := Natural (Strlen (Cp));
103 if Max_Length < Len then
104 raise Constraint_Error;
105 end if;
106 declare
107 S : String (1 .. Len);
108 begin
109 S := Value (Cp);
110 Str := To_Bounded_String (S);
111 end;
112 else
113 Str := Null_Bounded_String;
114 end if;
115
116 end Fill_String;
117
118end ncurses2.genericPuts;