1 ------------------------------------------------------------------------------
3 -- GNAT COMPILER COMPONENTS --
9 -- Copyright (C) 2001-2007, Free Software Foundation, Inc. --
11 -- GNAT is free software; you can redistribute it and/or modify it under --
12 -- terms of the GNU General Public License as published by the Free Soft- --
13 -- ware Foundation; either version 3, or (at your option) any later ver- --
14 -- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
17 -- for more details. You should have received a copy of the GNU General --
18 -- Public License distributed with GNAT; see file COPYING3. If not, go to --
19 -- http://www.gnu.org/licenses for a complete copy of the license. --
21 -- GNAT was originally developed by the GNAT team at New York University. --
22 -- Extensive contributions were provided by Ada Core Technologies Inc. --
24 ------------------------------------------------------------------------------
28 package body Validsw is
30 ----------------------------------
31 -- Reset_Validity_Check_Options --
32 ----------------------------------
34 procedure Reset_Validity_Check_Options is
36 Validity_Check_Components := False;
37 Validity_Check_Copies := False;
38 Validity_Check_Default := True;
39 Validity_Check_Floating_Point := False;
40 Validity_Check_In_Out_Params := False;
41 Validity_Check_In_Params := False;
42 Validity_Check_Operands := False;
43 Validity_Check_Returns := False;
44 Validity_Check_Subscripts := False;
45 Validity_Check_Tests := False;
46 end Reset_Validity_Check_Options;
48 ---------------------------------
49 -- Save_Validity_Check_Options --
50 ---------------------------------
52 procedure Save_Validity_Check_Options
53 (Options : out Validity_Check_Options)
57 procedure Add (C : Character; S : Boolean);
58 -- Add given character C to string if switch S is true
60 procedure Add (C : Character; S : Boolean) is
68 -- Start of processing for Save_Validity_Check_Options
71 for K in Options'Range loop
75 Add ('n', not Validity_Check_Default);
77 Add ('c', Validity_Check_Copies);
78 Add ('e', Validity_Check_Components);
79 Add ('f', Validity_Check_Floating_Point);
80 Add ('i', Validity_Check_In_Params);
81 Add ('m', Validity_Check_In_Out_Params);
82 Add ('o', Validity_Check_Operands);
83 Add ('r', Validity_Check_Returns);
84 Add ('s', Validity_Check_Subscripts);
85 Add ('t', Validity_Check_Tests);
86 end Save_Validity_Check_Options;
88 ----------------------------------------
89 -- Set_Default_Validity_Check_Options --
90 ----------------------------------------
92 procedure Set_Default_Validity_Check_Options is
94 Reset_Validity_Check_Options;
95 Set_Validity_Check_Options ("d");
96 end Set_Default_Validity_Check_Options;
98 --------------------------------
99 -- Set_Validity_Check_Options --
100 --------------------------------
102 -- Version used when no error checking is required
104 procedure Set_Validity_Check_Options (Options : String) is
107 pragma Warnings (Off, OK);
108 pragma Warnings (Off, EC);
110 Set_Validity_Check_Options (Options, OK, EC);
111 end Set_Validity_Check_Options;
113 -- Normal version with error checking
115 procedure Set_Validity_Check_Options
118 Err_Col : out Natural)
125 while J <= Options'Last loop
129 -- Turn on validity checking (gets turned off by Vn)
131 Validity_Checks_On := True;
136 Validity_Check_Copies := True;
139 Validity_Check_Default := True;
142 Validity_Check_Components := True;
145 Validity_Check_Floating_Point := True;
148 Validity_Check_In_Params := True;
151 Validity_Check_In_Out_Params := True;
154 Validity_Check_Operands := True;
157 Validity_Check_Parameters := True;
160 Validity_Check_Returns := True;
163 Validity_Check_Subscripts := True;
166 Validity_Check_Tests := True;
169 Validity_Check_Copies := False;
172 Validity_Check_Default := False;
175 Validity_Check_Components := False;
178 Validity_Check_In_Params := False;
181 Validity_Check_Floating_Point := False;
184 Validity_Check_In_Out_Params := False;
187 Validity_Check_Operands := False;
190 Validity_Check_Parameters := False;
193 Validity_Check_Returns := False;
196 Validity_Check_Subscripts := False;
199 Validity_Check_Tests := False;
202 Validity_Check_Components := True;
203 Validity_Check_Copies := True;
204 Validity_Check_Default := True;
205 Validity_Check_Floating_Point := True;
206 Validity_Check_In_Out_Params := True;
207 Validity_Check_In_Params := True;
208 Validity_Check_Operands := True;
209 Validity_Check_Parameters := True;
210 Validity_Check_Returns := True;
211 Validity_Check_Subscripts := True;
212 Validity_Check_Tests := True;
215 Validity_Check_Components := False;
216 Validity_Check_Copies := False;
217 Validity_Check_Default := False;
218 Validity_Check_Floating_Point := False;
219 Validity_Check_In_Out_Params := False;
220 Validity_Check_In_Params := False;
221 Validity_Check_Operands := False;
222 Validity_Check_Parameters := False;
223 Validity_Check_Returns := False;
224 Validity_Check_Subscripts := False;
225 Validity_Check_Tests := False;
226 Validity_Checks_On := False;
239 Err_Col := Options'Last + 1;
240 end Set_Validity_Check_Options;