blob: 9c2f8cd38674fa0496a9231a963ee889423ed6f9 [file] [log] [blame]
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +05301------------------------------------------------------------------------------
2-- --
3-- GNAT ncurses Binding --
4-- --
5-- Terminal_Interface.Curses.Aux --
6-- --
7-- B O D Y --
8-- --
9------------------------------------------------------------------------------
Steve Kondikae271bc2015-11-15 02:50:53 +010010-- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. --
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053011-- --
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: Juergen Pfeifer, 1996
37-- Version Control:
Steve Kondikae271bc2015-11-15 02:50:53 +010038-- $Revision: 1.11 $
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053039-- Binding Version 01.00
40------------------------------------------------------------------------------
41package body Terminal_Interface.Curses.Aux is
42 --
43 -- Some helpers
Steve Kondikae271bc2015-11-15 02:50:53 +010044 procedure Fill_String (Cp : chars_ptr;
Amit Daniel Kachhape6a01f52011-07-20 11:45:59 +053045 Str : out String)
46 is
47 -- Fill the string with the characters referenced by the
48 -- chars_ptr.
49 --
50 Len : Natural;
51 begin
52 if Cp /= Null_Ptr then
53 Len := Natural (Strlen (Cp));
54 if Str'Length < Len then
55 raise Constraint_Error;
56 end if;
57 declare
58 S : String (1 .. Len);
59 begin
60 S := Value (Cp);
61 Str (Str'First .. (Str'First + Len - 1)) := S (S'Range);
62 end;
63 else
64 Len := 0;
65 end if;
66
67 if Len < Str'Length then
68 Str ((Str'First + Len) .. Str'Last) := (others => ' ');
69 end if;
70
71 end Fill_String;
72
73 function Fill_String (Cp : chars_ptr) return String
74 is
75 Len : Natural;
76 begin
77 if Cp /= Null_Ptr then
78 Len := Natural (Strlen (Cp));
79 if Len = 0 then
80 return "";
81 else
82 declare
83 S : String (1 .. Len);
84 begin
85 Fill_String (Cp, S);
86 return S;
87 end;
88 end if;
89 else
90 return "";
91 end if;
92 end Fill_String;
93
94 procedure Eti_Exception (Code : Eti_Error)
95 is
96 begin
97 case Code is
98 when E_Ok => null;
99 when E_System_Error => raise Eti_System_Error;
100 when E_Bad_Argument => raise Eti_Bad_Argument;
101 when E_Posted => raise Eti_Posted;
102 when E_Connected => raise Eti_Connected;
103 when E_Bad_State => raise Eti_Bad_State;
104 when E_No_Room => raise Eti_No_Room;
105 when E_Not_Posted => raise Eti_Not_Posted;
106 when E_Unknown_Command => raise Eti_Unknown_Command;
107 when E_No_Match => raise Eti_No_Match;
108 when E_Not_Selectable => raise Eti_Not_Selectable;
109 when E_Not_Connected => raise Eti_Not_Connected;
110 when E_Request_Denied => raise Eti_Request_Denied;
111 when E_Invalid_Field => raise Eti_Invalid_Field;
112 when E_Current => raise Eti_Current;
113 end case;
114 end Eti_Exception;
115
116end Terminal_Interface.Curses.Aux;