blob: 6ca6583509e55cd53984c6e0852c2c45798ca04d [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------------------------------------------------------------------------------
10-- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. --
11-- --
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: --
19-- --
20-- The above copyright notice and this permission notice shall be included --
21-- in all copies or substantial portions of the Software. --
22-- --
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. --
30-- --
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 --
34-- authorization. --
35------------------------------------------------------------------------------
36-- Author: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
37-- Version Control
38-- $Revision: 1.3 $
39-- $Date: 2008/07/26 18:46:18 $
40-- Binding Version 01.00
41------------------------------------------------------------------------------
42with Terminal_Interface.Curses; use Terminal_Interface.Curses;
43with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
44
45package body ncurses2.genericPuts is
46
47 procedure myGet (Win : in Window := Standard_Window;
48 Str : out BS.Bounded_String;
49 Len : in Integer := -1)
50 is
51 function Wgetnstr (Win : Window;
52 Str : char_array;
53 Len : int) return int;
54 pragma Import (C, Wgetnstr, "wgetnstr");
55
56 N : Integer := Len;
57 Txt : char_array (0 .. size_t (Max_Length));
58 xStr : String (1 .. Max_Length);
59 Cnt : Natural;
60 begin
61 if N < 0 then
62 N := Max_Length;
63 end if;
64 if N > Max_Length then
65 raise Constraint_Error;
66 end if;
67 Txt (0) := Interfaces.C.char'First;
68 if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then
69 raise Curses_Exception;
70 end if;
71 To_Ada (Txt, xStr, Cnt, True);
72 Str := To_Bounded_String (xStr (1 .. Cnt));
73 end myGet;
74
75 procedure myPut (Str : out BS.Bounded_String;
76 i : Integer;
77 Base : in Number_Base := 10) is
78 package Int_IO is new Integer_IO (Integer); use Int_IO;
79 tmp : String (1 .. BS.Max_Length);
80 begin
81 Put (tmp, i, Base);
82 Str := To_Bounded_String (tmp);
83 Trim (Str, Ada.Strings.Trim_End'(Ada.Strings.Left));
84 end myPut;
85
86 procedure myAdd (Str : BS.Bounded_String) is
87 begin
88 Add (Str => To_String (Str));
89 end myAdd;
90
91 -- from ncurses-aux
92 procedure Fill_String (Cp : in chars_ptr;
93 Str : out BS.Bounded_String)
94 is
95 -- Fill the string with the characters referenced by the
96 -- chars_ptr.
97 --
98 Len : Natural;
99 begin
100 if Cp /= Null_Ptr then
101 Len := Natural (Strlen (Cp));
102 if Max_Length < Len then
103 raise Constraint_Error;
104 end if;
105 declare
106 S : String (1 .. Len);
107 begin
108 S := Value (Cp);
109 Str := To_Bounded_String (S);
110 end;
111 else
112 Str := Null_Bounded_String;
113 end if;
114
115 end Fill_String;
116
117end ncurses2.genericPuts;