]>
Commit | Line | Data |
---|---|---|
cacbc350 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- S Y S T E M . E X C E P T I O N _ T A B L E -- | |
6 | -- -- | |
7 | -- S p e c -- | |
8 | -- -- | |
748086b7 | 9 | -- Copyright (C) 1996-2009, Free Software Foundation, Inc. -- |
cacbc350 RK |
10 | -- -- |
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- -- | |
748086b7 | 13 | -- ware Foundation; either version 3, or (at your option) any later ver- -- |
cacbc350 RK |
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 -- | |
748086b7 JJ |
16 | -- or FITNESS FOR A PARTICULAR PURPOSE. -- |
17 | -- -- | |
18 | -- As a special exception under Section 7 of GPL version 3, you are granted -- | |
19 | -- additional permissions described in the GCC Runtime Library Exception, -- | |
20 | -- version 3.1, as published by the Free Software Foundation. -- | |
21 | -- -- | |
22 | -- You should have received a copy of the GNU General Public License and -- | |
23 | -- a copy of the GCC Runtime Library Exception along with this program; -- | |
24 | -- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- | |
25 | -- <http://www.gnu.org/licenses/>. -- | |
cacbc350 RK |
26 | -- -- |
27 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 28 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
cacbc350 RK |
29 | -- -- |
30 | ------------------------------------------------------------------------------ | |
31 | ||
fbf5a39b AC |
32 | -- This package implements the interface used to maintain a table of |
33 | -- registered exception names, for the implementation of the mapping | |
34 | -- of names to exceptions (used for exception streams and attributes) | |
35 | ||
2d9ea47f RD |
36 | pragma Warnings (Off); |
37 | pragma Compiler_Unit; | |
38 | pragma Warnings (On); | |
39 | ||
cacbc350 RK |
40 | with System.Standard_Library; |
41 | ||
42 | package System.Exception_Table is | |
009186e0 | 43 | pragma Elaborate_Body; |
cacbc350 RK |
44 | |
45 | package SSL renames System.Standard_Library; | |
46 | ||
47 | procedure Register_Exception (X : SSL.Exception_Data_Ptr); | |
48 | pragma Inline (Register_Exception); | |
fbf5a39b AC |
49 | -- Register an exception in the hash table mapping. This function is |
50 | -- called during elaboration of library packages. For exceptions that | |
51 | -- are declared within subprograms, the registration occurs the first | |
52 | -- time that an exception is elaborated during a call of the subprogram. | |
53 | -- | |
54 | -- Note: all calls to Register_Exception other than those to register the | |
55 | -- predefined exceptions are suppressed if the application is compiled | |
56 | -- with pragma Restrictions (No_Exception_Registration). | |
cacbc350 | 57 | |
fbf5a39b AC |
58 | function Internal_Exception |
59 | (X : String; | |
60 | Create_If_Not_Exist : Boolean := True) return SSL.Exception_Data_Ptr; | |
cacbc350 | 61 | -- Given an exception_name X, returns a pointer to the actual internal |
fbf5a39b AC |
62 | -- exception data. A new entry is created in the table if X does not |
63 | -- exist yet and Create_If_Not_Exist is True. If it is false and X | |
64 | -- does not exist yet, null is returned. | |
65 | ||
66 | function Registered_Exceptions_Count return Natural; | |
a99ada67 | 67 | -- Return the number of currently registered exceptions |
fbf5a39b AC |
68 | |
69 | type Exception_Data_Array is array (Natural range <>) | |
70 | of SSL.Exception_Data_Ptr; | |
71 | ||
72 | procedure Get_Registered_Exceptions | |
73 | (List : out Exception_Data_Array; | |
74 | Last : out Integer); | |
a99ada67 | 75 | -- Return the list of registered exceptions |
cacbc350 RK |
76 | |
77 | end System.Exception_Table; |